diff options
Diffstat (limited to 'mit-pthreads/machdep/linux-2.0/socket.h')
-rwxr-xr-x | mit-pthreads/machdep/linux-2.0/socket.h | 196 |
1 files changed, 196 insertions, 0 deletions
diff --git a/mit-pthreads/machdep/linux-2.0/socket.h b/mit-pthreads/machdep/linux-2.0/socket.h new file mode 100755 index 00000000000..fb43c394e10 --- /dev/null +++ b/mit-pthreads/machdep/linux-2.0/socket.h @@ -0,0 +1,196 @@ +/* ==== socket.h.h ============================================================ + * Copyright (c) 1994 by Chris Provenzano, proven@athena.mit.edu + * + * Description : Correct Linux header file. + */ + +#ifndef _PTHREAD_SOCKET_H_ +#define _PTHREAD_SOCKET_H_ + +/* #include <linux/socket.h> */ +#ifndef _LINUX_SOCKET_H +#define _LINUX_SOCKET_H + +/* IP options */ +#define IP_TOS 1 +#define IPTOS_LOWDELAY 0x10 +#define IPTOS_THROUGHPUT 0x08 +#define IPTOS_RELIABILITY 0x04 +#define IP_TTL 2 +#ifndef IP_HDRINCL +#define IP_HDRINCL 3 +#endif +#ifdef V1_3_WILL_DO_THIS_FUNKY_STUFF +#define IP_OPTIONS 4 +#endif + +#endif + +/* Type for length arguments in socket calls. */ +typedef unsigned int socklen_t; + +/* #include <asm/socket.h> arch-dependent defines */ +#include <linux/sockios.h> /* the SIOCxxx I/O controls */ +#include <pthread/posix.h> + +struct sockaddr { + unsigned short sa_family; /* address family, AF_xxx */ + char sa_data[14]; /* 14 bytes of protocol address */ +}; + +struct linger { + int l_onoff; /* Linger active */ + int l_linger; /* How long to linger for */ +}; + +struct msghdr +{ + void * msg_name; /* Socket name */ + int msg_namelen; /* Length of name */ + struct iovec * msg_iov; /* Data blocks */ + int msg_iovlen; /* Number of blocks */ + void * msg_accrights; /* Per protocol magic (eg BSD file descriptor passing) */ + int msg_accrightslen;/* Length of rights list */ +}; + +/* Socket types. */ +#define SOCK_STREAM 1 /* stream (connection) socket */ +#define SOCK_DGRAM 2 /* datagram (conn.less) socket */ +#define SOCK_RAW 3 /* raw socket */ +#define SOCK_RDM 4 /* reliably-delivered message */ +#define SOCK_SEQPACKET 5 /* sequential packet socket */ +#define SOCK_PACKET 10 /* linux specific way of */ + /* getting packets at the dev */ + /* level. For writing rarp and */ + /* other similar things on the */ + /* user level. */ + +/* Supported address families. */ +#define AF_UNSPEC 0 +#define AF_UNIX 1 /* Unix domain sockets */ +#define AF_INET 2 /* Internet IP Protocol */ +#define AF_AX25 3 /* Amateur Radio AX.25 */ +#define AF_IPX 4 /* Novell IPX */ +#define AF_APPLETALK 5 /* Appletalk DDP */ +#define AF_NETROM 6 /* Amateur radio NetROM */ +#define AF_BRIDGE 7 /* Multiprotocol bridge */ +#define AF_AAL5 8 /* Reserved for Werner's ATM */ +#define AF_X25 9 /* Reserved for X.25 project */ +#define AF_INET6 10 /* IP version 6 */ +#define AF_MAX 12 /* For now.. */ + +/* Protocol families, same as address families. */ +#define PF_UNSPEC AF_UNSPEC +#define PF_UNIX AF_UNIX +#define PF_INET AF_INET +#define PF_AX25 AF_AX25 +#define PF_IPX AF_IPX +#define PF_APPLETALK AF_APPLETALK +#define PF_NETROM AF_NETROM +#define PF_BRIDGE AF_BRIDGE +#define PF_AAL5 AF_AAL5 +#define PF_X25 AF_X25 +#define PF_INET6 AF_INET6 + +#define PF_MAX AF_MAX + +/* Maximum queue length specificable by listen. */ +#define SOMAXCONN 128 + +/* Flags we can use with send/ and recv. */ +#define MSG_OOB 1 +#define MSG_PEEK 2 +#define MSG_DONTROUTE 4 + +/* Setsockoptions(2) level. Thanks to BSD these must match IPPROTO_xxx */ +#define SOL_SOCKET 1 +#define SOL_IP 0 +#define SOL_IPX 256 +#define SOL_AX25 257 +#define SOL_ATALK 258 +#define SOL_NETROM 259 +#define SOL_TCP 6 +#define SOL_UDP 17 + +/* For setsockoptions(2) */ +#define SO_DEBUG 1 +#define SO_REUSEADDR 2 +#define SO_TYPE 3 +#define SO_ERROR 4 +#define SO_DONTROUTE 5 +#define SO_BROADCAST 6 +#define SO_SNDBUF 7 +#define SO_RCVBUF 8 +#define SO_KEEPALIVE 9 +#define SO_OOBINLINE 10 +#define SO_NO_CHECK 11 +#define SO_PRIORITY 12 +#define SO_LINGER 13 +/* To add :#define SO_REUSEPORT 14 */ + + +#define IP_MULTICAST_IF 32 +#define IP_MULTICAST_TTL 33 +#define IP_MULTICAST_LOOP 34 +#define IP_ADD_MEMBERSHIP 35 +#define IP_DROP_MEMBERSHIP 36 + + +/* These need to appear somewhere around here */ +#define IP_DEFAULT_MULTICAST_TTL 1 +#define IP_DEFAULT_MULTICAST_LOOP 1 +#define IP_MAX_MEMBERSHIPS 20 + +/* IPX options */ +#define IPX_TYPE 1 + +/* TCP options - this way around because someone left a set in the c library includes */ +#define TCP_NODELAY 1 +#define TCP_MAXSEG 2 + +/* The various priorities. */ +#define SOPRI_INTERACTIVE 0 +#define SOPRI_NORMAL 1 +#define SOPRI_BACKGROUND 2 + +/* + * Functions + */ + +__BEGIN_DECLS + +int accept __P_((int, struct sockaddr *, socklen_t *)); +int bind __P_((int, const struct sockaddr *, socklen_t)); +int connect __P_((int, const struct sockaddr *, socklen_t)); +int listen __P_((int, int)); +int socket __P_((int, int, int)); + +int getsockopt __P_((int __s, int __level, int __optname, + void *__optval, socklen_t *__optlen)); +int setsockopt __P_((int __s, int __level, int __optname, + __const void *__optval, socklen_t optlen)); +int getsockname __P_((int __sockfd, struct sockaddr *__addr, + socklen_t *__paddrlen)); +int getpeername __P_((int __sockfd, struct sockaddr *__peer, + socklen_t *__paddrlen)); +ssize_t send __P_((int __sockfd, __const void *__buff, size_t __len, int __flags)); +ssize_t recv __P_((int __sockfd, void *__buff, size_t __len, int __flags)); +ssize_t sendto __P_((int __sockfd, __const void *__buff, size_t __len, + int __flags, __const struct sockaddr *__to, + socklen_t __tolen)); +ssize_t recvfrom __P_((int __sockfd, void *__buff, size_t __len, + int __flags, struct sockaddr *__from, + socklen_t *__fromlen)); +extern ssize_t sendmsg __P_((int __fd, __const struct msghdr *__message, + int __flags)); +extern ssize_t recvmsg __P_((int __fd, struct msghdr *__message, + int __flags)); +int shutdown __P_((int __sockfd, int __how)); + +__END_DECLS + +#endif + + + + |