📄 pna.h
字号:
#define RT_MASK 0x2 /* Subnet Route with mask *//***********************************************************************//* Definitions of bits in internet address integers. *//***********************************************************************//*---------------------------------------------------------------------*//* Class A Network *//*---------------------------------------------------------------------*/#define IN_CLASSA(i) (((long)(i) & 0x80000000) == 0)#define IN_CLASSA_NET 0xFF000000#define IN_CLASSA_NSHIFT 0x18#define IN_CLASSA_HOST 0x00FFFFFF#define IN_CLASSA_MAX 0x80/*---------------------------------------------------------------------*//* Class B Network *//*---------------------------------------------------------------------*/#define IN_CLASSB(i) (((long)(i) & 0xc0000000) == 0x80000000)#define IN_CLASSB_NET 0xFFFF0000#define IN_CLASSB_NSHIFT 0x10#define IN_CLASSB_HOST 0x0000FFFF#define IN_CLASSB_MAX 0x10000/*---------------------------------------------------------------------*//* Class C Network *//*---------------------------------------------------------------------*/#define IN_CLASSC(i) (((long)(i) & 0xe0000000) == 0xc0000000)#define IN_CLASSC_NET 0xFFFFFF00#define IN_CLASSC_NSHIFT 0x8#define IN_CLASSC_HOST 0x000000FF/*---------------------------------------------------------------------*//* Broadcast and Default Address Definitions *//*---------------------------------------------------------------------*/#define INADDR_ANY ((unsigned long)0x00000000)#define INADDR_BROADCAST ((unsigned long)0xFFFFFFFF)#define INADDR_UNSPEC_GROUP ((unsigned long)0xe0000000) /* 224.0.0.0 */#define INADDR_ALLHOSTS_GROUP ((unsigned long)0xe0000001) /* 224.0.0.1 */#define INADDR_MAX_LOCAL_GROUP ((unsigned long)0xe00000ff) /* 224.0.0.255 *//*----------------------------------------------------------------------*//* Generic Socket address *//*----------------------------------------------------------------------*/struct sockaddr { unsigned short sa_family; char sa_data[14]; };/*---------------------------------------------------------------------*//* Berkeley Internet address *//*---------------------------------------------------------------------*/struct in_addr { unsigned long s_addr; /* IP address of the socket */ };/*---------------------------------------------------------------------*//* Socket address, internet style. *//*---------------------------------------------------------------------*/struct sockaddr_in { short sin_family; /* must be AF_INET */ unsigned short sin_port; /* 16-bit port number */ struct in_addr sin_addr; /* 32-bit IP address */ char sin_zero[8]; /* must be 0 */ };/*---------------------------------------------------------------------*//* Socket address with interface information *//*---------------------------------------------------------------------*/struct sockaddr_intf { short sin_family; /* must be AF_INET */ unsigned short sin_port; /* 16-bit port number */ struct in_addr sin_addr; /* 32-bit IP address */ long sin_ifno; /* 32-bit interface number */ char sin_zero[4]; /* must be 0 */};/*---------------------------------------------------------------------*//* Structure used for manipulating linger option. *//*---------------------------------------------------------------------*/struct linger { int l_onoff; /* option on/off */ int l_linger; /* linger time */ };/***********************************************************************//* Structures for sendmsg() and recvmsg() *//***********************************************************************//*---------------------------------------------------------------------*//* IO vector structure for sendmsg() and recvmsg() *//*---------------------------------------------------------------------*/struct iovec { char *iov_base; /* base address */ int iov_len; /* buffer length */ };/*---------------------------------------------------------------------*//* Message header for sendmsg() and recvmsg() *//*---------------------------------------------------------------------*/struct msghdr { char *msg_name; /* optional address */ int msg_namelen; /* size of address */ struct iovec *msg_iov; /* scatter/gather array */ int msg_iovlen; /* # elements in msg_iov */ char *msg_accrights; /* access rights */ int msg_accrightslen; /* length of the rights buffer */ };/***********************************************************************//* Definitions for select(). Select uses bit masks of file descrip- *//* tors in longs. These macros manipulate such bit fields. *//***********************************************************************/#define FD_SETSIZE 0x100#define NFDBITS 0x20 /* bits per mask *//*---------------------------------------------------------------------*//* Definition for fd_set structure used in select(). *//*---------------------------------------------------------------------*/typedef struct fd_set { long fds_bits[8]; } fd_set;/***********************************************************************//* Macros for Select fd_sets *//***********************************************************************//*---------------------------------------------------------------------*//* Sets bit 'n' in the bitmask. *//*---------------------------------------------------------------------*/#define FD_SET(n, p) ((p)->fds_bits[(n)/NFDBITS] |= \ (((unsigned long) 0x80000000) >> ((n) % NFDBITS)))/*---------------------------------------------------------------------*//* Clears bit 'n' in the bitmask. *//*---------------------------------------------------------------------*/#define FD_CLR(n, p) ((p)->fds_bits[(n)/NFDBITS] &= \ ~(((unsigned long) 0x80000000) >> ((n) % NFDBITS)))/*---------------------------------------------------------------------*//* Checks to see if bit 'n' is set. *//*---------------------------------------------------------------------*/#define FD_ISSET(n, p) ((p)->fds_bits[(n)/NFDBITS] & \ (((unsigned long) 0x80000000) >> ((n) % NFDBITS)))/*---------------------------------------------------------------------*//* Zeroes out the fd_set. *//*---------------------------------------------------------------------*/#define FD_ZERO(p) { \ (p)->fds_bits[0] = 0; \ (p)->fds_bits[1] = 0; \ (p)->fds_bits[2] = 0; \ (p)->fds_bits[3] = 0; \ (p)->fds_bits[4] = 0; \ (p)->fds_bits[5] = 0; \ (p)->fds_bits[6] = 0; \ (p)->fds_bits[7] = 0; \ }/*---------------------------------------------------------------------*//* Timeval structure used in select() *//*---------------------------------------------------------------------*/struct timeval { long tv_sec; /* no. of seconds */ long tv_usec; /* no. of micro seconds */ };/*----------------------------------------------------------------------*//* Message block statistics *//*----------------------------------------------------------------------*/struct mbstat { long mb_bufclasses; /* Number of buffer classes */ long mb_mblks; /* Number of mblks configured */ long mb_free; /* Number of available mblks */ long mb_wait; /* Number of times waited for mblk */ long mb_drops; /* Number of times failed to get mblk */ };/*----------------------------------------------------------------------*//* Data blocks statistics *//*----------------------------------------------------------------------*/struct dbstat { long db_size; /* Size of data block */ long db_dblks; /* Number of data blocks */ long db_free; /* number of free data blocks */ long db_wait; /* Number of times waited to get dblk */ long db_drops; /* Number of times failed to get dblk */ long db_reserved[2]; /* Reserved entries */ };/*----------------------------------------------------------------------*//* Structure to request data block statistics using ioctl call *//*----------------------------------------------------------------------*/struct dbreq { long size; struct dbstat *dsp; };/*----------------------------------------------------------------------*//* rtentry structure used in ioctl() call to communicate routes to *//* pNA routing table. rt_netmask is ignored unless the RTF_MASK is *//* set in the rt_flags entry. If rt_netmask is not filled in then pNA+ *//* will compute a mask based on the class of the address. Optionally *//* rt_ifno may be used to specify the outgoing interface of a route. *//* This is helpful with unnumbered links where the outgoing interface *//* cannot be defined by just the interface IP address. *//*----------------------------------------------------------------------*/struct rtentry { struct sockaddr rt_dst; /* key to access the route*/ struct sockaddr rt_gateway; /* route gateway */ unsigned short rt_flags; /* host/net */ unsigned short rt_reserved; /* reserved */ unsigned long rt_netmask; /* netmask of route - ignored unless RTF_MASK is set in rt_flags */ long rt_ifno; /* interface no for local interface - ignored unless RTF_INTF is set in rt_flags */ unsigned long rt_reserved2[2];/* reserved */ };#define RTF_HOST 0x1 /* host entry (net otherwise) */#define RTF_GATEWAY 0x2 /* destination is a gateway */#define RTF_UP 0x4 /* route usable */#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_INTF 0x40 /* route via a given intf */#define RTF_MASK 0x80 /* Uses Subnet version *//*---------------------------------------------------------------------*//* Argument structure for IP_ADD_MEMBERSHIP and IP_DROP_MEMBERSHIP. *//*---------------------------------------------------------------------*/struct ip_mreq { struct in_addr imr_mcastaddr; /* IP multicast address of group */ struct in_addr imr_interface; /* local IP address of interface */};/*--------------------------------------------------------------------------*//* Argument structure for IP_ADD_MEMBERSHIP_IFNO and IP_DROP_MEMBERSHIP_IFNO*//*--------------------------------------------------------------------------*/struct ip_mreq_intf { struct in_addr imrif_mcastaddr; /* IP multicast address of group */ long imrif_ifno; /* local interface number */};/*----------------------------------------------------------------------*//* ifreq structure used in ioctl() call for getting NI characteristics *//*----------------------------------------------------------------------*/struct ifreq {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -