/* ==== 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 */ #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 arch-dependent defines */ #include /* the SIOCxxx I/O controls */ #include 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