Annotation of 43BSDTahoe/sys/h/socket.h, revision 1.1.1.1

1.1       root        1: /*
                      2:  * Copyright (c) 1982, 1985, 1986 Regents of the University of California.
                      3:  * All rights reserved.
                      4:  *
                      5:  * Redistribution and use in source and binary forms are permitted
                      6:  * provided that the above copyright notice and this paragraph are
                      7:  * duplicated in all such forms and that any documentation,
                      8:  * advertising materials, and other materials related to such
                      9:  * distribution and use acknowledge that the software was developed
                     10:  * by the University of California, Berkeley.  The name of the
                     11:  * University may not be used to endorse or promote products derived
                     12:  * from this software without specific prior written permission.
                     13:  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
                     14:  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
                     15:  * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
                     16:  *
                     17:  *     @(#)socket.h    7.3 (Berkeley) 6/27/88
                     18:  */
                     19: 
                     20: /*
                     21:  * Definitions related to sockets: types, address families, options.
                     22:  */
                     23: 
                     24: /*
                     25:  * Types
                     26:  */
                     27: #define        SOCK_STREAM     1               /* stream socket */
                     28: #define        SOCK_DGRAM      2               /* datagram socket */
                     29: #define        SOCK_RAW        3               /* raw-protocol interface */
                     30: #define        SOCK_RDM        4               /* reliably-delivered message */
                     31: #define        SOCK_SEQPACKET  5               /* sequenced packet stream */
                     32: 
                     33: /*
                     34:  * Option flags per-socket.
                     35:  */
                     36: #define        SO_DEBUG        0x0001          /* turn on debugging info recording */
                     37: #define        SO_ACCEPTCONN   0x0002          /* socket has had listen() */
                     38: #define        SO_REUSEADDR    0x0004          /* allow local address reuse */
                     39: #define        SO_KEEPALIVE    0x0008          /* keep connections alive */
                     40: #define        SO_DONTROUTE    0x0010          /* just use interface addresses */
                     41: #define        SO_BROADCAST    0x0020          /* permit sending of broadcast msgs */
                     42: #define        SO_USELOOPBACK  0x0040          /* bypass hardware when possible */
                     43: #define        SO_LINGER       0x0080          /* linger on close if data present */
                     44: #define        SO_OOBINLINE    0x0100          /* leave received OOB data in line */
                     45: 
                     46: /*
                     47:  * Additional options, not kept in so_options.
                     48:  */
                     49: #define SO_SNDBUF      0x1001          /* send buffer size */
                     50: #define SO_RCVBUF      0x1002          /* receive buffer size */
                     51: #define SO_SNDLOWAT    0x1003          /* send low-water mark */
                     52: #define SO_RCVLOWAT    0x1004          /* receive low-water mark */
                     53: #define SO_SNDTIMEO    0x1005          /* send timeout */
                     54: #define SO_RCVTIMEO    0x1006          /* receive timeout */
                     55: #define        SO_ERROR        0x1007          /* get error status and clear */
                     56: #define        SO_TYPE         0x1008          /* get socket type */
                     57: 
                     58: /*
                     59:  * Structure used for manipulating linger option.
                     60:  */
                     61: struct linger {
                     62:        int     l_onoff;                /* option on/off */
                     63:        int     l_linger;               /* linger time */
                     64: };
                     65: 
                     66: /*
                     67:  * Level number for (get/set)sockopt() to apply to socket itself.
                     68:  */
                     69: #define        SOL_SOCKET      0xffff          /* options for socket level */
                     70: 
                     71: /*
                     72:  * Address families.
                     73:  */
                     74: #define        AF_UNSPEC       0               /* unspecified */
                     75: #define        AF_UNIX         1               /* local to host (pipes, portals) */
                     76: #define        AF_INET         2               /* internetwork: UDP, TCP, etc. */
                     77: #define        AF_IMPLINK      3               /* arpanet imp addresses */
                     78: #define        AF_PUP          4               /* pup protocols: e.g. BSP */
                     79: #define        AF_CHAOS        5               /* mit CHAOS protocols */
                     80: #define        AF_NS           6               /* XEROX NS protocols */
                     81: #define        AF_NBS          7               /* nbs protocols */
                     82: #define        AF_ECMA         8               /* european computer manufacturers */
                     83: #define        AF_DATAKIT      9               /* datakit protocols */
                     84: #define        AF_CCITT        10              /* CCITT protocols, X.25 etc */
                     85: #define        AF_SNA          11              /* IBM SNA */
                     86: #define AF_DECnet      12              /* DECnet */
                     87: #define AF_DLI         13              /* Direct data link interface */
                     88: #define AF_LAT         14              /* LAT */
                     89: #define        AF_HYLINK       15              /* NSC Hyperchannel */
                     90: #define        AF_APPLETALK    16              /* Apple Talk */
                     91: 
                     92: #define        AF_MAX          17
                     93: 
                     94: /*
                     95:  * Structure used by kernel to store most
                     96:  * addresses.
                     97:  */
                     98: struct sockaddr {
                     99:        u_short sa_family;              /* address family */
                    100:        char    sa_data[14];            /* up to 14 bytes of direct address */
                    101: };
                    102: 
                    103: /*
                    104:  * Structure used by kernel to pass protocol
                    105:  * information in raw sockets.
                    106:  */
                    107: struct sockproto {
                    108:        u_short sp_family;              /* address family */
                    109:        u_short sp_protocol;            /* protocol */
                    110: };
                    111: 
                    112: /*
                    113:  * Protocol families, same as address families for now.
                    114:  */
                    115: #define        PF_UNSPEC       AF_UNSPEC
                    116: #define        PF_UNIX         AF_UNIX
                    117: #define        PF_INET         AF_INET
                    118: #define        PF_IMPLINK      AF_IMPLINK
                    119: #define        PF_PUP          AF_PUP
                    120: #define        PF_CHAOS        AF_CHAOS
                    121: #define        PF_NS           AF_NS
                    122: #define        PF_NBS          AF_NBS
                    123: #define        PF_ECMA         AF_ECMA
                    124: #define        PF_DATAKIT      AF_DATAKIT
                    125: #define        PF_CCITT        AF_CCITT
                    126: #define        PF_SNA          AF_SNA
                    127: #define PF_DECnet      AF_DECnet
                    128: #define PF_DLI         AF_DLI
                    129: #define PF_LAT         AF_LAT
                    130: #define        PF_HYLINK       AF_HYLINK
                    131: #define        PF_APPLETALK    AF_APPLETALK
                    132: 
                    133: #define        PF_MAX          AF_MAX
                    134: 
                    135: /*
                    136:  * Maximum queue length specifiable by listen.
                    137:  */
                    138: #define        SOMAXCONN       5
                    139: 
                    140: /*
                    141:  * Message header for recvmsg and sendmsg calls.
                    142:  */
                    143: struct msghdr {
                    144:        caddr_t msg_name;               /* optional address */
                    145:        int     msg_namelen;            /* size of address */
                    146:        struct  iovec *msg_iov;         /* scatter/gather array */
                    147:        int     msg_iovlen;             /* # elements in msg_iov */
                    148:        caddr_t msg_accrights;          /* access rights sent/received */
                    149:        int     msg_accrightslen;
                    150: };
                    151: 
                    152: #define        MSG_OOB         0x1             /* process out-of-band data */
                    153: #define        MSG_PEEK        0x2             /* peek at incoming message */
                    154: #define        MSG_DONTROUTE   0x4             /* send without using routing tables */
                    155: 
                    156: #define        MSG_MAXIOVLEN   16

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.