📄 route.h
字号:
u_char gate_len; u_char gate_family; u_char routeProto; u_char weight; u_long gate_addr; long value1; long value2; long value3; long value4; long value5; long routeTag; long routeTos; struct sockaddr * ifa; struct sockaddr * ifp; };#ifdef INET6#include <netinet/in.h> #include <netinet6/in6.h> /* For in6_addr */struct sockaddr_gate6 { u_char gate_len; u_char gate_family; u_char routeProto; u_char weight; long value1; struct in6_addr gate6_addr; long value2; long value3; long value4; long value5; long routeTag; long routeTos; struct sockaddr * ifa; struct sockaddr * ifp; };#endif /* INET6 */#endif /* ROUTER_STACK *//* * rmx_rtt and rmx_rttvar are stored as microseconds; * RTTTOPRHZ(rtt) converts to a value suitable for use * by a protocol slowtimo counter. */#define RTM_RTTUNIT 1000000 /* units for rtt, rttvar, as units per sec */#define RTTTOPRHZ(r) ((r) / (RTM_RTTUNIT / PR_SLOWHZ))/* * XXX kernel function pointer `rt_output' is visible to applications. *//* Values for rt_flags */#define RTF_UP 0x1 /* route usable */#define RTF_GATEWAY 0x2 /* destination is a gateway */#define RTF_HOST 0x4 /* host entry (net otherwise) */#define RTF_REJECT 0x8 /* host or net unreachable */#define RTF_DYNAMIC 0x10 /* created dynamically (by redirect) */#define RTF_MODIFIED 0x20 /* modified dynamically (by redirect)*/#define RTF_DONE 0x40 /* message confirmed */#define RTF_NO_MSGS RTF_DONE /* tells the RTM to not generate * routing messages */#define RTF_DELCLONE 0x80 /* delete cloned route */#define RTF_INTF_ROUTE RTF_DELCLONE /* Used to indicate to rtrequest that * this is an interface route. */#define RTF_CLONING 0x100 /* generate new routes on use */#define RTF_XRESOLVE 0x200 /* external daemon resolves name */#define RTF_LLINFO 0x400 /* generated by link layer (e.g. ARP)*/#define RTF_STATIC 0x800 /* manually added */#define RTF_BLACKHOLE 0x1000 /* just discard pkts (during updates)*/#define RTF_MGMT 0x2000 /* modified by management proto */#define RTF_PROTO2 0x4000 /* protocol specific routing flag */#define RTF_PROTO1 0x8000 /* protocol specific routing flag */#define RTF_PRCLONING 0x10000 /* protocol requires cloning */#define RTF_WASCLONED 0x20000 /* route generated through cloning */#define RTF_PROTO3 0x40000 /* protocol specific routing flag */#define RTPRF_OURS RTF_PROTO3 /* set on routes we manage *//* 0x80000 unused */#define RTF_PINNED 0x100000 /* future use */#define RTF_LOCAL 0x200000 /* route represents a local address */#define RTF_BROADCAST 0x400000 /* route represents a bcast address */#define RTF_MULTICAST 0x800000 /* route represents a mcast address */ /* 0x1000000 and up unassigned */#define RTF_LLNOTAVAIL 0x1000000 /* Link layer not available for eg. */ /* if the interface is down */#define RTF_PRIMARY 0x2000000 /* Primary route -used for forwarding*//* * Routing statistics. */struct rtstat { short rts_badredirect; /* bogus redirect calls */ short rts_dynamic; /* routes created by redirects */ short rts_newgateway; /* routes modified by redirects */ short rts_unreach; /* lookups which failed */ short rts_wildcard; /* lookups satisfied by a wildcard */};/* * Structures for routing messages. */struct rt_msghdr { u_short rtm_msglen; /* to skip over non-understood messages */ u_char rtm_version; /* future binary compatibility */ u_char rtm_type; /* message type */ u_short rtm_index; /* index for associated ifp */ int rtm_flags; /* flags, incl. kern & message, e.g. DONE */ int rtm_addrs; /* bitmask identifying sockaddrs in msg */ pid_t rtm_pid; /* identify sender */ int rtm_seq; /* for sender to identify action */ int rtm_errno; /* why failed */ int rtm_use; /* from rtentry */ u_long rtm_inits; /* which metrics we are initializing */ struct rt_metrics rtm_rmx; /* metrics themselves */};#define RTM_VERSION 5 /* Up the ante and ignore older versions *//* * Message types. The message numbers should be continous as their * values are used as array indices */#define RTM_ADD 0x1 /* Add Route */#define RTM_DELETE 0x2 /* Delete Route */#define RTM_CHANGE 0x3 /* Change Metrics or flags */#define RTM_GET 0x4 /* Report Metrics */#define RTM_LOSING 0x5 /* Kernel Suspects Partitioning */#define RTM_REDIRECT 0x6 /* Told to use different route */#define RTM_MISS 0x7 /* Lookup failed on this address */#define RTM_LOCK 0x8 /* fix specified metrics */#define RTM_OLDADD 0x9 /* caused by SIOCADDRT */#define RTM_OLDDEL 0xa /* caused by SIOCDELRT */#define RTM_RESOLVE 0xb /* req to resolve dst to LL addr */#define RTM_NEWADDR 0xc /* address being added to iface */#define RTM_DELADDR 0xd /* address being removed from iface */#define RTM_IFINFO 0xe /* iface going up/down etc. */#define RTM_NEWMADDR 0xf /* mcast group membership being added to if */#define RTM_DELMADDR 0x10 /* mcast group membership being deleted */#define RTM_IFANNOUNCE 0x11 /* iface arrival/departure */#ifdef ROUTER_STACK/* New WRN messages */#define RTM_NEWCHANGE 0x12 /* Change gateway of duplicate route */#define RTM_NEWGET 0x13 /* Find any route with gateway */#define RTM_GETALL 0x14 /* Get IP route to dst and any duplicates */#endif /* ROUTER_STACK */#define RTM_NEWIPROUTE 0x15 /* Replacement for deleted primary IP route */#define RTM_OLDIPROUTE 0x16 /* Demoted IP route replaced with new entry */#ifdef ROUTER_STACK/* Backward compatibility messages. Will go away in the next release */ #define RTM_ADDEXTRA 0x17 /* Duplicate route added */#define RTM_DELEXTRA 0x18 /* Duplicate route deleted */#endif /* ROUTER_STACK */#define RTM_ADDRINFO 0x19 /* change address flags *//* * Bitmask values for rtm_inits and rmx_locks. */#define RTV_MTU 0x1 /* init or lock _mtu */#define RTV_HOPCOUNT 0x2 /* init or lock _hopcount */#define RTV_EXPIRE 0x4 /* init or lock _expire */#define RTV_RPIPE 0x8 /* init or lock _recvpipe */#define RTV_SPIPE 0x10 /* init or lock _sendpipe */#define RTV_SSTHRESH 0x20 /* init or lock _ssthresh */#define RTV_RTT 0x40 /* init or lock _rtt */#define RTV_RTTVAR 0x80 /* init or lock _rttvar *//* New flag values for additional metrics */#define RTV_VALUE1 0x100 /* assign or lock first additional metric */#define RTV_VALUE2 0x200 /* assign or lock second additional metric */#define RTV_VALUE3 0x400 /* assign or lock third additional metric */#define RTV_VALUE4 0x800 /* assign or lock fourth additional metric */#define RTV_VALUE5 0x1000 /* assign or lock fifth additional metric */#define RTV_ROUTETAG 0x2000 /* assign or lock route tag value */#define RTV_WEIGHT 0x4000 /* assign or lock administrative weight *//* * Bitmask values for rtm_addrs. */#define RTA_DST 0x1 /* destination sockaddr present */#define RTA_GATEWAY 0x2 /* gateway sockaddr present */#define RTA_NETMASK 0x4 /* netmask sockaddr present */#define RTA_GENMASK 0x8 /* cloning mask sockaddr present */#define RTA_IFP 0x10 /* interface name sockaddr present */#define RTA_IFA 0x20 /* interface addr sockaddr present */#define RTA_AUTHOR 0x40 /* sockaddr for author of redirect */#define RTA_BRD 0x80 /* for NEWADDR, broadcast or p-p dest addr *//* * Index offsets for sockaddr array for alternate internal encoding. */#define RTAX_DST 0 /* destination sockaddr present */#define RTAX_GATEWAY 1 /* gateway sockaddr present */#define RTAX_NETMASK 2 /* netmask sockaddr present */#define RTAX_GENMASK 3 /* cloning mask sockaddr present */#define RTAX_IFP 4 /* interface name sockaddr present */#define RTAX_IFA 5 /* interface addr sockaddr present */#define RTAX_AUTHOR 6 /* sockaddr for author of redirect */#define RTAX_BRD 7 /* for NEWADDR, broadcast or p-p dest addr */#define RTAX_MAX 8 /* size of array to allocate */struct rt_addrinfo { int rti_addrs; struct sockaddr *rti_info[RTAX_MAX];};struct route_cb { int ip_count; int ip6_count; int ipx_count; int ns_count; int any_count;};/* * This macro is called by users of RTM to release references to the * route entry. * this macro will be called as RTFREE (rt) */#ifdef FINEGRAIN_LOCKING_MODEL#define RTFREE(rt) ipRouteUnlock (rt) #else#define RTFREE(rt) _RTFREE (rt) #endif /* FINEGRAIN_LOCKING_MODEL */#ifdef _WRS_KERNEL#ifdef FINEGRAIN_LOCKING_MODEL#define RTLOCK(rt) ipRouteLock (rt) #else#define RTLOCK(rt) (RREFCNT (rt))++#endif /* FINEGRAIN_LOCKING_MODEL */#ifndef VIRTUAL_STACKextern struct route_cb _route_cb;#endif /* VIRTUAL_STACK */struct ifmultiaddr;struct proc;struct ifaddr;int route_init __P((void));void rtalloc __P((struct route *));void rtalloc_ign __P((struct route *, u_long));struct rtentry * rtalloc1 __P((struct sockaddr *, int, u_long));int rtinit __P((struct ifaddr *, int, int));int rtioctl __P((u_long, caddr_t, struct proc *));int rtredirect __P((struct sockaddr *, struct sockaddr *, struct sockaddr *, int, struct sockaddr *, struct rtentry **));int rtrequest __P((int, struct sockaddr *, struct sockaddr *, struct sockaddr *, int, struct rtentry **));struct ifaddr *ifa_ifwithindex __P((int flags, int index, struct sockaddr *dst, struct sockaddr *gate));struct ifaddr *ifa_ifaddrValidate __P((void *pIfAddr, int index)); void rt_maskedcopy __P((struct sockaddr *src, struct sockaddr *dst, struct sockaddr *netmask));void ipRouteFree __P((struct rtentry * pRoute, BOOL inTable));#include <route/ipRouteLib.h>#endif /* _WRS_KERNEL */#ifdef __cplusplus}#endif#endif /* _NET_ROUTE_H_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -