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
  • 相关阅读:
    HDU 4069 Squiggly Sudoku
    SPOJ 1771 Yet Another NQueen Problem
    POJ 3469 Dual Core CPU
    CF 118E Bertown roads
    URAL 1664 Pipeline Transportation
    POJ 3076 Sudoku
    UVA 10330 Power Transmission
    HDU 1426 Sudoku Killer
    POJ 3074 Sudoku
    HDU 3315 My Brute
  • 原文地址:https://www.cnblogs.com/chenyang920/p/5082856.html
Copyright © 2011-2022 走看看