Home | History | Annotate | Download | only in netfilter
      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 enum nft_registers {
     28   NFT_REG_VERDICT,
     29   NFT_REG_1,
     30   NFT_REG_2,
     31   NFT_REG_3,
     32   NFT_REG_4,
     33   __NFT_REG_MAX,
     34   NFT_REG32_00 = 8,
     35   NFT_REG32_01,
     36   NFT_REG32_02,
     37   NFT_REG32_03,
     38   NFT_REG32_04,
     39   NFT_REG32_05,
     40   NFT_REG32_06,
     41   NFT_REG32_07,
     42   NFT_REG32_08,
     43   NFT_REG32_09,
     44   NFT_REG32_10,
     45   NFT_REG32_11,
     46   NFT_REG32_12,
     47   NFT_REG32_13,
     48   NFT_REG32_14,
     49   NFT_REG32_15,
     50 };
     51 #define NFT_REG_MAX (__NFT_REG_MAX - 1)
     52 #define NFT_REG_SIZE 16
     53 #define NFT_REG32_SIZE 4
     54 enum nft_verdicts {
     55   NFT_CONTINUE = - 1,
     56   NFT_BREAK = - 2,
     57   NFT_JUMP = - 3,
     58   NFT_GOTO = - 4,
     59   NFT_RETURN = - 5,
     60 };
     61 enum nf_tables_msg_types {
     62   NFT_MSG_NEWTABLE,
     63   NFT_MSG_GETTABLE,
     64   NFT_MSG_DELTABLE,
     65   NFT_MSG_NEWCHAIN,
     66   NFT_MSG_GETCHAIN,
     67   NFT_MSG_DELCHAIN,
     68   NFT_MSG_NEWRULE,
     69   NFT_MSG_GETRULE,
     70   NFT_MSG_DELRULE,
     71   NFT_MSG_NEWSET,
     72   NFT_MSG_GETSET,
     73   NFT_MSG_DELSET,
     74   NFT_MSG_NEWSETELEM,
     75   NFT_MSG_GETSETELEM,
     76   NFT_MSG_DELSETELEM,
     77   NFT_MSG_NEWGEN,
     78   NFT_MSG_GETGEN,
     79   NFT_MSG_TRACE,
     80   NFT_MSG_NEWOBJ,
     81   NFT_MSG_GETOBJ,
     82   NFT_MSG_DELOBJ,
     83   NFT_MSG_GETOBJ_RESET,
     84   NFT_MSG_MAX,
     85 };
     86 enum nft_list_attributes {
     87   NFTA_LIST_UNPEC,
     88   NFTA_LIST_ELEM,
     89   __NFTA_LIST_MAX
     90 };
     91 #define NFTA_LIST_MAX (__NFTA_LIST_MAX - 1)
     92 enum nft_hook_attributes {
     93   NFTA_HOOK_UNSPEC,
     94   NFTA_HOOK_HOOKNUM,
     95   NFTA_HOOK_PRIORITY,
     96   NFTA_HOOK_DEV,
     97   __NFTA_HOOK_MAX
     98 };
     99 #define NFTA_HOOK_MAX (__NFTA_HOOK_MAX - 1)
    100 enum nft_table_flags {
    101   NFT_TABLE_F_DORMANT = 0x1,
    102 };
    103 enum nft_table_attributes {
    104   NFTA_TABLE_UNSPEC,
    105   NFTA_TABLE_NAME,
    106   NFTA_TABLE_FLAGS,
    107   NFTA_TABLE_USE,
    108   __NFTA_TABLE_MAX
    109 };
    110 #define NFTA_TABLE_MAX (__NFTA_TABLE_MAX - 1)
    111 enum nft_chain_attributes {
    112   NFTA_CHAIN_UNSPEC,
    113   NFTA_CHAIN_TABLE,
    114   NFTA_CHAIN_HANDLE,
    115   NFTA_CHAIN_NAME,
    116   NFTA_CHAIN_HOOK,
    117   NFTA_CHAIN_POLICY,
    118   NFTA_CHAIN_USE,
    119   NFTA_CHAIN_TYPE,
    120   NFTA_CHAIN_COUNTERS,
    121   NFTA_CHAIN_PAD,
    122   __NFTA_CHAIN_MAX
    123 };
    124 #define NFTA_CHAIN_MAX (__NFTA_CHAIN_MAX - 1)
    125 enum nft_rule_attributes {
    126   NFTA_RULE_UNSPEC,
    127   NFTA_RULE_TABLE,
    128   NFTA_RULE_CHAIN,
    129   NFTA_RULE_HANDLE,
    130   NFTA_RULE_EXPRESSIONS,
    131   NFTA_RULE_COMPAT,
    132   NFTA_RULE_POSITION,
    133   NFTA_RULE_USERDATA,
    134   NFTA_RULE_PAD,
    135   NFTA_RULE_ID,
    136   __NFTA_RULE_MAX
    137 };
    138 #define NFTA_RULE_MAX (__NFTA_RULE_MAX - 1)
    139 enum nft_rule_compat_flags {
    140   NFT_RULE_COMPAT_F_INV = (1 << 1),
    141   NFT_RULE_COMPAT_F_MASK = NFT_RULE_COMPAT_F_INV,
    142 };
    143 enum nft_rule_compat_attributes {
    144   NFTA_RULE_COMPAT_UNSPEC,
    145   NFTA_RULE_COMPAT_PROTO,
    146   NFTA_RULE_COMPAT_FLAGS,
    147   __NFTA_RULE_COMPAT_MAX
    148 };
    149 #define NFTA_RULE_COMPAT_MAX (__NFTA_RULE_COMPAT_MAX - 1)
    150 enum nft_set_flags {
    151   NFT_SET_ANONYMOUS = 0x1,
    152   NFT_SET_CONSTANT = 0x2,
    153   NFT_SET_INTERVAL = 0x4,
    154   NFT_SET_MAP = 0x8,
    155   NFT_SET_TIMEOUT = 0x10,
    156   NFT_SET_EVAL = 0x20,
    157   NFT_SET_OBJECT = 0x40,
    158 };
    159 enum nft_set_policies {
    160   NFT_SET_POL_PERFORMANCE,
    161   NFT_SET_POL_MEMORY,
    162 };
    163 enum nft_set_desc_attributes {
    164   NFTA_SET_DESC_UNSPEC,
    165   NFTA_SET_DESC_SIZE,
    166   __NFTA_SET_DESC_MAX
    167 };
    168 #define NFTA_SET_DESC_MAX (__NFTA_SET_DESC_MAX - 1)
    169 enum nft_set_attributes {
    170   NFTA_SET_UNSPEC,
    171   NFTA_SET_TABLE,
    172   NFTA_SET_NAME,
    173   NFTA_SET_FLAGS,
    174   NFTA_SET_KEY_TYPE,
    175   NFTA_SET_KEY_LEN,
    176   NFTA_SET_DATA_TYPE,
    177   NFTA_SET_DATA_LEN,
    178   NFTA_SET_POLICY,
    179   NFTA_SET_DESC,
    180   NFTA_SET_ID,
    181   NFTA_SET_TIMEOUT,
    182   NFTA_SET_GC_INTERVAL,
    183   NFTA_SET_USERDATA,
    184   NFTA_SET_PAD,
    185   NFTA_SET_OBJ_TYPE,
    186   __NFTA_SET_MAX
    187 };
    188 #define NFTA_SET_MAX (__NFTA_SET_MAX - 1)
    189 enum nft_set_elem_flags {
    190   NFT_SET_ELEM_INTERVAL_END = 0x1,
    191 };
    192 enum nft_set_elem_attributes {
    193   NFTA_SET_ELEM_UNSPEC,
    194   NFTA_SET_ELEM_KEY,
    195   NFTA_SET_ELEM_DATA,
    196   NFTA_SET_ELEM_FLAGS,
    197   NFTA_SET_ELEM_TIMEOUT,
    198   NFTA_SET_ELEM_EXPIRATION,
    199   NFTA_SET_ELEM_USERDATA,
    200   NFTA_SET_ELEM_EXPR,
    201   NFTA_SET_ELEM_PAD,
    202   NFTA_SET_ELEM_OBJREF,
    203   __NFTA_SET_ELEM_MAX
    204 };
    205 #define NFTA_SET_ELEM_MAX (__NFTA_SET_ELEM_MAX - 1)
    206 enum nft_set_elem_list_attributes {
    207   NFTA_SET_ELEM_LIST_UNSPEC,
    208   NFTA_SET_ELEM_LIST_TABLE,
    209   NFTA_SET_ELEM_LIST_SET,
    210   NFTA_SET_ELEM_LIST_ELEMENTS,
    211   NFTA_SET_ELEM_LIST_SET_ID,
    212   __NFTA_SET_ELEM_LIST_MAX
    213 };
    214 #define NFTA_SET_ELEM_LIST_MAX (__NFTA_SET_ELEM_LIST_MAX - 1)
    215 enum nft_data_types {
    216   NFT_DATA_VALUE,
    217   NFT_DATA_VERDICT = 0xffffff00U,
    218 };
    219 #define NFT_DATA_RESERVED_MASK 0xffffff00U
    220 enum nft_data_attributes {
    221   NFTA_DATA_UNSPEC,
    222   NFTA_DATA_VALUE,
    223   NFTA_DATA_VERDICT,
    224   __NFTA_DATA_MAX
    225 };
    226 #define NFTA_DATA_MAX (__NFTA_DATA_MAX - 1)
    227 #define NFT_DATA_VALUE_MAXLEN 64
    228 enum nft_verdict_attributes {
    229   NFTA_VERDICT_UNSPEC,
    230   NFTA_VERDICT_CODE,
    231   NFTA_VERDICT_CHAIN,
    232   __NFTA_VERDICT_MAX
    233 };
    234 #define NFTA_VERDICT_MAX (__NFTA_VERDICT_MAX - 1)
    235 enum nft_expr_attributes {
    236   NFTA_EXPR_UNSPEC,
    237   NFTA_EXPR_NAME,
    238   NFTA_EXPR_DATA,
    239   __NFTA_EXPR_MAX
    240 };
    241 #define NFTA_EXPR_MAX (__NFTA_EXPR_MAX - 1)
    242 enum nft_immediate_attributes {
    243   NFTA_IMMEDIATE_UNSPEC,
    244   NFTA_IMMEDIATE_DREG,
    245   NFTA_IMMEDIATE_DATA,
    246   __NFTA_IMMEDIATE_MAX
    247 };
    248 #define NFTA_IMMEDIATE_MAX (__NFTA_IMMEDIATE_MAX - 1)
    249 enum nft_bitwise_attributes {
    250   NFTA_BITWISE_UNSPEC,
    251   NFTA_BITWISE_SREG,
    252   NFTA_BITWISE_DREG,
    253   NFTA_BITWISE_LEN,
    254   NFTA_BITWISE_MASK,
    255   NFTA_BITWISE_XOR,
    256   __NFTA_BITWISE_MAX
    257 };
    258 #define NFTA_BITWISE_MAX (__NFTA_BITWISE_MAX - 1)
    259 enum nft_byteorder_ops {
    260   NFT_BYTEORDER_NTOH,
    261   NFT_BYTEORDER_HTON,
    262 };
    263 enum nft_byteorder_attributes {
    264   NFTA_BYTEORDER_UNSPEC,
    265   NFTA_BYTEORDER_SREG,
    266   NFTA_BYTEORDER_DREG,
    267   NFTA_BYTEORDER_OP,
    268   NFTA_BYTEORDER_LEN,
    269   NFTA_BYTEORDER_SIZE,
    270   __NFTA_BYTEORDER_MAX
    271 };
    272 #define NFTA_BYTEORDER_MAX (__NFTA_BYTEORDER_MAX - 1)
    273 enum nft_cmp_ops {
    274   NFT_CMP_EQ,
    275   NFT_CMP_NEQ,
    276   NFT_CMP_LT,
    277   NFT_CMP_LTE,
    278   NFT_CMP_GT,
    279   NFT_CMP_GTE,
    280 };
    281 enum nft_cmp_attributes {
    282   NFTA_CMP_UNSPEC,
    283   NFTA_CMP_SREG,
    284   NFTA_CMP_OP,
    285   NFTA_CMP_DATA,
    286   __NFTA_CMP_MAX
    287 };
    288 #define NFTA_CMP_MAX (__NFTA_CMP_MAX - 1)
    289 enum nft_range_ops {
    290   NFT_RANGE_EQ,
    291   NFT_RANGE_NEQ,
    292 };
    293 enum nft_range_attributes {
    294   NFTA_RANGE_UNSPEC,
    295   NFTA_RANGE_SREG,
    296   NFTA_RANGE_OP,
    297   NFTA_RANGE_FROM_DATA,
    298   NFTA_RANGE_TO_DATA,
    299   __NFTA_RANGE_MAX
    300 };
    301 #define NFTA_RANGE_MAX (__NFTA_RANGE_MAX - 1)
    302 enum nft_lookup_flags {
    303   NFT_LOOKUP_F_INV = (1 << 0),
    304 };
    305 enum nft_lookup_attributes {
    306   NFTA_LOOKUP_UNSPEC,
    307   NFTA_LOOKUP_SET,
    308   NFTA_LOOKUP_SREG,
    309   NFTA_LOOKUP_DREG,
    310   NFTA_LOOKUP_SET_ID,
    311   NFTA_LOOKUP_FLAGS,
    312   __NFTA_LOOKUP_MAX
    313 };
    314 #define NFTA_LOOKUP_MAX (__NFTA_LOOKUP_MAX - 1)
    315 enum nft_dynset_ops {
    316   NFT_DYNSET_OP_ADD,
    317   NFT_DYNSET_OP_UPDATE,
    318 };
    319 enum nft_dynset_flags {
    320   NFT_DYNSET_F_INV = (1 << 0),
    321 };
    322 enum nft_dynset_attributes {
    323   NFTA_DYNSET_UNSPEC,
    324   NFTA_DYNSET_SET_NAME,
    325   NFTA_DYNSET_SET_ID,
    326   NFTA_DYNSET_OP,
    327   NFTA_DYNSET_SREG_KEY,
    328   NFTA_DYNSET_SREG_DATA,
    329   NFTA_DYNSET_TIMEOUT,
    330   NFTA_DYNSET_EXPR,
    331   NFTA_DYNSET_PAD,
    332   NFTA_DYNSET_FLAGS,
    333   __NFTA_DYNSET_MAX,
    334 };
    335 #define NFTA_DYNSET_MAX (__NFTA_DYNSET_MAX - 1)
    336 enum nft_payload_bases {
    337   NFT_PAYLOAD_LL_HEADER,
    338   NFT_PAYLOAD_NETWORK_HEADER,
    339   NFT_PAYLOAD_TRANSPORT_HEADER,
    340 };
    341 enum nft_payload_csum_types {
    342   NFT_PAYLOAD_CSUM_NONE,
    343   NFT_PAYLOAD_CSUM_INET,
    344 };
    345 enum nft_payload_csum_flags {
    346   NFT_PAYLOAD_L4CSUM_PSEUDOHDR = (1 << 0),
    347 };
    348 enum nft_payload_attributes {
    349   NFTA_PAYLOAD_UNSPEC,
    350   NFTA_PAYLOAD_DREG,
    351   NFTA_PAYLOAD_BASE,
    352   NFTA_PAYLOAD_OFFSET,
    353   NFTA_PAYLOAD_LEN,
    354   NFTA_PAYLOAD_SREG,
    355   NFTA_PAYLOAD_CSUM_TYPE,
    356   NFTA_PAYLOAD_CSUM_OFFSET,
    357   NFTA_PAYLOAD_CSUM_FLAGS,
    358   __NFTA_PAYLOAD_MAX
    359 };
    360 #define NFTA_PAYLOAD_MAX (__NFTA_PAYLOAD_MAX - 1)
    361 enum nft_exthdr_flags {
    362   NFT_EXTHDR_F_PRESENT = (1 << 0),
    363 };
    364 enum nft_exthdr_op {
    365   NFT_EXTHDR_OP_IPV6,
    366   NFT_EXTHDR_OP_TCPOPT,
    367   __NFT_EXTHDR_OP_MAX
    368 };
    369 #define NFT_EXTHDR_OP_MAX (__NFT_EXTHDR_OP_MAX - 1)
    370 enum nft_exthdr_attributes {
    371   NFTA_EXTHDR_UNSPEC,
    372   NFTA_EXTHDR_DREG,
    373   NFTA_EXTHDR_TYPE,
    374   NFTA_EXTHDR_OFFSET,
    375   NFTA_EXTHDR_LEN,
    376   NFTA_EXTHDR_FLAGS,
    377   NFTA_EXTHDR_OP,
    378   NFTA_EXTHDR_SREG,
    379   __NFTA_EXTHDR_MAX
    380 };
    381 #define NFTA_EXTHDR_MAX (__NFTA_EXTHDR_MAX - 1)
    382 enum nft_meta_keys {
    383   NFT_META_LEN,
    384   NFT_META_PROTOCOL,
    385   NFT_META_PRIORITY,
    386   NFT_META_MARK,
    387   NFT_META_IIF,
    388   NFT_META_OIF,
    389   NFT_META_IIFNAME,
    390   NFT_META_OIFNAME,
    391   NFT_META_IIFTYPE,
    392   NFT_META_OIFTYPE,
    393   NFT_META_SKUID,
    394   NFT_META_SKGID,
    395   NFT_META_NFTRACE,
    396   NFT_META_RTCLASSID,
    397   NFT_META_SECMARK,
    398   NFT_META_NFPROTO,
    399   NFT_META_L4PROTO,
    400   NFT_META_BRI_IIFNAME,
    401   NFT_META_BRI_OIFNAME,
    402   NFT_META_PKTTYPE,
    403   NFT_META_CPU,
    404   NFT_META_IIFGROUP,
    405   NFT_META_OIFGROUP,
    406   NFT_META_CGROUP,
    407   NFT_META_PRANDOM,
    408 };
    409 enum nft_rt_keys {
    410   NFT_RT_CLASSID,
    411   NFT_RT_NEXTHOP4,
    412   NFT_RT_NEXTHOP6,
    413   NFT_RT_TCPMSS,
    414 };
    415 enum nft_hash_types {
    416   NFT_HASH_JENKINS,
    417   NFT_HASH_SYM,
    418 };
    419 enum nft_hash_attributes {
    420   NFTA_HASH_UNSPEC,
    421   NFTA_HASH_SREG,
    422   NFTA_HASH_DREG,
    423   NFTA_HASH_LEN,
    424   NFTA_HASH_MODULUS,
    425   NFTA_HASH_SEED,
    426   NFTA_HASH_OFFSET,
    427   NFTA_HASH_TYPE,
    428   __NFTA_HASH_MAX,
    429 };
    430 #define NFTA_HASH_MAX (__NFTA_HASH_MAX - 1)
    431 enum nft_meta_attributes {
    432   NFTA_META_UNSPEC,
    433   NFTA_META_DREG,
    434   NFTA_META_KEY,
    435   NFTA_META_SREG,
    436   __NFTA_META_MAX
    437 };
    438 #define NFTA_META_MAX (__NFTA_META_MAX - 1)
    439 enum nft_rt_attributes {
    440   NFTA_RT_UNSPEC,
    441   NFTA_RT_DREG,
    442   NFTA_RT_KEY,
    443   __NFTA_RT_MAX
    444 };
    445 #define NFTA_RT_MAX (__NFTA_RT_MAX - 1)
    446 enum nft_ct_keys {
    447   NFT_CT_STATE,
    448   NFT_CT_DIRECTION,
    449   NFT_CT_STATUS,
    450   NFT_CT_MARK,
    451   NFT_CT_SECMARK,
    452   NFT_CT_EXPIRATION,
    453   NFT_CT_HELPER,
    454   NFT_CT_L3PROTOCOL,
    455   NFT_CT_SRC,
    456   NFT_CT_DST,
    457   NFT_CT_PROTOCOL,
    458   NFT_CT_PROTO_SRC,
    459   NFT_CT_PROTO_DST,
    460   NFT_CT_LABELS,
    461   NFT_CT_PKTS,
    462   NFT_CT_BYTES,
    463   NFT_CT_AVGPKT,
    464   NFT_CT_ZONE,
    465   NFT_CT_EVENTMASK,
    466 };
    467 enum nft_ct_attributes {
    468   NFTA_CT_UNSPEC,
    469   NFTA_CT_DREG,
    470   NFTA_CT_KEY,
    471   NFTA_CT_DIRECTION,
    472   NFTA_CT_SREG,
    473   __NFTA_CT_MAX
    474 };
    475 #define NFTA_CT_MAX (__NFTA_CT_MAX - 1)
    476 enum nft_limit_type {
    477   NFT_LIMIT_PKTS,
    478   NFT_LIMIT_PKT_BYTES
    479 };
    480 enum nft_limit_flags {
    481   NFT_LIMIT_F_INV = (1 << 0),
    482 };
    483 enum nft_limit_attributes {
    484   NFTA_LIMIT_UNSPEC,
    485   NFTA_LIMIT_RATE,
    486   NFTA_LIMIT_UNIT,
    487   NFTA_LIMIT_BURST,
    488   NFTA_LIMIT_TYPE,
    489   NFTA_LIMIT_FLAGS,
    490   NFTA_LIMIT_PAD,
    491   __NFTA_LIMIT_MAX
    492 };
    493 #define NFTA_LIMIT_MAX (__NFTA_LIMIT_MAX - 1)
    494 enum nft_counter_attributes {
    495   NFTA_COUNTER_UNSPEC,
    496   NFTA_COUNTER_BYTES,
    497   NFTA_COUNTER_PACKETS,
    498   NFTA_COUNTER_PAD,
    499   __NFTA_COUNTER_MAX
    500 };
    501 #define NFTA_COUNTER_MAX (__NFTA_COUNTER_MAX - 1)
    502 enum nft_log_attributes {
    503   NFTA_LOG_UNSPEC,
    504   NFTA_LOG_GROUP,
    505   NFTA_LOG_PREFIX,
    506   NFTA_LOG_SNAPLEN,
    507   NFTA_LOG_QTHRESHOLD,
    508   NFTA_LOG_LEVEL,
    509   NFTA_LOG_FLAGS,
    510   __NFTA_LOG_MAX
    511 };
    512 #define NFTA_LOG_MAX (__NFTA_LOG_MAX - 1)
    513 enum nft_queue_attributes {
    514   NFTA_QUEUE_UNSPEC,
    515   NFTA_QUEUE_NUM,
    516   NFTA_QUEUE_TOTAL,
    517   NFTA_QUEUE_FLAGS,
    518   NFTA_QUEUE_SREG_QNUM,
    519   __NFTA_QUEUE_MAX
    520 };
    521 #define NFTA_QUEUE_MAX (__NFTA_QUEUE_MAX - 1)
    522 #define NFT_QUEUE_FLAG_BYPASS 0x01
    523 #define NFT_QUEUE_FLAG_CPU_FANOUT 0x02
    524 #define NFT_QUEUE_FLAG_MASK 0x03
    525 enum nft_quota_flags {
    526   NFT_QUOTA_F_INV = (1 << 0),
    527   NFT_QUOTA_F_DEPLETED = (1 << 1),
    528 };
    529 enum nft_quota_attributes {
    530   NFTA_QUOTA_UNSPEC,
    531   NFTA_QUOTA_BYTES,
    532   NFTA_QUOTA_FLAGS,
    533   NFTA_QUOTA_PAD,
    534   NFTA_QUOTA_CONSUMED,
    535   __NFTA_QUOTA_MAX
    536 };
    537 #define NFTA_QUOTA_MAX (__NFTA_QUOTA_MAX - 1)
    538 enum nft_reject_types {
    539   NFT_REJECT_ICMP_UNREACH,
    540   NFT_REJECT_TCP_RST,
    541   NFT_REJECT_ICMPX_UNREACH,
    542 };
    543 enum nft_reject_inet_code {
    544   NFT_REJECT_ICMPX_NO_ROUTE = 0,
    545   NFT_REJECT_ICMPX_PORT_UNREACH,
    546   NFT_REJECT_ICMPX_HOST_UNREACH,
    547   NFT_REJECT_ICMPX_ADMIN_PROHIBITED,
    548   __NFT_REJECT_ICMPX_MAX
    549 };
    550 #define NFT_REJECT_ICMPX_MAX (__NFT_REJECT_ICMPX_MAX - 1)
    551 enum nft_reject_attributes {
    552   NFTA_REJECT_UNSPEC,
    553   NFTA_REJECT_TYPE,
    554   NFTA_REJECT_ICMP_CODE,
    555   __NFTA_REJECT_MAX
    556 };
    557 #define NFTA_REJECT_MAX (__NFTA_REJECT_MAX - 1)
    558 enum nft_nat_types {
    559   NFT_NAT_SNAT,
    560   NFT_NAT_DNAT,
    561 };
    562 enum nft_nat_attributes {
    563   NFTA_NAT_UNSPEC,
    564   NFTA_NAT_TYPE,
    565   NFTA_NAT_FAMILY,
    566   NFTA_NAT_REG_ADDR_MIN,
    567   NFTA_NAT_REG_ADDR_MAX,
    568   NFTA_NAT_REG_PROTO_MIN,
    569   NFTA_NAT_REG_PROTO_MAX,
    570   NFTA_NAT_FLAGS,
    571   __NFTA_NAT_MAX
    572 };
    573 #define NFTA_NAT_MAX (__NFTA_NAT_MAX - 1)
    574 enum nft_masq_attributes {
    575   NFTA_MASQ_UNSPEC,
    576   NFTA_MASQ_FLAGS,
    577   NFTA_MASQ_REG_PROTO_MIN,
    578   NFTA_MASQ_REG_PROTO_MAX,
    579   __NFTA_MASQ_MAX
    580 };
    581 #define NFTA_MASQ_MAX (__NFTA_MASQ_MAX - 1)
    582 enum nft_redir_attributes {
    583   NFTA_REDIR_UNSPEC,
    584   NFTA_REDIR_REG_PROTO_MIN,
    585   NFTA_REDIR_REG_PROTO_MAX,
    586   NFTA_REDIR_FLAGS,
    587   __NFTA_REDIR_MAX
    588 };
    589 #define NFTA_REDIR_MAX (__NFTA_REDIR_MAX - 1)
    590 enum nft_dup_attributes {
    591   NFTA_DUP_UNSPEC,
    592   NFTA_DUP_SREG_ADDR,
    593   NFTA_DUP_SREG_DEV,
    594   __NFTA_DUP_MAX
    595 };
    596 #define NFTA_DUP_MAX (__NFTA_DUP_MAX - 1)
    597 enum nft_fwd_attributes {
    598   NFTA_FWD_UNSPEC,
    599   NFTA_FWD_SREG_DEV,
    600   __NFTA_FWD_MAX
    601 };
    602 #define NFTA_FWD_MAX (__NFTA_FWD_MAX - 1)
    603 enum nft_objref_attributes {
    604   NFTA_OBJREF_UNSPEC,
    605   NFTA_OBJREF_IMM_TYPE,
    606   NFTA_OBJREF_IMM_NAME,
    607   NFTA_OBJREF_SET_SREG,
    608   NFTA_OBJREF_SET_NAME,
    609   NFTA_OBJREF_SET_ID,
    610   __NFTA_OBJREF_MAX
    611 };
    612 #define NFTA_OBJREF_MAX (__NFTA_OBJREF_MAX - 1)
    613 enum nft_gen_attributes {
    614   NFTA_GEN_UNSPEC,
    615   NFTA_GEN_ID,
    616   NFTA_GEN_PROC_PID,
    617   NFTA_GEN_PROC_NAME,
    618   __NFTA_GEN_MAX
    619 };
    620 #define NFTA_GEN_MAX (__NFTA_GEN_MAX - 1)
    621 enum nft_fib_attributes {
    622   NFTA_FIB_UNSPEC,
    623   NFTA_FIB_DREG,
    624   NFTA_FIB_RESULT,
    625   NFTA_FIB_FLAGS,
    626   __NFTA_FIB_MAX
    627 };
    628 #define NFTA_FIB_MAX (__NFTA_FIB_MAX - 1)
    629 enum nft_fib_result {
    630   NFT_FIB_RESULT_UNSPEC,
    631   NFT_FIB_RESULT_OIF,
    632   NFT_FIB_RESULT_OIFNAME,
    633   NFT_FIB_RESULT_ADDRTYPE,
    634   __NFT_FIB_RESULT_MAX
    635 };
    636 #define NFT_FIB_RESULT_MAX (__NFT_FIB_RESULT_MAX - 1)
    637 enum nft_fib_flags {
    638   NFTA_FIB_F_SADDR = 1 << 0,
    639   NFTA_FIB_F_DADDR = 1 << 1,
    640   NFTA_FIB_F_MARK = 1 << 2,
    641   NFTA_FIB_F_IIF = 1 << 3,
    642   NFTA_FIB_F_OIF = 1 << 4,
    643   NFTA_FIB_F_PRESENT = 1 << 5,
    644 };
    645 enum nft_ct_helper_attributes {
    646   NFTA_CT_HELPER_UNSPEC,
    647   NFTA_CT_HELPER_NAME,
    648   NFTA_CT_HELPER_L3PROTO,
    649   NFTA_CT_HELPER_L4PROTO,
    650   __NFTA_CT_HELPER_MAX,
    651 };
    652 #define NFTA_CT_HELPER_MAX (__NFTA_CT_HELPER_MAX - 1)
    653 #define NFT_OBJECT_UNSPEC 0
    654 #define NFT_OBJECT_COUNTER 1
    655 #define NFT_OBJECT_QUOTA 2
    656 #define NFT_OBJECT_CT_HELPER 3
    657 #define NFT_OBJECT_LIMIT 4
    658 #define __NFT_OBJECT_MAX 5
    659 #define NFT_OBJECT_MAX (__NFT_OBJECT_MAX - 1)
    660 enum nft_object_attributes {
    661   NFTA_OBJ_UNSPEC,
    662   NFTA_OBJ_TABLE,
    663   NFTA_OBJ_NAME,
    664   NFTA_OBJ_TYPE,
    665   NFTA_OBJ_DATA,
    666   NFTA_OBJ_USE,
    667   __NFTA_OBJ_MAX
    668 };
    669 #define NFTA_OBJ_MAX (__NFTA_OBJ_MAX - 1)
    670 enum nft_trace_attributes {
    671   NFTA_TRACE_UNSPEC,
    672   NFTA_TRACE_TABLE,
    673   NFTA_TRACE_CHAIN,
    674   NFTA_TRACE_RULE_HANDLE,
    675   NFTA_TRACE_TYPE,
    676   NFTA_TRACE_VERDICT,
    677   NFTA_TRACE_ID,
    678   NFTA_TRACE_LL_HEADER,
    679   NFTA_TRACE_NETWORK_HEADER,
    680   NFTA_TRACE_TRANSPORT_HEADER,
    681   NFTA_TRACE_IIF,
    682   NFTA_TRACE_IIFTYPE,
    683   NFTA_TRACE_OIF,
    684   NFTA_TRACE_OIFTYPE,
    685   NFTA_TRACE_MARK,
    686   NFTA_TRACE_NFPROTO,
    687   NFTA_TRACE_POLICY,
    688   NFTA_TRACE_PAD,
    689   __NFTA_TRACE_MAX
    690 };
    691 #define NFTA_TRACE_MAX (__NFTA_TRACE_MAX - 1)
    692 enum nft_trace_types {
    693   NFT_TRACETYPE_UNSPEC,
    694   NFT_TRACETYPE_POLICY,
    695   NFT_TRACETYPE_RETURN,
    696   NFT_TRACETYPE_RULE,
    697   __NFT_TRACETYPE_MAX
    698 };
    699 #define NFT_TRACETYPE_MAX (__NFT_TRACETYPE_MAX - 1)
    700 enum nft_ng_attributes {
    701   NFTA_NG_UNSPEC,
    702   NFTA_NG_DREG,
    703   NFTA_NG_MODULUS,
    704   NFTA_NG_TYPE,
    705   NFTA_NG_OFFSET,
    706   __NFTA_NG_MAX
    707 };
    708 #define NFTA_NG_MAX (__NFTA_NG_MAX - 1)
    709 enum nft_ng_types {
    710   NFT_NG_INCREMENTAL,
    711   NFT_NG_RANDOM,
    712   __NFT_NG_MAX
    713 };
    714 #define NFT_NG_MAX (__NFT_NG_MAX - 1)
    715 #endif
    716