OpenCores
URL https://opencores.org/ocsvn/hf-risc/hf-risc/trunk

Subversion Repositories hf-risc

[/] [hf-risc/] [trunk/] [tools/] [riscv-gnu-toolchain-master/] [linux-headers/] [include/] [linux/] [netfilter/] [nf_tables.h] - Blame information for rev 13

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 13 serginhofr
#ifndef _LINUX_NF_TABLES_H
2
#define _LINUX_NF_TABLES_H
3
 
4
#define NFT_CHAIN_MAXNAMELEN 32
5
 
6
enum nft_registers {
7
        NFT_REG_VERDICT,
8
        NFT_REG_1,
9
        NFT_REG_2,
10
        NFT_REG_3,
11
        NFT_REG_4,
12
        __NFT_REG_MAX
13
};
14
#define NFT_REG_MAX     (__NFT_REG_MAX - 1)
15
 
16
/**
17
 * enum nft_verdicts - nf_tables internal verdicts
18
 *
19
 * @NFT_CONTINUE: continue evaluation of the current rule
20
 * @NFT_BREAK: terminate evaluation of the current rule
21
 * @NFT_JUMP: push the current chain on the jump stack and jump to a chain
22
 * @NFT_GOTO: jump to a chain without pushing the current chain on the jump stack
23
 * @NFT_RETURN: return to the topmost chain on the jump stack
24
 *
25
 * The nf_tables verdicts share their numeric space with the netfilter verdicts.
26
 */
27
enum nft_verdicts {
28
        NFT_CONTINUE    = -1,
29
        NFT_BREAK       = -2,
30
        NFT_JUMP        = -3,
31
        NFT_GOTO        = -4,
32
        NFT_RETURN      = -5,
33
};
34
 
35
/**
36
 * enum nf_tables_msg_types - nf_tables netlink message types
37
 *
38
 * @NFT_MSG_NEWTABLE: create a new table (enum nft_table_attributes)
39
 * @NFT_MSG_GETTABLE: get a table (enum nft_table_attributes)
40
 * @NFT_MSG_DELTABLE: delete a table (enum nft_table_attributes)
41
 * @NFT_MSG_NEWCHAIN: create a new chain (enum nft_chain_attributes)
42
 * @NFT_MSG_GETCHAIN: get a chain (enum nft_chain_attributes)
43
 * @NFT_MSG_DELCHAIN: delete a chain (enum nft_chain_attributes)
44
 * @NFT_MSG_NEWRULE: create a new rule (enum nft_rule_attributes)
45
 * @NFT_MSG_GETRULE: get a rule (enum nft_rule_attributes)
46
 * @NFT_MSG_DELRULE: delete a rule (enum nft_rule_attributes)
47
 * @NFT_MSG_NEWSET: create a new set (enum nft_set_attributes)
48
 * @NFT_MSG_GETSET: get a set (enum nft_set_attributes)
49
 * @NFT_MSG_DELSET: delete a set (enum nft_set_attributes)
50
 * @NFT_MSG_NEWSETELEM: create a new set element (enum nft_set_elem_attributes)
51
 * @NFT_MSG_GETSETELEM: get a set element (enum nft_set_elem_attributes)
52
 * @NFT_MSG_DELSETELEM: delete a set element (enum nft_set_elem_attributes)
53
 */
54
enum nf_tables_msg_types {
55
        NFT_MSG_NEWTABLE,
56
        NFT_MSG_GETTABLE,
57
        NFT_MSG_DELTABLE,
58
        NFT_MSG_NEWCHAIN,
59
        NFT_MSG_GETCHAIN,
60
        NFT_MSG_DELCHAIN,
61
        NFT_MSG_NEWRULE,
62
        NFT_MSG_GETRULE,
63
        NFT_MSG_DELRULE,
64
        NFT_MSG_NEWSET,
65
        NFT_MSG_GETSET,
66
        NFT_MSG_DELSET,
67
        NFT_MSG_NEWSETELEM,
68
        NFT_MSG_GETSETELEM,
69
        NFT_MSG_DELSETELEM,
70
        NFT_MSG_MAX,
71
};
72
 
73
/**
74
 * enum nft_list_attributes - nf_tables generic list netlink attributes
75
 *
76
 * @NFTA_LIST_ELEM: list element (NLA_NESTED)
77
 */
78
enum nft_list_attributes {
79
        NFTA_LIST_UNPEC,
80
        NFTA_LIST_ELEM,
81
        __NFTA_LIST_MAX
82
};
83
#define NFTA_LIST_MAX           (__NFTA_LIST_MAX - 1)
84
 
85
/**
86
 * enum nft_hook_attributes - nf_tables netfilter hook netlink attributes
87
 *
88
 * @NFTA_HOOK_HOOKNUM: netfilter hook number (NLA_U32)
89
 * @NFTA_HOOK_PRIORITY: netfilter hook priority (NLA_U32)
90
 */
