⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 iproutelib.h

📁 vxworks 6.x 的全部头文件
💻 H
📖 第 1 页 / 共 2 页
字号:
	           --(RREFCNT (x)); \	       } while (0)/* Structure for specifying new metrics in the ipRouteModify call */struct changeMetrics    {    BOOL		setMetrics;	/* update metrics too or just update */      					/* the locks */    u_long		cm_inits;	/* which metrics are we changing */    struct rt_metrics	cm_rmx; 	/* metrics themselves */    };#define ARP_ROUTE(pRoute) \	  ((pRoute)->rt_gateway->sa_family == AF_LINK && \	   (RFLAGS ((pRoute)) & RTF_LLINFO))/* * This macro is used to detect routes that had their gateway changed to * an ARP template by the internal route processing. The RTF_LOCAL is used * to detect loopback IPv6 routes which are added with a RTF_LINFO flag */#define INTERFACE_ROUTE(pRoute) \	  ((pRoute)->rt_gateway->sa_family == AF_LINK && \	   (!(RFLAGS ((pRoute)) & RTF_LLINFO) || \	    (RFLAGS ((pRoute)) & RTF_LOCAL)))#define GET_INTERFACE_ADDR(pRoute)	((ROUTE_IFA (pRoute))->ifa_addr)/* These macros return the protocol address for the given sockaddr */#define SOCKADDR_IN(s) 	(((struct sockaddr_in *)(s))->sin_addr.s_addr)#define IP4ADDR(pAddr)	((ULONG *) &(SOCKADDR_IN(pAddr)))#ifdef INET6#define SOCKADDR_IN6(s) 	(((struct sockaddr_in6 *)(s))->sin6_addr)#define SA6(s) 		(((struct sockaddr_in6 *)(s))->sin6_addr)#define IP6ADDR(pAddr)	((ULONG *) &(SOCKADDR_IN6(pAddr)))	/* This macro checks if the given IPv6 addr is all zeros */#define IP6_ADDR_IS_ZERO(s) (SA6(s).s6_addr32[0] == 0 && \                             SA6(s).s6_addr32[1] == 0 && \                             SA6(s).s6_addr32[2] == 0 && \                             SA6(s).s6_addr32[3] == 0)#define IPADDR_IS_ZERO(s) \  ((s)->sa_family == AF_INET ? \   ((s)->sa_len <= (u_char)IP4ADDR (0) || SOCKADDR_IN (s) == 0) :	\   ((s)->sa_len <= (u_char)IP6ADDR (0) || IP6_ADDR_IS_ZERO (s)))  		    /* This macro checks if the given IPv6 addr is all ones */#define IP6_ADDR_IS_ALLONES(s) (SA6(s).s6_addr32[0] == 0xffffffff && \                             SA6(s).s6_addr32[1] == 0xffffffff && \                             SA6(s).s6_addr32[2] == 0xffffffff && \                             SA6(s).s6_addr32[3] == 0xffffffff)#define IPADDR_IS_ALLONES(s) \	((s)->sa_family == AF_INET ? SOCKADDR_IN (s) == 0xffffffff : \	 IP6_ADDR_IS_ALLONES (s))#else /* INET6 */#define IPADDR_IS_ZERO(s) \   ((s)->sa_len <= (u_char)IP4ADDR (0) || SOCKADDR_IN (s) == 0)#define IPADDR_IS_ALLONES(s) (SOCKADDR_IN (s) == 0xffffffff)#endif /* INET6 */#ifdef DEBUG_CHECKS#ifdef INET6/* * The following macro returns a pointer to the start of the IP address * given the sockaddr structure. For unrecognized address families * it calls panic */#define IPADDR(pAddr) (pAddr->sa_family == AF_INET ? IP4ADDR (pAddr) :\                       (pAddr->sa_family == AF_INET6 ? IP6ADDR (pAddr) : \                        (ULONG *) (panic("BAD address family: %d %x @ %s:%d\n", \                                         pAddr->sa_family, pAddr, \                                         __FILE__, __LINE__),\                                   NULL)))#else /* INET6 *//* * The following macro returns a pointer to the start of the IP address * given the sockaddr structure. For unrecognized address families * it calls panic */#define IPADDR(pAddr) (pAddr->sa_family == AF_INET ? IP4ADDR (pAddr) : \                       (ULONG *) (panic ("BAD address family: %d %x @ %s:%d\n", \                                         pAddr->sa_family, pAddr, \					 __FILE__, __LINE__), \                                  NULL))#endif /* INET6 */#else /* DEBUG_CHECKS */#ifdef INET6/* * The following macro returns a pointer to the start of the IPv4 or IPv6 * address within a sockaddr structure. It silently ignores unrecognized * address families, since debugging is not enabled. */#define IPADDR(pAddr) ((pAddr)->sa_family == AF_INET ? \                       (ULONG *) &(SOCKADDR_IN((pAddr))) : \                        (ULONG *) &(SOCKADDR_IN6((pAddr))))#else /* INET6 *//* * The following macro returns a pointer to the start of the IPv4 address * within a sockaddr structure. It silently ignores unrecognized address * families, since debugging is not enabled. */#define IPADDR(pAddr) ((ULONG *) &(SOCKADDR_IN((pAddr))))#endif /* INET6 */ #endif /* DEBUG_CHECKS *//* external function declarations */#ifdef VIRTUAL_STACKextern VS_REG_ID ipRouteRegistrationNum;#endif /* VIRTUAL_STACK */extern IP_ROUTE_CONFIG_PARAMS_T ipRouteDefaultConfigParams;struct ipRouteDispatchTable;/* Administrative functions */STATUS ipRouteLibInit __P ((void));STATUS ipRouteLibInstInit __P ((void *pRouteConfigParams));STATUS ipRouteLibShutdown __P (());#ifdef VIRTUAL_STACKSTATUS ipRouteLibDestructor __P ((VSNUM vsnum));#endif /* VIRTUAL_STACK */STATUS ipRouteTableSet __P ((ULONG routeUsage, 			     struct ipRouteDispatchTable * pRibOps));STATUS ipRouteTableCreate __P ((ULONG routeUsage));STATUS ipRouteTablesCreate __P ((void));STATUS ipRouteTableDestroy __P ((ULONG routeUsage));STATUS ipRouteTableShow __P ((int routeUsage));/* Core functions - Route creation, deletion, modification, retrieval, free */STATUS ipRouteCreate __P ((struct sockaddr * pDstAddr, 			   struct sockaddr * pNetmask, 			   struct sockaddr * pGateway, ULONG routeIndex, 			   ULONG routeTos, ULONG routeOwner, ULONG routeSource,			   ULONG routeFormat, UCHAR routeWeight, 			   ULONG routeFlags, void * pRouteData, 			   void * pCustomData, struct rtentry **ppRtEntry));STATUS ipRouteDelete __P ((struct sockaddr * pDstAddr, 			   struct sockaddr * pNetmask, 			   struct sockaddr * pGateway, long routeTos, 			   ULONG routeOwner, ULONG routeFormat));STATUS ipIntRouteDelete __P ((struct sockaddr * pDstAddr, 			      struct sockaddr * pNetmask, 			      struct sockaddr * pGateway, long routeTos, 			      ULONG routeOwner, ULONG routeFormat,			      struct rt_msghdr *pRtm));struct rtentry * ipRouteGet __P ((struct sockaddr * pDstAddr, 				struct sockaddr * pGateway, long routeTos, 				ULONG routeOwner, ULONG routeFormat, 				BOOL skipFlag));struct rtentry * ipRouteLookup __P ((struct sockaddr * pDstAddr, 				   struct sockaddr * pNetmask, 				   struct sockaddr * pGateway, long routeTos, 				   ULONG routeOwner, ULONG routeFormat));struct rtentry * ipRouteLexGet __P ((struct sockaddr * pDstAddr, 				   struct sockaddr * pNetmask, 				   struct sockaddr * pGateway, ULONG routeTos, 				   ULONG indexType, ULONG routeFormat));struct rtentry * ipRouteLexNextGet __P ((struct sockaddr * pDstAddr, 				       struct sockaddr * pNetmask, 				       struct sockaddr * pGateway, 				       ULONG * pTos, ULONG indexType, 				       ULONG routeFormat));STATUS ipRouteModify __P ((struct sockaddr * pDstAddr, 			   struct sockaddr * pNetmask, 			   struct sockaddr * pGateway, ULONG routeIndex, 			   long routeTos, ULONG routeOwner, ULONG routeSource,			   ULONG routeFormat, struct sockaddr * pNewGateway, 			   UCHAR * pNewWeight, ULONG * pNewFlags, 			   void * pNewRouteData, void * pNewCustomData));STATUS ipIntRouteModify __P ((struct sockaddr * pDstAddr, 			      struct sockaddr * pNetmask, 			      struct sockaddr * pGateway, ULONG routeIndex, 			      long routeTos, ULONG routeOwner, 			      ULONG routeSource, ULONG routeFormat, 			      struct sockaddr * pNewGateway, 			      UCHAR * pNewWeight, ULONG * pNewFlags, 			      void * pNewRouteData, void * pNewCustomData,			      struct rt_msghdr *pRtm));void ipRouteUnlock __P ((struct rtentry * pRoute));void ipRouteLock __P ((struct rtentry * pRoute));void ipRouteUnlockOrDelete __P ((struct rtentry * pRoute));STATUS ipRouteNumRoutesGet __P ((int routeUsage));/* Support functions - needed by other parts of the code */STATUS ipRouteTableWalk __P ((ULONG routeUsage, 			      void (* pFunc )(struct rtentry * rt, void * pArg),			      void * pArg));struct rtentry * ipRouteMatch __P ((struct rtentry * pRoute, 				  struct sockaddr * pGateway, long routeTos,				  ULONG routeOwner));int rt_setgate __P ((struct rtentry *rt, struct sockaddr * pDstAddr, 		     struct sockaddr * pGate));void ipRouteNetmaskTrim (int routeFormat, struct sockaddr * pNetmask);#ifdef __cplusplus}#endif#endif /* _INCrouteEnhLibh */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -