Diff for /embedaddon/bird/proto/radv/radv.h between versions 1.1.1.1 and 1.1.1.2

version 1.1.1.1, 2017/08/22 12:33:54 version 1.1.1.2, 2021/03/17 19:50:23
Line 53  struct radv_config Line 53  struct radv_config
   ip_addr trigger_prefix;       /* Prefix of a trigger route, if defined */    ip_addr trigger_prefix;       /* Prefix of a trigger route, if defined */
   u8 trigger_pxlen;             /* Pxlen of a trigger route, if defined */    u8 trigger_pxlen;             /* Pxlen of a trigger route, if defined */
   u8 trigger_valid;             /* Whether a trigger route is defined */    u8 trigger_valid;             /* Whether a trigger route is defined */
     u8 propagate_routes;          /* Do we propagate more specific routes (RFC 4191)? */
     u32 max_linger_time;          /* Maximum of interface route_linger_time */
 };  };
   
 struct radv_iface_config  struct radv_iface_config
Line 62  struct radv_iface_config Line 64  struct radv_iface_config
   list rdnss_list;              /* Local list of RDNSS configs (struct radv_rdnss_config) */    list rdnss_list;              /* Local list of RDNSS configs (struct radv_rdnss_config) */
   list dnssl_list;              /* Local list of DNSSL configs (struct radv_dnssl_config) */    list dnssl_list;              /* Local list of DNSSL configs (struct radv_dnssl_config) */
   
  u32 min_ra_int;               /* Standard options from RFC 4261 */  u32 min_ra_int;               /* Standard options from RFC 4861 */
   u32 max_ra_int;    u32 max_ra_int;
   u32 min_delay;    u32 min_delay;
   
     u32 prefix_linger_time;       /* How long we advertise dead prefixes with lifetime 0 */
     u32 route_linger_time;        /* How long we advertise dead routes with lifetime 0 */
   
   u8 rdnss_local;               /* Global list is not used for RDNSS */    u8 rdnss_local;               /* Global list is not used for RDNSS */
   u8 dnssl_local;               /* Global list is not used for DNSSL */    u8 dnssl_local;               /* Global list is not used for DNSSL */
   
  u8 managed;                   /* Standard options from RFC 4261 */  u8 managed;                   /* Standard options from RFC 4861 */
   u8 other_config;    u8 other_config;
   u32 link_mtu;    u32 link_mtu;
   u32 reachable_time;    u32 reachable_time;
   u32 retrans_timer;    u32 retrans_timer;
   u32 current_hop_limit;    u32 current_hop_limit;
   u32 default_lifetime;    u32 default_lifetime;
     u32 route_lifetime;           /* Lifetime for the RFC 4191 routes */
   u8 default_lifetime_sensitive; /* Whether default_lifetime depends on trigger */    u8 default_lifetime_sensitive; /* Whether default_lifetime depends on trigger */
     u8 route_lifetime_sensitive;  /* Whether route_lifetime depends on trigger */
   u8 default_preference;        /* Default Router Preference (RFC 4191) */    u8 default_preference;        /* Default Router Preference (RFC 4191) */
     u8 route_preference;          /* Specific Route Preference (RFC 4191) */
 };  };
   
 struct radv_prefix_config  struct radv_prefix_config
Line 87  struct radv_prefix_config Line 95  struct radv_prefix_config
   uint pxlen;    uint pxlen;
   
   u8 skip;                      /* Do not include this prefix to RA */    u8 skip;                      /* Do not include this prefix to RA */
  u8 onlink;                    /* Standard options from RFC 4261 */  u8 onlink;                    /* Standard options from RFC 4861 */
   u8 autonomous;    u8 autonomous;
   u32 valid_lifetime;    u32 valid_lifetime;
   u32 preferred_lifetime;    u32 preferred_lifetime;
Line 113  struct radv_dnssl_config Line 121  struct radv_dnssl_config
   char *domain;                 /* Domain for DNS search list, in processed form */    char *domain;                 /* Domain for DNS search list, in processed form */
 };  };
   
   /*
    * One more specific route as per RFC 4191.
    *
    * Note that it does *not* contain the next hop field. The next hop is always
    * the router sending the advertisment and the more specific route only allows
    * overriding the preference of the route.
    */
   struct radv_route
   {
     struct fib_node n;
     u32 lifetime;                 /* Lifetime from an attribute */
     u8 lifetime_set;              /* Whether lifetime is defined */
     u8 preference;                /* Preference of the route, RA_PREF_* */
     u8 preference_set;            /* Whether preference is defined */
     u8 valid;                     /* Whethe route is valid or withdrawn */
     bird_clock_t changed;         /* Last time when the route changed */
   };
   