91
enum nft_hook_attributes {
92
        NFTA_HOOK_UNSPEC,
93
        NFTA_HOOK_HOOKNUM,
94
        NFTA_HOOK_PRIORITY,
95
        __NFTA_HOOK_MAX
96
};
97
#define NFTA_HOOK_MAX           (__NFTA_HOOK_MAX - 1)
98
 
99
/**
100
 * enum nft_table_flags - nf_tables table flags
101
 *
102
 * @NFT_TABLE_F_DORMANT: this table is not active
103
 */
104
enum nft_table_flags {
105
        NFT_TABLE_F_DORMANT     = 0x1,
106
};
107
 
108
/**
109
 * enum nft_table_attributes - nf_tables table netlink attributes
110
 *
111
 * @NFTA_TABLE_NAME: name of the table (NLA_STRING)
112
 * @NFTA_TABLE_FLAGS: bitmask of enum nft_table_flags (NLA_U32)
113
 * @NFTA_TABLE_USE: number of chains in this table (NLA_U32)
114
 */
115
enum nft_table_attributes {
116
        NFTA_TABLE_UNSPEC,
117
        NFTA_TABLE_NAME,
118
        NFTA_TABLE_FLAGS,
119
        NFTA_TABLE_USE,
120
        __NFTA_TABLE_MAX
121
};
122
#define NFTA_TABLE_MAX          (__NFTA_TABLE_MAX - 1)
123
 
124
/**
125
 * enum nft_chain_attributes - nf_tables chain netlink attributes
126
 *
127
 * @NFTA_CHAIN_TABLE: name of the table containing the chain (NLA_STRING)
128
 * @NFTA_CHAIN_HANDLE: numeric handle of the chain (NLA_U64)
129
 * @NFTA_CHAIN_NAME: name of the chain (NLA_STRING)
130
 * @NFTA_CHAIN_HOOK: hook specification for basechains (NLA_NESTED: nft_hook_attributes)
131
 * @NFTA_CHAIN_POLICY: numeric policy of the chain (NLA_U32)
132
 * @NFTA_CHAIN_USE: number of references to this chain (NLA_U32)
133
 * @NFTA_CHAIN_TYPE: type name of the string (NLA_NUL_STRING)
134
 * @NFTA_CHAIN_COUNTERS: counter specification of the chain (NLA_NESTED: nft_counter_attributes)
135
 */
136
enum nft_chain_attributes {
137
        NFTA_CHAIN_UNSPEC,
138
        NFTA_CHAIN_TABLE,
139
        NFTA_CHAIN_HANDLE,
140
        NFTA_CHAIN_NAME,
141
        NFTA_CHAIN_HOOK,
142
        NFTA_CHAIN_POLICY,
143
        NFTA_CHAIN_USE,
144
        NFTA_CHAIN_TYPE,
145
        NFTA_CHAIN_COUNTERS,
146
        __NFTA_CHAIN_MAX
147
};
148
#define NFTA_CHAIN_MAX          (__NFTA_CHAIN_MAX - 1)
149
 
150
/**
151
 * enum nft_rule_attributes - nf_tables rule netlink attributes
152
 *
153
 * @NFTA_RULE_TABLE: name of the table containing the rule (NLA_STRING)
154
 * @NFTA_RULE_CHAIN: name of the chain containing the rule (NLA_STRING)
155
 * @NFTA_RULE_HANDLE: numeric handle of the rule (NLA_U64)
156
 * @NFTA_RULE_EXPRESSIONS: list of expressions (NLA_NESTED: nft_expr_attributes)
157
 * @NFTA_RULE_COMPAT: compatibility specifications of the rule (NLA_NESTED: nft_rule_compat_attributes)
158
 * @NFTA_RULE_POSITION: numeric handle of the previous rule (NLA_U64)
159
 */
160
enum nft_rule_attributes {
161
        NFTA_RULE_UNSPEC,
162
        NFTA_RULE_TABLE,
163
        NFTA_RULE_CHAIN,
164
        NFTA_RULE_HANDLE,
165
        NFTA_RULE_EXPRESSIONS,
166
        NFTA_RULE_COMPAT,
167
        NFTA_RULE_POSITION,
168
        __NFTA_RULE_MAX
169
};
170
#define NFTA_RULE_MAX           (__NFTA_RULE_MAX - 1)
171
 
172
/**
173
 * enum nft_rule_compat_flags - nf_tables rule compat flags
174
 *
175
 * @NFT_RULE_COMPAT_F_INV: invert the check result
176
 */
177
enum nft_rule_compat_flags {
178
        NFT_RULE_COMPAT_F_INV   = (1 << 1),
179
        NFT_RULE_COMPAT_F_MASK  = NFT_RULE_COMPAT_F_INV,
180
};
181
 
