1 /**************************************************************************** 2 **************************************************************************** 3 *** 4 *** This header was automatically generated from a Linux kernel header 5 *** of the same name, to make information necessary for userspace to 6 *** call into the kernel available to libc. It contains only constants, 7 *** structures, and macros generated from the original header, and thus, 8 *** contains no copyrightable information. 9 *** 10 *** To edit the content of this header, modify the corresponding 11 *** source file (e.g. under external/kernel-headers/original/) then 12 *** run bionic/libc/kernel/tools/update_all.py 13 *** 14 *** Any manual change here will be lost the next time this script will 15 *** be run. You've been warned! 16 *** 17 **************************************************************************** 18 ****************************************************************************/ 19 #ifndef _LINUX_NF_TABLES_H 20 #define _LINUX_NF_TABLES_H 21 #define NFT_NAME_MAXLEN 256 22 #define NFT_TABLE_MAXNAMELEN NFT_NAME_MAXLEN 23 #define NFT_CHAIN_MAXNAMELEN NFT_NAME_MAXLEN 24 #define NFT_SET_MAXNAMELEN NFT_NAME_MAXLEN 25 #define NFT_OBJ_MAXNAMELEN NFT_NAME_MAXLEN 26 #define NFT_USERDATA_MAXLEN 256 27 #define NFT_OSF_MAXGENRELEN 16 28 enum nft_registers { 29 NFT_REG_VERDICT, 30 NFT_REG_1, 31 NFT_REG_2, 32 NFT_REG_3, 33 NFT_REG_4, 34 __NFT_REG_MAX, 35 NFT_REG32_00 = 8, 36 NFT_REG32_01, 37 NFT_REG32_02, 38 NFT_REG32_03, 39 NFT_REG32_04, 40 NFT_REG32_05, 41 NFT_REG32_06, 42 NFT_REG32_07, 43 NFT_REG32_08, 44 NFT_REG32_09, 45 NFT_REG32_10, 46 NFT_REG32_11, 47 NFT_REG32_12, 48 NFT_REG32_13, 49 NFT_REG32_14, 50 NFT_REG32_15, 51 }; 52 #define NFT_REG_MAX (__NFT_REG_MAX - 1) 53 #define NFT_REG_SIZE 16 54 #define NFT_REG32_SIZE 4 55 enum nft_verdicts { 56 NFT_CONTINUE = - 1, 57 NFT_BREAK = - 2, 58 NFT_JUMP = - 3, 59 NFT_GOTO = - 4, 60 NFT_RETURN = - 5, 61 }; 62 enum nf_tables_msg_types { 63 NFT_MSG_NEWTABLE, 64 NFT_MSG_GETTABLE, 65 NFT_MSG_DELTABLE, 66 NFT_MSG_NEWCHAIN, 67 NFT_MSG_GETCHAIN, 68 NFT_MSG_DELCHAIN, 69 NFT_MSG_NEWRULE, 70 NFT_MSG_GETRULE, 71 NFT_MSG_DELRULE, 72 NFT_MSG_NEWSET, 73 NFT_MSG_GETSET, 74 NFT_MSG_DELSET, 75 NFT_MSG_NEWSETELEM, 76 NFT_MSG_GETSETELEM, 77 NFT_MSG_DELSETELEM, 78 NFT_MSG_NEWGEN, 79 NFT_MSG_GETGEN, 80 NFT_MSG_TRACE, 81 NFT_MSG_NEWOBJ, 82 NFT_MSG_GETOBJ, 83 NFT_MSG_DELOBJ, 84 NFT_MSG_GETOBJ_RESET, 85 NFT_MSG_NEWFLOWTABLE, 86 NFT_MSG_GETFLOWTABLE, 87 NFT_MSG_DELFLOWTABLE, 88 NFT_MSG_MAX, 89 }; 90 enum nft_list_attributes { 91 NFTA_LIST_UNPEC, 92 NFTA_LIST_ELEM, 93 __NFTA_LIST_MAX 94 }; 95 #define NFTA_LIST_MAX (__NFTA_LIST_MAX - 1) 96 enum nft_hook_attributes { 97 NFTA_HOOK_UNSPEC, 98 NFTA_HOOK_HOOKNUM, 99 NFTA_HOOK_PRIORITY, 100 NFTA_HOOK_DEV, 101 __NFTA_HOOK_MAX 102 }; 103 #define NFTA_HOOK_MAX (__NFTA_HOOK_MAX - 1) 104 enum nft_table_flags { 105 NFT_TABLE_F_DORMANT = 0x1, 106 }; 107 enum nft_table_attributes { 108 NFTA_TABLE_UNSPEC, 109 NFTA_TABLE_NAME, 110 NFTA_TABLE_FLAGS, 111 NFTA_TABLE_USE, 112 NFTA_TABLE_HANDLE, 113 NFTA_TABLE_PAD, 114 __NFTA_TABLE_MAX 115 }; 116 #define NFTA_TABLE_MAX (__NFTA_TABLE_MAX - 1) 117 enum nft_chain_attributes { 118 NFTA_CHAIN_UNSPEC, 119 NFTA_CHAIN_TABLE, 120 NFTA_CHAIN_HANDLE, 121 NFTA_CHAIN_NAME, 122 NFTA_CHAIN_HOOK, 123 NFTA_CHAIN_POLICY, 124 NFTA_CHAIN_USE, 125 NFTA_CHAIN_TYPE, 126 NFTA_CHAIN_COUNTERS, 127 NFTA_CHAIN_PAD, 128 __NFTA_CHAIN_MAX 129 }; 130 #define NFTA_CHAIN_MAX (__NFTA_CHAIN_MAX - 1) 131 enum nft_rule_attributes { 132 NFTA_RULE_UNSPEC, 133 NFTA_RULE_TABLE, 134 NFTA_RULE_CHAIN, 135 NFTA_RULE_HANDLE, 136 NFTA_RULE_EXPRESSIONS, 137 NFTA_RULE_COMPAT, 138 NFTA_RULE_POSITION, 139 NFTA_RULE_USERDATA, 140 NFTA_RULE_PAD, 141 NFTA_RULE_ID, 142 __NFTA_RULE_MAX 143 }; 144 #define NFTA_RULE_MAX (__NFTA_RULE_MAX - 1) 145 enum nft_rule_compat_flags { 146 NFT_RULE_COMPAT_F_INV = (1 << 1), 147 NFT_RULE_COMPAT_F_MASK = NFT_RULE_COMPAT_F_INV, 148 }; 149 enum nft_rule_compat_attributes { 150 NFTA_RULE_COMPAT_UNSPEC, 151 NFTA_RULE_COMPAT_PROTO, 152 NFTA_RULE_COMPAT_FLAGS, 153 __NFTA_RULE_COMPAT_MAX 154 }; 155 #define NFTA_RULE_COMPAT_MAX (__NFTA_RULE_COMPAT_MAX - 1) 156 enum nft_set_flags { 157 NFT_SET_ANONYMOUS = 0x1, 158 NFT_SET_CONSTANT = 0x2, 159 NFT_SET_INTERVAL = 0x4, 160 NFT_SET_MAP = 0x8, 161 NFT_SET_TIMEOUT = 0x10, 162 NFT_SET_EVAL = 0x20, 163 NFT_SET_OBJECT = 0x40, 164 }; 165 enum nft_set_policies { 166 NFT_SET_POL_PERFORMANCE, 167 NFT_SET_POL_MEMORY, 168 }; 169 enum nft_set_desc_attributes { 170 NFTA_SET_DESC_UNSPEC, 171 NFTA_SET_DESC_SIZE, 172 __NFTA_SET_DESC_MAX 173 }; 174 #define NFTA_SET_DESC_MAX (__NFTA_SET_DESC_MAX - 1) 175 enum nft_set_attributes { 176 NFTA_SET_UNSPEC, 177 NFTA_SET_TABLE, 178 NFTA_SET_NAME, 179 NFTA_SET_FLAGS, 180 NFTA_SET_KEY_TYPE, 181 NFTA_SET_KEY_LEN, 182 NFTA_SET_DATA_TYPE, 183 NFTA_SET_DATA_LEN, 184 NFTA_SET_POLICY, 185 NFTA_SET_DESC, 186 NFTA_SET_ID, 187 NFTA_SET_TIMEOUT, 188 NFTA_SET_GC_INTERVAL, 189 NFTA_SET_USERDATA, 190 NFTA_SET_PAD, 191 NFTA_SET_OBJ_TYPE, 192 NFTA_SET_HANDLE, 193 __NFTA_SET_MAX 194 }; 195 #define NFTA_SET_MAX (__NFTA_SET_MAX - 1) 196 enum nft_set_elem_flags { 197 NFT_SET_ELEM_INTERVAL_END = 0x1, 198 }; 199 enum nft_set_elem_attributes { 200 NFTA_SET_ELEM_UNSPEC, 201 NFTA_SET_ELEM_KEY, 202 NFTA_SET_ELEM_DATA, 203 NFTA_SET_ELEM_FLAGS, 204 NFTA_SET_ELEM_TIMEOUT, 205 NFTA_SET_ELEM_EXPIRATION, 206 NFTA_SET_ELEM_USERDATA, 207 NFTA_SET_ELEM_EXPR, 208 NFTA_SET_ELEM_PAD, 209 NFTA_SET_ELEM_OBJREF, 210 __NFTA_SET_ELEM_MAX 211 }; 212 #define NFTA_SET_ELEM_MAX (__NFTA_SET_ELEM_MAX - 1) 213 enum nft_set_elem_list_attributes { 214 NFTA_SET_ELEM_LIST_UNSPEC, 215 NFTA_SET_ELEM_LIST_TABLE, 216 NFTA_SET_ELEM_LIST_SET, 217 NFTA_SET_ELEM_LIST_ELEMENTS, 218 NFTA_SET_ELEM_LIST_SET_ID, 219 __NFTA_SET_ELEM_LIST_MAX 220 }; 221 #define NFTA_SET_ELEM_LIST_MAX (__NFTA_SET_ELEM_LIST_MAX - 1) 222 enum nft_data_types { 223 NFT_DATA_VALUE, 224 NFT_DATA_VERDICT = 0xffffff00U, 225 }; 226 #define NFT_DATA_RESERVED_MASK 0xffffff00U 227 enum nft_data_attributes { 228 NFTA_DATA_UNSPEC, 229 NFTA_DATA_VALUE, 230 NFTA_DATA_VERDICT, 231 __NFTA_DATA_MAX 232 }; 233 #define NFTA_DATA_MAX (__NFTA_DATA_MAX - 1) 234 #define NFT_DATA_VALUE_MAXLEN 64 235 enum nft_verdict_attributes { 236 NFTA_VERDICT_UNSPEC, 237 NFTA_VERDICT_CODE, 238 NFTA_VERDICT_CHAIN, 239 __NFTA_VERDICT_MAX 240 }; 241 #define NFTA_VERDICT_MAX (__NFTA_VERDICT_MAX - 1) 242 enum nft_expr_attributes { 243 NFTA_EXPR_UNSPEC, 244 NFTA_EXPR_NAME, 245 NFTA_EXPR_DATA, 246 __NFTA_EXPR_MAX 247 }; 248 #define NFTA_EXPR_MAX (__NFTA_EXPR_MAX - 1) 249 enum nft_immediate_attributes { 250 NFTA_IMMEDIATE_UNSPEC, 251 NFTA_IMMEDIATE_DREG, 252 NFTA_IMMEDIATE_DATA, 253 __NFTA_IMMEDIATE_MAX 254 }; 255 #define NFTA_IMMEDIATE_MAX (__NFTA_IMMEDIATE_MAX - 1) 256 enum nft_bitwise_attributes { 257 NFTA_BITWISE_UNSPEC, 258 NFTA_BITWISE_SREG, 259 NFTA_BITWISE_DREG, 260 NFTA_BITWISE_LEN, 261 NFTA_BITWISE_MASK, 262 NFTA_BITWISE_XOR, 263 __NFTA_BITWISE_MAX 264 }; 265 #define NFTA_BITWISE_MAX (__NFTA_BITWISE_MAX - 1) 266 enum nft_byteorder_ops { 267 NFT_BYTEORDER_NTOH, 268 NFT_BYTEORDER_HTON, 269 }; 270 enum nft_byteorder_attributes { 271 NFTA_BYTEORDER_UNSPEC, 272 NFTA_BYTEORDER_SREG, 273 NFTA_BYTEORDER_DREG, 274 NFTA_BYTEORDER_OP, 275 NFTA_BYTEORDER_LEN, 276 NFTA_BYTEORDER_SIZE, 277 __NFTA_BYTEORDER_MAX 278 }; 279 #define NFTA_BYTEORDER_MAX (__NFTA_BYTEORDER_MAX - 1) 280 enum nft_cmp_ops { 281 NFT_CMP_EQ, 282 NFT_CMP_NEQ, 283 NFT_CMP_LT, 284 NFT_CMP_LTE, 285 NFT_CMP_GT, 286 NFT_CMP_GTE, 287 }; 288 enum nft_cmp_attributes { 289 NFTA_CMP_UNSPEC, 290 NFTA_CMP_SREG, 291 NFTA_CMP_OP, 292 NFTA_CMP_DATA, 293 __NFTA_CMP_MAX 294 }; 295 #define NFTA_CMP_MAX (__NFTA_CMP_MAX - 1) 296 enum nft_range_ops { 297 NFT_RANGE_EQ, 298 NFT_RANGE_NEQ, 299 }; 300 enum nft_range_attributes { 301 NFTA_RANGE_UNSPEC, 302 NFTA_RANGE_SREG, 303 NFTA_RANGE_OP, 304 NFTA_RANGE_FROM_DATA, 305 NFTA_RANGE_TO_DATA, 306 __NFTA_RANGE_MAX 307 }; 308 #define NFTA_RANGE_MAX (__NFTA_RANGE_MAX - 1) 309 enum nft_lookup_flags { 310 NFT_LOOKUP_F_INV = (1 << 0), 311 }; 312 enum nft_lookup_attributes { 313 NFTA_LOOKUP_UNSPEC, 314 NFTA_LOOKUP_SET, 315 NFTA_LOOKUP_SREG, 316 NFTA_LOOKUP_DREG, 317 NFTA_LOOKUP_SET_ID, 318 NFTA_LOOKUP_FLAGS, 319 __NFTA_LOOKUP_MAX 320 }; 321 #define NFTA_LOOKUP_MAX (__NFTA_LOOKUP_MAX - 1) 322 enum nft_dynset_ops { 323 NFT_DYNSET_OP_ADD, 324 NFT_DYNSET_OP_UPDATE, 325 }; 326 enum nft_dynset_flags { 327 NFT_DYNSET_F_INV = (1 << 0), 328 }; 329 enum nft_dynset_attributes { 330 NFTA_DYNSET_UNSPEC, 331 NFTA_DYNSET_SET_NAME, 332 NFTA_DYNSET_SET_ID, 333 NFTA_DYNSET_OP, 334 NFTA_DYNSET_SREG_KEY, 335 NFTA_DYNSET_SREG_DATA, 336 NFTA_DYNSET_TIMEOUT, 337 NFTA_DYNSET_EXPR, 338 NFTA_DYNSET_PAD, 339 NFTA_DYNSET_FLAGS, 340 __NFTA_DYNSET_MAX, 341 }; 342 #define NFTA_DYNSET_MAX (__NFTA_DYNSET_MAX - 1) 343 enum nft_payload_bases { 344 NFT_PAYLOAD_LL_HEADER, 345 NFT_PAYLOAD_NETWORK_HEADER, 346 NFT_PAYLOAD_TRANSPORT_HEADER, 347 }; 348 enum nft_payload_csum_types { 349 NFT_PAYLOAD_CSUM_NONE, 350 NFT_PAYLOAD_CSUM_INET, 351 }; 352 enum nft_payload_csum_flags { 353 NFT_PAYLOAD_L4CSUM_PSEUDOHDR = (1 << 0), 354 }; 355 enum nft_payload_attributes { 356 NFTA_PAYLOAD_UNSPEC, 357 NFTA_PAYLOAD_DREG, 358 NFTA_PAYLOAD_BASE, 359 NFTA_PAYLOAD_OFFSET, 360 NFTA_PAYLOAD_LEN, 361 NFTA_PAYLOAD_SREG, 362 NFTA_PAYLOAD_CSUM_TYPE, 363 NFTA_PAYLOAD_CSUM_OFFSET, 364 NFTA_PAYLOAD_CSUM_FLAGS, 365 __NFTA_PAYLOAD_MAX 366 }; 367 #define NFTA_PAYLOAD_MAX (__NFTA_PAYLOAD_MAX - 1) 368 enum nft_exthdr_flags { 369 NFT_EXTHDR_F_PRESENT = (1 << 0), 370 }; 371 enum nft_exthdr_op { 372 NFT_EXTHDR_OP_IPV6, 373 NFT_EXTHDR_OP_TCPOPT, 374 __NFT_EXTHDR_OP_MAX 375 }; 376 #define NFT_EXTHDR_OP_MAX (__NFT_EXTHDR_OP_MAX - 1) 377 enum nft_exthdr_attributes { 378 NFTA_EXTHDR_UNSPEC, 379 NFTA_EXTHDR_DREG, 380 NFTA_EXTHDR_TYPE, 381 NFTA_EXTHDR_OFFSET, 382 NFTA_EXTHDR_LEN, 383 NFTA_EXTHDR_FLAGS, 384 NFTA_EXTHDR_OP, 385 NFTA_EXTHDR_SREG, 386 __NFTA_EXTHDR_MAX 387 }; 388 #define NFTA_EXTHDR_MAX (__NFTA_EXTHDR_MAX - 1) 389 enum nft_meta_keys { 390 NFT_META_LEN, 391 NFT_META_PROTOCOL, 392 NFT_META_PRIORITY, 393 NFT_META_MARK, 394 NFT_META_IIF, 395 NFT_META_OIF, 396 NFT_META_IIFNAME, 397 NFT_META_OIFNAME, 398 NFT_META_IIFTYPE, 399 NFT_META_OIFTYPE, 400 NFT_META_SKUID, 401 NFT_META_SKGID, 402 NFT_META_NFTRACE, 403 NFT_META_RTCLASSID, 404 NFT_META_SECMARK, 405 NFT_META_NFPROTO, 406 NFT_META_L4PROTO, 407 NFT_META_BRI_IIFNAME, 408 NFT_META_BRI_OIFNAME, 409 NFT_META_PKTTYPE, 410 NFT_META_CPU, 411 NFT_META_IIFGROUP, 412 NFT_META_OIFGROUP, 413 NFT_META_CGROUP, 414 NFT_META_PRANDOM, 415 NFT_META_SECPATH, 416 }; 417 enum nft_rt_keys { 418 NFT_RT_CLASSID, 419 NFT_RT_NEXTHOP4, 420 NFT_RT_NEXTHOP6, 421 NFT_RT_TCPMSS, 422 NFT_RT_XFRM, 423 __NFT_RT_MAX 424 }; 425 #define NFT_RT_MAX (__NFT_RT_MAX - 1) 426 enum nft_hash_types { 427 NFT_HASH_JENKINS, 428 NFT_HASH_SYM, 429 }; 430 enum nft_hash_attributes { 431 NFTA_HASH_UNSPEC, 432 NFTA_HASH_SREG, 433 NFTA_HASH_DREG, 434 NFTA_HASH_LEN, 435 NFTA_HASH_MODULUS, 436 NFTA_HASH_SEED, 437 NFTA_HASH_OFFSET, 438 NFTA_HASH_TYPE, 439 NFTA_HASH_SET_NAME, 440 NFTA_HASH_SET_ID, 441 __NFTA_HASH_MAX, 442 }; 443 #define NFTA_HASH_MAX (__NFTA_HASH_MAX - 1) 444 enum nft_meta_attributes { 445 NFTA_META_UNSPEC, 446 NFTA_META_DREG, 447 NFTA_META_KEY, 448 NFTA_META_SREG, 449 __NFTA_META_MAX 450 }; 451 #define NFTA_META_MAX (__NFTA_META_MAX - 1) 452 enum nft_rt_attributes { 453 NFTA_RT_UNSPEC, 454 NFTA_RT_DREG, 455 NFTA_RT_KEY, 456 __NFTA_RT_MAX 457 }; 458 #define NFTA_RT_MAX (__NFTA_RT_MAX - 1) 459 enum nft_socket_attributes { 460 NFTA_SOCKET_UNSPEC, 461 NFTA_SOCKET_KEY, 462 NFTA_SOCKET_DREG, 463 __NFTA_SOCKET_MAX 464 }; 465 #define NFTA_SOCKET_MAX (__NFTA_SOCKET_MAX - 1) 466 enum nft_socket_keys { 467 NFT_SOCKET_TRANSPARENT, 468 NFT_SOCKET_MARK, 469 __NFT_SOCKET_MAX 470 }; 471 #define NFT_SOCKET_MAX (__NFT_SOCKET_MAX - 1) 472 enum nft_ct_keys { 473 NFT_CT_STATE, 474 NFT_CT_DIRECTION, 475 NFT_CT_STATUS, 476 NFT_CT_MARK, 477 NFT_CT_SECMARK, 478 NFT_CT_EXPIRATION, 479 NFT_CT_HELPER, 480 NFT_CT_L3PROTOCOL, 481 NFT_CT_SRC, 482 NFT_CT_DST, 483 NFT_CT_PROTOCOL, 484 NFT_CT_PROTO_SRC, 485 NFT_CT_PROTO_DST, 486 NFT_CT_LABELS, 487 NFT_CT_PKTS, 488 NFT_CT_BYTES, 489 NFT_CT_AVGPKT, 490 NFT_CT_ZONE, 491 NFT_CT_EVENTMASK, 492 NFT_CT_SRC_IP, 493 NFT_CT_DST_IP, 494 NFT_CT_SRC_IP6, 495 NFT_CT_DST_IP6, 496 NFT_CT_TIMEOUT, 497 __NFT_CT_MAX 498 }; 499 #define NFT_CT_MAX (__NFT_CT_MAX - 1) 500 enum nft_ct_attributes { 501 NFTA_CT_UNSPEC, 502 NFTA_CT_DREG, 503 NFTA_CT_KEY, 504 NFTA_CT_DIRECTION, 505 NFTA_CT_SREG, 506 __NFTA_CT_MAX 507 }; 508 #define NFTA_CT_MAX (__NFTA_CT_MAX - 1) 509 enum nft_offload_attributes { 510 NFTA_FLOW_UNSPEC, 511 NFTA_FLOW_TABLE_NAME, 512 __NFTA_FLOW_MAX, 513 }; 514 #define NFTA_FLOW_MAX (__NFTA_FLOW_MAX - 1) 515 enum nft_limit_type { 516 NFT_LIMIT_PKTS, 517 NFT_LIMIT_PKT_BYTES 518 }; 519 enum nft_limit_flags { 520 NFT_LIMIT_F_INV = (1 << 0), 521 }; 522 enum nft_limit_attributes { 523 NFTA_LIMIT_UNSPEC, 524 NFTA_LIMIT_RATE, 525 NFTA_LIMIT_UNIT, 526 NFTA_LIMIT_BURST, 527 NFTA_LIMIT_TYPE, 528 NFTA_LIMIT_FLAGS, 529 NFTA_LIMIT_PAD, 530 __NFTA_LIMIT_MAX 531 }; 532 #define NFTA_LIMIT_MAX (__NFTA_LIMIT_MAX - 1) 533 enum nft_connlimit_flags { 534 NFT_CONNLIMIT_F_INV = (1 << 0), 535 }; 536 enum nft_connlimit_attributes { 537 NFTA_CONNLIMIT_UNSPEC, 538 NFTA_CONNLIMIT_COUNT, 539 NFTA_CONNLIMIT_FLAGS, 540 __NFTA_CONNLIMIT_MAX 541 }; 542 #define NFTA_CONNLIMIT_MAX (__NFTA_CONNLIMIT_MAX - 1) 543 enum nft_counter_attributes { 544 NFTA_COUNTER_UNSPEC, 545 NFTA_COUNTER_BYTES, 546 NFTA_COUNTER_PACKETS, 547 NFTA_COUNTER_PAD, 548 __NFTA_COUNTER_MAX 549 }; 550 #define NFTA_COUNTER_MAX (__NFTA_COUNTER_MAX - 1) 551 enum nft_log_attributes { 552 NFTA_LOG_UNSPEC, 553 NFTA_LOG_GROUP, 554 NFTA_LOG_PREFIX, 555 NFTA_LOG_SNAPLEN, 556 NFTA_LOG_QTHRESHOLD, 557 NFTA_LOG_LEVEL, 558 NFTA_LOG_FLAGS, 559 __NFTA_LOG_MAX 560 }; 561 #define NFTA_LOG_MAX (__NFTA_LOG_MAX - 1) 562 enum nft_log_level { 563 NFT_LOGLEVEL_EMERG, 564 NFT_LOGLEVEL_ALERT, 565 NFT_LOGLEVEL_CRIT, 566 NFT_LOGLEVEL_ERR, 567 NFT_LOGLEVEL_WARNING, 568 NFT_LOGLEVEL_NOTICE, 569 NFT_LOGLEVEL_INFO, 570 NFT_LOGLEVEL_DEBUG, 571 NFT_LOGLEVEL_AUDIT, 572 __NFT_LOGLEVEL_MAX 573 }; 574 #define NFT_LOGLEVEL_MAX (__NFT_LOGLEVEL_MAX + 1) 575 enum nft_queue_attributes { 576 NFTA_QUEUE_UNSPEC, 577 NFTA_QUEUE_NUM, 578 NFTA_QUEUE_TOTAL, 579 NFTA_QUEUE_FLAGS, 580 NFTA_QUEUE_SREG_QNUM, 581 __NFTA_QUEUE_MAX 582 }; 583 #define NFTA_QUEUE_MAX (__NFTA_QUEUE_MAX - 1) 584 #define NFT_QUEUE_FLAG_BYPASS 0x01 585 #define NFT_QUEUE_FLAG_CPU_FANOUT 0x02 586 #define NFT_QUEUE_FLAG_MASK 0x03 587 enum nft_quota_flags { 588 NFT_QUOTA_F_INV = (1 << 0), 589 NFT_QUOTA_F_DEPLETED = (1 << 1), 590 }; 591 enum nft_quota_attributes { 592 NFTA_QUOTA_UNSPEC, 593 NFTA_QUOTA_BYTES, 594 NFTA_QUOTA_FLAGS, 595 NFTA_QUOTA_PAD, 596 NFTA_QUOTA_CONSUMED, 597 __NFTA_QUOTA_MAX 598 }; 599 #define NFTA_QUOTA_MAX (__NFTA_QUOTA_MAX - 1) 600 enum nft_secmark_attributes { 601 NFTA_SECMARK_UNSPEC, 602 NFTA_SECMARK_CTX, 603 __NFTA_SECMARK_MAX, 604 }; 605 #define NFTA_SECMARK_MAX (__NFTA_SECMARK_MAX - 1) 606 #define NFT_SECMARK_CTX_MAXLEN 256 607 enum nft_reject_types { 608 NFT_REJECT_ICMP_UNREACH, 609 NFT_REJECT_TCP_RST, 610 NFT_REJECT_ICMPX_UNREACH, 611 }; 612 enum nft_reject_inet_code { 613 NFT_REJECT_ICMPX_NO_ROUTE = 0, 614 NFT_REJECT_ICMPX_PORT_UNREACH, 615 NFT_REJECT_ICMPX_HOST_UNREACH, 616 NFT_REJECT_ICMPX_ADMIN_PROHIBITED, 617 __NFT_REJECT_ICMPX_MAX 618 }; 619 #define NFT_REJECT_ICMPX_MAX (__NFT_REJECT_ICMPX_MAX - 1) 620 enum nft_reject_attributes { 621 NFTA_REJECT_UNSPEC, 622 NFTA_REJECT_TYPE, 623 NFTA_REJECT_ICMP_CODE, 624 __NFTA_REJECT_MAX 625 }; 626 #define NFTA_REJECT_MAX (__NFTA_REJECT_MAX - 1) 627 enum nft_nat_types { 628 NFT_NAT_SNAT, 629 NFT_NAT_DNAT, 630 }; 631 enum nft_nat_attributes { 632 NFTA_NAT_UNSPEC, 633 NFTA_NAT_TYPE, 634 NFTA_NAT_FAMILY, 635 NFTA_NAT_REG_ADDR_MIN, 636 NFTA_NAT_REG_ADDR_MAX, 637 NFTA_NAT_REG_PROTO_MIN, 638 NFTA_NAT_REG_PROTO_MAX, 639 NFTA_NAT_FLAGS, 640 __NFTA_NAT_MAX 641 }; 642 #define NFTA_NAT_MAX (__NFTA_NAT_MAX - 1) 643 enum nft_tproxy_attributes { 644 NFTA_TPROXY_UNSPEC, 645 NFTA_TPROXY_FAMILY, 646 NFTA_TPROXY_REG_ADDR, 647 NFTA_TPROXY_REG_PORT, 648 __NFTA_TPROXY_MAX 649 }; 650 #define NFTA_TPROXY_MAX (__NFTA_TPROXY_MAX - 1) 651 enum nft_masq_attributes { 652 NFTA_MASQ_UNSPEC, 653 NFTA_MASQ_FLAGS, 654 NFTA_MASQ_REG_PROTO_MIN, 655 NFTA_MASQ_REG_PROTO_MAX, 656 __NFTA_MASQ_MAX 657 }; 658 #define NFTA_MASQ_MAX (__NFTA_MASQ_MAX - 1) 659 enum nft_redir_attributes { 660 NFTA_REDIR_UNSPEC, 661 NFTA_REDIR_REG_PROTO_MIN, 662 NFTA_REDIR_REG_PROTO_MAX, 663 NFTA_REDIR_FLAGS, 664 __NFTA_REDIR_MAX 665 }; 666 #define NFTA_REDIR_MAX (__NFTA_REDIR_MAX - 1) 667 enum nft_dup_attributes { 668 NFTA_DUP_UNSPEC, 669 NFTA_DUP_SREG_ADDR, 670 NFTA_DUP_SREG_DEV, 671 __NFTA_DUP_MAX 672 }; 673 #define NFTA_DUP_MAX (__NFTA_DUP_MAX - 1) 674 enum nft_fwd_attributes { 675 NFTA_FWD_UNSPEC, 676 NFTA_FWD_SREG_DEV, 677 NFTA_FWD_SREG_ADDR, 678 NFTA_FWD_NFPROTO, 679 __NFTA_FWD_MAX 680 }; 681 #define NFTA_FWD_MAX (__NFTA_FWD_MAX - 1) 682 enum nft_objref_attributes { 683 NFTA_OBJREF_UNSPEC, 684 NFTA_OBJREF_IMM_TYPE, 685 NFTA_OBJREF_IMM_NAME, 686 NFTA_OBJREF_SET_SREG, 687 NFTA_OBJREF_SET_NAME, 688 NFTA_OBJREF_SET_ID, 689 __NFTA_OBJREF_MAX 690 }; 691 #define NFTA_OBJREF_MAX (__NFTA_OBJREF_MAX - 1) 692 enum nft_gen_attributes { 693 NFTA_GEN_UNSPEC, 694 NFTA_GEN_ID, 695 NFTA_GEN_PROC_PID, 696 NFTA_GEN_PROC_NAME, 697 __NFTA_GEN_MAX 698 }; 699 #define NFTA_GEN_MAX (__NFTA_GEN_MAX - 1) 700 enum nft_fib_attributes { 701 NFTA_FIB_UNSPEC, 702 NFTA_FIB_DREG, 703 NFTA_FIB_RESULT, 704 NFTA_FIB_FLAGS, 705 __NFTA_FIB_MAX 706 }; 707 #define NFTA_FIB_MAX (__NFTA_FIB_MAX - 1) 708 enum nft_fib_result { 709 NFT_FIB_RESULT_UNSPEC, 710 NFT_FIB_RESULT_OIF, 711 NFT_FIB_RESULT_OIFNAME, 712 NFT_FIB_RESULT_ADDRTYPE, 713 __NFT_FIB_RESULT_MAX 714 }; 715 #define NFT_FIB_RESULT_MAX (__NFT_FIB_RESULT_MAX - 1) 716 enum nft_fib_flags { 717 NFTA_FIB_F_SADDR = 1 << 0, 718 NFTA_FIB_F_DADDR = 1 << 1, 719 NFTA_FIB_F_MARK = 1 << 2, 720 NFTA_FIB_F_IIF = 1 << 3, 721 NFTA_FIB_F_OIF = 1 << 4, 722 NFTA_FIB_F_PRESENT = 1 << 5, 723 }; 724 enum nft_ct_helper_attributes { 725 NFTA_CT_HELPER_UNSPEC, 726 NFTA_CT_HELPER_NAME, 727 NFTA_CT_HELPER_L3PROTO, 728 NFTA_CT_HELPER_L4PROTO, 729 __NFTA_CT_HELPER_MAX, 730 }; 731 #define NFTA_CT_HELPER_MAX (__NFTA_CT_HELPER_MAX - 1) 732 enum nft_ct_timeout_timeout_attributes { 733 NFTA_CT_TIMEOUT_UNSPEC, 734 NFTA_CT_TIMEOUT_L3PROTO, 735 NFTA_CT_TIMEOUT_L4PROTO, 736 NFTA_CT_TIMEOUT_DATA, 737 __NFTA_CT_TIMEOUT_MAX, 738 }; 739 #define NFTA_CT_TIMEOUT_MAX (__NFTA_CT_TIMEOUT_MAX - 1) 740 #define NFT_OBJECT_UNSPEC 0 741 #define NFT_OBJECT_COUNTER 1 742 #define NFT_OBJECT_QUOTA 2 743 #define NFT_OBJECT_CT_HELPER 3 744 #define NFT_OBJECT_LIMIT 4 745 #define NFT_OBJECT_CONNLIMIT 5 746 #define NFT_OBJECT_TUNNEL 6 747 #define NFT_OBJECT_CT_TIMEOUT 7 748 #define NFT_OBJECT_SECMARK 8 749 #define __NFT_OBJECT_MAX 9 750 #define NFT_OBJECT_MAX (__NFT_OBJECT_MAX - 1) 751 enum nft_object_attributes { 752 NFTA_OBJ_UNSPEC, 753 NFTA_OBJ_TABLE, 754 NFTA_OBJ_NAME, 755 NFTA_OBJ_TYPE, 756 NFTA_OBJ_DATA, 757 NFTA_OBJ_USE, 758 NFTA_OBJ_HANDLE, 759 NFTA_OBJ_PAD, 760 __NFTA_OBJ_MAX 761 }; 762 #define NFTA_OBJ_MAX (__NFTA_OBJ_MAX - 1) 763 enum nft_flowtable_attributes { 764 NFTA_FLOWTABLE_UNSPEC, 765 NFTA_FLOWTABLE_TABLE, 766 NFTA_FLOWTABLE_NAME, 767 NFTA_FLOWTABLE_HOOK, 768 NFTA_FLOWTABLE_USE, 769 NFTA_FLOWTABLE_HANDLE, 770 NFTA_FLOWTABLE_PAD, 771 __NFTA_FLOWTABLE_MAX 772 }; 773 #define NFTA_FLOWTABLE_MAX (__NFTA_FLOWTABLE_MAX - 1) 774 enum nft_flowtable_hook_attributes { 775 NFTA_FLOWTABLE_HOOK_UNSPEC, 776 NFTA_FLOWTABLE_HOOK_NUM, 777 NFTA_FLOWTABLE_HOOK_PRIORITY, 778 NFTA_FLOWTABLE_HOOK_DEVS, 779 __NFTA_FLOWTABLE_HOOK_MAX 780 }; 781 #define NFTA_FLOWTABLE_HOOK_MAX (__NFTA_FLOWTABLE_HOOK_MAX - 1) 782 enum nft_osf_attributes { 783 NFTA_OSF_UNSPEC, 784 NFTA_OSF_DREG, 785 NFTA_OSF_TTL, 786 __NFTA_OSF_MAX, 787 }; 788 #define NFTA_OSF_MAX (__NFTA_OSF_MAX - 1) 789 enum nft_devices_attributes { 790 NFTA_DEVICE_UNSPEC, 791 NFTA_DEVICE_NAME, 792 __NFTA_DEVICE_MAX 793 }; 794 #define NFTA_DEVICE_MAX (__NFTA_DEVICE_MAX - 1) 795 enum nft_xfrm_attributes { 796 NFTA_XFRM_UNSPEC, 797 NFTA_XFRM_DREG, 798 NFTA_XFRM_KEY, 799 NFTA_XFRM_DIR, 800 NFTA_XFRM_SPNUM, 801 __NFTA_XFRM_MAX 802 }; 803 #define NFTA_XFRM_MAX (__NFTA_XFRM_MAX - 1) 804 enum nft_xfrm_keys { 805 NFT_XFRM_KEY_UNSPEC, 806 NFT_XFRM_KEY_DADDR_IP4, 807 NFT_XFRM_KEY_DADDR_IP6, 808 NFT_XFRM_KEY_SADDR_IP4, 809 NFT_XFRM_KEY_SADDR_IP6, 810 NFT_XFRM_KEY_REQID, 811 NFT_XFRM_KEY_SPI, 812 __NFT_XFRM_KEY_MAX, 813 }; 814 #define NFT_XFRM_KEY_MAX (__NFT_XFRM_KEY_MAX - 1) 815 enum nft_trace_attributes { 816 NFTA_TRACE_UNSPEC, 817 NFTA_TRACE_TABLE, 818 NFTA_TRACE_CHAIN, 819 NFTA_TRACE_RULE_HANDLE, 820 NFTA_TRACE_TYPE, 821 NFTA_TRACE_VERDICT, 822 NFTA_TRACE_ID, 823 NFTA_TRACE_LL_HEADER, 824 NFTA_TRACE_NETWORK_HEADER, 825 NFTA_TRACE_TRANSPORT_HEADER, 826 NFTA_TRACE_IIF, 827 NFTA_TRACE_IIFTYPE, 828 NFTA_TRACE_OIF, 829 NFTA_TRACE_OIFTYPE, 830 NFTA_TRACE_MARK, 831 NFTA_TRACE_NFPROTO, 832 NFTA_TRACE_POLICY, 833 NFTA_TRACE_PAD, 834 __NFTA_TRACE_MAX 835 }; 836 #define NFTA_TRACE_MAX (__NFTA_TRACE_MAX - 1) 837 enum nft_trace_types { 838 NFT_TRACETYPE_UNSPEC, 839 NFT_TRACETYPE_POLICY, 840 NFT_TRACETYPE_RETURN, 841 NFT_TRACETYPE_RULE, 842 __NFT_TRACETYPE_MAX 843 }; 844 #define NFT_TRACETYPE_MAX (__NFT_TRACETYPE_MAX - 1) 845 enum nft_ng_attributes { 846 NFTA_NG_UNSPEC, 847 NFTA_NG_DREG, 848 NFTA_NG_MODULUS, 849 NFTA_NG_TYPE, 850 NFTA_NG_OFFSET, 851 NFTA_NG_SET_NAME, 852 NFTA_NG_SET_ID, 853 __NFTA_NG_MAX 854 }; 855 #define NFTA_NG_MAX (__NFTA_NG_MAX - 1) 856 enum nft_ng_types { 857 NFT_NG_INCREMENTAL, 858 NFT_NG_RANDOM, 859 __NFT_NG_MAX 860 }; 861 #define NFT_NG_MAX (__NFT_NG_MAX - 1) 862 enum nft_tunnel_key_ip_attributes { 863 NFTA_TUNNEL_KEY_IP_UNSPEC, 864 NFTA_TUNNEL_KEY_IP_SRC, 865 NFTA_TUNNEL_KEY_IP_DST, 866 __NFTA_TUNNEL_KEY_IP_MAX 867 }; 868 #define NFTA_TUNNEL_KEY_IP_MAX (__NFTA_TUNNEL_KEY_IP_MAX - 1) 869 enum nft_tunnel_ip6_attributes { 870 NFTA_TUNNEL_KEY_IP6_UNSPEC, 871 NFTA_TUNNEL_KEY_IP6_SRC, 872 NFTA_TUNNEL_KEY_IP6_DST, 873 NFTA_TUNNEL_KEY_IP6_FLOWLABEL, 874 __NFTA_TUNNEL_KEY_IP6_MAX 875 }; 876 #define NFTA_TUNNEL_KEY_IP6_MAX (__NFTA_TUNNEL_KEY_IP6_MAX - 1) 877 enum nft_tunnel_opts_attributes { 878 NFTA_TUNNEL_KEY_OPTS_UNSPEC, 879 NFTA_TUNNEL_KEY_OPTS_VXLAN, 880 NFTA_TUNNEL_KEY_OPTS_ERSPAN, 881 __NFTA_TUNNEL_KEY_OPTS_MAX 882 }; 883 #define NFTA_TUNNEL_KEY_OPTS_MAX (__NFTA_TUNNEL_KEY_OPTS_MAX - 1) 884 enum nft_tunnel_opts_vxlan_attributes { 885 NFTA_TUNNEL_KEY_VXLAN_UNSPEC, 886 NFTA_TUNNEL_KEY_VXLAN_GBP, 887 __NFTA_TUNNEL_KEY_VXLAN_MAX 888 }; 889 #define NFTA_TUNNEL_KEY_VXLAN_MAX (__NFTA_TUNNEL_KEY_VXLAN_MAX - 1) 890 enum nft_tunnel_opts_erspan_attributes { 891 NFTA_TUNNEL_KEY_ERSPAN_UNSPEC, 892 NFTA_TUNNEL_KEY_ERSPAN_VERSION, 893 NFTA_TUNNEL_KEY_ERSPAN_V1_INDEX, 894 NFTA_TUNNEL_KEY_ERSPAN_V2_HWID, 895 NFTA_TUNNEL_KEY_ERSPAN_V2_DIR, 896 __NFTA_TUNNEL_KEY_ERSPAN_MAX 897 }; 898 #define NFTA_TUNNEL_KEY_ERSPAN_MAX (__NFTA_TUNNEL_KEY_ERSPAN_MAX - 1) 899 enum nft_tunnel_flags { 900 NFT_TUNNEL_F_ZERO_CSUM_TX = (1 << 0), 901 NFT_TUNNEL_F_DONT_FRAGMENT = (1 << 1), 902 NFT_TUNNEL_F_SEQ_NUMBER = (1 << 2), 903 }; 904 #define NFT_TUNNEL_F_MASK (NFT_TUNNEL_F_ZERO_CSUM_TX | NFT_TUNNEL_F_DONT_FRAGMENT | NFT_TUNNEL_F_SEQ_NUMBER) 905 enum nft_tunnel_key_attributes { 906 NFTA_TUNNEL_KEY_UNSPEC, 907 NFTA_TUNNEL_KEY_ID, 908 NFTA_TUNNEL_KEY_IP, 909 NFTA_TUNNEL_KEY_IP6, 910 NFTA_TUNNEL_KEY_FLAGS, 911 NFTA_TUNNEL_KEY_TOS, 912 NFTA_TUNNEL_KEY_TTL, 913 NFTA_TUNNEL_KEY_SPORT, 914 NFTA_TUNNEL_KEY_DPORT, 915 NFTA_TUNNEL_KEY_OPTS, 916 __NFTA_TUNNEL_KEY_MAX 917 }; 918 #define NFTA_TUNNEL_KEY_MAX (__NFTA_TUNNEL_KEY_MAX - 1) 919 enum nft_tunnel_keys { 920 NFT_TUNNEL_PATH, 921 NFT_TUNNEL_ID, 922 __NFT_TUNNEL_MAX 923 }; 924 #define NFT_TUNNEL_MAX (__NFT_TUNNEL_MAX - 1) 925 enum nft_tunnel_attributes { 926 NFTA_TUNNEL_UNSPEC, 927 NFTA_TUNNEL_KEY, 928 NFTA_TUNNEL_DREG, 929 __NFTA_TUNNEL_MAX 930 }; 931 #define NFTA_TUNNEL_MAX (__NFTA_TUNNEL_MAX - 1) 932 #endif 933