home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 10 Tools
/
10-Tools.zip
/
detk45he.zip
/
stack16
/
sys
/
socket.h
< prev
next >
Wrap
C/C++ Source or Header
|
1999-05-11
|
10KB
|
272 lines
#ifndef __SOCKET_32H
#define __SOCKET_32H
#include <types.h>
/*
* Copyright (c) 1982, 1985, 1986 Regents of the University of California.
* All rights reserved.
*
* Redistribution and use in source and binary forms are permitted
* provided that this notice is preserved and that due credit is given
* to the University of California at 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'' without express or implied warranty.
*
* @(#)socket.h 7.2 (Berkeley) 12/30/87
*/
/*
** Check for BORLAND Compiler
*/
#ifdef __BORLANDC__ /* DRC01 - BORLAND? */
#ifndef _System /* DRC01 */
#define _System _syscall /* DRC01 - redefine _System to _syscall */
#endif /* DRC01 */
#endif /* DRC01 */
#ifdef __HIGHC__ /* DRC02 - changed _System */
#define _System /* DRC02 */
#endif /* DRC02 */
/*
* 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_L_BROADCAST 0x0200 /* limited broadcast sent on all IFs*/
#define SO_RCV_SHUTDOWN 0x0400 /* set if shut down called for rcv */
#define SO_SND_SHUTDOWN 0x0800 /* set if shutdown called for send */
/*
* 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_ERROR 0x1007 /* get error status and clear */
#define SO_TYPE 0x1008 /* get socket type */
#define SO_OPTIONS 0x1010 /* get socket options */
/*
* 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 */
/*
* 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_NBS 7 /* nbs protocols */
#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_OS2 AF_UNIX
#define AF_NB 17 /* Netbios */
#define AF_NETBIOS AF_NB
#define AF_MAX 18
/*
* Structure used by kernel to store most
* addresses.
*/
struct sockaddr {
unsigned 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_NETBIOS AF_NB
#define PF_NB AF_NB
#define PF_OS2 PF_UNIX
#define PF_MAX AF_MAX
/*
* Maximum queue length specifiable by listen.
*/
#define SOMAXCONN 5
/*
* Message header for recvmsg and sendmsg calls.
*/
struct msghdr {
char * msg_name; /* optional address */
int msg_namelen; /* size of address */
struct iovec * msg_iov; /* scatter/gather array */
int msg_iovlen; /* # elements in msg_iov */
char * msg_accrights; /* access rights sent/received */
int msg_accrightslen;
};
struct iovec {
char * iov_base;
int iov_len;
};
struct uio {
struct iovec *uio_iov;
int uio_iovcnt;
off_t uio_offset;
int uio_segflg;
unsigned int uio_resid;
};
enum uio_rw { UIO_READ, UIO_WRITE };
#define FREAD 1
#define FWRITE 2
#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_FULLREAD 0x8 /* send without using routing tables */
#define MSG_MAXIOVLEN 16
struct sockaddr_in;
int _System accept( int, struct sockaddr *, int * );
void _System addsockettolist(int);
int _System bind( int, struct sockaddr *, int );
int _System connect( int, struct sockaddr *, int );
int _System gethostid(void);
int _System getpeername( int, struct sockaddr *, int * );
int _System getsockname( int, struct sockaddr *, int * );
int _System getsockopt( int, int, int, char *, int * );
int _System ioctl(int, int, char *, int);
int _System listen( int, int);
int _System recvmsg( int, struct msghdr * , int);
int _System recv( int, char *, int, int );
int _System recvfrom(int, char *, int, int, struct sockaddr *, int * );
int _System removesocketfromlist(int);
#ifndef BSD_SELECT
int _System select( int *, int, int, int, long );
#endif
int _System send( int, char *, int, int );
int _System sendmsg( int, struct msghdr * , int);
int _System sendto( int, char *, int, int, struct sockaddr *, int);
int _System setsockopt( int, int, int, char *, int );
int _System sock_init( void );
int _System sock_errno( void );
void _System psock_errno( char * );
int _System socket( int, int, int );
int _System soclose( int );
int _System so_cancel(int);
int _System readv(int, struct iovec * , int);
int _System writev(int, struct iovec* , int);
int _System shutdown(int, int);
int _System Raccept(int, struct sockaddr *, int *);
int _System Rbind(int, struct sockaddr_in *, int, struct sockaddr_in *);
int _System Rconnect(int, const struct sockaddr *, int);
int _System Rgetsockname(int, struct sockaddr *, int *);
int _System Rlisten(int, int);
#define MT_FREE 0 /* should be on free list */
#define MT_DATA 1 /* dynamic (data) allocation */
#define MT_HEADER 2 /* packet header */
#define MT_SOCKET 3 /* socket structure */
#define MT_PCB 4 /* protocol control block */
#define MT_RTABLE 5 /* routing tables */
#define MT_HTABLE 6 /* IMP host tables */
#define MT_ATABLE 7 /* address resolution tables */
#define MT_SONAME 8 /* socket name */
#define MT_ZOMBIE 9 /* zombie proc status */
#define MT_SOOPTS 10 /* socket options */
#define MT_FTABLE 11 /* fragment reassembly header */
#define MT_RIGHTS 12 /* access rights */
#define MT_IFADDR 13 /* interface address */
#pragma pack(1)
/* used to get mbuf statistics */
struct mbstat {
unsigned short m_mbufs; /* mbufs obtained from page pool */
unsigned short m_clusters; /* clusters obtained from page pool */
unsigned short m_clfree; /* free clusters */
unsigned short m_drops; /* times failed to find space */
unsigned long m_wait; /* times waited for space */
unsigned short m_mtypes[256]; /* type specific mbuf allocations */
};
struct sostats {
short count;
short socketdata[9*MAXSOCKETS];
};
#pragma pack()
#endif /* __SOCKET_32H */