182
/**
183
 * enum nft_rule_compat_attributes - nf_tables rule compat attributes
184
 *
185
 * @NFTA_RULE_COMPAT_PROTO: numerice value of handled protocol (NLA_U32)
186
 * @NFTA_RULE_COMPAT_FLAGS: bitmask of enum nft_rule_compat_flags (NLA_U32)
187
 */
188
enum nft_rule_compat_attributes {
189
        NFTA_RULE_COMPAT_UNSPEC,
190
        NFTA_RULE_COMPAT_PROTO,
191
        NFTA_RULE_COMPAT_FLAGS,
192
        __NFTA_RULE_COMPAT_MAX
193
};
194
#define NFTA_RULE_COMPAT_MAX    (__NFTA_RULE_COMPAT_MAX - 1)
195
 
196
/**
197
 * enum nft_set_flags - nf_tables set flags
198
 *
199
 * @NFT_SET_ANONYMOUS: name allocation, automatic cleanup on unlink
200
 * @NFT_SET_CONSTANT: set contents may not change while bound
201
 * @NFT_SET_INTERVAL: set contains intervals
202
 * @NFT_SET_MAP: set is used as a dictionary
203
 */
204
enum nft_set_flags {
205
        NFT_SET_ANONYMOUS               = 0x1,
206
        NFT_SET_CONSTANT                = 0x2,
207
        NFT_SET_INTERVAL                = 0x4,
208
        NFT_SET_MAP                     = 0x8,
209
};
210
 
211
/**
212
 * enum nft_set_attributes - nf_tables set netlink attributes
213
 *
214
 * @NFTA_SET_TABLE: table name (NLA_STRING)
215
 * @NFTA_SET_NAME: set name (NLA_STRING)
216
 * @NFTA_SET_FLAGS: bitmask of enum nft_set_flags (NLA_U32)
217
 * @NFTA_SET_KEY_TYPE: key data type, informational purpose only (NLA_U32)
218
 * @NFTA_SET_KEY_LEN: key data length (NLA_U32)
219
 * @NFTA_SET_DATA_TYPE: mapping data type (NLA_U32)
220
 * @NFTA_SET_DATA_LEN: mapping data length (NLA_U32)
221
 */
222
enum nft_set_attributes {
223
        NFTA_SET_UNSPEC,
224
        NFTA_SET_TABLE,
225
        NFTA_SET_NAME,
226
        NFTA_SET_FLAGS,
227
        NFTA_SET_KEY_TYPE,
228
        NFTA_SET_KEY_LEN,
229
        NFTA_SET_DATA_TYPE,
230
        NFTA_SET_DATA_LEN,
231
        __NFTA_SET_MAX
232
};
233
#define NFTA_SET_MAX            (__NFTA_SET_MAX - 1)
234
 
235
/**
236
 * enum nft_set_elem_flags - nf_tables set element flags
237
 *
238
 * @NFT_SET_ELEM_INTERVAL_END: element ends the previous interval
239
 */
240
enum nft_set_elem_flags {
241
        NFT_SET_ELEM_INTERVAL_END       = 0x1,
242
};
243
 
244
/**
245
 * enum nft_set_elem_attributes - nf_tables set element netlink attributes
246
 *
247
 * @NFTA_SET_ELEM_KEY: key value (NLA_NESTED: nft_data)
248
 * @NFTA_SET_ELEM_DATA: data value of mapping (NLA_NESTED: nft_data_attributes)
249
 * @NFTA_SET_ELEM_FLAGS: bitmask of nft_set_elem_flags (NLA_U32)
250
 */
251
enum nft_set_elem_attributes {
252
        NFTA_SET_ELEM_UNSPEC,
253
        NFTA_SET_ELEM_KEY,
254
        NFTA_SET_ELEM_DATA,
255
        NFTA_SET_ELEM_FLAGS,
256
        __NFTA_SET_ELEM_MAX
257
};
258
#define NFTA_SET_ELEM_MAX       (__NFTA_SET_ELEM_MAX - 1)
259
 
260
/**
261
 * enum nft_set_elem_list_attributes - nf_tables set element list netlink attributes
262
 *
263
 * @NFTA_SET_ELEM_LIST_TABLE: table of the set to be changed (NLA_STRING)
264
 * @NFTA_SET_ELEM_LIST_SET: name of the set to be changed (NLA_STRING)
265
 * @NFTA_SET_ELEM_LIST_ELEMENTS: list of set elements (NLA_NESTED: nft_set_elem_attributes)
266
 */
