]>
Commit | Line | Data |
---|---|---|
1da177e4 LT |
1 | /* |
2 | * INET An implementation of the TCP/IP protocol suite for the LINUX | |
3 | * operating system. INET is implemented using the BSD Socket | |
4 | * interface as the means of communication with the user level. | |
5 | * | |
6 | * Definitions for the UDP module. | |
7 | * | |
8 | * Version: @(#)udp.h 1.0.2 05/07/93 | |
9 | * | |
02c30a84 | 10 | * Authors: Ross Biro |
1da177e4 LT |
11 | * Fred N. van Kempen, <[email protected]> |
12 | * | |
13 | * Fixes: | |
14 | * Alan Cox : Turned on udp checksums. I don't want to | |
15 | * chase 'memory corruption' bugs that aren't! | |
16 | * | |
17 | * This program is free software; you can redistribute it and/or | |
18 | * modify it under the terms of the GNU General Public License | |
19 | * as published by the Free Software Foundation; either version | |
20 | * 2 of the License, or (at your option) any later version. | |
21 | */ | |
22 | #ifndef _UDP_H | |
23 | #define _UDP_H | |
24 | ||
1da177e4 | 25 | #include <linux/list.h> |
14c85021 | 26 | #include <net/inet_sock.h> |
1da177e4 LT |
27 | #include <net/sock.h> |
28 | #include <net/snmp.h> | |
29 | #include <linux/seq_file.h> | |
30 | ||
31 | #define UDP_HTABLE_SIZE 128 | |
32 | ||
33 | /* udp.c: This needs to be shared by v4 and v6 because the lookup | |
34 | * and hashing code needs to work with different AF's yet | |
35 | * the port space is shared. | |
36 | */ | |
37 | extern struct hlist_head udp_hash[UDP_HTABLE_SIZE]; | |
38 | extern rwlock_t udp_hash_lock; | |
39 | ||
40 | extern int udp_port_rover; | |
41 | ||
42 | static inline int udp_lport_inuse(u16 num) | |
43 | { | |
44 | struct sock *sk; | |
45 | struct hlist_node *node; | |
46 | ||
47 | sk_for_each(sk, node, &udp_hash[num & (UDP_HTABLE_SIZE - 1)]) | |
48 | if (inet_sk(sk)->num == num) | |
49 | return 1; | |
50 | return 0; | |
51 | } | |
52 | ||
53 | /* Note: this must match 'valbool' in sock_setsockopt */ | |
54 | #define UDP_CSUM_NOXMIT 1 | |
55 | ||
56 | /* Used by SunRPC/xprt layer. */ | |
57 | #define UDP_CSUM_NORCV 2 | |
58 | ||
59 | /* Default, as per the RFC, is to always do csums. */ | |
60 | #define UDP_CSUM_DEFAULT 0 | |
61 | ||
62 | extern struct proto udp_prot; | |
63 | ||
14c85021 | 64 | struct sk_buff; |
1da177e4 LT |
65 | |
66 | extern void udp_err(struct sk_buff *, u32); | |
67 | ||
68 | extern int udp_sendmsg(struct kiocb *iocb, struct sock *sk, | |
69 | struct msghdr *msg, size_t len); | |
70 | ||
71 | extern int udp_rcv(struct sk_buff *skb); | |
72 | extern int udp_ioctl(struct sock *sk, int cmd, unsigned long arg); | |
73 | extern int udp_disconnect(struct sock *sk, int flags); | |
74 | extern unsigned int udp_poll(struct file *file, struct socket *sock, | |
75 | poll_table *wait); | |
76 | ||
77 | DECLARE_SNMP_STAT(struct udp_mib, udp_statistics); | |
78 | #define UDP_INC_STATS(field) SNMP_INC_STATS(udp_statistics, field) | |
79 | #define UDP_INC_STATS_BH(field) SNMP_INC_STATS_BH(udp_statistics, field) | |
80 | #define UDP_INC_STATS_USER(field) SNMP_INC_STATS_USER(udp_statistics, field) | |
81 | ||
82 | /* /proc */ | |
83 | struct udp_seq_afinfo { | |
84 | struct module *owner; | |
85 | char *name; | |
86 | sa_family_t family; | |
87 | int (*seq_show) (struct seq_file *m, void *v); | |
88 | struct file_operations *seq_fops; | |
89 | }; | |
90 | ||
91 | struct udp_iter_state { | |
92 | sa_family_t family; | |
93 | int bucket; | |
94 | struct seq_operations seq_ops; | |
95 | }; | |
96 | ||
20380731 | 97 | #ifdef CONFIG_PROC_FS |
1da177e4 LT |
98 | extern int udp_proc_register(struct udp_seq_afinfo *afinfo); |
99 | extern void udp_proc_unregister(struct udp_seq_afinfo *afinfo); | |
20380731 ACM |
100 | |
101 | extern int udp4_proc_init(void); | |
102 | extern void udp4_proc_exit(void); | |
103 | #endif | |
1da177e4 | 104 | #endif /* _UDP_H */ |