unp.h文件内容

来源:互联网 发布:java打包没有lib文件 编辑:程序博客网 时间:2024/05/24 06:55
  1 /* Our own header. Tabs are set for 4 spaces, not 8 */   2 #ifndef __unp_h  3 #define __unp_h  4 #include    "../config.h"      /* configuration options for current OS */  5                            /* "../config.h" is generated by configure */  6 /* If anything changes in the following list of #includes, must change  7    acsite.m4 also, for configure's tests. */  8 #include    <sys/types.h>       /* basic system data types */  9 #include    <sys/socket.h>      /* basic socket definitions */ 10 #include    <sys/time.h>        /* timeval{} for select() */ 11 #include    <time.h>            /* timespec{} for pselect() */ 12 #include    <netinet/in.h>      /* sockaddr_in{} and other Internet defns */ 13 #include    <arpa/inet.h>       /* inet(3) functions */ 14 #include    <errno.h> 15 #include    <fcntl.h>           /* for nonblocking */ 16 #include    <netdb.h> 17 #include    <signal.h> 18 #include    <stdio.h> 19 #include    <stdlib.h> 20 #include    <string.h> 21 #include    <sys/stat.h>        /* for S_xxx file mode constants */ 22 #include    <sys/uio.h>         /* for iovec{} and readv/writev */ 23 #include    <unistd.h> 24 #include    <sys/wait.h> 25 #include    <sys/un.h>          /* for Unix domain sockets */ 26 #ifdef  HAVE_SYS_SELECT_H 27 # include   <sys/select.h>      /* for convenience */ 28 #endif 29 #ifdef  HAVE_SYS_SYSCTL_H 30 # include   <sys/sysctl.h> 31 #endif 32 #ifdef  HAVE_POLL_H 33 # include  <poll.h>             /* for convenience */ 34 #endif 35 #ifdef  HAVE_SYS_EVENT_H 36 # include   <sys/event.h>       /* for kqueue */ 37 #endif 38 #ifdef  HAVE_STRINGS_H 39 # include   <strings.h>         /* for convenience */ 40 #endif 41 /* Three headers are normally needed for socket/file ioctl's: 42  * <sys/ioctl.h>, <sys/filio.h>, and <sys/sockio.h>. 43  */ 44 #ifdef  HAVE_SYS_IOCTL_H 45 # include   <sys/ioctl.h> 46 #endif 47 #ifdef  HAVE_SYS_FILIO_H 48 # include   <sys/filio.h> 49 #endif 50 #ifdef  HAVE_SYS_SOCKIO_H 51 # include   <sys/sockio.h> 52 #endif 53 #ifdef  HAVE_PTHREAD_H 54 # include   <pthread.h> 55 #endif 56 #ifdef  HAVE_NET_IF_DL_H 57 # include    <net/if_dl.h> 58 #endif 59 #ifdef  HAVE_NETINET_SCTP_H 60 #include     <netinet/sctp.h> 61 #endif 62 /* OSF/1 actually disables recv() and send() in <sys/socket.h> */ 63 #ifdef  __osf__ 64 #undef  recv 65 #undef  send 66 #define recv(a,b,c,d)   recvfrom(a,b,c,d,0,0) 67 #define send(a,b,c,d)   sendto(a,b,c,d,0,0) 68 #endif 69 #ifndef INADDR_NONE 70 #define INADDR_NONE 0xffffffff  /* should have been in <netinet/in.h> */ 71 #endif 72 #ifndef SHUT_RD                 /* these three POSIX names are new */ 73 #define SHUT_RD     0           /* shutdown for reading */ 74 #define SHUT_WR     1           /* shutdown for writing */ 75 #define SHUT_RDWR   2           /* shutdown for reading and writing */ 76 #endif 77 #ifndef INET_ADDRSTRLEN 78 #define INET_ADDRSTRLEN     16  /* "ddd.ddd.ddd.ddd\0" 79                                    1234567890123456 */ 80 #endif 81 /* Define following even if IPv6 not supported, so we can always allocate 82    an adequately sized buffer without #ifdefs in the code. */ 83 #ifndef INET6_ADDRSTRLEN 84 #define INET6_ADDRSTRLEN    46  /* max size of IPv6 address string: 85                    "xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx" or 86                    "xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:ddd.ddd.ddd.ddd\0" 87                     1234567890123456789012345678901234567890123456 */ 88 #endif 89 /* Define bzero() as a macro if it's not in standard C library. */ 90 #ifndef HAVE_BZERO 91 #define bzero(ptr,n)        memset (ptr, 0, n) 92 #endif 93 /* Older resolvers do not have gethostbyname2() */ 94 #ifndef HAVE_GETHOSTBYNAME2 95 #define gethostbyname2(host,family)     gethostbyname((host)) 96 #endif 97 /* The structure returned by recvfrom_flags() */ 98 struct unp_in_pktinfo { 99     struct in_addr ipi_addr;    /* dst IPv4 address */100     int     ipi_ifindex;        /* received interface index */101 };102 /* We need the newer CMSG_LEN() and CMSG_SPACE() macros, but few103    implementations support them today. These two macros really need104     an ALIGN() macro, but each implementation does this differently. */105 #ifndef CMSG_LEN106 #define CMSG_LEN(size)      (sizeof(struct cmsghdr) + (size))107 #endif108 #ifndef CMSG_SPACE109 #define CMSG_SPACE(size)    (sizeof(struct cmsghdr) + (size))110 #endif111 /* POSIX requires the SUN_LEN() macro, but not all implementations define112    it (yet). Note that this 4.4BSD macro works regardless whether there is113    a length field or not. */114 #ifndef SUN_LEN115 # define    SUN_LEN (su) \116     (sizeof (*(su)) - sizeof ((su)->sun_path) + strlen((su)->sun_path))117 #endif118 /* POSIX renames "Unix domain" as "local IPC."119    Not all systems define AF_LOCAL and PF_LOCAL (yet). */120 #ifndef AF_LOCAL121 #define AF_LOCAL    AF_UNIX122 #endif123 #ifndef PF_LOCAL124 #define PF_LOCAL    PF_UNIX125 #endif126 /* POSIX requires that an #include of <poll.h> define INFTIM, but many127    systems still define it in <sys/stropts.h>. We don't want to include128    all the STREAMS stuff if it's not needed, so we just define INFTIM here.129    This is the standard value, but there's no guarantee it is -1. */130 #ifndef INFTIM131 #define INFTIM          (-1)     /* infinite poll timeout */132 #ifdef HAVE_POLL_H133 #define INFTIM_UNPH              /* tell unpxti.h we defined it */134 #endif135 #endif136 /* Following could be derived from SOMAXCONN in <sys/socket.h>, but many137    kernels still #define it as 5, while actually supporting many more */138 #define LISTENQ     1024         /* 2nd argument to listen () */139 /* Miscellaneous constants */140 #define MAXLINE     4096         /* max text line length */141 #define BUFFSIZE    8192         /* buffer size for reads and writes */142 /* Define some port number that can be used for our examples */143 #define SERV_PORT        9877    /* TCP and UDP */144 #define SERV_PORT_STR   "9877"   /* TCP and UDP */145 #define UNIXSTR_PATH    "/tmp/unix.str" /* Unix domain stream */146 #define UNIXDG_PATH     "/tmp/unix.dg"  /* Unix domain datagram */147 /* Following shortens all the typecasts of pointer arguments: */148 #define SA struct sockaddr149 #define HAVE_STRUCT_SOCKADDR_STORAGE150 #ifndef HAVE_STRUCT_SOCKADDR_STORAGE151 /*152  * RFC 3493: protocol-independent placeholder for socket addresses153  */154 #define __SS_MAXSIZE    128155 #define __SS_ALIGNSIZE  (sizeof(int64_t))156 #ifdef HAVE_SOCKADDR_SA_LEN157 #define __SS_PAD1SIZE   (__SS_ALIGNSIZE - sizeof(u_char) - sizeof(sa_family_t))158 #else159 #define __SS_PAD1SIZE   (__SS_ALIGNSIZE - sizeof(sa_family_t))160 #endif161 #define __SS_PAD2SIZE   (__SS_MAXSIZE - 2*__SS_ALIGNSIZE)162 struct sockaddr_storage {163 #ifdef HAVE_SOCKADDR_SA_LEN164     u_char  ss_len;165 #endif166     sa_family_t ss_family;167     char    __ss_pad1[__SS_PAD1SIZE];168     int64_t __ss_align;169     char    __ss_pad2[__SS_PAD2SIZE];170 };171 #endif172 #define FILE_MODE   (S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH)173                     /* default file access permissions for new files */174 #define DIR_MODE    (FILE_MODE | S_IXUSR | S_IXGRP | S_IXOTH)175                     /* default permissions for new directories */176 typedef void Sigfunc (int);     /* for signal handlers */177 #define min(a,b)    ((a) < (b) ? (a) : (b))178 #define max(a,b)    ((a) > (b) ? (a) : (b))179 #ifndef HAVE_ADDRINFO_STRUCT180 # include   "../lib/addrinfo.h"181 #endif182 #ifndef HAVE_IF_NAMEINDEX_STRUCT183 struct if_nameindex {184     unsigned int if_index;      /* 1, 2, ... */185     char *if_name;              /* null-terminated name: "le0", ... */186 };187 #endif188 #ifndef HAVE_TIMESPEC_STRUCT189 struct timespec {190     time_t tv_sec;              /* seconds */191     long     tv_nsec;           /* and nanoseconds */192 };193 #endif

原创粉丝点击