267
enum nft_set_elem_list_attributes {
268
        NFTA_SET_ELEM_LIST_UNSPEC,
269
        NFTA_SET_ELEM_LIST_TABLE,
270
        NFTA_SET_ELEM_LIST_SET,
271
        NFTA_SET_ELEM_LIST_ELEMENTS,
272
        __NFTA_SET_ELEM_LIST_MAX
273
};
274
#define NFTA_SET_ELEM_LIST_MAX  (__NFTA_SET_ELEM_LIST_MAX - 1)
275
 
276
/**
277
 * enum nft_data_types - nf_tables data types
278
 *
279
 * @NFT_DATA_VALUE: generic data
280
 * @NFT_DATA_VERDICT: netfilter verdict
281
 *
282
 * The type of data is usually determined by the kernel directly and is not
283
 * explicitly specified by userspace. The only difference are sets, where
284
 * userspace specifies the key and mapping data types.
285
 *
286
 * The values 0xffffff00-0xffffffff are reserved for internally used types.
287
 * The remaining range can be freely used by userspace to encode types, all
288
 * values are equivalent to NFT_DATA_VALUE.
289
 */
290
enum nft_data_types {
291
        NFT_DATA_VALUE,
292
        NFT_DATA_VERDICT        = 0xffffff00U,
293
};
294
 
295
#define NFT_DATA_RESERVED_MASK  0xffffff00U
296
 
297
/**
298
 * enum nft_data_attributes - nf_tables data netlink attributes
299
 *
300
 * @NFTA_DATA_VALUE: generic data (NLA_BINARY)
301
 * @NFTA_DATA_VERDICT: nf_tables verdict (NLA_NESTED: nft_verdict_attributes)
302
 */
303
enum nft_data_attributes {
304
        NFTA_DATA_UNSPEC,
305
        NFTA_DATA_VALUE,
306
        NFTA_DATA_VERDICT,
307
        __NFTA_DATA_MAX
308
};
309
#define NFTA_DATA_MAX           (__NFTA_DATA_MAX - 1)
310
 
311
/**
312
 * enum nft_verdict_attributes - nf_tables verdict netlink attributes
313
 *
314
 * @NFTA_VERDICT_CODE: nf_tables verdict (NLA_U32: enum nft_verdicts)
315
 * @NFTA_VERDICT_CHAIN: jump target chain name (NLA_STRING)
316
 */
317
enum nft_verdict_attributes {
318
        NFTA_VERDICT_UNSPEC,
319
        NFTA_VERDICT_CODE,
320
        NFTA_VERDICT_CHAIN,
321
        __NFTA_VERDICT_MAX
322
};
323
#define NFTA_VERDICT_MAX        (__NFTA_VERDICT_MAX - 1)
324
 
325
/**
326
 * enum nft_expr_attributes - nf_tables expression netlink attributes
327
 *
328
 * @NFTA_EXPR_NAME: name of the expression type (NLA_STRING)
329
 * @NFTA_EXPR_DATA: type specific data (NLA_NESTED)
330
 */
331
enum nft_expr_attributes {
332
        NFTA_EXPR_UNSPEC,
333
        NFTA_EXPR_NAME,
334
        NFTA_EXPR_DATA,
335
        __NFTA_EXPR_MAX
336
};
337
#define NFTA_EXPR_MAX           (__NFTA_EXPR_MAX - 1)
338
 
339
/**
340
 * enum nft_immediate_attributes - nf_tables immediate expression netlink attributes
341
 *
342
 * @NFTA_IMMEDIATE_DREG: destination register to load data into (NLA_U32)
343
 * @NFTA_IMMEDIATE_DATA: data to load (NLA_NESTED: nft_data_attributes)
344
 */
345
enum nft_immediate_attributes {
346
        NFTA_IMMEDIATE_UNSPEC,
347
        NFTA_IMMEDIATE_DREG,
348
        NFTA_IMMEDIATE_DATA,
349
        __NFTA_IMMEDIATE_MAX
350
};
351
#define NFTA_IMMEDIATE_MAX      (__NFTA_IMMEDIATE_MAX - 1)
352
 
353
/**
354
 * enum nft_bitwise_attributes - nf_tables bitwise expression netlink attributes
355
 *
356
 * @NFTA_BITWISE_SREG: source register (NLA_U32: nft_registers)
357
 * @NFTA_BITWISE_DREG: destination register (NLA_U32: nft_registers)
358
 * @NFTA_BITWISE_LEN: length of operands (NLA_U32)
359
 * @NFTA_BITWISE_MASK: mask value (NLA_NESTED: nft_data_attributes)
360
 * @NFTA_BITWISE_XOR: xor value (NLA_NESTED: nft_data_attributes)
361
 *
362
 * The bitwise expression performs the following operation:
363
 *
364
 * dreg = (sreg & mask) ^ xor
365
 *
366
 * which allow to express all bitwise operations:
367
 *
368
 *              mask    xor
369
 * NOT:         1       1
370
 * OR:          0        x
371
 * XOR:         1       x
372
 * AND:         x       0
373
 */
