Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
include
linux
udp.h
Go to the documentation of this file.
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 protocol.
7
*
8
* Version: @(#)udp.h 1.0.2 04/28/93
9
*
10
* Author: Fred N. van Kempen, <
[email protected]
>
11
*
12
* This program is free software; you can redistribute it and/or
13
* modify it under the terms of the GNU General Public License
14
* as published by the Free Software Foundation; either version
15
* 2 of the License, or (at your option) any later version.
16
*/
17
#ifndef _LINUX_UDP_H
18
#define _LINUX_UDP_H
19
20
#include <
net/inet_sock.h
>
21
#include <
linux/skbuff.h
>
22
#include <
net/netns/hash.h
>
23
#include <
uapi/linux/udp.h
>
24
25
static
inline
struct
udphdr
*udp_hdr(
const
struct
sk_buff
*
skb
)
26
{
27
return
(
struct
udphdr
*)skb_transport_header(skb);
28
}
29
30
#define UDP_HTABLE_SIZE_MIN (CONFIG_BASE_SMALL ? 128 : 256)
31
32
static
inline
int
udp_hashfn(
struct
net
*
net
,
unsigned
num,
unsigned
mask
)
33
{
34
return
(num + net_hash_mix(net)) &
mask
;
35
}
36
37
struct
udp_sock
{
38
/* inet_sock has to be the first member */
39
struct
inet_sock
inet
;
40
#define udp_port_hash inet.sk.__sk_common.skc_u16hashes[0]
41
#define udp_portaddr_hash inet.sk.__sk_common.skc_u16hashes[1]
42
#define udp_portaddr_node inet.sk.__sk_common.skc_portaddr_node
43
int
pending
;
/* Any pending frames ? */
44
unsigned
int
corkflag
;
/* Cork is required */
45
__u16
encap_type
;
/* Is this an Encapsulation socket? */
46
/*
47
* Following member retains the information to create a UDP header
48
* when the socket is uncorked.
49
*/
50
__u16
len
;
/* total length of pending frames */
51
/*
52
* Fields specific to UDP-Lite.
53
*/
54
__u16
pcslen
;
55
__u16
pcrlen
;
56
/* indicator bits used by pcflag: */
57
#define UDPLITE_BIT 0x1
/* set by udplite proto init function */
58
#define UDPLITE_SEND_CC 0x2
/* set via udplite setsockopt */
59
#define UDPLITE_RECV_CC 0x4
/* set via udplite setsocktopt */
60
__u8
pcflag
;
/* marks socket as UDP-Lite if > 0 */
61
__u8
unused
[3];
62
/*
63
* For encapsulation sockets.
64
*/
65
int
(*
encap_rcv
)(
struct
sock
*
sk
,
struct
sk_buff
*
skb
);
66
};
67
68
static
inline
struct
udp_sock
*udp_sk(
const
struct
sock
*
sk
)
69
{
70
return
(
struct
udp_sock
*)
sk
;
71
}
72
73
#define udp_portaddr_for_each_entry(__sk, node, list) \
74
hlist_nulls_for_each_entry(__sk, node, list, __sk_common.skc_portaddr_node)
75
76
#define udp_portaddr_for_each_entry_rcu(__sk, node, list) \
77
hlist_nulls_for_each_entry_rcu(__sk, node, list, __sk_common.skc_portaddr_node)
78
79
#define IS_UDPLITE(__sk) (udp_sk(__sk)->pcflag)
80
81
#endif
/* _LINUX_UDP_H */
Generated on Thu Jan 10 2013 14:52:42 for Linux Kernel by
1.8.2