diff options
Diffstat (limited to 'zebra/interface.h')
| -rw-r--r-- | zebra/interface.h | 320 | 
1 files changed, 163 insertions, 157 deletions
diff --git a/zebra/interface.h b/zebra/interface.h index 9f108760d6..9bcaf1423c 100644 --- a/zebra/interface.h +++ b/zebra/interface.h @@ -16,7 +16,7 @@   * You should have received a copy of the GNU General Public License   * along with GNU Zebra; see the file COPYING.  If not, write to the Free   * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA - * 02111-1307, USA.   + * 02111-1307, USA.   */  #ifndef _ZEBRA_INTERFACE_H @@ -38,142 +38,144 @@  #define IF_ZEBRA_SHUTDOWN_OFF    0  #define IF_ZEBRA_SHUTDOWN_ON     1 -#if defined (HAVE_RTADV) +#if defined(HAVE_RTADV)  /* Router advertisement parameter.  From RFC4861, RFC6275 and RFC4191. */ -struct rtadvconf -{ -  /* A flag indicating whether or not the router sends periodic Router -     Advertisements and responds to Router Solicitations. -     Default: FALSE */ -  int AdvSendAdvertisements; - -  /* The maximum time allowed between sending unsolicited multicast -     Router Advertisements from the interface, in milliseconds. -     MUST be no less than 70 ms [RFC6275 7.5] and no greater -     than 1800000 ms [RFC4861 6.2.1]. - -     Default: 600000 milliseconds */ -  int MaxRtrAdvInterval; +struct rtadvconf { +	/* A flag indicating whether or not the router sends periodic Router +	   Advertisements and responds to Router Solicitations. +	   Default: FALSE */ +	int AdvSendAdvertisements; + +	/* The maximum time allowed between sending unsolicited multicast +	   Router Advertisements from the interface, in milliseconds. +	   MUST be no less than 70 ms [RFC6275 7.5] and no greater +	   than 1800000 ms [RFC4861 6.2.1]. + +	   Default: 600000 milliseconds */ +	int MaxRtrAdvInterval;  #define RTADV_MAX_RTR_ADV_INTERVAL 600000 -  /* The minimum time allowed between sending unsolicited multicast -     Router Advertisements from the interface, in milliseconds. -     MUST be no less than 30 ms [RFC6275 7.5]. -     MUST be no greater than .75 * MaxRtrAdvInterval. +	/* The minimum time allowed between sending unsolicited multicast +	   Router Advertisements from the interface, in milliseconds. +	   MUST be no less than 30 ms [RFC6275 7.5]. +	   MUST be no greater than .75 * MaxRtrAdvInterval. -     Default: 0.33 * MaxRtrAdvInterval */ -  int MinRtrAdvInterval; /* This field is currently unused. */ +	   Default: 0.33 * MaxRtrAdvInterval */ +	int MinRtrAdvInterval; /* This field is currently unused. */ +			       /* $FRR indent$ */ +			       /* clang-format off */  #define RTADV_MIN_RTR_ADV_INTERVAL (0.33 * RTADV_MAX_RTR_ADV_INTERVAL) -  /* Unsolicited Router Advertisements' interval timer. */ -  int AdvIntervalTimer; +	/* Unsolicited Router Advertisements' interval timer. */ +	int AdvIntervalTimer; -  /* The TRUE/FALSE value to be placed in the "Managed address -     configuration" flag field in the Router Advertisement.  See -     [ADDRCONF]. -  -     Default: FALSE */ -  int AdvManagedFlag; +	/* The TRUE/FALSE value to be placed in the "Managed address +	   configuration" flag field in the Router Advertisement.  See +	   [ADDRCONF]. +	   Default: FALSE */ +	int AdvManagedFlag; -  /* The TRUE/FALSE value to be placed in the "Other stateful -     configuration" flag field in the Router Advertisement.  See -     [ADDRCONF]. -     Default: FALSE */ -  int AdvOtherConfigFlag; +	/* The TRUE/FALSE value to be placed in the "Other stateful +	   configuration" flag field in the Router Advertisement.  See +	   [ADDRCONF]. -  /* The value to be placed in MTU options sent by the router.  A -     value of zero indicates that no MTU options are sent. +	   Default: FALSE */ +	int AdvOtherConfigFlag; -     Default: 0 */ -  int AdvLinkMTU; +	/* The value to be placed in MTU options sent by the router.  A +	   value of zero indicates that no MTU options are sent. +	   Default: 0 */ +	int AdvLinkMTU; -  /* The value to be placed in the Reachable Time field in the Router -     Advertisement messages sent by the router.  The value zero means -     unspecified (by this router).  MUST be no greater than 3,600,000 -     milliseconds (1 hour). -     Default: 0 */ -  u_int32_t AdvReachableTime; -#define RTADV_MAX_REACHABLE_TIME 3600000 +	/* The value to be placed in the Reachable Time field in the Router +	   Advertisement messages sent by the router.  The value zero means +	   unspecified (by this router).  MUST be no greater than 3,600,000 +	   milliseconds (1 hour). +	   Default: 0 */ +	u_int32_t AdvReachableTime; +#define RTADV_MAX_REACHABLE_TIME 3600000 -  /* The value to be placed in the Retrans Timer field in the Router -     Advertisement messages sent by the router.  The value zero means -     unspecified (by this router). +	/* The value to be placed in the Retrans Timer field in the Router +	   Advertisement messages sent by the router.  The value zero means +	   unspecified (by this router). -     Default: 0 */ -  int AdvRetransTimer; +	   Default: 0 */ +	int AdvRetransTimer; -  /* The default value to be placed in the Cur Hop Limit field in the -     Router Advertisement messages sent by the router.  The value -     should be set to that current diameter of the Internet.  The -     value zero means unspecified (by this router). +	/* The default value to be placed in the Cur Hop Limit field in the +	   Router Advertisement messages sent by the router.  The value +	   should be set to that current diameter of the Internet.  The +	   value zero means unspecified (by this router). -     Default: The value specified in the "Assigned Numbers" RFC -     [ASSIGNED] that was in effect at the time of implementation. */ -  int AdvCurHopLimit; +	   Default: The value specified in the "Assigned Numbers" RFC +	   [ASSIGNED] that was in effect at the time of implementation. */ +	int AdvCurHopLimit; -  /* The value to be placed in the Router Lifetime field of Router -     Advertisements sent from the interface, in seconds.  MUST be -     either zero or between MaxRtrAdvInterval and 9000 seconds.  A -     value of zero indicates that the router is not to be used as a -     default router. +	/* The value to be placed in the Router Lifetime field of Router +	   Advertisements sent from the interface, in seconds.  MUST be +	   either zero or between MaxRtrAdvInterval and 9000 seconds.  A +	   value of zero indicates that the router is not to be used as a +	   default router. -     Default: 3 * MaxRtrAdvInterval */ -  int AdvDefaultLifetime; +	   Default: 3 * MaxRtrAdvInterval */ +	int AdvDefaultLifetime;  #define RTADV_MAX_RTRLIFETIME 9000 /* 2.5 hours */ -  /* A list of prefixes to be placed in Prefix Information options in -     Router Advertisement messages sent from the interface. +	/* A list of prefixes to be placed in Prefix Information options in +	   Router Advertisement messages sent from the interface. -     Default: all prefixes that the router advertises via routing -     protocols as being on-link for the interface from which the -     advertisement is sent. The link-local prefix SHOULD NOT be -     included in the list of advertised prefixes. */ -  struct list *AdvPrefixList; +	   Default: all prefixes that the router advertises via routing +	   protocols as being on-link for the interface from which the +	   advertisement is sent. The link-local prefix SHOULD NOT be +	   included in the list of advertised prefixes. */ +	struct list *AdvPrefixList; -  /* The TRUE/FALSE value to be placed in the "Home agent" -     flag field in the Router Advertisement.  See [RFC6275 7.1]. +	/* The TRUE/FALSE value to be placed in the "Home agent" +	   flag field in the Router Advertisement.  See [RFC6275 7.1]. -     Default: FALSE */ -  int AdvHomeAgentFlag; +	   Default: FALSE */ +	int AdvHomeAgentFlag;  #ifndef ND_RA_FLAG_HOME_AGENT  #define ND_RA_FLAG_HOME_AGENT 	0x20  #endif -  /* The value to be placed in Home Agent Information option if Home  -     Flag is set. -     Default: 0 */ -  int HomeAgentPreference; - -  /* The value to be placed in Home Agent Information option if Home  -     Flag is set. Lifetime (seconds) MUST not be greater than 18.2  -     hours.  -     The value 0 has special meaning: use of AdvDefaultLifetime value. -      -     Default: 0 */ -  int HomeAgentLifetime; +	/* The value to be placed in Home Agent Information option if Home +	   Flag is set. +	   Default: 0 */ +	int HomeAgentPreference; + +	/* The value to be placed in Home Agent Information option if Home +	   Flag is set. Lifetime (seconds) MUST not be greater than 18.2 +	   hours. +	   The value 0 has special meaning: use of AdvDefaultLifetime value. + +	   Default: 0 */ +	int HomeAgentLifetime;  #define RTADV_MAX_HALIFETIME 65520 /* 18.2 hours */ -  /* The TRUE/FALSE value to insert or not an Advertisement Interval -     option. See [RFC 6275 7.3] +	/* The TRUE/FALSE value to insert or not an Advertisement Interval +	   option. See [RFC 6275 7.3] -     Default: FALSE */ -  int AdvIntervalOption; +	   Default: FALSE */ +	int AdvIntervalOption; -  /* The value to be placed in the Default Router Preference field of -     a router advertisement. See [RFC 4191 2.1 & 2.2] +	/* The value to be placed in the Default Router Preference field of +	   a router advertisement. See [RFC 4191 2.1 & 2.2] -     Default: 0 (medium) */ -  int DefaultPreference; +	   Default: 0 (medium) */ +	int DefaultPreference;  #define RTADV_PREF_MEDIUM 0x0 /* Per RFC4191. */ -  u_char inFastRexmit;          /* True if we're rexmits faster than usual */ -  u_char configured;            /* Has operator configured RA? */ -  int NumFastReXmitsRemain;     /* Loaded first with number of fast rexmits to do */ +	u_char inFastRexmit; /* True if we're rexmits faster than usual */ +	u_char configured;   /* Has operator configured RA? */ +	int +		NumFastReXmitsRemain; /* Loaded first with number of fast +					 rexmits to do */  #define RTADV_FAST_REXMIT_PERIOD 1 /* 1 sec */  #define RTADV_NUM_FAST_REXMITS   4 /* Fast Rexmit RA 4 times on certain events */ @@ -182,93 +184,97 @@ struct rtadvconf  #endif /* HAVE_RTADV */  /* `zebra' daemon local interface structure. */ -struct zebra_if -{ -  /* Shutdown configuration. */ -  u_char shutdown; +struct zebra_if { +	/* Shutdown configuration. */ +	u_char shutdown; -  /* Multicast configuration. */ -  u_char multicast; +	/* Multicast configuration. */ +	u_char multicast; -  /* Router advertise configuration. */ -  u_char rtadv_enable; +	/* Router advertise configuration. */ +	u_char rtadv_enable; -  /* Installed addresses chains tree. */ -  struct route_table *ipv4_subnets; +	/* Installed addresses chains tree. */ +	struct route_table *ipv4_subnets; -  /* Information about up/down changes */ -  unsigned int up_count; -  char up_last[QUAGGA_TIMESTAMP_LEN]; -  unsigned int down_count; -  char down_last[QUAGGA_TIMESTAMP_LEN]; +	/* Information about up/down changes */ +	unsigned int up_count; +	char up_last[QUAGGA_TIMESTAMP_LEN]; +	unsigned int down_count; +	char down_last[QUAGGA_TIMESTAMP_LEN];  #if defined(HAVE_RTADV) -  struct rtadvconf rtadv; -  unsigned int ra_sent, ra_rcvd; +	struct rtadvconf rtadv; +	unsigned int ra_sent, ra_rcvd;  #endif /* HAVE_RTADV */  #ifdef HAVE_IRDP -  struct irdp_interface irdp; +	struct irdp_interface irdp;  #endif  #ifdef HAVE_STRUCT_SOCKADDR_DL -  union { -    /* note that sdl_storage is never accessed, it only exists to make space. -     * all actual uses refer to sdl - but use sizeof(sdl_storage)!  this fits -     * best with C aliasing rules. */ -    struct sockaddr_dl sdl; -    struct sockaddr_storage sdl_storage; -  }; +	union { +		/* note that sdl_storage is never accessed, it only exists to +		 * make space. +		 * all actual uses refer to sdl - but use sizeof(sdl_storage)! +		 * this fits +		 * best with C aliasing rules. */ +		struct sockaddr_dl sdl; +		struct sockaddr_storage sdl_storage; +	};  #endif  #ifdef SUNOS_5 -  /* the real IFF_UP state of the primary interface. -   * need this to differentiate between all interfaces being -   * down (but primary still plumbed) and primary having gone -   * ~IFF_UP, and all addresses gone. -   */ -  u_char primary_state; +	/* the real IFF_UP state of the primary interface. +	 * need this to differentiate between all interfaces being +	 * down (but primary still plumbed) and primary having gone +	 * ~IFF_UP, and all addresses gone. +	 */ +	u_char primary_state;  #endif /* SUNOS_5 */ -  /* ptm enable configuration */ -  u_char ptm_enable; +	/* ptm enable configuration */ +	u_char ptm_enable;  }; -extern struct interface *if_lookup_by_index_per_ns (struct zebra_ns *, u_int32_t); -extern struct interface *if_lookup_by_name_per_ns (struct zebra_ns *, const char *); -extern struct interface *if_link_per_ns (struct zebra_ns *, struct interface *); -extern const char *ifindex2ifname_per_ns (struct zebra_ns *, unsigned int); - -extern void if_unlink_per_ns (struct interface *); -extern void if_nbr_ipv6ll_to_ipv4ll_neigh_update (struct interface *ifp, -                                                  struct in6_addr *address, int add); -extern void if_nbr_ipv6ll_to_ipv4ll_neigh_del_all (struct interface *ifp); -extern void if_delete_update (struct interface *ifp); -extern void if_add_update (struct interface *ifp); -extern void if_up (struct interface *); -extern void if_down (struct interface *); -extern void if_refresh (struct interface *); -extern void if_flags_update (struct interface *, uint64_t); -extern int if_subnet_add (struct interface *, struct connected *); -extern int if_subnet_delete (struct interface *, struct connected *); -extern int ipv6_address_configured (struct interface *ifp); -extern void if_handle_vrf_change (struct interface *ifp, vrf_id_t vrf_id); - -extern void vrf_add_update (struct vrf *vrfp); +extern struct interface *if_lookup_by_index_per_ns(struct zebra_ns *, +						   u_int32_t); +extern struct interface *if_lookup_by_name_per_ns(struct zebra_ns *, +						  const char *); +extern struct interface *if_link_per_ns(struct zebra_ns *, struct interface *); +extern const char *ifindex2ifname_per_ns(struct zebra_ns *, unsigned int); + +extern void if_unlink_per_ns(struct interface *); +extern void if_nbr_ipv6ll_to_ipv4ll_neigh_update(struct interface *ifp, +						 struct in6_addr *address, +						 int add); +extern void if_nbr_ipv6ll_to_ipv4ll_neigh_del_all(struct interface *ifp); +extern void if_delete_update(struct interface *ifp); +extern void if_add_update(struct interface *ifp); +extern void if_up(struct interface *); +extern void if_down(struct interface *); +extern void if_refresh(struct interface *); +extern void if_flags_update(struct interface *, uint64_t); +extern int if_subnet_add(struct interface *, struct connected *); +extern int if_subnet_delete(struct interface *, struct connected *); +extern int ipv6_address_configured(struct interface *ifp); +extern void if_handle_vrf_change(struct interface *ifp, vrf_id_t vrf_id); + +extern void vrf_add_update(struct vrf *vrfp);  #ifdef HAVE_PROC_NET_DEV -extern void ifstat_update_proc (void); +extern void ifstat_update_proc(void);  #endif /* HAVE_PROC_NET_DEV */  #ifdef HAVE_NET_RT_IFLIST -extern void ifstat_update_sysctl (void); +extern void ifstat_update_sysctl(void);  #endif /* HAVE_NET_RT_IFLIST */  #ifdef HAVE_PROC_NET_DEV -extern int interface_list_proc (void); +extern int interface_list_proc(void);  #endif /* HAVE_PROC_NET_DEV */  #ifdef HAVE_PROC_NET_IF_INET6 -extern int ifaddr_proc_ipv6 (void); +extern int ifaddr_proc_ipv6(void);  #endif /* HAVE_PROC_NET_IF_INET6 */  #endif /* _ZEBRA_INTERFACE_H */  | 