374
enum nft_bitwise_attributes {
375
        NFTA_BITWISE_UNSPEC,
376
        NFTA_BITWISE_SREG,
377
        NFTA_BITWISE_DREG,
378
        NFTA_BITWISE_LEN,
379
        NFTA_BITWISE_MASK,
380
        NFTA_BITWISE_XOR,
381
        __NFTA_BITWISE_MAX
382
};
383
#define NFTA_BITWISE_MAX        (__NFTA_BITWISE_MAX - 1)
384
 
385
/**
386
 * enum nft_byteorder_ops - nf_tables byteorder operators
387
 *
388
 * @NFT_BYTEORDER_NTOH: network to host operator
389
 * @NFT_BYTEORDER_HTON: host to network opertaor
390
 */
391
enum nft_byteorder_ops {
392
        NFT_BYTEORDER_NTOH,
393
        NFT_BYTEORDER_HTON,
394
};
395
 
396
/**
397
 * enum nft_byteorder_attributes - nf_tables byteorder expression netlink attributes
398
 *
399
 * @NFTA_BYTEORDER_SREG: source register (NLA_U32: nft_registers)
400
 * @NFTA_BYTEORDER_DREG: destination register (NLA_U32: nft_registers)
401
 * @NFTA_BYTEORDER_OP: operator (NLA_U32: enum nft_byteorder_ops)
402
 * @NFTA_BYTEORDER_LEN: length of the data (NLA_U32)
403
 * @NFTA_BYTEORDER_SIZE: data size in bytes (NLA_U32: 2 or 4)
404
 */
405
enum nft_byteorder_attributes {
406
        NFTA_BYTEORDER_UNSPEC,
407
        NFTA_BYTEORDER_SREG,
408
        NFTA_BYTEORDER_DREG,
409
        NFTA_BYTEORDER_OP,
410
        NFTA_BYTEORDER_LEN,
411
        NFTA_BYTEORDER_SIZE,
412
        __NFTA_BYTEORDER_MAX
413
};
414
#define NFTA_BYTEORDER_MAX      (__NFTA_BYTEORDER_MAX - 1)
415
 
416
/**
417
 * enum nft_cmp_ops - nf_tables relational operator
418
 *
419
 * @NFT_CMP_EQ: equal
420
 * @NFT_CMP_NEQ: not equal
421
 * @NFT_CMP_LT: less than
422
 * @NFT_CMP_LTE: less than or equal to
423
 * @NFT_CMP_GT: greater than
424
 * @NFT_CMP_GTE: greater than or equal to
425
 */
426
enum nft_cmp_ops {
427
        NFT_CMP_EQ,
428
        NFT_CMP_NEQ,
429
        NFT_CMP_LT,
430
        NFT_CMP_LTE,
431
        NFT_CMP_GT,
432
        NFT_CMP_GTE,
433
};
434
 
435
/**
436
 * enum nft_cmp_attributes - nf_tables cmp expression netlink attributes
437
 *
438
 * @NFTA_CMP_SREG: source register of data to compare (NLA_U32: nft_registers)
439
 * @NFTA_CMP_OP: cmp operation (NLA_U32: nft_cmp_ops)
440
 * @NFTA_CMP_DATA: data to compare against (NLA_NESTED: nft_data_attributes)
441
 */
442
enum nft_cmp_attributes {
443
        NFTA_CMP_UNSPEC,
444
        NFTA_CMP_SREG,
445
        NFTA_CMP_OP,
446
        NFTA_CMP_DATA,
447
        __NFTA_CMP_MAX
448
};
449
#define NFTA_CMP_MAX            (__NFTA_CMP_MAX - 1)
450
 
451
/**
452
 * enum nft_lookup_attributes - nf_tables set lookup expression netlink attributes
453
 *
454
 * @NFTA_LOOKUP_SET: name of the set where to look for (NLA_STRING)
455
 * @NFTA_LOOKUP_SREG: source register of the data to look for (NLA_U32: nft_registers)
456
 * @NFTA_LOOKUP_DREG: destination register (NLA_U32: nft_registers)
457
 */
458
enum nft_lookup_attributes {
459
        NFTA_LOOKUP_UNSPEC,
460
        NFTA_LOOKUP_SET,
461
        NFTA_LOOKUP_SREG,
462
        NFTA_LOOKUP_DREG,
463
        __NFTA_LOOKUP_MAX
464
};
465
#define NFTA_LOOKUP_MAX         (__NFTA_LOOKUP_MAX - 1)
466
 
