Changeset 183 for trunk/src/emx/include/sys/socket.h
- Timestamp:
- May 19, 2003, 4:41:00 AM (22 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/emx/include/sys/socket.h
-
Property cvs2svn:cvs-rev
changed from
1.1
to1.2
r182 r183 1 1 /* Modified for emx by hv and em 1994-1997 2 * Modified for gcc/os2 by bird 2003 2 3 * 3 4 * Copyright (c) 1982,1985,1986,1988 Regents of the University of California. … … 39 40 #define _SYS_SOCKET_H_ 40 41 41 #if !defined (_SYS_TYPES_H) 42 #warning <sys/socket.h> requires <sys/types.h> 42 #include <machine/ansi.h> 43 #define _NO_NAMESPACE_POLLUTION 44 #include <machine/param.h> 45 #undef _NO_NAMESPACE_POLLUTION 46 47 48 /* toolkit stuff */ 43 49 #include <sys/types.h> 44 #endif45 46 50 #include <sys/uio.h> 51 #include <sys/cdefs.h> 47 52 48 53 #if defined (__cplusplus) … … 82 87 #define SO_RCV_SHUTDOWN 0x0400 /* set if shut down called for rcv */ 83 88 #define SO_SND_SHUTDOWN 0x0800 /* set if shutdown called for send */ 89 #ifndef TCPV40HDRS 90 #define SO_REUSEPORT 0x1000 /* allow local address & port reuse */ 91 #define SO_TTCP 0x2000 /* allow t/tcp on socket */ 92 #endif 84 93 85 94 /* … … 90 99 #define SO_SNDLOWAT 0x1003 /* send low-water mark */ 91 100 #define SO_RCVLOWAT 0x1004 /* receive low-water mark */ 101 #ifndef TCPV40HDRS 92 102 #define SO_SNDTIMEO 0x1005 /* send timeout */ 93 103 #define SO_RCVTIMEO 0x1006 /* receive timeout */ 104 #endif 94 105 #define SO_ERROR 0x1007 /* get error status and clear */ 95 106 #define SO_TYPE 0x1008 /* get socket type */ … … 119 130 #define AF_UNSPEC 0 /* unspecified */ 120 131 #define AF_UNIX 1 /* local to host (pipes, portals) */ 132 #ifndef TCPV40HDRS 133 #define AF_LOCAL AF_UNIX 134 #endif 135 #define AF_OS2 AF_UNIX 121 136 #define AF_INET 2 /* internetwork: UDP, TCP, etc. */ 122 137 #define AF_IMPLINK 3 /* arpanet imp addresses */ … … 124 139 #define AF_CHAOS 5 /* mit CHAOS protocols */ 125 140 #define AF_NS 6 /* XEROX NS protocols */ 141 #ifdef TCPV40HDRS 126 142 #define AF_NBS 7 /* IBM: nbs protocols */ 127 143 /* (hv: I think IBM is outdated here */ 144 #endif 128 145 #define AF_ISO 7 /* ISO protocols */ 129 146 #define AF_OSI AF_ISO … … 140 157 #define AF_NETBIOS AF_NB 141 158 142 #define AF_OS2 AF_UNIX 143 159 #ifdef TCPV40HDRS 144 160 #define AF_MAX 18 161 #else 162 #define AF_LINK 18 /* Link layer interface */ 163 #define pseudo_AF_XTP 19 /* eXpress Transfer Protocol (no AF) */ 164 #define AF_COIP 20 /* connection-oriented IP, aka ST II */ 165 #define AF_CNT 21 /* Computer Network Technology */ 166 #define pseudo_AF_RTIP 22 /* Help Identify RTIP packets */ 167 #define AF_IPX 23 /* Novell Internet Protocol */ 168 #define AF_SIP 24 /* Simple Internet Protocol */ 169 #define AF_INET6 24 170 #define pseudo_AF_PIP 25 /* Help Identify PIP packets */ 171 #define AF_ROUTE 39 /* Internal Routing Protocol */ 172 #define AF_FWIP 40 /* firewall support */ 173 #define AF_IPSEC 41 /* IPSEC and encryption techniques */ 174 #define AF_DES 42 /* DES */ 175 #define AF_MD5 43 176 #define AF_CDMF 44 177 178 #define AF_MAX 45 179 #endif 180 145 181 146 182 /* … … 150 186 */ 151 187 struct sockaddr { 188 #ifdef TCPV40HDRS 152 189 u_short sa_family; /* address family */ 153 190 char sa_data[14]; /* up to 14 bytes of direct address */ 191 #else 192 u_char sa_len; /* total length */ 193 u_char sa_family; /* address family */ 194 char sa_data[14]; /* actually longer; address value */ 195 #endif 154 196 }; 155 197 … … 168 210 #define PF_UNSPEC AF_UNSPEC 169 211 #define PF_UNIX AF_UNIX 212 #ifndef TCPV40HDRS 213 #define PF_LOCAL AF_LOCAL 214 #endif 215 #define PF_OS2 AF_UNIX 170 216 #define PF_INET AF_INET 171 217 #define PF_IMPLINK AF_IMPLINK … … 173 219 #define PF_CHAOS AF_CHAOS 174 220 #define PF_NS AF_NS 221 #ifdef TCPV40HDRS 175 222 #define PF_NBS AF_NBS 223 #endif 176 224 #define PF_ISO AF_ISO 177 #define PF_OSI AF_ ISO225 #define PF_OSI AF_OSI 178 226 #define PF_ECMA AF_ECMA 179 227 #define PF_DATAKIT AF_DATAKIT … … 185 233 #define PF_HYLINK AF_HYLINK 186 234 #define PF_APPLETALK AF_APPLETALK 235 #define PF_NETBIOS AF_NB 187 236 #define PF_NB AF_NB 188 #define PF_NETBIOS AF_NB 189 #define PF_OS2 AF_UNIX 237 #ifndef TCPV40HDRS 238 #define PF_ROUTE AF_ROUTE 239 #define PF_LINK AF_LINK 240 #define PF_XTP pseudo_AF_XTP /* really just proto family, no AF */ 241 #define PF_COIP AF_COIP 242 #define PF_CNT AF_CNT 243 #define PF_SIP AF_SIP 244 #define PF_INET6 AF_INET6 245 #define PF_IPX AF_IPX /* same format as AF_NS */ 246 #define PF_RTIP pseudo_AF_FTIP /* same format as AF_INET */ 247 #define PF_PIP pseudo_AF_PIP 248 #endif /* !TCPV40HDRS */ 249 190 250 #define PF_MAX AF_MAX 191 251 252 253 #ifndef TCPV40HDRS 254 /* 255 * Definitions for network related sysctl, CTL_NET. 256 * 257 * Second level is protocol family. 258 * Third level is protocol number. 259 * 260 * Further levels are defined by the individual families below. 261 */ 262 #define NET_MAXID AF_MAX 263 264 #define CTL_NET_NAMES { \ 265 { 0, 0 }, \ 266 { "local", CTLTYPE_NODE }, \ 267 { "inet", CTLTYPE_NODE }, \ 268 { "implink", CTLTYPE_NODE }, \ 269 { "pup", CTLTYPE_NODE }, \ 270 { "chaos", CTLTYPE_NODE }, \ 271 { "xerox_ns", CTLTYPE_NODE }, \ 272 { "iso", CTLTYPE_NODE }, \ 273 { "emca", CTLTYPE_NODE }, \ 274 { "datakit", CTLTYPE_NODE }, \ 275 { "ccitt", CTLTYPE_NODE }, \ 276 { "ibm_sna", CTLTYPE_NODE }, \ 277 { "decnet", CTLTYPE_NODE }, \ 278 { "dec_dli", CTLTYPE_NODE }, \ 279 { "lat", CTLTYPE_NODE }, \ 280 { "hylink", CTLTYPE_NODE }, \ 281 { "appletalk", CTLTYPE_NODE }, \ 282 { "netbios", CTLTYPE_NODE }, \ 283 { "route", CTLTYPE_NODE }, \ 284 { "link_layer", CTLTYPE_NODE }, \ 285 { "xtp", CTLTYPE_NODE }, \ 286 { "coip", CTLTYPE_NODE }, \ 287 { "cnt", CTLTYPE_NODE }, \ 288 { "rtip", CTLTYPE_NODE }, \ 289 { "ipx", CTLTYPE_NODE }, \ 290 { "sip", CTLTYPE_NODE }, \ 291 { "pip", CTLTYPE_NODE }, \ 292 } 293 294 /* 295 * PF_ROUTE - Routing table 296 * 297 * Three additional levels are defined: 298 * Fourth: address family, 0 is wildcard 299 * Fifth: type of info, defined below 300 * Sixth: flag(s) to mask with for NET_RT_FLAGS 301 */ 302 #define NET_RT_DUMP 1 /* dump; may limit to a.f. */ 303 #define NET_RT_FLAGS 2 /* by flags, e.g. RESOLVING */ 304 #define NET_RT_IFLIST 3 /* survey interface list */ 305 #define NET_RT_MAXID 4 306 307 #define CTL_NET_RT_NAMES { \ 308 { 0, 0 }, \ 309 { "dump", CTLTYPE_STRUCT }, \ 310 { "flags", CTLTYPE_STRUCT }, \ 311 { "iflist", CTLTYPE_STRUCT }, \ 312 } 313 314 #endif /* !TCPV40HDRS */ 315 316 192 317 /* 193 318 * Maximum queue length specifiable by listen. 194 319 */ 320 #ifdef TCPV40HDRS 195 321 #define SOMAXCONN 5 322 #else 323 #define SOMAXCONN 1024 324 #endif 196 325 197 326 /* … … 201 330 struct msghdr { 202 331 caddr_t msg_name; /* optional address */ 332 #ifdef TCPV40HDRS 203 333 int msg_namelen; /* size of address */ 204 334 struct iovec *msg_iov; /* scatter/gather array */ … … 206 336 caddr_t msg_accrights; /* access rights sent/received */ 207 337 int msg_accrightslen; 338 #else 339 u_int msg_namelen; /* size of address */ 340 struct iovec *msg_iov; /* scatter/gather array */ 341 u_int msg_iovlen; /* # elements in msg_iov */ 342 caddr_t msg_control; /* ancillary data, see below */ 343 u_int msg_controllen; /* ancillary data buffer len */ 344 long msg_flags; /* flags on received message */ 345 #endif 208 346 }; 209 347 … … 211 349 #define MSG_PEEK 0x2 /* peek at incoming message */ 212 350 #define MSG_DONTROUTE 0x4 /* send without using routing tables */ 213 #define MSG_EOR 0x8 /* data completes record */ 214 #define MSG_TRUNC 0x10 /* data discarded before delivery */ 215 #define MSG_CTRUNC 0x20 /* control data lost before delivery */ 216 #define MSG_WAITALL 0x40 /* wait for full request or error */ 217 351 #define MSG_FULLREAD 0x8 /* send without using routing tables */ 352 #ifndef TCPV40HDRS 353 #define MSG_EOR 0x10 /* data completes record */ 354 #define MSG_TRUNC 0x20 /* data discarded before delivery */ 355 #define MSG_CTRUNC 0x40 /* control data lost before delivery */ 356 #define MSG_WAITALL 0x80 /* wait for full request or error */ 357 #define MSG_DONTWAIT 0x100 /* this message should be nonblocking */ 358 #ifdef TTCP 359 #define MSG_EOF 0x200 360 #endif 361 #define MSG_MAPIO 0x400 /* mem mapped io */ 362 #define MSG_CLOSE 0x800 /* close connection after succesful send_file */ 363 #endif 364 365 #ifdef TCPV40HDRS 218 366 #define MSG_MAXIOVLEN 16 367 #endif 219 368 220 369 /* … … 246 395 #define SCM_RIGHTS 0x01 /* access rights (array of int) */ 247 396 248 extern int accept (int, struct sockaddr *, int *); 249 extern int bind (int, __const__ struct sockaddr *, int); 250 extern int connect (int, __const__ struct sockaddr *, int); 251 extern int gethostid (void); 252 extern int getpeername (int, struct sockaddr *, int *); 253 extern int getsockname (int, struct sockaddr *, int *); 254 extern int getsockopt (int, int, int, void *, int *); 255 extern int listen (int, int); 256 extern int recv (int, void *, int, int); 257 extern int recvfrom (int, void *, int, int, struct sockaddr *, int *); 258 extern int recvmsg (int, struct msghdr *, int); 259 extern int send (int, __const__ void *, int, int); 260 extern int sendto (int, __const__ void *, int, int, __const__ struct sockaddr *, int); 261 extern int sendmsg (int, __const__ struct msghdr *, int); 262 extern int setsockopt (int, int, int, __const__ void *, int); 263 extern int shutdown (int, int); 264 extern int socket (int, int, int); 265 extern int socketpair (int, int, int, int *); 266 267 extern int _impsockhandle (int, int); 268 269 /* special IBM prototypes 270 * hv: warning: usage of these routines may interfere with EMX operation 271 * usage is not recommended. 272 */ 273 extern void psock_errno(__const__ char*); 274 extern int soabort(int); 275 extern int soclose(int); 276 extern int sock_init(void); 277 extern int sock_errno(void); 278 extern int so_cancel(int); 279 extern int getinetversion(char*); 280 281 /* hv: these are new TCPIPV4 data structures. Consult IBM doc on that */ 282 #ifdef TCPIPV4 397 #ifndef TCPV40HDRS 398 /* 399 * 4.3 compat sockaddr, move to compat file later 400 */ 401 struct osockaddr { 402 u_short sa_family; /* address family */ 403 char sa_data[14]; /* up to 14 bytes of direct address */ 404 }; 405 406 /* 407 * 4.3-compat message header (move to compat file later). 408 */ 409 struct omsghdr { 410 caddr_t msg_name; /* optional address */ 411 int msg_namelen; /* size of address */ 412 struct iovec *msg_iov; /* scatter/gather array */ 413 int msg_iovlen; /* # elements in msg_iov */ 414 caddr_t msg_accrights; /* access rights sent/received */ 415 int msg_accrightslen; 416 }; 417 418 /* 419 * send_file parameter structure 420 */ 421 struct sf_parms { 422 void *header_data; /* ptr to header data */ 423 size_t header_length; /* size of header data */ 424 int file_handle; /* file handle to send from */ 425 size_t file_size; /* size of file */ 426 int file_offset; /* byte offset in file to send from */ 427 size_t file_bytes; /* bytes of file to be sent */ 428 void *trailer_data; /* ptr to trailer data */ 429 size_t trailer_length; /* size of trailer data */ 430 size_t bytes_sent; /* bytes sent in this send_file call */ 431 }; 432 #endif 433 434 int _System accept (int, struct sockaddr *, int *); 435 int _System bind (int, __const__ struct sockaddr *, int); 436 int _System connect (int, __const__ struct sockaddr *, int); 437 int _System gethostid (void); 438 int _System getpeername (int, struct sockaddr *, int *); 439 int _System getsockname (int, struct sockaddr *, int *); 440 int _System getsockopt (int, int, int, void *, int *); 441 int _System listen (int, int); 442 int _System recv (int, void *, int, int); 443 int _System recvfrom (int, void *, int, int, struct sockaddr *, int *); 444 int _System recvmsg (int, struct msghdr *, int); 445 int _System send (int, __const__ void *, int, int); 446 int _System sendto (int, __const__ void *, int, int, __const__ struct sockaddr *, int); 447 int _System sendmsg (int, __const__ struct msghdr *, int); 448 int _System setsockopt (int, int, int, __const__ void *, int); 449 int _System shutdown (int, int); 450 int _System socket (int, int, int); 451 int _System socketpair (int, int, int, int *); 452 453 /* EMX addition */ 454 int _impsockhandle (int, int); 455 456 #ifndef TCPV40HDRS 457 int _System accept_and_recv (long, long*, struct sockaddr *, long*, struct sockaddr*, long*, caddr_t, size_t); 458 #endif 459 460 /* OS/2 additions */ 461 void _System addsockettolist(int); 462 int _System removesocketfromlist(int); 463 #include <sys/ioccom.h> 464 #ifdef TCPV40HDRS 465 #include <sys/select.h> 466 #endif 467 int _System sock_init( void ); 468 int _System sock_errno( void ); 469 void _System psock_errno( char * ); 470 int _System soclose( int ); 471 int _System so_cancel(int); 472 int _System Raccept(int, struct sockaddr *, int *); 473 #ifdef TCPV40HDRS 474 struct sockaddr_in; 475 int _System Rbind(int, struct sockaddr_in *, int, struct sockaddr_in *); 476 #else 477 int _System Rbind(int, struct sockaddr *, int, struct sockaddr *); 478 #endif 479 int _System Rconnect(int, const struct sockaddr *, int); 480 int _System Rgetsockname(int, struct sockaddr *, int *); 481 int _System Rlisten(int, int); 482 #ifndef TCPV40HDRS 483 ssize_t _System send_file(int *, struct sf_parms *, int ); 484 char * _System sock_strerror(int); 485 int _System getinetversion(char *); 486 #endif 487 488 489 /* more OS/2 stuff. */ 490 #ifndef MAXSOCKETS 491 #define MAXSOCKETS 2048 492 #endif 493 283 494 #define MT_FREE 0 284 495 #define MT_DATA 1 … … 305 516 }; 306 517 307 #define MAXSOCKETS 2048308 518 309 519 struct sostats { 310 520 short count; 311 short socketdata[9*MAXSOCKETS]; 312 }; 313 #endif 521 #ifdef TCPV40HDRS 522 short socketdata[9*MAXSOCKETS]; 523 #else 524 short socketdata[13*MAXSOCKETS]; 525 #endif 526 }; 314 527 315 528 #if defined (__cplusplus) -
Property cvs2svn:cvs-rev
changed from
Note:
See TracChangeset
for help on using the changeset viewer.