2 * NET An implementation of the SOCKET network access protocol. 3 * This is the master header file for the Linux NET layer, 4 * or, in plain English: the networking handling part of the 7 * Version: @(#)net.h 1.0.3 05/25/93 9 * Authors: Orest Zborowski, <obz@Kodak.COM> 10 * Ross Biro, <bir7@leland.Stanford.Edu> 11 * Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG> 13 * This program is free software; you can redistribute it and/or 14 * modify it under the terms of the GNU General Public License 15 * as published by the Free Software Foundation; either version 16 * 2 of the License, or (at your option) any later version. 22 #include <linux/wait.h> 23 #include <linux/socket.h> 26 #define NSOCKETS 2000/* Dynamic, this is MAX LIMIT */ 27 #define NSOCKETS_UNIX 128/* unix domain static limit */ 28 #define NPROTO 16/* should be enough for now.. */ 31 #define SYS_SOCKET 1/* sys_socket(2) */ 32 #define SYS_BIND 2/* sys_bind(2) */ 33 #define SYS_CONNECT 3/* sys_connect(2) */ 34 #define SYS_LISTEN 4/* sys_listen(2) */ 35 #define SYS_ACCEPT 5/* sys_accept(2) */ 36 #define SYS_GETSOCKNAME 6/* sys_getsockname(2) */ 37 #define SYS_GETPEERNAME 7/* sys_getpeername(2) */ 38 #define SYS_SOCKETPAIR 8/* sys_socketpair(2) */ 39 #define SYS_SEND 9/* sys_send(2) */ 40 #define SYS_RECV 10/* sys_recv(2) */ 41 #define SYS_SENDTO 11/* sys_sendto(2) */ 42 #define SYS_RECVFROM 12/* sys_recvfrom(2) */ 43 #define SYS_SHUTDOWN 13/* sys_shutdown(2) */ 44 #define SYS_SETSOCKOPT 14/* sys_setsockopt(2) */ 45 #define SYS_GETSOCKOPT 15/* sys_getsockopt(2) */ 49 SS_FREE
=0,/* not allocated */ 50 SS_UNCONNECTED
,/* unconnected to any socket */ 51 SS_CONNECTING
,/* in process of connecting */ 52 SS_CONNECTED
,/* connected to socket */ 53 SS_DISCONNECTING
/* in process of disconnecting */ 56 #define SO_ACCEPTCON (1<<16)/* performed a listen */ 57 #define SO_WAITDATA (1<<17)/* wait data to read */ 58 #define SO_NOSPACE (1<<18)/* no space to write */ 62 * Internal representation of a socket. not all the fields are used by 66 * conn client connected to server connected to 67 * iconn list of clients -unused- 68 * awaiting connections 69 * wait sleep for clients, sleep for connection, 70 * sleep for i/o sleep for i/o 73 short type
;/* SOCK_STREAM, ... */ 76 struct proto_ops
*ops
;/* protocols do most everything */ 77 void*data
;/* protocol data */ 78 struct socket
*conn
;/* server socket connected to */ 79 struct socket
*iconn
;/* incomplete client conn.s */ 81 struct wait_queue
**wait
;/* ptr to place to wait on */ 83 struct fasync_struct
*fasync_list
;/* Asynchronous wake up list */ 86 #define SOCK_INODE(S) ((S)->inode) 91 int(*create
) (struct socket
*sock
,int protocol
); 92 int(*dup
) (struct socket
*newsock
,struct socket
*oldsock
); 93 int(*release
) (struct socket
*sock
,struct socket
*peer
); 94 int(*bind
) (struct socket
*sock
,struct sockaddr
*umyaddr
, 96 int(*connect
) (struct socket
*sock
,struct sockaddr
*uservaddr
, 97 int sockaddr_len
,int flags
); 98 int(*socketpair
) (struct socket
*sock1
,struct socket
*sock2
); 99 int(*accept
) (struct socket
*sock
,struct socket
*newsock
, 101 int(*getname
) (struct socket
*sock
,struct sockaddr
*uaddr
, 102 int*usockaddr_len
,int peer
); 103 int(*read
) (struct socket
*sock
,char*ubuf
,int size
, 105 int(*write
) (struct socket
*sock
,const char*ubuf
,int size
, 107 int(*select
) (struct socket
*sock
,int sel_type
, 109 int(*ioctl
) (struct socket
*sock
,unsigned int cmd
, 111 int(*listen
) (struct socket
*sock
,int len
); 112 int(*send
) (struct socket
*sock
,const void*buff
,int len
,int nonblock
, 114 int(*recv
) (struct socket
*sock
,void*buff
,int len
,int nonblock
, 116 int(*sendto
) (struct socket
*sock
,const void*buff
,int len
,int nonblock
, 117 unsigned flags
,struct sockaddr
*,int addr_len
); 118 int(*recvfrom
) (struct socket
*sock
,void*buff
,int len
,int nonblock
, 119 unsigned flags
,struct sockaddr
*,int*addr_len
); 120 int(*shutdown
) (struct socket
*sock
,int flags
); 121 int(*setsockopt
) (struct socket
*sock
,int level
,int optname
, 122 char*optval
,int optlen
); 123 int(*getsockopt
) (struct socket
*sock
,int level
,int optname
, 124 char*optval
,int*optlen
); 125 int(*fcntl
) (struct socket
*sock
,unsigned int cmd
, 130 const char*name
;/* Protocol name */ 131 void(*init_func
)(struct net_proto
*);/* Bootstrap */ 134 externintsock_awaitconn(struct socket
*mysock
,struct socket
*servsock
,int flags
); 135 externintsock_wake_async(struct socket
*sock
,int how
); 136 externintsock_register(int family
,struct proto_ops
*ops
); 137 externintsock_unregister(int family
); 138 externstruct socket
*sock_alloc(void); 139 externvoidsock_release(struct socket
*sock
); 140 #endif/* __KERNEL__ */ 141 #endif/* _LINUX_NET_H */