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
net
netfilter
nf_conntrack_l3proto.h
Go to the documentation of this file.
1
/*
2
* Copyright (C)2003,2004 USAGI/WIDE Project
3
*
4
* Header for use in defining a given L3 protocol for connection tracking.
5
*
6
* Author:
7
* Yasuyuki Kozakai @USAGI <
[email protected]
>
8
*
9
* Derived from include/netfilter_ipv4/ip_conntrack_protocol.h
10
*/
11
12
#ifndef _NF_CONNTRACK_L3PROTO_H
13
#define _NF_CONNTRACK_L3PROTO_H
14
#include <linux/netlink.h>
15
#include <
net/netlink.h
>
16
#include <
linux/seq_file.h
>
17
#include <
net/netfilter/nf_conntrack.h
>
18
19
struct
nf_conntrack_l3proto
{
20
/* L3 Protocol Family number. ex) PF_INET */
21
u_int16_t
l3proto
;
22
23
/* Protocol name */
24
const
char
*
name
;
25
26
/*
27
* Try to fill in the third arg: nhoff is offset of l3 proto
28
* hdr. Return true if possible.
29
*/
30
bool
(*
pkt_to_tuple
)(
const
struct
sk_buff
*
skb
,
unsigned
int
nhoff,
31
struct
nf_conntrack_tuple
*tuple);
32
33
/*
34
* Invert the per-proto part of the tuple: ie. turn xmit into reply.
35
* Some packets can't be inverted: return 0 in that case.
36
*/
37
bool
(*
invert_tuple
)(
struct
nf_conntrack_tuple
*inverse,
38
const
struct
nf_conntrack_tuple
*orig);
39
40
/* Print out the per-protocol part of the tuple. */
41
int
(*
print_tuple
)(
struct
seq_file
*
s
,
42
const
struct
nf_conntrack_tuple
*);
43
44
/*
45
* Called before tracking.
46
* *dataoff: offset of protocol header (TCP, UDP,...) in skb
47
* *protonum: protocol number
48
*/
49
int
(*
get_l4proto
)(
const
struct
sk_buff
*
skb
,
unsigned
int
nhoff,
50
unsigned
int
*dataoff,
u_int8_t
*protonum);
51
52
int
(*
tuple_to_nlattr
)(
struct
sk_buff
*
skb
,
53
const
struct
nf_conntrack_tuple
*
t
);
54
55
/*
56
* Calculate size of tuple nlattr
57
*/
58
int
(*
nlattr_tuple_size
)(
void
);
59
60
int
(*
nlattr_to_tuple
)(
struct
nlattr
*
tb
[],
61
struct
nf_conntrack_tuple
*
t
);
62
const
struct
nla_policy
*
nla_policy
;
63
64
size_t
nla_size
;
65
66
#ifdef CONFIG_SYSCTL
67
const
char
*ctl_table_path;
68
#endif
/* CONFIG_SYSCTL */
69
70
/* Init l3proto pernet data */
71
int
(*
init_net
)(
struct
net
*
net
);
72
73
/* Module (if any) which this is connected to. */
74
struct
module
*
me
;
75
};
76
77
extern
struct
nf_conntrack_l3proto
__rcu
*
nf_ct_l3protos
[
AF_MAX
];
78
79
/* Protocol registration. */
80
extern
int
nf_conntrack_l3proto_register
(
struct
net
*
net
,
81
struct
nf_conntrack_l3proto
*
proto
);
82
extern
void
nf_conntrack_l3proto_unregister
(
struct
net
*
net
,
83
struct
nf_conntrack_l3proto
*
proto
);
84
extern
struct
nf_conntrack_l3proto
*
nf_ct_l3proto_find_get
(
u_int16_t
l3proto
);
85
extern
void
nf_ct_l3proto_put
(
struct
nf_conntrack_l3proto
*
p
);
86
87
/* Existing built-in protocols */
88
extern
struct
nf_conntrack_l3proto
nf_conntrack_l3proto_generic
;
89
90
static
inline
struct
nf_conntrack_l3proto
*
91
__nf_ct_l3proto_find(
u_int16_t
l3proto
)
92
{
93
if
(
unlikely
(l3proto >=
AF_MAX
))
94
return
&
nf_conntrack_l3proto_generic
;
95
return
rcu_dereference
(nf_ct_l3protos[l3proto]);
96
}
97
98
#endif
/*_NF_CONNTRACK_L3PROTO_H*/
Generated on Thu Jan 10 2013 14:53:11 for Linux Kernel by
1.8.2