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

📄 fastpathutil.h

📁 vxworks 6.x 的全部头文件
💻 H
字号:
/* fastPathUtil.h - Definitions for the Fastpath utility routines   *//* Copyright 1984-2005 Wind River Systems, Inc. *//*modification history--------------------01o,24feb05,spm  performance updates and code cleanup (SPR #100995)01n,18jan05,vvv  osdep.h cleanup01m,28may04,niq  Merging from base6 label POST_ITER5_FRZ16_REBASE01l,20nov03,niq  Remove copyright_wrs.h file inclusion01k,12nov03,rlm  Removed includes of <osdep.h> and <machdep.h>01j,04nov03,rlm  Ran batch header path update for header re-org.01i,12mar03,niq  Turn FF_LOG_ADDR into a function and remove the addr family                 arg01h,06mar03,niq  Add another logging category for fastpath monitor01g,17feb03,deg  FF_LOG_ROUTE() changed01f,25jan03,deg  IPADDR_ARE_SAME added01e,23jan03,deg  IPADDR_IS_MULTICAST() added01d,14jan03,deg  macro SIN6() added01c,09dec02,deg  IPADDR1_ARE_SAME(), GET_ADDR_LEN_FROM_AF() added01b,02dec02,deg  FF_ENTRY macros changed to FF_MEM macros01a,07oct02,deg  written*//*DESCRIPTIONThis file contains utility definitions for the Fastpath library, the IPv4 & IPv6 Fast Forwarder and the Fastpath RTM monitor. */#ifndef __INCfastPathUtil#define __INCfastPathUtil/* includes *//* defines */#define SA(p) ((struct sockaddr *)(p))#define SIN(p) ((struct sockaddr_in *)(p))#define SIN6(p) ((struct sockaddr_in6 *)(p))#define SDL(p) ((struct sockaddr_dl *)(p))#define MAYBE_OK   (OK + 1)/* Determines if two IP addresses are same. Handles NULL arguments */#define IPADDR1_ARE_SAME(pAddr1, pAddr2, len) \    ((pAddr1 == pAddr2) || \     (pAddr1 != NULL && pAddr2 != NULL && \      (bcmp ((char *) pAddr1, (char *) pAddr2, len) == 0)))/* This macro checks if the given IPv6 addrs are equal. Doesn't check scope */#define IP6_ARE_ADDR_SAME(d, a)      ( \        ((d).s6_addr32[0] == (a).s6_addr32[0]) && \        ((d).s6_addr32[1] == (a).s6_addr32[1]) && \        ((d).s6_addr32[2] == (a).s6_addr32[2]) && \        ((d).s6_addr32[3] == (a).s6_addr32[3]))/*  * Given two sockaddr strutures this macro checks if their IP addresses match * Handles NULL arguments */#ifdef INET6#define IPADDR_ARE_SAME(pAddr1, pAddr2) \    ((pAddr1 == pAddr2) || \     (pAddr1 != NULL && pAddr2 != NULL && \      ((pAddr1->sa_len ==  pAddr2->sa_len) && \       ((pAddr1->sa_family == AF_INET) ? \        (SOCKADDR_IN(pAddr1) == SOCKADDR_IN(pAddr2)) : \        IP6_ARE_ADDR_SAME (SA6(pAddr1), SA6(pAddr2))))))#else#define IPADDR_ARE_SAME(pAddr1, pAddr2) \    ((pAddr1 == pAddr2) || \     (pAddr1 != NULL && pAddr2 != NULL && \      ((pAddr1->sa_len ==  pAddr2->sa_len) && \       (SOCKADDR_IN(pAddr1) == SOCKADDR_IN(pAddr2)))))#endif /* INET6 */#ifdef INET6#define IPADDR_IS_LOOPBACK(x) (((x)->sa_family == AF_INET) ? \			       SOCKADDR_IN (x) == htonl (INADDR_LOOPBACK) : \			       ((x)->sa_family == AF_INET6) ? \			       IN6_IS_ADDR_LOOPBACK(&(SA6(x))) : \                               (panic ("BAD address family: %d @ %s:%d \n", \                                       x, __FILE__, __LINE__), 0))#else#define IPADDR_IS_LOOPBACK(x) (((x)->sa_family == AF_INET) ? \                               SOCKADDR_IN (x) == htonl (INADDR_LOOPBACK) : \			       (panic ("BAD address family: %d @ %s:%d \n", \                                       x, __FILE__, __LINE__), 0))#endif /* INET6 */#ifdef INET6#define IPADDR_IS_MULTICAST(x) (((x)->sa_family == AF_INET) ? \			        IN_MULTICAST (SOCKADDR_IN (x)) : \			        ((x)->sa_family == AF_INET6) ? \			        IN6_IS_ADDR_MULTICAST(&(SA6(x))) : \                                (panic ("BAD address family: %d @ %s:%d \n", \                                        x, __FILE__, __LINE__), 0))#else#define IPADDR_IS_MULTICAST(x) (((x)->sa_family == AF_INET) ? \                               	IN_MULTICAST (SOCKADDR_IN (x)) : \			        (panic ("BAD address family: %d @ %s:%d \n", \                                        x, __FILE__, __LINE__), 0))#endif /* INET6 */#define FF_MEM_ALLOC(size) (malloc(size))#define FF_MEM_FREE(ref) (free((char *)(ref)))/* * The Log level is a two byte value that is formed by ORing the following 2 * bytes * Upper byte (MSB) :  Log path (FFL_PKT or FFL_RT) * Lower byte (LSB) :  logging level (FFL_INFO - FFL_PANIC) */#define FFL_VERBOSE      0x1   /* Log detailed messages */#define FFL_INFO	 0x2   /* Log informational messages */#define FFL_WARN         0x3   /* Log warning messages */#define FFL_ERROR	 0x4   /* Log error messages */#define FFL_NONCRIT	 0x5   /* Log non critical messages */#define FFL_CRIT	 0x8   /* Log critical messages */#define FFL_PANIC	 0x9   /* Log panic messages */#define FFL_MAX_LEVEL	 0x10  /* maximum log level *//* Log area */#define FFL_PKT		 0x100 /* Log messages in packet forwarding path */#define FFL_RT		 0x200 /* Log messages in FIB management path */#define FFL_MON		 0x400 /* Log messages in Fastpath monitor */#ifdef DEBUG#define FFL_LVL_MASK	 0x000000FF#define FFL_TYPE_MASK	 0x0000FF00#define FFL_PRINTF_MASK  0x00FF0000#define FFL_SUSPEND_MASK 0xFF000000#define FFL_LVL(x)	(x & FFL_LVL_MASK)#define FFL_TYPE(x)	(x & FFL_TYPE_MASK)#define FFL_PRINTF(x)   (x & FFL_PRINTF_MASK)#define FFL_SUSPEND(x)  (x & FFL_SUSPEND_MASK)#define FF_LOG_MSG0(lvl, fmt) \        ffLogMsg(lvl, fmt, 0, 0, 0, 0, 0, 0)#define FF_LOG_MSG1(lvl, fmt, a1) \        ffLogMsg(lvl, fmt, (int)a1, 0, 0, 0, 0, 0)#define FF_LOG_MSG2(lvl, fmt, a1, a2) \        ffLogMsg(lvl, fmt, (int)a1, a2, 0, 0, 0, 0)#define FF_LOG_MSG3(lvl, fmt, a1, a2, a3) \        ffLogMsg(lvl, fmt, (int)a1, a2, a3, 0, 0, 0)#define FF_LOG_MSG4(lvl, fmt, a1, a2, a3, a4) \        ffLogMsg(lvl, fmt, (int)a1, a2, a3, a4, 0, 0)#define FF_LOG_MSG5(lvl, fmt, a1, a2, a3, a4, a5) \        ffLogMsg(lvl, fmt, (int)a1, a2, a3, a4, a5, 0)#define FF_LOG_MSG6(lvl, fmt, a1, a2, a3, a4, a5, a6) \        ffLogMsg(lvl, fmt, (int)a1, (int)a2, (int)a3, (int)a4, (int)a5, (int)a6)/* * prints out the destination, netmask, gateway  * arguments pDstAddr, pNetmask, pGateway are from type sockaddr * * pDstAddr should not be NULL */#define FF_LOG_ADDR	ffLogAddr#define FF_LOG_ROUTE(lvl, pDstAddr, pRouteDstAddr, pNextHop) \        do { \        if (FFL_LVL (lvl) == FFL_CRIT || FFL_LVL (lvl) == FFL_PANIC || \	    FFL_LVL (lvl) == FFL_MAX_LEVEL || \	    ((FFL_TYPE (lvl) & FFL_TYPE (ffLibLogLevel)) && \	     (FFL_LVL (lvl) >= FFL_LVL (ffLibLogLevel)))) \	    { \            ffLogRoute(pDstAddr, pRouteDstAddr, pNextHop); \	    } \        } while (0)#else#define FF_LOG_MSG0(lvl, fmt)#define FF_LOG_MSG1(lvl, fmt, a1)#define FF_LOG_MSG2(lvl, fmt, a1, a2)#define FF_LOG_MSG3(lvl, fmt, a1, a2, a3)#define FF_LOG_MSG4(lvl, fmt, a1, a2, a3, a4)#define FF_LOG_MSG5(lvl, fmt, a1, a2, a3, a4, a5)#define FF_LOG_MSG6(lvl, fmt, a1, a2, a3, a4, a5, a6)#define FF_LOG_ADDR(lvl, pDstAddr, pGateway, pNetmask)                      #define FF_LOG_ROUTE(lvl, pDstAddr, pRouteDstAddr, pNextHop)#endif /* DEBUG */ /* function declarations */#ifdef DEBUGIMPORT VOID ffLogMsg  (ULONG lvl, unsigned char *fmt, int a1, int a2, int a3,		       int a4, int a5, int a6);IMPORT VOID ffLogAddr (ULONG lvl, struct sockaddr *pDstAddr, 		       struct sockaddr *pNetmask,		       struct sockaddr *pGateway);IMPORT VOID ffLogRoute (struct sockaddr *pDstAddr, struct sockaddr *pRouteDstAddr,			struct sockaddr *pNextHop);#endif /* DEBUG */#endif /* __INCfastPathUtil */

⌨️ 快捷键说明

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