467
/**
468
 * enum nft_payload_bases - nf_tables payload expression offset bases
469
 *
470
 * @NFT_PAYLOAD_LL_HEADER: link layer header
471
 * @NFT_PAYLOAD_NETWORK_HEADER: network header
472
 * @NFT_PAYLOAD_TRANSPORT_HEADER: transport header
473
 */
474
enum nft_payload_bases {
475
        NFT_PAYLOAD_LL_HEADER,
476
        NFT_PAYLOAD_NETWORK_HEADER,
477
        NFT_PAYLOAD_TRANSPORT_HEADER,
478
};
479
 
480
/**
481
 * enum nft_payload_attributes - nf_tables payload expression netlink attributes
482
 *
483
 * @NFTA_PAYLOAD_DREG: destination register to load data into (NLA_U32: nft_registers)
484
 * @NFTA_PAYLOAD_BASE: payload base (NLA_U32: nft_payload_bases)
485
 * @NFTA_PAYLOAD_OFFSET: payload offset relative to base (NLA_U32)
486
 * @NFTA_PAYLOAD_LEN: payload length (NLA_U32)
487
 */
488
enum nft_payload_attributes {
489
        NFTA_PAYLOAD_UNSPEC,
490
        NFTA_PAYLOAD_DREG,
491
        NFTA_PAYLOAD_BASE,
492
        NFTA_PAYLOAD_OFFSET,
493
        NFTA_PAYLOAD_LEN,
494
        __NFTA_PAYLOAD_MAX
495
};
496
#define NFTA_PAYLOAD_MAX        (__NFTA_PAYLOAD_MAX - 1)
497
 
498
/**
499
 * enum nft_exthdr_attributes - nf_tables IPv6 extension header expression netlink attributes
500
 *
501
 * @NFTA_EXTHDR_DREG: destination register (NLA_U32: nft_registers)
502
 * @NFTA_EXTHDR_TYPE: extension header type (NLA_U8)
503
 * @NFTA_EXTHDR_OFFSET: extension header offset (NLA_U32)
504
 * @NFTA_EXTHDR_LEN: extension header length (NLA_U32)
505
 */
506
enum nft_exthdr_attributes {
507
        NFTA_EXTHDR_UNSPEC,
508
        NFTA_EXTHDR_DREG,
509
        NFTA_EXTHDR_TYPE,
510
        NFTA_EXTHDR_OFFSET,
511
        NFTA_EXTHDR_LEN,
512
        __NFTA_EXTHDR_MAX
513
};
514
#define NFTA_EXTHDR_MAX         (__NFTA_EXTHDR_MAX - 1)
515
 
516
/**
517
 * enum nft_meta_keys - nf_tables meta expression keys
518
 *
519
 * @NFT_META_LEN: packet length (skb->len)
520
 * @NFT_META_PROTOCOL: packet ethertype protocol (skb->protocol), invalid in OUTPUT
521
 * @NFT_META_PRIORITY: packet priority (skb->priority)
522
 * @NFT_META_MARK: packet mark (skb->mark)
523
 * @NFT_META_IIF: packet input interface index (dev->ifindex)
524
 * @NFT_META_OIF: packet output interface index (dev->ifindex)
525
 * @NFT_META_IIFNAME: packet input interface name (dev->name)
526
 * @NFT_META_OIFNAME: packet output interface name (dev->name)
527
 * @NFT_META_IIFTYPE: packet input interface type (dev->type)
528
 * @NFT_META_OIFTYPE: packet output interface type (dev->type)
529
 * @NFT_META_SKUID: originating socket UID (fsuid)
530
 * @NFT_META_SKGID: originating socket GID (fsgid)
531
 * @NFT_META_NFTRACE: packet nftrace bit
532
 * @NFT_META_RTCLASSID: realm value of packet's route (skb->dst->tclassid)
533
 * @NFT_META_SECMARK: packet secmark (skb->secmark)
534
 * @NFT_META_NFPROTO: netfilter protocol
535
 * @NFT_META_L4PROTO: layer 4 protocol number
536
 */
537
enum nft_meta_keys {
538
        NFT_META_LEN,
539
        NFT_META_PROTOCOL,
540
        NFT_META_PRIORITY,
541
        NFT_META_MARK,
542
        NFT_META_IIF,
543
        NFT_META_OIF,
544
        NFT_META_IIFNAME,
545
        NFT_META_OIFNAME,
546
        NFT_META_IIFTYPE,
547
        NFT_META_OIFTYPE,
548
        NFT_META_SKUID,
549
        NFT_META_SKGID,
550
        NFT_META_NFTRACE,
551
        NFT_META_RTCLASSID,
552
        NFT_META_SECMARK,
553
        NFT_META_NFPROTO,
554
        NFT_META_L4PROTO,
555
};
556
 
