rtadv.h 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. /* Router advertisement
  2. * Copyright (C) 2005 6WIND <jean-mickael.guerin@6wind.com>
  3. * Copyright (C) 1999 Kunihiro Ishiguro
  4. *
  5. * This file is part of GNU Zebra.
  6. *
  7. * GNU Zebra is free software; you can redistribute it and/or modify it
  8. * under the terms of the GNU General Public License as published by the
  9. * Free Software Foundation; either version 2, or (at your option) any
  10. * later version.
  11. *
  12. * GNU Zebra is distributed in the hope that it will be useful, but
  13. * WITHOUT ANY WARRANTY; without even the implied warranty of
  14. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  15. * General Public License for more details.
  16. *
  17. * You should have received a copy of the GNU General Public License
  18. * along with GNU Zebra; see the file COPYING. If not, write to the Free
  19. * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
  20. * 02111-1307, USA.
  21. */
  22. #ifndef _ZEBRA_RTADV_H
  23. #define _ZEBRA_RTADV_H
  24. #include "vty.h"
  25. #include "zebra/interface.h"
  26. /* Router advertisement prefix. */
  27. struct rtadv_prefix
  28. {
  29. /* Prefix to be advertised. */
  30. struct prefix prefix;
  31. /* The value to be placed in the Valid Lifetime in the Prefix */
  32. u_int32_t AdvValidLifetime;
  33. #define RTADV_VALID_LIFETIME 2592000
  34. /* The value to be placed in the on-link flag */
  35. int AdvOnLinkFlag;
  36. /* The value to be placed in the Preferred Lifetime in the Prefix
  37. Information option, in seconds.*/
  38. u_int32_t AdvPreferredLifetime;
  39. #define RTADV_PREFERRED_LIFETIME 604800
  40. /* The value to be placed in the Autonomous Flag. */
  41. int AdvAutonomousFlag;
  42. /* The value to be placed in the Router Address Flag (RFC3775 7.2). */
  43. int AdvRouterAddressFlag;
  44. #ifndef ND_OPT_PI_FLAG_RADDR
  45. #define ND_OPT_PI_FLAG_RADDR 0x20
  46. #endif
  47. };
  48. extern void rtadv_config_write (struct vty *, struct interface *);
  49. extern void rtadv_init (void);
  50. /* draft-ietf-mip6-mipext-advapi-03 */
  51. #ifndef ND_OPT_ADV_INTERVAL
  52. #define ND_OPT_ADV_INTERVAL 7 /* Adv Interval Option */
  53. #endif
  54. #ifndef ND_OPT_HA_INFORMATION
  55. #define ND_OPT_HA_INFORMATION 8 /* HA Information Option */
  56. #endif
  57. #ifndef HAVE_STRUCT_ND_OPT_ADV_INTERVAL
  58. struct nd_opt_adv_interval { /* Advertisement interval option */
  59. uint8_t nd_opt_ai_type;
  60. uint8_t nd_opt_ai_len;
  61. uint16_t nd_opt_ai_reserved;
  62. uint32_t nd_opt_ai_interval;
  63. } __attribute__((__packed__));
  64. #else
  65. #ifndef HAVE_STRUCT_ND_OPT_ADV_INTERVAL_ND_OPT_AI_TYPE
  66. /* fields may have to be renamed */
  67. #define nd_opt_ai_type nd_opt_adv_interval_type
  68. #define nd_opt_ai_len nd_opt_adv_interval_len
  69. #define nd_opt_ai_reserved nd_opt_adv_interval_reserved
  70. #define nd_opt_ai_interval nd_opt_adv_interval_ival
  71. #endif
  72. #endif
  73. #ifndef HAVE_STRUCT_ND_OPT_HOMEAGENT_INFO
  74. struct nd_opt_homeagent_info { /* Home Agent info */
  75. u_int8_t nd_opt_hai_type;
  76. u_int8_t nd_opt_hai_len;
  77. u_int16_t nd_opt_hai_reserved;
  78. u_int16_t nd_opt_hai_preference;
  79. u_int16_t nd_opt_hai_lifetime;
  80. } __attribute__((__packed__));
  81. #endif
  82. #endif /* _ZEBRA_RTADV_H */