1*17552Skarels /* socket.h 6.5 84/12/20 */ 24658Swnj 34658Swnj /* 412787Ssam * Definitions related to sockets: types, address families, options. 54658Swnj */ 64892Swnj 74892Swnj /* 812787Ssam * Types 94892Swnj */ 104930Swnj #define SOCK_STREAM 1 /* stream socket */ 114930Swnj #define SOCK_DGRAM 2 /* datagram socket */ 124930Swnj #define SOCK_RAW 3 /* raw-protocol interface */ 134930Swnj #define SOCK_RDM 4 /* reliably-delivered message */ 1412787Ssam #define SOCK_SEQPACKET 5 /* sequenced packet stream */ 154658Swnj 164812Swnj /* 174812Swnj * Option flags per-socket. 184812Swnj */ 194812Swnj #define SO_DEBUG 0x01 /* turn on debugging info recording */ 2012787Ssam #define SO_ACCEPTCONN 0x02 /* socket has had listen() */ 2112787Ssam #define SO_REUSEADDR 0x04 /* allow local address reuse */ 226215Swnj #define SO_KEEPALIVE 0x08 /* keep connections alive */ 237132Swnj #define SO_DONTROUTE 0x10 /* just use interface addresses */ 2417052Skarels #define SO_BROADCAST 0x20 /* permit sending of broadcast msgs */ 2510209Ssam #define SO_USELOOPBACK 0x40 /* bypass hardware when possible */ 2610597Ssam #define SO_LINGER 0x80 /* linger on close if data present */ 274930Swnj 284930Swnj /* 29*17552Skarels * Additional options, not kept in so_options. 30*17552Skarels */ 31*17552Skarels #define SO_SNDBUF 0x1001 /* send buffer size */ 32*17552Skarels #define SO_RCVBUF 0x1002 /* receive buffer size */ 33*17552Skarels #define SO_SNDLOWAT 0x1003 /* send low-water mark */ 34*17552Skarels #define SO_RCVLOWAT 0x1004 /* receive low-water mark */ 35*17552Skarels #define SO_SNDTIMEO 0x1005 /* send timeout */ 36*17552Skarels #define SO_RCVTIMEO 0x1006 /* receive timeout */ 37*17552Skarels 38*17552Skarels /* 3917160Ssam * Structure used for manipulating linger option. 4017052Skarels */ 4117160Ssam struct linger { 4217160Ssam int l_onoff; /* option on/off */ 4317160Ssam int l_linger; /* linger time */ 4417160Ssam }; 4517052Skarels 4617052Skarels /* 4717160Ssam * Level number for (get/set)sockopt() to apply to socket itself. 4817160Ssam */ 4917160Ssam #define SOL_SOCKET 0xffff /* options for socket level */ 5017160Ssam 5117160Ssam /* 5212787Ssam * Address families. 534930Swnj */ 5412787Ssam #define AF_UNSPEC 0 /* unspecified */ 5512787Ssam #define AF_UNIX 1 /* local to host (pipes, portals) */ 5612787Ssam #define AF_INET 2 /* internetwork: UDP, TCP, etc. */ 5712787Ssam #define AF_IMPLINK 3 /* arpanet imp addresses */ 5812787Ssam #define AF_PUP 4 /* pup protocols: e.g. BSP */ 5912787Ssam #define AF_CHAOS 5 /* mit CHAOS protocols */ 6012787Ssam #define AF_NS 6 /* XEROX NS protocols */ 6112787Ssam #define AF_NBS 7 /* nbs protocols */ 6212787Ssam #define AF_ECMA 8 /* european computer manufacturers */ 6312787Ssam #define AF_DATAKIT 9 /* datakit protocols */ 6412787Ssam #define AF_CCITT 10 /* CCITT protocols, X.25 etc */ 6512787Ssam #define AF_SNA 11 /* IBM SNA */ 664930Swnj 6712787Ssam #define AF_MAX 12 684930Swnj 694930Swnj /* 7012787Ssam * Structure used by kernel to store most 7112787Ssam * addresses. 724930Swnj */ 734930Swnj struct sockaddr { 7412508Ssam u_short sa_family; /* address family */ 754930Swnj char sa_data[14]; /* up to 14 bytes of direct address */ 764930Swnj }; 774930Swnj 784930Swnj /* 7912787Ssam * Structure used by kernel to pass protocol 8012787Ssam * information in raw sockets. 814930Swnj */ 8212787Ssam struct sockproto { 8312787Ssam u_short sp_family; /* address family */ 8412787Ssam u_short sp_protocol; /* protocol */ 8512787Ssam }; 866620Ssam 8712787Ssam /* 8812787Ssam * Protocol families, same as address families for now. 8912787Ssam */ 9012787Ssam #define PF_UNSPEC AF_UNSPEC 9112787Ssam #define PF_UNIX AF_UNIX 9212787Ssam #define PF_INET AF_INET 9312787Ssam #define PF_IMPLINK AF_IMPLINK 9412787Ssam #define PF_PUP AF_PUP 9512787Ssam #define PF_CHAOS AF_CHAOS 9612787Ssam #define PF_NS AF_NS 9712787Ssam #define PF_NBS AF_NBS 9812787Ssam #define PF_ECMA AF_ECMA 9912787Ssam #define PF_DATAKIT AF_DATAKIT 10012787Ssam #define PF_CCITT AF_CCITT 10112787Ssam #define PF_SNA AF_SNA 1028274Sroot 10312787Ssam #define PF_MAX 12 10412787Ssam 10512787Ssam /* 10612787Ssam * Maximum queue length specifiable by listen. 10712787Ssam */ 10812787Ssam #define SOMAXCONN 5 10912787Ssam 11012787Ssam /* 11112787Ssam * Message header for recvmsg and sendmsg calls. 11212787Ssam */ 11312787Ssam struct msghdr { 11412787Ssam caddr_t msg_name; /* optional address */ 11512787Ssam int msg_namelen; /* size of address */ 11612787Ssam struct iovec *msg_iov; /* scatter/gather array */ 11712787Ssam int msg_iovlen; /* # elements in msg_iov */ 11812787Ssam caddr_t msg_accrights; /* access rights sent/received */ 11912787Ssam int msg_accrightslen; 12012787Ssam }; 12112787Ssam 12212787Ssam #define MSG_OOB 0x1 /* process out-of-band data */ 12312787Ssam #define MSG_PEEK 0x2 /* peek at incoming message */ 12412787Ssam #define MSG_DONTROUTE 0x4 /* send without using routing tables */ 12512787Ssam 12612787Ssam #define MSG_MAXIOVLEN 16 127