struct proto_radvstruct radv_proto
 {  {
   struct proto p;    struct proto p;
   list iface_list;              /* List of active ifaces */    list iface_list;              /* List of active ifaces */
     u8 valid;                     /* Router is valid for forwarding, used for shutdown */
   u8 active;                    /* Whether radv is active w.r.t. triggers */    u8 active;                    /* Whether radv is active w.r.t. triggers */
     u8 fib_up;                    /* FIB table (routes) is initialized */
     struct fib routes;            /* FIB table of specific routes (struct radv_route) */
     bird_clock_t prune_time;      /* Next time of route table pruning */
 };  };
   
   struct radv_prefix              /* One prefix we advertise */
   {
     node n;
     ip_addr prefix;
     u8 len;
     u8 valid;                     /* Is the prefix valid? If not, we advertise it
                                      with 0 lifetime, so clients stop using it */
     u8 mark;                      /* A temporary mark for processing */
     bird_clock_t changed;         /* Last time when the prefix changed */
     struct radv_prefix_config *cf; /* The config tied to this prefix */
   };
   
 struct radv_iface  struct radv_iface
 {  {
   node n;    node n;
  struct proto_radv *ra;  struct radv_proto *ra;
   struct radv_iface_config *cf; /* Related config, must be updated in reconfigure */    struct radv_iface_config *cf; /* Related config, must be updated in reconfigure */
   struct iface *iface;    struct iface *iface;
   struct ifa *addr;             /* Link-local address of iface */    struct ifa *addr;             /* Link-local address of iface */
     struct pool *pool;            /* A pool for interface-specific things */
     list prefixes;                /* The prefixes we advertise (struct radv_prefix) */
     bird_clock_t prune_time;      /* Next time of prefix list pruning */
     bird_clock_t valid_time;      /* Cached packet is valid until first linger timeout */
   
   timer *timer;    timer *timer;
   struct object_lock *lock;    struct object_lock *lock;
Line 135  struct radv_iface Line 180  struct radv_iface
   
   bird_clock_t last;            /* Time of last sending of RA */    bird_clock_t last;            /* Time of last sending of RA */
   u16 plen;                     /* Length of prepared RA in tbuf, or 0 if not valid */    u16 plen;                     /* Length of prepared RA in tbuf, or 0 if not valid */
  byte initial;                 /* List of active ifaces */  byte initial;                 /* How many RAs are still to be sent as initial */
 };  };
   
 #define RA_EV_INIT 1            /* Switch to initial mode */  #define RA_EV_INIT 1            /* Switch to initial mode */
Line 148  struct radv_iface Line 193  struct radv_iface
 #define RA_PREF_HIGH    0x08  #define RA_PREF_HIGH    0x08
 #define RA_PREF_MASK    0x18  #define RA_PREF_MASK    0x18
   
   /* Attributes */
   #define EA_RA_PREFERENCE        EA_CODE(EAP_RADV, 0)
   #define EA_RA_LIFETIME          EA_CODE(EAP_RADV, 1)
   
 #ifdef LOCAL_DEBUG  #ifdef LOCAL_DEBUG
 #define RADV_FORCE_DEBUG 1  #define RADV_FORCE_DEBUG 1
 #else  #else
 #define RADV_FORCE_DEBUG 0  #define RADV_FORCE_DEBUG 0
 #endif  #endif
#define RADV_TRACE(flags, msg, args...) do { if ((ra->p.debug & flags) || RADV_FORCE_DEBUG) \#define RADV_TRACE(flags, msg, args...) do { if ((p->p.debug & flags) || RADV_FORCE_DEBUG) \
        log(L_TRACE "%s: " msg, ra->p.name , ## args ); } while(0)        log(L_TRACE "%s: " msg, p->p.name , ## args ); } while(0)
   
   
 /* radv.c */  /* radv.c */
Line 163  void radv_iface_notify(struct radv_iface *ifa, int eve Line 211  void radv_iface_notify(struct radv_iface *ifa, int eve
   
 /* packets.c */  /* packets.c */
 int radv_process_domain(struct radv_dnssl_config *cf);  int radv_process_domain(struct radv_dnssl_config *cf);
void radv_send_ra(struct radv_iface *ifa, int shutdown);void radv_send_ra(struct radv_iface *ifa);
 int radv_sk_open(struct radv_iface *ifa);  int radv_sk_open(struct radv_iface *ifa);
   
   

Removed from v.1.1.1.1  
changed lines
  Added in v.1.1.1.2


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