Annotation of embedaddon/quagga/zebra/rtadv.h, revision 1.1.1.4

1.1       misho       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: 
                     23: #ifndef _ZEBRA_RTADV_H
                     24: #define _ZEBRA_RTADV_H
                     25: 
                     26: #include "vty.h"
                     27: #include "zebra/interface.h"
                     28: 
1.1.1.3   misho      29: /* NB: RTADV is defined in zebra/interface.h above */
1.1.1.4 ! misho      30: #if defined (HAVE_RTADV)
1.1.1.3   misho      31: 
1.1       misho      32: /* Router advertisement prefix. */
                     33: struct rtadv_prefix
                     34: {
                     35:   /* Prefix to be advertised. */
1.1.1.2   misho      36:   struct prefix_ipv6 prefix;
1.1       misho      37:   
                     38:   /* The value to be placed in the Valid Lifetime in the Prefix */
                     39:   u_int32_t AdvValidLifetime;
                     40: #define RTADV_VALID_LIFETIME 2592000
                     41: 
                     42:   /* The value to be placed in the on-link flag */
                     43:   int AdvOnLinkFlag;
                     44: 
                     45:   /* The value to be placed in the Preferred Lifetime in the Prefix
                     46:      Information option, in seconds.*/
                     47:   u_int32_t AdvPreferredLifetime;
                     48: #define RTADV_PREFERRED_LIFETIME 604800
                     49: 
                     50:   /* The value to be placed in the Autonomous Flag. */
                     51:   int AdvAutonomousFlag;
                     52: 
1.1.1.2   misho      53:   /* The value to be placed in the Router Address Flag [RFC6275 7.2]. */
1.1       misho      54:   int AdvRouterAddressFlag;
                     55: #ifndef ND_OPT_PI_FLAG_RADDR
                     56: #define ND_OPT_PI_FLAG_RADDR         0x20
                     57: #endif
                     58: 
                     59: };
                     60: 
                     61: extern void rtadv_config_write (struct vty *, struct interface *);
                     62: 
1.1.1.2   misho      63: /* RFC4584 Extension to Sockets API for Mobile IPv6 */
1.1       misho      64: 
                     65: #ifndef ND_OPT_ADV_INTERVAL
                     66: #define ND_OPT_ADV_INTERVAL    7   /* Adv Interval Option */
                     67: #endif
                     68: #ifndef ND_OPT_HA_INFORMATION
                     69: #define ND_OPT_HA_INFORMATION  8   /* HA Information Option */
                     70: #endif
                     71: 
                     72: #ifndef HAVE_STRUCT_ND_OPT_ADV_INTERVAL
                     73: struct nd_opt_adv_interval {   /* Advertisement interval option */
                     74:         uint8_t        nd_opt_ai_type;
                     75:         uint8_t        nd_opt_ai_len;
                     76:         uint16_t       nd_opt_ai_reserved;
                     77:         uint32_t       nd_opt_ai_interval;
                     78: } __attribute__((__packed__));
                     79: #else
                     80: #ifndef HAVE_STRUCT_ND_OPT_ADV_INTERVAL_ND_OPT_AI_TYPE
                     81: /* fields may have to be renamed */
                     82: #define nd_opt_ai_type         nd_opt_adv_interval_type
                     83: #define nd_opt_ai_len          nd_opt_adv_interval_len
                     84: #define nd_opt_ai_reserved     nd_opt_adv_interval_reserved
                     85: #define nd_opt_ai_interval     nd_opt_adv_interval_ival
                     86: #endif
                     87: #endif
                     88: 
                     89: #ifndef HAVE_STRUCT_ND_OPT_HOMEAGENT_INFO
                     90: struct nd_opt_homeagent_info {  /* Home Agent info */
                     91:         u_int8_t        nd_opt_hai_type;
                     92:         u_int8_t        nd_opt_hai_len;
                     93:         u_int16_t       nd_opt_hai_reserved;
                     94:         u_int16_t       nd_opt_hai_preference;
                     95:         u_int16_t       nd_opt_hai_lifetime;
                     96: } __attribute__((__packed__));
                     97: #endif
                     98: 
                     99: extern const char *rtadv_pref_strs[];
                    100: 
1.1.1.4 ! misho     101: #endif /* HAVE_RTADV */
        !           102: 
        !           103: extern void rtadv_init (struct zebra_vrf *);
        !           104: extern void rtadv_terminate (struct zebra_vrf *);
        !           105: extern void rtadv_cmd_init (void);
1.1.1.3   misho     106: 
1.1       misho     107: #endif /* _ZEBRA_RTADV_H */

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>