Changeset View
Changeset View
Standalone View
Standalone View
sys/net/route.h
Show First 20 Lines • Show All 84 Lines • ▼ Show 20 Lines | struct rt_metrics { | ||||
u_long rmx_expire; /* lifetime for route, e.g. redirect */ | u_long rmx_expire; /* lifetime for route, e.g. redirect */ | ||||
u_long rmx_recvpipe; /* inbound delay-bandwidth product */ | u_long rmx_recvpipe; /* inbound delay-bandwidth product */ | ||||
u_long rmx_sendpipe; /* outbound delay-bandwidth product */ | u_long rmx_sendpipe; /* outbound delay-bandwidth product */ | ||||
u_long rmx_ssthresh; /* outbound gateway buffer limit */ | u_long rmx_ssthresh; /* outbound gateway buffer limit */ | ||||
u_long rmx_rtt; /* estimated round trip time */ | u_long rmx_rtt; /* estimated round trip time */ | ||||
u_long rmx_rttvar; /* estimated rtt variance */ | u_long rmx_rttvar; /* estimated rtt variance */ | ||||
u_long rmx_pksent; /* packets sent using this route */ | u_long rmx_pksent; /* packets sent using this route */ | ||||
u_long rmx_weight; /* route weight */ | u_long rmx_weight; /* route weight */ | ||||
u_long rmx_filler[3]; /* will be used for T/TCP later */ | u_long rmx_nhidx; /* route nexhop index */ | ||||
u_long rmx_filler[2]; /* will be used for T/TCP later */ | |||||
}; | }; | ||||
/* | /* | ||||
* rmx_rtt and rmx_rttvar are stored as microseconds; | * rmx_rtt and rmx_rttvar are stored as microseconds; | ||||
* RTTTOPRHZ(rtt) converts to a value suitable for use | * RTTTOPRHZ(rtt) converts to a value suitable for use | ||||
* by a protocol slowtimo counter. | * by a protocol slowtimo counter. | ||||
*/ | */ | ||||
#define RTM_RTTUNIT 1000000 /* units for rtt, rttvar, as units per sec */ | #define RTM_RTTUNIT 1000000 /* units for rtt, rttvar, as units per sec */ | ||||
▲ Show 20 Lines • Show All 43 Lines • ▼ Show 20 Lines | struct rtentry { | ||||
*/ | */ | ||||
#define rt_key(r) (*((struct sockaddr **)(&(r)->rt_nodes->rn_key))) | #define rt_key(r) (*((struct sockaddr **)(&(r)->rt_nodes->rn_key))) | ||||
#define rt_mask(r) (*((struct sockaddr **)(&(r)->rt_nodes->rn_mask))) | #define rt_mask(r) (*((struct sockaddr **)(&(r)->rt_nodes->rn_mask))) | ||||
#define rt_key_const(r) (*((const struct sockaddr * const *)(&(r)->rt_nodes->rn_key))) | #define rt_key_const(r) (*((const struct sockaddr * const *)(&(r)->rt_nodes->rn_key))) | ||||
#define rt_mask_const(r) (*((const struct sockaddr * const *)(&(r)->rt_nodes->rn_mask))) | #define rt_mask_const(r) (*((const struct sockaddr * const *)(&(r)->rt_nodes->rn_mask))) | ||||
struct sockaddr *rt_gateway; /* value */ | struct sockaddr *rt_gateway; /* value */ | ||||
struct ifnet *rt_ifp; /* the answer: interface to use */ | struct ifnet *rt_ifp; /* the answer: interface to use */ | ||||
struct ifaddr *rt_ifa; /* the answer: interface address to use */ | struct ifaddr *rt_ifa; /* the answer: interface address to use */ | ||||
struct nhop_object *rt_nhop; /* nexthop data */ | |||||
int rt_flags; /* up/down?, host/net */ | int rt_flags; /* up/down?, host/net */ | ||||
int rt_refcnt; /* # held references */ | int rt_refcnt; /* # held references */ | ||||
u_int rt_fibnum; /* which FIB */ | u_int rt_fibnum; /* which FIB */ | ||||
u_long rt_mtu; /* MTU for this path */ | u_long rt_mtu; /* MTU for this path */ | ||||
u_long rt_weight; /* absolute weight */ | u_long rt_weight; /* absolute weight */ | ||||
u_long rt_expire; /* lifetime for route, e.g. redirect */ | u_long rt_expire; /* lifetime for route, e.g. redirect */ | ||||
#define rt_endzero rt_pksent | #define rt_endzero rt_pksent | ||||
counter_u64_t rt_pksent; /* packets sent using this route */ | counter_u64_t rt_pksent; /* packets sent using this route */ | ||||
▲ Show 20 Lines • Show All 49 Lines • ▼ Show 20 Lines | |||||
#define NHF_BLACKHOLE 0x0020 /* RTF_BLACKHOLE */ | #define NHF_BLACKHOLE 0x0020 /* RTF_BLACKHOLE */ | ||||
#define NHF_REDIRECT 0x0040 /* RTF_DYNAMIC|RTF_MODIFIED */ | #define NHF_REDIRECT 0x0040 /* RTF_DYNAMIC|RTF_MODIFIED */ | ||||
#define NHF_DEFAULT 0x0080 /* Default route */ | #define NHF_DEFAULT 0x0080 /* Default route */ | ||||
#define NHF_BROADCAST 0x0100 /* RTF_BROADCAST */ | #define NHF_BROADCAST 0x0100 /* RTF_BROADCAST */ | ||||
#define NHF_GATEWAY 0x0200 /* RTF_GATEWAY */ | #define NHF_GATEWAY 0x0200 /* RTF_GATEWAY */ | ||||
#define NHF_HOST 0x0400 /* RTF_HOST */ | #define NHF_HOST 0x0400 /* RTF_HOST */ | ||||
/* Nexthop request flags */ | /* Nexthop request flags */ | ||||
#define NHR_NONE 0x00 /* empty flags field */ | |||||
#define NHR_IFAIF 0x01 /* Return ifa_ifp interface */ | #define NHR_IFAIF 0x01 /* Return ifa_ifp interface */ | ||||
#define NHR_REF 0x02 /* For future use */ | #define NHR_REF 0x02 /* For future use */ | ||||
/* uRPF */ | |||||
#define NHR_NODEFAULT 0x04 /* do not consider default route */ | |||||
/* Control plane route request flags */ | /* Control plane route request flags */ | ||||
#define NHR_COPY 0x100 /* Copy rte data */ | #define NHR_COPY 0x100 /* Copy rte data */ | ||||
#ifdef _KERNEL | #ifdef _KERNEL | ||||
/* rte<>ro_flags translation */ | /* rte<>ro_flags translation */ | ||||
static inline void | static inline void | ||||
rt_update_ro_flags(struct route *ro) | rt_update_ro_flags(struct route *ro) | ||||
{ | { | ||||
Show All 11 Lines | |||||
* Routing statistics. | * Routing statistics. | ||||
*/ | */ | ||||
struct rtstat { | struct rtstat { | ||||
uint64_t rts_badredirect; /* bogus redirect calls */ | uint64_t rts_badredirect; /* bogus redirect calls */ | ||||
uint64_t rts_dynamic; /* routes created by redirects */ | uint64_t rts_dynamic; /* routes created by redirects */ | ||||
uint64_t rts_newgateway; /* routes modified by redirects */ | uint64_t rts_newgateway; /* routes modified by redirects */ | ||||
uint64_t rts_unreach; /* lookups which failed */ | uint64_t rts_unreach; /* lookups which failed */ | ||||
uint64_t rts_wildcard; /* lookups satisfied by a wildcard */ | uint64_t rts_wildcard; /* lookups satisfied by a wildcard */ | ||||
uint64_t rts_nh_idx_alloc_failure; /* nexthop index alloc failure*/ | |||||
uint64_t rts_nh_alloc_failure; /* nexthop allocation failure*/ | |||||
}; | }; | ||||
/* | /* | ||||
* Structures for routing messages. | * Structures for routing messages. | ||||
*/ | */ | ||||
struct rt_msghdr { | struct rt_msghdr { | ||||
u_short rtm_msglen; /* to skip over non-understood messages */ | u_short rtm_msglen; /* to skip over non-understood messages */ | ||||
u_char rtm_version; /* future binary compatibility */ | u_char rtm_version; /* future binary compatibility */ | ||||
▲ Show 20 Lines • Show All 246 Lines • ▼ Show 20 Lines | |||||
int rtrequest1_fib(int, struct rt_addrinfo *, struct rtentry **, u_int); | int rtrequest1_fib(int, struct rt_addrinfo *, struct rtentry **, u_int); | ||||
int rib_lookup_info(uint32_t, const struct sockaddr *, uint32_t, uint32_t, | int rib_lookup_info(uint32_t, const struct sockaddr *, uint32_t, uint32_t, | ||||
struct rt_addrinfo *); | struct rt_addrinfo *); | ||||
void rib_free_info(struct rt_addrinfo *info); | void rib_free_info(struct rt_addrinfo *info); | ||||
int rib_add_redirect(u_int fibnum, struct sockaddr *dst, | int rib_add_redirect(u_int fibnum, struct sockaddr *dst, | ||||
struct sockaddr *gateway, struct sockaddr *author, struct ifnet *ifp, | struct sockaddr *gateway, struct sockaddr *author, struct ifnet *ifp, | ||||
int flags, int expire_sec); | int flags, int expire_sec); | ||||
/* New API */ | |||||
void rib_walk(int af, u_int fibnum, rt_walktree_f_t *wa_f, void *arg); | |||||
#endif | #endif | ||||
#endif | #endif |