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