557
/**
558
 * enum nft_meta_attributes - nf_tables meta expression netlink attributes
559
 *
560
 * @NFTA_META_DREG: destination register (NLA_U32)
561
 * @NFTA_META_KEY: meta data item to load (NLA_U32: nft_meta_keys)
562
 * @NFTA_META_SREG: source register (NLA_U32)
563
 */
564
enum nft_meta_attributes {
565
        NFTA_META_UNSPEC,
566
        NFTA_META_DREG,
567
        NFTA_META_KEY,
568
        NFTA_META_SREG,
569
        __NFTA_META_MAX
570
};
571
#define NFTA_META_MAX           (__NFTA_META_MAX - 1)
572
 
573
/**
574
 * enum nft_ct_keys - nf_tables ct expression keys
575
 *
576
 * @NFT_CT_STATE: conntrack state (bitmask of enum ip_conntrack_info)
577
 * @NFT_CT_DIRECTION: conntrack direction (enum ip_conntrack_dir)
578
 * @NFT_CT_STATUS: conntrack status (bitmask of enum ip_conntrack_status)
579
 * @NFT_CT_MARK: conntrack mark value
580
 * @NFT_CT_SECMARK: conntrack secmark value
581
 * @NFT_CT_EXPIRATION: relative conntrack expiration time in ms
582
 * @NFT_CT_HELPER: connection tracking helper assigned to conntrack
583
 * @NFT_CT_L3PROTOCOL: conntrack layer 3 protocol
584
 * @NFT_CT_SRC: conntrack layer 3 protocol source (IPv4/IPv6 address)
585
 * @NFT_CT_DST: conntrack layer 3 protocol destination (IPv4/IPv6 address)
586
 * @NFT_CT_PROTOCOL: conntrack layer 4 protocol
587
 * @NFT_CT_PROTO_SRC: conntrack layer 4 protocol source
588
 * @NFT_CT_PROTO_DST: conntrack layer 4 protocol destination
589
 */
590
enum nft_ct_keys {
591
        NFT_CT_STATE,
592
        NFT_CT_DIRECTION,
593
        NFT_CT_STATUS,
594
        NFT_CT_MARK,
595
        NFT_CT_SECMARK,
596
        NFT_CT_EXPIRATION,
597
        NFT_CT_HELPER,
598
        NFT_CT_L3PROTOCOL,
599
        NFT_CT_SRC,
600
        NFT_CT_DST,
601
        NFT_CT_PROTOCOL,
602
        NFT_CT_PROTO_SRC,
603
        NFT_CT_PROTO_DST,
604
};
605
 
606
/**
607
 * enum nft_ct_attributes - nf_tables ct expression netlink attributes
608
 *
609
 * @NFTA_CT_DREG: destination register (NLA_U32)
610
 * @NFTA_CT_KEY: conntrack data item to load (NLA_U32: nft_ct_keys)
611
 * @NFTA_CT_DIRECTION: direction in case of directional keys (NLA_U8)
612
 * @NFTA_CT_SREG: source register (NLA_U32)
613
 */
614
enum nft_ct_attributes {
615
        NFTA_CT_UNSPEC,
616
        NFTA_CT_DREG,
617
        NFTA_CT_KEY,
618
        NFTA_CT_DIRECTION,
619
        NFTA_CT_SREG,
620
        __NFTA_CT_MAX
621
};
622
#define NFTA_CT_MAX             (__NFTA_CT_MAX - 1)
623
 
624
/**
625
 * enum nft_limit_attributes - nf_tables limit expression netlink attributes
626
 *
627
 * @NFTA_LIMIT_RATE: refill rate (NLA_U64)
628
 * @NFTA_LIMIT_UNIT: refill unit (NLA_U64)
629
 */
630
enum nft_limit_attributes {
631
        NFTA_LIMIT_UNSPEC,
632
        NFTA_LIMIT_RATE,
633
        NFTA_LIMIT_UNIT,
634
        __NFTA_LIMIT_MAX
635
};
636
#define NFTA_LIMIT_MAX          (__NFTA_LIMIT_MAX - 1)
637
 
638
/**
639
 * enum nft_counter_attributes - nf_tables counter expression netlink attributes
640
 *
641
 * @NFTA_COUNTER_BYTES: number of bytes (NLA_U64)
642
 * @NFTA_COUNTER_PACKETS: number of packets (NLA_U64)
643
 */
644
enum nft_counter_attributes {
645
        NFTA_COUNTER_UNSPEC,
646
        NFTA_COUNTER_BYTES,
647
        NFTA_COUNTER_PACKETS,
648
        __NFTA_COUNTER_MAX
649
};
650
#define NFTA_COUNTER_MAX        (__NFTA_COUNTER_MAX - 1)
651
 
