Blame view
include/linux/net.h
9.61 KB
1da177e4c Linux-2.6.12-rc2 |
1 2 3 4 5 6 7 8 9 |
/* * NET An implementation of the SOCKET network access protocol. * This is the master header file for the Linux NET layer, * or, in plain English: the networking handling part of the * kernel. * * Version: @(#)net.h 1.0.3 05/25/93 * * Authors: Orest Zborowski, <obz@Kodak.COM> |
02c30a84e [PATCH] update Ro... |
10 |
* Ross Biro |
1da177e4c Linux-2.6.12-rc2 |
11 12 13 14 15 16 17 18 19 |
* Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG> * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version * 2 of the License, or (at your option) any later version. */ #ifndef _LINUX_NET_H #define _LINUX_NET_H |
0098b7273 [NET]: NPROTO is ... |
20 |
#include <linux/socket.h> |
1da177e4c Linux-2.6.12-rc2 |
21 |
#include <asm/socket.h> |
0098b7273 [NET]: NPROTO is ... |
22 |
#define NPROTO AF_MAX |
1da177e4c Linux-2.6.12-rc2 |
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
#define SYS_SOCKET 1 /* sys_socket(2) */ #define SYS_BIND 2 /* sys_bind(2) */ #define SYS_CONNECT 3 /* sys_connect(2) */ #define SYS_LISTEN 4 /* sys_listen(2) */ #define SYS_ACCEPT 5 /* sys_accept(2) */ #define SYS_GETSOCKNAME 6 /* sys_getsockname(2) */ #define SYS_GETPEERNAME 7 /* sys_getpeername(2) */ #define SYS_SOCKETPAIR 8 /* sys_socketpair(2) */ #define SYS_SEND 9 /* sys_send(2) */ #define SYS_RECV 10 /* sys_recv(2) */ #define SYS_SENDTO 11 /* sys_sendto(2) */ #define SYS_RECVFROM 12 /* sys_recvfrom(2) */ #define SYS_SHUTDOWN 13 /* sys_shutdown(2) */ #define SYS_SETSOCKOPT 14 /* sys_setsockopt(2) */ #define SYS_GETSOCKOPT 15 /* sys_getsockopt(2) */ #define SYS_SENDMSG 16 /* sys_sendmsg(2) */ #define SYS_RECVMSG 17 /* sys_recvmsg(2) */ |
de11defeb reintroduce accept4 |
41 |
#define SYS_ACCEPT4 18 /* sys_accept4(2) */ |
a2e272554 net: Introduce re... |
42 |
#define SYS_RECVMMSG 19 /* sys_recvmmsg(2) */ |
228e548e6 net: Add sendmmsg... |
43 |
#define SYS_SENDMMSG 20 /* sys_sendmmsg(2) */ |
1da177e4c Linux-2.6.12-rc2 |
44 45 46 47 48 49 50 51 52 53 54 55 |
typedef enum { SS_FREE = 0, /* not allocated */ SS_UNCONNECTED, /* unconnected to any socket */ SS_CONNECTING, /* in process of connecting */ SS_CONNECTED, /* connected to socket */ SS_DISCONNECTING /* in process of disconnecting */ } socket_state; #define __SO_ACCEPTCON (1 << 16) /* performed a listen */ #ifdef __KERNEL__ |
eacf17bdb Don't include <li... |
56 |
#include <linux/stringify.h> |
cb4db4c22 [NET]: Don't expo... |
57 |
#include <linux/random.h> |
5770a3fb5 Fix userspace exp... |
58 59 |
#include <linux/wait.h> #include <linux/fcntl.h> /* For O_CLOEXEC and O_NONBLOCK */ |
29a020d35 [PATCH] net: kmem... |
60 |
#include <linux/kmemcheck.h> |
438154823 net: sock_def_rea... |
61 |
#include <linux/rcupdate.h> |
5770a3fb5 Fix userspace exp... |
62 63 64 65 66 |
struct poll_table_struct; struct pipe_inode_info; struct inode; struct net; |
1da177e4c Linux-2.6.12-rc2 |
67 68 69 70 71 |
#define SOCK_ASYNC_NOSPACE 0 #define SOCK_ASYNC_WAITDATA 1 #define SOCK_NOSPACE 2 #define SOCK_PASSCRED 3 |
877ce7c1b [AF_UNIX]: Datagr... |
72 |
#define SOCK_PASSSEC 4 |
1da177e4c Linux-2.6.12-rc2 |
73 74 |
#ifndef ARCH_HAS_SOCKET_TYPES |
4dc3b16ba [PATCH] DocBook: ... |
75 76 77 78 79 80 81 |
/** * enum sock_type - Socket types * @SOCK_STREAM: stream (connection) socket * @SOCK_DGRAM: datagram (conn.less) socket * @SOCK_RAW: raw socket * @SOCK_RDM: reliably-delivered message * @SOCK_SEQPACKET: sequential packet socket |
8f2709b54 [PATCH] kernel-do... |
82 |
* @SOCK_DCCP: Datagram Congestion Control Protocol socket |
4dc3b16ba [PATCH] DocBook: ... |
83 84 85 |
* @SOCK_PACKET: linux specific way of getting packets at the dev level. * For writing rarp and other similar things on the user level. * |
1da177e4c Linux-2.6.12-rc2 |
86 87 88 |
* When adding some new socket type please * grep ARCH_HAS_SOCKET_TYPE include/asm-* /socket.h, at least MIPS * overrides this enum for binary compat reasons. |
1da177e4c Linux-2.6.12-rc2 |
89 90 91 92 93 94 95 |
*/ enum sock_type { SOCK_STREAM = 1, SOCK_DGRAM = 2, SOCK_RAW = 3, SOCK_RDM = 4, SOCK_SEQPACKET = 5, |
7c657876b [DCCP]: Initial i... |
96 |
SOCK_DCCP = 6, |
1da177e4c Linux-2.6.12-rc2 |
97 98 99 100 |
SOCK_PACKET = 10, }; #define SOCK_MAX (SOCK_PACKET + 1) |
a677a039b flag parameters: ... |
101 102 103 |
/* Mask which covers at least up to SOCK_MASK-1. The * remaining bits are used as flags. */ #define SOCK_TYPE_MASK 0xf |
de11defeb reintroduce accept4 |
104 |
/* Flags for socket, socketpair, accept4 */ |
a677a039b flag parameters: ... |
105 |
#define SOCK_CLOEXEC O_CLOEXEC |
c019bbc61 flag parameters: ... |
106 107 108 |
#ifndef SOCK_NONBLOCK #define SOCK_NONBLOCK O_NONBLOCK #endif |
1da177e4c Linux-2.6.12-rc2 |
109 110 |
#endif /* ARCH_HAS_SOCKET_TYPES */ |
91cf45f02 [NET]: Add the he... |
111 112 113 114 115 |
enum sock_shutdown_cmd { SHUT_RD = 0, SHUT_WR = 1, SHUT_RDWR = 2, }; |
438154823 net: sock_def_rea... |
116 |
struct socket_wq { |
eaefd1105 net: add __rcu an... |
117 |
/* Note: wait MUST be first field of socket_wq */ |
438154823 net: sock_def_rea... |
118 119 120 121 |
wait_queue_head_t wait; struct fasync_struct *fasync_list; struct rcu_head rcu; } ____cacheline_aligned_in_smp; |
1da177e4c Linux-2.6.12-rc2 |
122 123 |
/** * struct socket - general BSD socket |
4dc3b16ba [PATCH] DocBook: ... |
124 |
* @state: socket state (%SS_CONNECTED, etc) |
2c693610f net: remove paddi... |
125 |
* @type: socket type (%SOCK_STREAM, etc) |
4dc3b16ba [PATCH] DocBook: ... |
126 127 |
* @flags: socket flags (%SOCK_ASYNC_NOSPACE, etc) * @ops: protocol specific socket operations |
4dc3b16ba [PATCH] DocBook: ... |
128 129 |
* @file: File back pointer for gc * @sk: internal networking protocol agnostic socket representation |
e2aec372f linux/net.h: fix ... |
130 |
* @wq: wait queue for several uses |
1da177e4c Linux-2.6.12-rc2 |
131 132 133 |
*/ struct socket { socket_state state; |
29a020d35 [PATCH] net: kmem... |
134 135 |
kmemcheck_bitfield_begin(type); |
2c693610f net: remove paddi... |
136 |
short type; |
29a020d35 [PATCH] net: kmem... |
137 |
kmemcheck_bitfield_end(type); |
1da177e4c Linux-2.6.12-rc2 |
138 |
unsigned long flags; |
438154823 net: sock_def_rea... |
139 |
|
eaefd1105 net: add __rcu an... |
140 |
struct socket_wq __rcu *wq; |
8bdd663ab net: reorder fiel... |
141 |
|
1da177e4c Linux-2.6.12-rc2 |
142 143 |
struct file *file; struct sock *sk; |
8bdd663ab net: reorder fiel... |
144 |
const struct proto_ops *ops; |
1da177e4c Linux-2.6.12-rc2 |
145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 |
}; struct vm_area_struct; struct page; struct kiocb; struct sockaddr; struct msghdr; struct module; struct proto_ops { int family; struct module *owner; int (*release) (struct socket *sock); int (*bind) (struct socket *sock, struct sockaddr *myaddr, int sockaddr_len); int (*connect) (struct socket *sock, struct sockaddr *vaddr, int sockaddr_len, int flags); int (*socketpair)(struct socket *sock1, struct socket *sock2); int (*accept) (struct socket *sock, struct socket *newsock, int flags); int (*getname) (struct socket *sock, struct sockaddr *addr, int *sockaddr_len, int peer); unsigned int (*poll) (struct file *file, struct socket *sock, struct poll_table_struct *wait); int (*ioctl) (struct socket *sock, unsigned int cmd, unsigned long arg); |
1621e0940 net: CONFIG_COMPA... |
175 |
#ifdef CONFIG_COMPAT |
89bbfc95d [NET]: allow 32 b... |
176 177 |
int (*compat_ioctl) (struct socket *sock, unsigned int cmd, unsigned long arg); |
1621e0940 net: CONFIG_COMPA... |
178 |
#endif |
1da177e4c Linux-2.6.12-rc2 |
179 180 181 |
int (*listen) (struct socket *sock, int len); int (*shutdown) (struct socket *sock, int flags); int (*setsockopt)(struct socket *sock, int level, |
b7058842c net: Make setsock... |
182 |
int optname, char __user *optval, unsigned int optlen); |
1da177e4c Linux-2.6.12-rc2 |
183 184 |
int (*getsockopt)(struct socket *sock, int level, int optname, char __user *optval, int __user *optlen); |
1621e0940 net: CONFIG_COMPA... |
185 |
#ifdef CONFIG_COMPAT |
3fdadf7d2 [NET]: {get|set}s... |
186 |
int (*compat_setsockopt)(struct socket *sock, int level, |
b7058842c net: Make setsock... |
187 |
int optname, char __user *optval, unsigned int optlen); |
3fdadf7d2 [NET]: {get|set}s... |
188 189 |
int (*compat_getsockopt)(struct socket *sock, int level, int optname, char __user *optval, int __user *optlen); |
1621e0940 net: CONFIG_COMPA... |
190 |
#endif |
1da177e4c Linux-2.6.12-rc2 |
191 192 193 194 195 196 197 198 199 |
int (*sendmsg) (struct kiocb *iocb, struct socket *sock, struct msghdr *m, size_t total_len); int (*recvmsg) (struct kiocb *iocb, struct socket *sock, struct msghdr *m, size_t total_len, int flags); int (*mmap) (struct file *file, struct socket *sock, struct vm_area_struct * vma); ssize_t (*sendpage) (struct socket *sock, struct page *page, int offset, size_t size, int flags); |
9c55e01c0 [TCP]: Splice rec... |
200 201 |
ssize_t (*splice_read)(struct socket *sock, loff_t *ppos, struct pipe_inode_info *pipe, size_t len, unsigned int flags); |
1da177e4c Linux-2.6.12-rc2 |
202 |
}; |
38bfd8f5b net,socket: intro... |
203 204 |
#define DECLARE_SOCKADDR(type, dst, src) \ type dst = ({ __sockaddr_check_size(sizeof(*dst)); (type) src; }) |
1da177e4c Linux-2.6.12-rc2 |
205 206 |
struct net_proto_family { int family; |
3f378b684 net: pass kern to... |
207 208 |
int (*create)(struct net *net, struct socket *sock, int protocol, int kern); |
1da177e4c Linux-2.6.12-rc2 |
209 210 211 212 213 |
struct module *owner; }; struct iovec; struct kvec; |
8d8ad9d7c [NET]: Name magic... |
214 215 216 217 218 219 |
enum { SOCK_WAKE_IO, SOCK_WAKE_WAITD, SOCK_WAKE_SPACE, SOCK_WAKE_URG, }; |
1da177e4c Linux-2.6.12-rc2 |
220 |
extern int sock_wake_async(struct socket *sk, int how, int band); |
f0fd27d42 [NET]: sock_regis... |
221 222 |
extern int sock_register(const struct net_proto_family *fam); extern void sock_unregister(int family); |
721db93a5 net: Export __soc... |
223 224 |
extern int __sock_create(struct net *net, int family, int type, int proto, struct socket **res, int kern); |
1da177e4c Linux-2.6.12-rc2 |
225 226 227 228 229 230 231 232 233 234 235 |
extern int sock_create(int family, int type, int proto, struct socket **res); extern int sock_create_kern(int family, int type, int proto, struct socket **res); extern int sock_create_lite(int family, int type, int proto, struct socket **res); extern void sock_release(struct socket *sock); extern int sock_sendmsg(struct socket *sock, struct msghdr *msg, size_t len); extern int sock_recvmsg(struct socket *sock, struct msghdr *msg, size_t size, int flags); |
a677a039b flag parameters: ... |
236 |
extern int sock_map_fd(struct socket *sock, int flags); |
1da177e4c Linux-2.6.12-rc2 |
237 238 239 |
extern struct socket *sockfd_lookup(int fd, int *err); #define sockfd_put(sock) fput(sock->file) extern int net_ratelimit(void); |
aaa248f6c [PATCH] rename ne... |
240 241 |
#define net_random() random32() |
a64b78a07 [NET]: Annotate n... |
242 |
#define net_srandom(seed) srandom32((__force u32)seed) |
1da177e4c Linux-2.6.12-rc2 |
243 244 245 246 247 248 |
extern int kernel_sendmsg(struct socket *sock, struct msghdr *msg, struct kvec *vec, size_t num, size_t len); extern int kernel_recvmsg(struct socket *sock, struct msghdr *msg, struct kvec *vec, size_t num, size_t len, int flags); |
ac5a488ef [NET]: Round out ... |
249 250 251 252 253 254 255 256 257 258 259 260 261 262 |
extern int kernel_bind(struct socket *sock, struct sockaddr *addr, int addrlen); extern int kernel_listen(struct socket *sock, int backlog); extern int kernel_accept(struct socket *sock, struct socket **newsock, int flags); extern int kernel_connect(struct socket *sock, struct sockaddr *addr, int addrlen, int flags); extern int kernel_getsockname(struct socket *sock, struct sockaddr *addr, int *addrlen); extern int kernel_getpeername(struct socket *sock, struct sockaddr *addr, int *addrlen); extern int kernel_getsockopt(struct socket *sock, int level, int optname, char *optval, int *optlen); extern int kernel_setsockopt(struct socket *sock, int level, int optname, |
b7058842c net: Make setsock... |
263 |
char *optval, unsigned int optlen); |
ac5a488ef [NET]: Round out ... |
264 265 266 |
extern int kernel_sendpage(struct socket *sock, struct page *page, int offset, size_t size, int flags); extern int kernel_sock_ioctl(struct socket *sock, int cmd, unsigned long arg); |
91cf45f02 [NET]: Add the he... |
267 268 |
extern int kernel_sock_shutdown(struct socket *sock, enum sock_shutdown_cmd how); |
ac5a488ef [NET]: Round out ... |
269 |
|
1da177e4c Linux-2.6.12-rc2 |
270 271 |
#define MODULE_ALIAS_NETPROTO(proto) \ MODULE_ALIAS("net-pf-" __stringify(proto)) |
4fdb3bb72 [NETLINK]: Add pr... |
272 273 |
#define MODULE_ALIAS_NET_PF_PROTO(pf, proto) \ MODULE_ALIAS("net-pf-" __stringify(pf) "-proto-" __stringify(proto)) |
305e1e969 [INET]: Let inet_... |
274 275 276 |
#define MODULE_ALIAS_NET_PF_PROTO_TYPE(pf, proto, type) \ MODULE_ALIAS("net-pf-" __stringify(pf) "-proto-" __stringify(proto) \ "-type-" __stringify(type)) |
1da177e4c Linux-2.6.12-rc2 |
277 278 |
#endif /* __KERNEL__ */ #endif /* _LINUX_NET_H */ |