diff options
Diffstat (limited to 'mit-pthreads/machdep/sco-3.2v5/socket.h')
-rwxr-xr-x | mit-pthreads/machdep/sco-3.2v5/socket.h | 490 |
1 files changed, 0 insertions, 490 deletions
diff --git a/mit-pthreads/machdep/sco-3.2v5/socket.h b/mit-pthreads/machdep/sco-3.2v5/socket.h deleted file mode 100755 index 4a53c7176f9..00000000000 --- a/mit-pthreads/machdep/sco-3.2v5/socket.h +++ /dev/null @@ -1,490 +0,0 @@ -/* @(#)socket.h 6.23 7/18/94 - STREAMware TCP/IP source */ -/* - * Copyrighted as an unpublished work. - * (c) Copyright 1987-1994 Legent Corporation - * All rights reserved. - * - * RESTRICTED RIGHTS - * - * These programs are supplied under a license. They may be used, - * disclosed, and/or copied only as permitted under such license - * agreement. Any copy must contain the above copyright notice and - * this restricted rights notice. Use, copying, and/or disclosure - * of the programs is strictly prohibited unless otherwise provided - * in the license agreement. - * - */ -/* SCCS IDENTIFICATION */ -/* - * Copyright (c) 1985 Regents of the University of California. - * All rights reserved. - * - * Redistribution and use in source and binary forms are permitted - * provided that the above copyright notice and this paragraph are - * duplicated in all such forms and that any documentation, - * advertising materials, and other materials related to such - * distribution and use acknowledge that the software was developed - * by the University of California, Berkeley. The name of the - * University may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED - * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. - */ - -#ifndef __sys_socket_h -#define __sys_socket_h - -#if !defined(FD_SETSIZE) -/* Pick up select stuff from standard system include */ -#include <sys/types.h> -#endif - -/* socket.h 6.1 83/07/29 */ - -/* - * Definitions related to sockets: types, address families, options. - */ - -/* - * Types - */ -#define SOCK_STREAM 1 /* stream socket */ -#define SOCK_DGRAM 2 /* datagram socket */ -#define SOCK_RAW 3 /* raw-protocol interface */ -#define SOCK_RDM 4 /* reliably-delivered message */ -#define SOCK_SEQPACKET 5 /* sequenced packet stream */ - -/* - * Option flags per-socket. - */ -#define SO_DEBUG 0x0001 /* turn on debugging info recording */ -#define SO_ACCEPTCONN 0x0002 /* socket has had listen() */ -#define SO_REUSEADDR 0x0004 /* allow local address reuse */ -#define SO_KEEPALIVE 0x0008 /* keep connections alive */ -#define SO_DONTROUTE 0x0010 /* just use interface addresses */ -#define SO_BROADCAST 0x0020 /* permit sending of broadcast msgs */ -#define SO_USELOOPBACK 0x0040 /* bypass hardware when possible */ -#define SO_LINGER 0x0080 /* linger on close if data present */ -#define SO_OOBINLINE 0x0100 /* leave received OOB data in line */ -#define SO_ORDREL 0x0200 /* give use orderly release */ -#define SO_IMASOCKET 0x0400 /* use socket semantics (affects bind) */ -#define SO_MGMT 0x0800 /* => it is used for mgmt. purposes */ -#define SO_REUSEPORT 0x1000 /* allow local port reuse */ - -/* - * Additional options, not kept in so_options. - */ -#define SO_SNDBUF 0x1001 /* send buffer size */ -#define SO_RCVBUF 0x1002 /* receive buffer size */ -#define SO_SNDLOWAT 0x1003 /* send low-water mark */ -#define SO_RCVLOWAT 0x1004 /* receive low-water mark */ -#define SO_SNDTIMEO 0x1005 /* send timeout */ -#define SO_RCVTIMEO 0x1006 /* receive timeout */ -#define SO_ERROR 0x1007 /* get error status and clear */ -#define SO_TYPE 0x1008 /* get socket type */ -#define SO_PROTOTYPE 0x1009 /* get/set protocol type */ - -/* - * Structure used for manipulating linger option. - */ -struct linger { - int l_onoff; /* option on/off */ - int l_linger; /* linger time */ -}; - -/* - * Level number for (get/set)sockopt() to apply to socket itself. - */ -#define SOL_SOCKET 0xffff /* options for socket level */ - -/* - * An option specification consists of an opthdr, followed by the value of - * the option. An options buffer contains one or more options. The len - * field of opthdr specifies the length of the option value in bytes. This - * length must be a multiple of sizeof(long) (use OPTLEN macro). - */ - -struct opthdr { - long level; /* protocol level affected */ - long name; /* option to modify */ - long len; /* length of option value */ -}; - -#define OPTLEN(x) ((((x) + sizeof(long) - 1) / sizeof(long)) * sizeof(long)) -#define OPTVAL(opt) ((char *)(opt + 1)) - -#if defined(INKERNEL) || defined(_KERNEL) || defined(_INKERNEL) -/* - * the optdefault structure is used for internal tables of option default - * values. - */ -struct optdefault { - int optname;/* the option */ - char *val; /* ptr to default value */ - int len; /* length of value */ -}; - -/* - * the opproc structure is used to build tables of options processing - * functions for in_dooptions(). - */ -struct opproc { - int level; /* options level this function handles */ - int (*func) (); /* the function */ -}; -#endif - -/* - * Address families. - */ -#define AF_UNSPEC 0 /* unspecified */ -#define AF_UNIX 1 /* local to host (pipes, portals) */ -#define AF_INET 2 /* internetwork: UDP, TCP, etc. */ -#define AF_IMPLINK 3 /* arpanet imp addresses */ -#define AF_PUP 4 /* pup protocols: e.g. BSP */ -#define AF_CHAOS 5 /* mit CHAOS protocols */ -#define AF_NS 6 /* XEROX NS protocols */ -#define AF_ISO 7 /* ISO protocols */ -#define AF_OSI AF_ISO -#define AF_ECMA 8 /* european computer manufacturers */ -#define AF_DATAKIT 9 /* datakit protocols */ -#define AF_CCITT 10 /* CCITT protocols, X.25 etc */ -#define AF_SNA 11 /* IBM SNA */ -#define AF_DECnet 12 /* DECnet */ -#define AF_DLI 13 /* Direct data link interface */ -#define AF_LAT 14 /* LAT */ -#define AF_HYLINK 15 /* NSC Hyperchannel */ -#define AF_APPLETALK 16 /* Apple Talk */ -#define AF_ROUTE 17 /* Internal Routing Protocol */ -#define AF_LINK 18 /* Link layer interface */ -#define pseudo_AF_XTP 19 /* eXpress Transfer Protocol (no AF) */ - -#define AF_MAX 20 - -/* - * Structure used by kernel to store most addresses. - */ -struct sockaddr { - u_short sa_family; /* address family */ - char sa_data[14]; /* up to 14 bytes of direct address */ -}; - -/* - * Structure used by kernel to pass protocol information in raw sockets. - */ -struct sockproto { - unsigned short sp_family; /* address family */ - unsigned short sp_protocol; /* protocol */ -}; - -/* - * Protocol families, same as address families for now. - */ -#define PF_UNSPEC AF_UNSPEC -#define PF_UNIX AF_UNIX -#define PF_INET AF_INET -#define PF_IMPLINK AF_IMPLINK -#define PF_PUP AF_PUP -#define PF_CHAOS AF_CHAOS -#define PF_NS AF_NS -#define PF_NBS AF_NBS -#define PF_ECMA AF_ECMA -#define PF_DATAKIT AF_DATAKIT -#define PF_CCITT AF_CCITT -#define PF_SNA AF_SNA -#define PF_DECnet AF_DECnet -#define PF_DLI AF_DLI -#define PF_LAT AF_LAT -#define PF_HYLINK AF_HYLINK -#define PF_APPLETALK AF_APPLETALK -#define PF_ROUTE AF_ROUTE -#define PF_LINK AF_LINK -#define PF_XTP pseudo_AF_XTP /* really just proto family, no AF */ - -#define PF_MAX AF_MAX - -/* - * Maximum queue length specifiable by listen. - */ -#define SOMAXCONN 5 - -/* - * Message header for recvmsg and sendmsg calls. - * Used value-result for recmvsg, value only for sendmsg. - */ -struct msghdr { - caddr_t msg_name; /* optional address */ - u_int msg_namelen; /* size of address */ - struct iovec *msg_iov; /* scatter/gather array */ - u_int msg_iovlen; /* # elements msg_iov */ - caddr_t msg_control; /* ancillary data, see below */ - u_int msg_controllen; /* ancillary data buffer len */ - int msg_flags; /* flags on received message */ -}; -#define msg_accrights msg_control -#define msg_accrightslen msg_controllen - -#define MSG_OOB 0x1 /* process out-of-band data */ -#define MSG_PEEK 0x2 /* peek at incoming message */ -#define MSG_DONTROUTE 0x4 /* send without using routing tables */ -#define MSG_EOR 0x8 /* data completes record */ /*notused*/ -#define MSG_TRUNC 0x10 /* data discarded before delivery */ -#define MSG_CTRUNC 0x20 /* control data lost before delivery */ -#define MSG_WAITALL 0x40 /* wait for full request or error */ /*notused*/ - -#define MSG_MAXIOVLEN 16 - -/* - * Header for ancillary data objects in msg_control buffer. - * Used for additional information with/about a datagram - * not expressible by flags. The format is a sequence - * of message elements headed by cmsghdr structures. - * In STREAMware, we shuffle the fields around a little from what - * they were in net-2, so that they line up the same as an opthdr - * which simplifies our socket implementation amazingly. - * - * Unfortunately, the opthdrs don't include their own length, which the - * cmsghdrs do. What this means is that TLI programmers will not be - * able to take something returned using these macros and immediately give - * it back to the stack. The size of the struct cmsghdr will have to be - * subtracted out. - * There doesn't seem to be a way to avoid this, since several applications - * look into the cmsg_len field and won't work if it doesn't include the size - * of the struct cmsghdr. - */ -struct cmsghdr { - int cmsg_level; /* originating protocol */ - int cmsg_type; /* protocol-specific type */ - u_int cmsg_len; /* data byte count, including hdr */ -/* followed by u_char cmsg_data[]; */ -}; - -/* given pointer to struct adatahdr, return pointer to data */ -#define CMSG_DATA(cmsg) ((u_char *)((cmsg) + 1)) - -/* given pointer to struct adatahdr, return pointer to next adatahdr */ -#define CMSG_NXTHDR(mhdr, cmsg) \ - (((caddr_t)(cmsg) + (cmsg)->cmsg_len + sizeof(struct cmsghdr) > \ - (mhdr)->msg_control + (mhdr)->msg_controllen) ? \ - (struct cmsghdr *)NULL : \ - (struct cmsghdr *)((caddr_t)(cmsg) + OPTLEN((cmsg)->cmsg_len))) - -#define CMSG_FIRSTHDR(mhdr) ((struct cmsghdr *)(mhdr)->msg_control) - -/* "Socket"-level control message types: */ -#define SCM_RIGHTS 0x01 /* access rights (array of int) */ - -/* - * This ioctl code uses BSD style ioctls to avoid copyin/out problems. - * Ioctls have the command encoded in the lower word, and the size of any in - * or out parameters in the upper word. The high 2 bits of the upper word - * are used to encode the in/out status of the parameter; for now we restrict - * parameters to at most 128 bytes. - */ -#define IOCPARM_MASK 0x7f /* parameters must be < 128 bytes */ -#define IOC_VOID 0x20000000 /* no parameters */ -#define IOC_OUT 0x40000000 /* copy out parameters */ -#define IOC_IN 0x80000000 /* copy in parameters */ -#define IOC_INOUT (IOC_IN|IOC_OUT) -/* the 0x20000000 is so we can distinguish new ioctls from old */ -#define _IOS(x,y) (IOC_VOID|(x<<8)|y) -#define _IOSR(x,y,t) (IOC_OUT|((sizeof(t)&IOCPARM_MASK)<<16)|(x<<8)|y) -#define _IOSW(x,y,t) (IOC_IN|((sizeof(t)&IOCPARM_MASK)<<16)|(x<<8)|y) -/* this should be _IOSRW, but stdio got there first */ -#define _IOSWR(x,y,t) (IOC_INOUT|((sizeof(t)&IOCPARM_MASK)<<16)|(x<<8)|y) - -/* - * Socket ioctl commands - */ - -#define SIOCSHIWAT _IOSW('S', 1, int) /* set high watermark */ -#define SIOCGHIWAT _IOSR('S', 2, int) /* get high watermark */ -#define SIOCSLOWAT _IOSW('S', 3, int) /* set low watermark */ -#define SIOCGLOWAT _IOSR('S', 4, int) /* get low watermark */ -#define SIOCATMARK _IOSR('S', 5, int) /* at oob mark? */ -#define SIOCSPGRP _IOSW('S', 6, int) /* set process group */ -#define SIOCGPGRP _IOSR('S', 7, int) /* get process group */ -#define FIONREAD _IOSR('S', 8, int) /* BSD compatibilty */ -#define FIONBIO _IOSW('S', 9, int) /* BSD compatibilty */ -#define FIOASYNC _IOSW('S', 10, int) /* BSD compatibilty */ -#define SIOCPROTO _IOSW('S', 11, struct socknewproto) /* link proto */ -#define SIOCGETNAME _IOSR('S', 12, struct sockaddr) /* getsockname */ -#define SIOCGETPEER _IOSR('S', 13, struct sockaddr) /* getpeername */ -#define IF_UNITSEL _IOSW('S', 14, int) /* set unit number */ -#define SIOCXPROTO _IOS('S', 15) /* empty proto table */ -#define SIOCSHRDTYPE _IOSW('S', 16, int) /* set hardware type */ - -#define SIOCADDRT _IOSW('R', 9, struct ortentry) /* add route */ -#define SIOCDELRT _IOSW('R', 10, struct ortentry) /* delete route */ - -#define SIOCSIFADDR _IOSW('I', 11, struct ifreq) /* set ifnet address */ -#define SIOCGIFADDR _IOSWR('I', 12, struct ifreq) /* get ifnet address */ -#define SIOCSIFDSTADDR _IOSW('I', 13, struct ifreq) /* set p-p address */ -#define SIOCGIFDSTADDR _IOSWR('I', 14, struct ifreq) /* get p-p address */ -#define SIOCSIFFLAGS _IOSW('I', 15, struct ifreq) /* set ifnet flags */ -#define SIOCGIFFLAGS _IOSWR('I', 16, struct ifreq) /* get ifnet flags */ -#define SIOCGIFCONF _IOSWR('I', 17, struct ifconf) /* get ifnet list */ - -#define SIOCSIFMTU _IOSW('I', 21, struct ifreq) /* get if_mtu */ -#define SIOCGIFMTU _IOSWR('I', 22, struct ifreq) /* set if_mtu */ - - -#define SIOCGIFBRDADDR _IOSWR('I', 32, struct ifreq) /* get broadcast addr */ -#define SIOCSIFBRDADDR _IOSW('I', 33, struct ifreq) /* set broadcast addr */ -#define SIOCGIFNETMASK _IOSWR('I', 34, struct ifreq) /* get net addr mask */ -#define SIOCSIFNETMASK _IOSW('I', 35, struct ifreq) /* set net addr mask */ -#define SIOCGIFMETRIC _IOSWR('I', 36, struct ifreq) /* get IF metric */ -#define SIOCSIFMETRIC _IOSW('I', 37, struct ifreq) /* set IF metric */ - -#define SIOCSARP _IOSW('I', 38, struct arpreq) /* set arp entry */ -#define SIOCGARP _IOSWR('I', 39, struct arpreq) /* get arp entry */ -#define SIOCDARP _IOSW('I', 40, struct arpreq) /* delete arp entry */ - -#define SIOCSIFNAME _IOSW('I', 41, struct ifreq) /* set interface name */ -#define SIOCGIFONEP _IOSWR('I', 42, struct ifreq) /* get one-packet params */ -#define SIOCSIFONEP _IOSW('I', 43, struct ifreq) /* set one-packet params */ -#define SIOCDIFADDR _IOSW('I', 44, struct ifreq) /* delete IF addr */ -#define SIOCAIFADDR _IOSW('I', 45, struct ifaliasreq) /*add/change IF alias*/ -#define SIOCADDMULTI _IOSW('I', 49, struct ifreq) /* add m'cast addr */ -#define SIOCDELMULTI _IOSW('I', 50, struct ifreq) /* del m'cast addr */ -#define SIOCGIFALIAS _IOSWR('I', 51, struct ifaliasreq) /* get IF alias */ - - -#define SIOCSOCKSYS _IOSW('I', 66, struct socksysreq) /* Pseudo socket syscall */ - -/* these use ifr_metric to pass the information */ -#define SIOCSIFDEBUG _IOSW('I', 67, struct ifreq) /* set if debug level */ -#define SIOCGIFDEBUG _IOSWR('I', 68, struct ifreq) /* get if debug level */ - -#define SIOCSIFTYPE _IOSW('I', 69, struct ifreq) /* set if MIB type */ -#define SIOCGIFTYPE _IOSWR('I', 70, struct ifreq) /* get if MIB type */ - -#define SIOCGIFNUM _IOSR('I', 71, int) /* get number of ifs */ -/* - * This returns the number of ifreqs that SIOCGIFCONF would return, including - * aliases. This is the preferred way of sizing a buffer big enough to hold - * all interfaces. - */ -#define SIOCGIFANUM _IOSR('I', 72, int) /* get number of ifreqs */ -/* - * Interface specific performance tuning - */ -#define SIOCGIFPERF _IOSR('I', 73, struct ifreq) /* get perf info */ -#define SIOCSIFPERF _IOSR('I', 74, struct ifreq) /* get perf info */ - -/* - * This structure is used to encode pseudo system calls - */ -struct socksysreq { - /* When porting, make this the widest thing it can be */ - int args[7]; -}; - -/* - * This structure is used for adding new protocols to the list supported by - * sockets. - */ -struct socknewproto { - int family; /* address family (AF_INET, etc.) */ - int type; /* protocol type (SOCK_STREAM, etc.) */ - int proto; /* per family proto number */ - dev_t dev; /* major/minor to use (must be a clone) */ - int flags; /* protosw flags */ -}; - -/* - * utility definitions. - */ - -#ifdef MIN -#undef MIN -#endif -#define MIN(x,y) ((x) < (y) ? (x) : (y)) -#ifndef MAX -#define MAX(x,y) ((x) > (y) ? (x) : (y)) -#endif - -#define MAXHOSTNAMELEN 256 - -#define NBBY 8 /* number of bits in a byte */ - - -/* defines for user/kernel interface */ - -#define MAX_MINOR (makedev(1,0) - 1) /* could be non-portable */ - -#define SOCKETSYS 140 /* SCO 3.2v5 */ - -#define SO_ACCEPT 1 -#define SO_BIND 2 -#define SO_CONNECT 3 -#define SO_GETPEERNAME 4 -#define SO_GETSOCKNAME 5 -#define SO_GETSOCKOPT 6 -#define SO_LISTEN 7 -#define SO_RECV 8 -#define SO_RECVFROM 9 -#define SO_SEND 10 -#define SO_SENDTO 11 -#define SO_SETSOCKOPT 12 -#define SO_SHUTDOWN 13 -#define SO_SOCKET 14 -#define SO_SELECT 15 -#define SO_GETIPDOMAIN 16 -#define SO_SETIPDOMAIN 17 -#define SO_ADJTIME 18 -#define SO_SETREUID 19 -#define SO_SETREGID 20 -#define SO_GETTIME 21 -#define SO_SETTIME 22 -#define SO_GETITIMER 23 -#define SO_SETITIMER 24 -#define SO_RECVMSG 25 -#define SO_SENDMSG 26 -#define SO_SOCKPAIR 27 - -/* - * message flags - */ -#define M_BCAST 0x80000000 - -/* Definitions and structures used for extracting */ -/* the size and/or the contents of kernel tables */ - -/* Copyin/out values */ -#define GIARG 0x1 -#define CONTI 0x2 -#define GITAB 0x4 - -struct gi_arg { - caddr_t gi_where; - unsigned gi_size; -}; - -#if !defined(_KERNEL) && !defined(INKERNEL) && !defined(_INKERNEL) - -#include <sys/cdefs.h> - -__BEGIN_DECLS -int accept __P_((int, struct sockaddr *, int *)); -int bind __P_((int, const struct sockaddr *, int)); -int connect __P_((int, const struct sockaddr *, int)); -int getpeername __P_((int, struct sockaddr *, int *)); -int getsockname __P_((int, struct sockaddr *, int *)); -int getsockopt __P_((int, int, int, void *, int *)); -int setsockopt __P_((int, int, int, const void *, int)); -int listen __P_((int, int)); -ssize_t recv __P_((int, void *, size_t, int)); -ssize_t recvfrom __P_((int, void *, size_t, int, struct sockaddr *, int *)); -int recvmsg __P_((int, struct msghdr *, int)); -ssize_t send __P_((int, const void *, size_t, int)); -int sendmsg __P_((int, const struct msghdr *, int)); -ssize_t sendto __P_((int, const void *, size_t, int, const struct sockaddr *, int)); -int shutdown __P_((int, int)); -int socket __P_((int, int, int)); -int socketpair __P_((int, int, int, int[2])); -__END_DECLS - -#endif /* !INKERNEL */ -#endif /* __sys_socket_h */ |