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
uapi
linux
netfilter
xt_sctp.h
Go to the documentation of this file.
1
#ifndef _XT_SCTP_H_
2
#define _XT_SCTP_H_
3
4
#include <linux/types.h>
5
6
#define XT_SCTP_SRC_PORTS 0x01
7
#define XT_SCTP_DEST_PORTS 0x02
8
#define XT_SCTP_CHUNK_TYPES 0x04
9
10
#define XT_SCTP_VALID_FLAGS 0x07
11
12
struct
xt_sctp_flag_info
{
13
__u8
chunktype
;
14
__u8
flag
;
15
__u8
flag_mask
;
16
};
17
18
#define XT_NUM_SCTP_FLAGS 4
19
20
struct
xt_sctp_info
{
21
__u16
dpts
[2];
/* Min, Max */
22
__u16
spts
[2];
/* Min, Max */
23
24
__u32
chunkmap
[256 /
sizeof
(
__u32
)];
/* Bit mask of chunks to be matched according to RFC 2960 */
25
26
#define SCTP_CHUNK_MATCH_ANY 0x01
/* Match if any of the chunk types are present */
27
#define SCTP_CHUNK_MATCH_ALL 0x02
/* Match if all of the chunk types are present */
28
#define SCTP_CHUNK_MATCH_ONLY 0x04
/* Match if these are the only chunk types present */
29
30
__u32
chunk_match_type
;
31
struct
xt_sctp_flag_info
flag_info
[
XT_NUM_SCTP_FLAGS
];
32
int
flag_count
;
33
34
__u32
flags
;
35
__u32
invflags
;
36
};
37
38
#define bytes(type) (sizeof(type) * 8)
39
40
#define SCTP_CHUNKMAP_SET(chunkmap, type) \
41
do { \
42
(chunkmap)[type / bytes(__u32)] |= \
43
1 << (type % bytes(__u32)); \
44
} while (0)
45
46
#define SCTP_CHUNKMAP_CLEAR(chunkmap, type) \
47
do { \
48
(chunkmap)[type / bytes(__u32)] &= \
49
~(1 << (type % bytes(__u32))); \
50
} while (0)
51
52
#define SCTP_CHUNKMAP_IS_SET(chunkmap, type) \
53
({ \
54
((chunkmap)[type / bytes (__u32)] & \
55
(1 << (type % bytes (__u32)))) ? 1: 0; \
56
})
57
58
#define SCTP_CHUNKMAP_RESET(chunkmap) \
59
memset((chunkmap), 0, sizeof(chunkmap))
60
61
#define SCTP_CHUNKMAP_SET_ALL(chunkmap) \
62
memset((chunkmap), ~0U, sizeof(chunkmap))
63
64
#define SCTP_CHUNKMAP_COPY(destmap, srcmap) \
65
memcpy((destmap), (srcmap), sizeof(srcmap))
66
67
#define SCTP_CHUNKMAP_IS_CLEAR(chunkmap) \
68
__sctp_chunkmap_is_clear((chunkmap), ARRAY_SIZE(chunkmap))
69
static
inline
bool
70
__sctp_chunkmap_is_clear(
const
__u32
*chunkmap,
unsigned
int
n
)
71
{
72
unsigned
int
i
;
73
for
(i = 0; i <
n
; ++
i
)
74
if
(chunkmap[i])
75
return
false
;
76
return
true
;
77
}
78
79
#define SCTP_CHUNKMAP_IS_ALL_SET(chunkmap) \
80
__sctp_chunkmap_is_all_set((chunkmap), ARRAY_SIZE(chunkmap))
81
static
inline
bool
82
__sctp_chunkmap_is_all_set(
const
__u32
*chunkmap,
unsigned
int
n
)
83
{
84
unsigned
int
i
;
85
for
(i = 0; i <
n
; ++
i
)
86
if
(chunkmap[i] != ~0
U
)
87
return
false
;
88
return
true
;
89
}
90
91
#endif
/* _XT_SCTP_H_ */
92
Generated on Thu Jan 10 2013 14:53:51 for Linux Kernel by
1.8.2