652
/**
653
 * enum nft_log_attributes - nf_tables log expression netlink attributes
654
 *
655
 * @NFTA_LOG_GROUP: netlink group to send messages to (NLA_U32)
656
 * @NFTA_LOG_PREFIX: prefix to prepend to log messages (NLA_STRING)
657
 * @NFTA_LOG_SNAPLEN: length of payload to include in netlink message (NLA_U32)
658
 * @NFTA_LOG_QTHRESHOLD: queue threshold (NLA_U32)
659
 */
660
enum nft_log_attributes {
661
        NFTA_LOG_UNSPEC,
662
        NFTA_LOG_GROUP,
663
        NFTA_LOG_PREFIX,
664
        NFTA_LOG_SNAPLEN,
665
        NFTA_LOG_QTHRESHOLD,
666
        __NFTA_LOG_MAX
667
};
668
#define NFTA_LOG_MAX            (__NFTA_LOG_MAX - 1)
669
 
670
/**
671
 * enum nft_queue_attributes - nf_tables queue expression netlink attributes
672
 *
673
 * @NFTA_QUEUE_NUM: netlink queue to send messages to (NLA_U16)
674
 * @NFTA_QUEUE_TOTAL: number of queues to load balance packets on (NLA_U16)
675
 * @NFTA_QUEUE_FLAGS: various flags (NLA_U16)
676
 */
677
enum nft_queue_attributes {
678
        NFTA_QUEUE_UNSPEC,
679
        NFTA_QUEUE_NUM,
680
        NFTA_QUEUE_TOTAL,
681
        NFTA_QUEUE_FLAGS,
682
        __NFTA_QUEUE_MAX
683
};
684
#define NFTA_QUEUE_MAX          (__NFTA_QUEUE_MAX - 1)
685
 
686
#define NFT_QUEUE_FLAG_BYPASS           0x01 /* for compatibility with v2 */
687
#define NFT_QUEUE_FLAG_CPU_FANOUT       0x02 /* use current CPU (no hashing) */
688
#define NFT_QUEUE_FLAG_MASK             0x03
689
 
690
/**
691
 * enum nft_reject_types - nf_tables reject expression reject types
692
 *
693
 * @NFT_REJECT_ICMP_UNREACH: reject using ICMP unreachable
694
 * @NFT_REJECT_TCP_RST: reject using TCP RST
695
 */
696
enum nft_reject_types {
697
        NFT_REJECT_ICMP_UNREACH,
698
        NFT_REJECT_TCP_RST,
699
};
700
 
701
/**
702
 * enum nft_reject_attributes - nf_tables reject expression netlink attributes
703
 *
704
 * @NFTA_REJECT_TYPE: packet type to use (NLA_U32: nft_reject_types)
705
 * @NFTA_REJECT_ICMP_CODE: ICMP code to use (NLA_U8)
706
 */
707
enum nft_reject_attributes {
708
        NFTA_REJECT_UNSPEC,
709
        NFTA_REJECT_TYPE,
710
        NFTA_REJECT_ICMP_CODE,
711
        __NFTA_REJECT_MAX
712
};
713
#define NFTA_REJECT_MAX         (__NFTA_REJECT_MAX - 1)
714
 
715
/**
716
 * enum nft_nat_types - nf_tables nat expression NAT types
717
 *
718
 * @NFT_NAT_SNAT: source NAT
719
 * @NFT_NAT_DNAT: destination NAT
720
 */
721
enum nft_nat_types {
722
        NFT_NAT_SNAT,
723
        NFT_NAT_DNAT,
724
};
725
 
726
/**
727
 * enum nft_nat_attributes - nf_tables nat expression netlink attributes
728
 *
729
 * @NFTA_NAT_TYPE: NAT type (NLA_U32: nft_nat_types)
730
 * @NFTA_NAT_FAMILY: NAT family (NLA_U32)
731
 * @NFTA_NAT_REG_ADDR_MIN: source register of address range start (NLA_U32: nft_registers)
732
 * @NFTA_NAT_REG_ADDR_MAX: source register of address range end (NLA_U32: nft_registers)
733
 * @NFTA_NAT_REG_PROTO_MIN: source register of proto range start (NLA_U32: nft_registers)
734
 * @NFTA_NAT_REG_PROTO_MAX: source register of proto range end (NLA_U32: nft_registers)
735
 */
736
enum nft_nat_attributes {
737
        NFTA_NAT_UNSPEC,
738
        NFTA_NAT_TYPE,
739
        NFTA_NAT_FAMILY,
740
        NFTA_NAT_REG_ADDR_MIN,
741
        NFTA_NAT_REG_ADDR_MAX,
742
        NFTA_NAT_REG_PROTO_MIN,
743
        NFTA_NAT_REG_PROTO_MAX,
744
        __NFTA_NAT_MAX
745
};
746
#define NFTA_NAT_MAX            (__NFTA_NAT_MAX - 1)
747
 
748
#endif /* _LINUX_NF_TABLES_H */

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.