📄 socket.h
字号:
#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_MAXIOVLEN 16
/*
* This ioctl code uses BSD style ioctl's to avoid copyin/out problems.
* Ioctl's 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 ioctl's from old */
#define _IOS(x,y) ((x<<8)|y)
#define _IOSR(x,y,t) ((x<<8)|y)
#define _IOSW(x,y,t) ((x<<8)|y)
/* this should be _IOSRW, but stdio got there first */
#define _IOSWR(x,y,t) ((x<<8)|y)
#undef IOC_VOID
#undef IOC_OUT
#undef IOC_IN
#undef IOC_INOUT
#undef IOCPARM_MASK
/*
* Socket ioctl commands
*
*/
#define SIOCSHIWAT _IOSW('S', 1, long) /* set high watermark */
#define SIOCGHIWAT _IOSR('S', 2, long) /* get high watermark */
#define SIOCSLOWAT _IOSW('S', 3, long) /* set low watermark */
#define SIOCGLOWAT _IOSR('S', 4, long) /* 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 FIOWBYTES _IOSR('S', 16, long) /* bytes in write stream */
#define SIOCADDRT _IOSW('R', 9, struct rtentry) /* add route */
#define SIOCDELRT _IOSW('R', 10, struct rtentry) /* 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 SIOCIFDETACH _IOSW('I', 26, struct ifreq) /* detach interface */
#define SIOCGENPSTATS _IOSWR('I', 27, struct ifreq) /* get ENP stats */
#define SIOCX25XMT _IOSWR('I', 29, struct ifreq) /* start a slp proc in
* x25if */
#define SIOCX25RCV _IOSWR('I', 30, struct ifreq) /* start a slp proc in
* x25if */
#define SIOCX25TBL _IOSWR('I', 31, struct ifreq) /* xfer lun table to
* kernel */
#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 SIOCGIFMUXID _IOSWR('I', 44, struct ifreq) /* get muxid */
#ifdef SNX
#define STIOCGADDR _IOSR('I', 50, struct strioctl) /* get IP address and
* port */
#endif
#define SIOCGENADDR _IOSWR('I', 65, struct ifreq) /* Get ethernet addr */
#define SIOCSOCKSYS _IOSW('I', 66, struct socksysreq) /* Pseudo socket syscall */
#define SIOCARPREQ _IOSWR('I', 67, struct arp_req) /* Send an ARP request */
/*
* This structure is used to encode pseudo system calls
*/
struct socksysreq {
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 64
#define NBBY 8 /* number of bits in a byte */
/*
* Select uses bit masks of file descriptors in longs. These macros
* manipulate such bit fields (the filesystem macros use chars). FD_SETSIZE
* may be defined by the user, but the default here should be >= swk_nfile
*/
#ifndef FD_SETSIZE
#define FD_SETSIZE 256
typedef long fd_mask;
#define NFDBITS (sizeof(fd_mask) * NBBY) /* bits per mask */
#ifndef howmany
#define howmany(x, y) (((x)+((y)-1))/(y))
#endif
typedef struct fd_set {
fd_mask fds_bits[howmany(FD_SETSIZE, NFDBITS)];
} fd_set;
#define FD_SET(n, p) ((p)->fds_bits[(n)/NFDBITS] |= (1L << ((n) % NFDBITS)))
#define FD_CLR(n, p) ((p)->fds_bits[(n)/NFDBITS] &= ~(1L << ((n) % NFDBITS)))
#define FD_ISSET(n, p) ((p)->fds_bits[(n)/NFDBITS] & (1L << ((n) % NFDBITS)))
#define FD_ZERO(p) memset((char *)(p), '\0', sizeof(*(p)))
#endif /* FD_SETSIZE */
/* defines for user/kernel interface */
#if (INTEL == 32)
#define SOCKETSYS 128 /* MUST BE CHANGED DEPENDING ON OS/SYSENT.C!! */
#elif (ATT == 32)
#define SOCKETSYS 88 /* MUST BE CHANGED DEPENDING ON OS/SYSENT.C!! */
#elif (INTEL == 31) || (ATT == 31)
#define SOCKETSYS 88 /* MUST BE CHANGED DEPENDING ON OS/SYSENT.C!! */
#else
#define SOCKETSYS 83 /* MUST BE CHANGED DEPENDING ON OS/SYSENT.C!! */
#endif
#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
#if __STDC__
extern int accept(int, struct sockaddr *, int *);
extern int bind(int, struct sockaddr *, int);
extern int connect(int, struct sockaddr *, int);
extern int getpeername(int, struct sockaddr *, int *);
extern int getsockname(int, struct sockaddr *, int *);
extern int getsockopt(int, int, int, char *, int *);
extern int listen(int, int);
extern int recv(int, char *, int, int);
extern int recvfrom(int, char *, int, int, struct sockaddr *, int *);
extern int send(int, char *, int, int);
extern int sendto(int, char *, int, int, struct sockaddr *, int);
extern int setsockopt(int, int, int, char *, int);
extern int socket(int, int, int);
extern int recvmsg(int, struct msghdr *, int);
extern int sendmsg(int, struct msghdr *, int);
extern int shutdown(int, int);
#else /* __STDC__ */
extern int accept();
extern int bind();
extern int connect();
extern int getpeername();
extern int getsockname();
extern int getsockopt();
extern int listen();
extern int recv();
extern int recvfrom();
extern int send();
extern int sendto();
extern int setsockopt();
extern int socket();
extern int recvmsg();
extern int sendmsg();
extern int shutdown();
#endif /* __STDC__ */
#ifdef __cplusplus
}
#endif
#endif /* socket_h */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -