zoukankan      html  css  js  c++  java
  • unp.h

    /* Our own header. Tabs are set for 4 spaces,not 8 */
    #ifndef __unp_h
    #define __unp_h
    #include "/usr/lib/perl5/5.8.0/i386-linux-thread-multi/CORE/config.h"    /* configuration options for current OS */
                    /* "../config.h" is generated by configure */
    /* If anything changes in the following list of #includes,must change
     acsite.m4 also,for configure's tests */
    #include<sys/types.h>        /* basic system data types */
    #include<sys/socket.h>       /* basic socket definations */
    #include<sys/time.h>         /* timeval{} for select() */
    #include<time.h>             /* timespec{} for pselect() */
    #include<netinet/in.h>       /* sockaddr_in{} and other Internet defns */
    #include<arpa/inet.h>        /* inet(3) functions */
    #include<errno.h>
    #include<fcntl.h>            /* for nonblocking */
    #include<netdb.h>
    #include<signal.h>
    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    #include<sys/stat.h>         /* for S_xxx file mode constants */
    #include<sys/uio.h>          /* for iovec{} and readv /writev */
    #include<unistd.h>
    #include<sys/wait.h>
    #include<sys/un.h>           /* for Unix domain sockets */
    #ifdef HAVE_SYS_SELECT_H
    #include<sys/select.h>       /* for convenience */
    #endif
    #ifdef HAVE_SYS_SYSCTL_H
    #include<sys/sysctl.h>
    #endif
    #ifdef HAVE_POLL_H
    #include<poll.h>             /* for convenience */
    #endif
    #ifdef HAVE_SYS_EVENT_H
    #include<sys/event.h>      /* for kqueue */
    #endif
    #ifdef HAVE_STRINGS_H
    #include<strings.h>           /* for convenience */
    #endif
    /* Three headers are normally needed for socket/file ioctl's;
     * <sys/ioctl.h>,<sys/fillo.h>,and <sys/sockio.h>.
     */
    #ifdef HAVE_SYS_IOCTL_H
    #include<sys/ioctl.h>
    #endif
    #ifdef HAVE_SYS_FILIO_H
    #include<sys/filio.h>
    #endif
    #ifdef HAVE_SYS_SOCKIO_H
    #include<sys/sockio.h>
    #endif
    #ifdef HAVE_PTHREAD_H
    #include<pthread.h>
    #endif
    #ifdef HAVE_NET_IF_DL_H
    #include<net/if_dl.h>
    #endif
    #ifdef HAVE_NETINET_SCTP_H
    #include<netinet/sctp.h>
    #endif
    /* OSF/1 actually disables recv() and send() in <sys/socket.h> */
    #ifdef  __osf__
    #undef recv
    #undef send
    #define recv(a,b,c,d) recvfrom(a,b,c,d,0,0)
    #define send(a,b,c,d) sendto(a,b,c,d,0,0)
    #endif
    #ifndef INADDR_NONE
    #define INADDR_NONE 0xffffffff    /* should have been in <netinet/in.h> */
    #endif
    #ifndef SHUT_RD                   /* these three POSIX names are quite new */
    #define SHUT_RD     0             /* shutdown for reading */
    #define SHUT_WR     1             /* shutdown for writing */
    #define SHUT_RDWR   2             /* shutdown for reading and writing */
    #endif
    #ifndef INET_ADDRSTRLEN
    #define INET_ADDRSTRLEN   16      /* "ddd.ddd.ddd.ddd"
                                          1234567890123456 */
    #endif
    /* Define following even if IPv6 not supported,so we can always allocate
     an adequately sized buffer,without #ifdefs in the code. */
    #ifndef INET6_ADDRSRLEN
    #define INET6_ADDRSTRLEN  46      /* max size of IPv6 address string;
                "xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx" or
                "xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:ddd.ddd.ddd.ddd"
                 1234567890123456789012345678901234567890123456 */
    #endif
    /* Define bzero() as a macro if it's not in standard C library. */
    #ifndef HAVE_BZERO
    #define bzero(ptr,n)      memset(ptr,0,n)
    #endif
    /* Older resolves do not have gethostbyname2() */
    #ifndef HAVE_GETHOSTBYNAME2
    #define gethostbyname2(host,family)     gethostbyname((host))
    #endif
    /* The structure returned by recvform_flags() */
    struct unp_in_pktinfo{
        struct in_addr ipi_addr;       /* dst IPv4 address */
        int ipi_ifindex;               /* received interface index */
    };
    /* We need the newer CMSG_LEN() and CMSG_SPACE() macros,but few
     implementations support them today.  These two macros really need
     an ALIGN() macro, but each implementation does this differently. */
    #ifndef CMSG_LEN
    #define CMSG_LEN(size)   (sizeof(struct cmsghdr)+(size))
    #endif
    #ifndef CMSG_SPACE
    #define CMSG_SPACE(size)   (sizeof(struct cmsghdr)+(size))
    #endif
    /* POSIX requires the SUN_LEN() macro, but not all implementations define
      it(yet). Note that this 4.4BSD macro works regardless whether there is
      a length field or not. */
    #ifndef SUN_LEN
    #define SUN_LEN(su) 
       (sizeof(*(su)-sizeof((su)->sun_path)+strlen((su)->sun_path))
    #endif
    /* POSIX renames "Unix domain" as "local IPC".
      But not all systems define AF_LCOAL and PF_LOCAL(yet). */
    #ifndef AF_LOCAL
    #define AF_LOCAL AF_UNIX
    #endif
    #ifndef PF_LOCAL
    #define PF_LOCAL PF_UNIX
    #endif
    /* POSIX requires that an #include of<poll.h> define INFTIM,but many
     systems still define it in <sys/stropts.h>. We don't want to include
     all the streams stuff if it's not needed,so we just define INFTIME here.
     This is the standard value,but there's no guarantee it is -1. */
    #ifndef INFTIM
    #define INFTIM     (-1)  /* infinite poll timeout */
    #ifdef HAVE_POLL_H
    #define INFTIM_UNPH      /* tell unpxti.h we defined it */
    #endif
    #endif
    /* Following could be derived from SOMAXCONN in <sys/socket.h>,but many
     kernels still #define it as 5,while actually supporting many more */
    #define LISTENQ 1024     /* 2nd argument to listen() */
    /* Miscellaneous constants */
    #define MAXLINE 4096     /* max text line length */
    #define BUFFSIZE 8192    /* buffer size for reads and writes */
    /* Define some port number that can be used for our examples */
    #define SERV_PORT  9877  /* TCP and UDP */
    #define SERV_PORT_STR  "9877"   /* TCP and UDP */
    #define UNIXSTR_PATH  "/tmp/unix.str"  /* Unix domain stream */
    #define UNIXDG_PATH  "/tmp/unix.dg" /* Unix domain datagram */
    /* Following shortens all the type casts of pointer arguments */
    #define SA struct sockaddr
    #define HAVE_STRUCT_SOCKADDR_STORAGE
    #ifndef HAVE_STRUCT_SOCKADDR_STORAGE
    /*
     * RFC 3493: protocol-independent placeholder for socket addresses
     */
    #define __ss_MAXSIZE 128
    #define __ss_ALIGNSIZE (sizeof(int64_t))
    #ifdef HAVE_SOCKADDR_SA_LEN
    #define __SS_PADlSIZE (__SS_ALIGNSIZE-sizeof(u_char)-sizeof(sa_family_t))
    #else
    #define __SS_PADlSIZE (__SS_ALIGNSIZE-sizeof(sa_family_t))
    #endif
    #define __SS_PAD2SIZE (__SS_MAXSIZE-2*__SS_ALIGNSIZE)
    struct sockaddr_storage{
    #ifdef HAVE_SOCKADDR_SA_LEN
     u_char ss_len;
    #endif
     sa_family_t ss_family;
     char __ss_pad1[__SS_PAD1SIZE];
     int64_t __ss_align;
     char __ss_pad2[__SS_PAD2SIZE];
    };
    #endif
    #define FILE_MODE (S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH)
                      /* default file access permissions for new files */
    #define DIR_MODE (FILE_MODE | S_IXUSR | S_IXGRP | S_IXOTH)
       /* default permissions for new directories */
    typedef void Sigfunc(int);   /* for signal handlers */
    #define min(a,b)    ((a)<(b)?(a):(b))
    #define max(a,b)    ((a)>(b)?(a):(b))
    #ifndef HAVE_ADDRINFO_STRUCT
    #include "../lib/addrinfo.h"
    #endif
    #ifndef HAVE_IF_NAMEINDEX_STRUCT
    struct if_nameindex{
        unsigned int if_index;    /* 1,2,... */
        char    *if_name;            /* null teminated name:""le0",...*/
    };
    #endif
    #ifndef HAVE_TIMESPEC_STRUCT
    struct timespec{
        time_t tv_sec;           /* seconds */
        long   tv_nsec;          /* and nanoseconds */
    };
    #endif
  • 相关阅读:
    IDEA编译Flume Sink通不过解决方法
    Hive基础之Hive体系架构&运行模式&Hive与关系型数据的区别
    Hive基础之Hive环境搭建
    Hive基础之Hive是什么以及使用场景
    pig和mysql脚本对比
    pig入门案例
    pig概述
    sqoop操作之ETL小案例
    java里面的package/import 和PHP里面的namespace/use 是一模一样的吗
    jQuery对象和DOM对象使用说明,需要的朋友可以参考下。
  • 原文地址:https://www.cnblogs.com/chenyang920/p/5082856.html
Copyright © 2011-2022 走看看