| # Copyright 2018 syzkaller project authors. All rights reserved. |
| # Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file. |
| |
| include <linux/socket.h> |
| include <uapi/linux/limits.h> |
| include <uapi/linux/ip_vs.h> |
| include <uapi/linux/netfilter/x_tables.h> |
| include <uapi/linux/netfilter/xt_rpfilter.h> |
| include <uapi/linux/netfilter/xt_cgroup.h> |
| include <uapi/linux/netfilter/xt_rateest.h> |
| include <uapi/linux/netfilter/xt_l2tp.h> |
| include <uapi/linux/netfilter/xt_time.h> |
| include <uapi/linux/netfilter/xt_bpf.h> |
| include <uapi/linux/netfilter/xt_socket.h> |
| include <uapi/linux/netfilter/xt_connlimit.h> |
| include <uapi/linux/netfilter/xt_conntrack.h> |
| include <uapi/linux/netfilter/xt_tcpudp.h> |
| include <uapi/linux/netfilter/xt_set.h> |
| include <uapi/linux/netfilter/xt_mark.h> |
| include <uapi/linux/netfilter/xt_connmark.h> |
| include <uapi/linux/netfilter/xt_realm.h> |
| include <uapi/linux/netfilter/xt_connbytes.h> |
| include <uapi/linux/netfilter/xt_quota.h> |
| include <uapi/linux/netfilter/xt_sctp.h> |
| include <uapi/linux/netfilter/xt_limit.h> |
| include <uapi/linux/netfilter/xt_addrtype.h> |
| include <uapi/linux/netfilter/xt_ipvs.h> |
| include <uapi/linux/netfilter/xt_dccp.h> |
| include <uapi/linux/netfilter/xt_hashlimit.h> |
| include <uapi/linux/netfilter/xt_nfacct.h> |
| include <uapi/linux/netfilter/xt_length.h> |
| include <uapi/linux/netfilter/xt_mac.h> |
| include <uapi/linux/netfilter/xt_comment.h> |
| include <uapi/linux/netfilter/xt_ipcomp.h> |
| include <uapi/linux/netfilter/xt_statistic.h> |
| include <uapi/linux/netfilter/xt_recent.h> |
| include <uapi/linux/netfilter/xt_dscp.h> |
| include <uapi/linux/netfilter/xt_policy.h> |
| include <uapi/linux/netfilter/xt_tcpmss.h> |
| include <uapi/linux/netfilter/xt_string.h> |
| include <uapi/linux/netfilter/xt_physdev.h> |
| include <uapi/linux/netfilter/xt_connlabel.h> |
| include <uapi/linux/netfilter/xt_devgroup.h> |
| include <uapi/linux/netfilter/xt_multiport.h> |
| include <uapi/linux/netfilter/xt_cluster.h> |
| include <uapi/linux/netfilter/xt_ecn.h> |
| include <uapi/linux/netfilter/xt_owner.h> |
| include <uapi/linux/netfilter/xt_pkttype.h> |
| include <uapi/linux/netfilter/xt_u32.h> |
| include <uapi/linux/netfilter/xt_iprange.h> |
| include <uapi/linux/netfilter/xt_esp.h> |
| include <uapi/linux/netfilter/xt_cpu.h> |
| include <uapi/linux/netfilter/xt_state.h> |
| |
| # Netfilter matches shared between ipv6/ipv6. |
| |
| # TODO: add CONFIG_NF_FLOW_TABLE* support. |
| |
| define IPT_FILTER_VALID_HOOKS NF_INET_LOCAL_IN_BIT | NF_INET_FORWARD_BIT | NF_INET_LOCAL_OUT_BIT |
| define IPT_NAT_VALID_HOOKS NF_INET_PRE_ROUTING_BIT | NF_INET_POST_ROUTING_BIT | NF_INET_LOCAL_OUT_BIT | NF_INET_LOCAL_IN_BIT |
| define IPT_MANGLE_VALID_HOOKS NF_INET_PRE_ROUTING_BIT | NF_INET_POST_ROUTING_BIT | NF_INET_FORWARD_BIT |NF_INET_LOCAL_OUT_BIT | NF_INET_LOCAL_IN_BIT |
| define IPT_RAW_VALID_HOOKS NF_INET_PRE_ROUTING_BIT | NF_INET_LOCAL_OUT_BIT |
| define IPT_SECURITY_VALID_HOOKS NF_INET_LOCAL_IN_BIT | NF_INET_FORWARD_BIT | NF_INET_LOCAL_OUT_BIT |
| |
| define NF_INET_PRE_ROUTING_BIT 1 << NF_INET_PRE_ROUTING |
| define NF_INET_LOCAL_IN_BIT 1 << NF_INET_LOCAL_IN |
| define NF_INET_FORWARD_BIT 1 << NF_INET_FORWARD |
| define NF_INET_LOCAL_OUT_BIT 1 << NF_INET_LOCAL_OUT |
| define NF_INET_POST_ROUTING_BIT 1 << NF_INET_POST_ROUTING |
| |
| xt_counters { |
| pcnt const[0, int64] |
| bcnt const[0, int64] |
| } |
| |
| xt_get_revision { |
| name string[xt_get_revision_strings, XT_EXTENSION_MAXNAMELEN] |
| revision const[0, int8] |
| } |
| |
| xt_get_revision_strings = "icmp", "ah", "NETMAP", "TPROXY", "ipvs", "IDLETIMER", "icmp6", "HL" |
| |
| nf_inet_addr [ |
| ipv4 ipv4_addr |
| ipv6 ipv6_addr |
| ] |
| |
| nf_conntrack_man_proto [ |
| port sock_port |
| icmp_id icmp_id |
| # TODO: what is gre key? do we have it already in gre descriptions in vnet.txt? |
| gre_key int16 |
| ] |
| |
| type xt_entry_match[NAME, DATA, REV] { |
| match_size len[parent, int16] |
| name string[NAME, XT_EXTENSION_MAXNAMELEN] |
| revision const[REV, int8] |
| data DATA |
| } [align_ptr] |
| |
| xt_unspec_matches [ |
| cgroup0 xt_entry_match["cgroup", xt_cgroup_info_v0, 0] |
| cgroup1 xt_entry_match["cgroup", xt_cgroup_info_v1, 1] |
| helper xt_entry_match["helper", xt_helper_info, 0] |
| rateest xt_entry_match["rateest", xt_rateest_match_info, 0] |
| time xt_entry_match["time", xt_time_info, 0] |
| bpf0 xt_entry_match["bpf", xt_bpf_info, 0] |
| bpf1 xt_entry_match["bpf", xt_bpf_info_v1, 1] |
| connlimit xt_entry_match["connlimit", xt_connlimit_info, 1] |
| conntrack1 xt_entry_match["conntrack", xt_conntrack_mtinfo1, 1] |
| conntrack2 xt_entry_match["conntrack", xt_conntrack_mtinfo2, 2] |
| conntrack3 xt_entry_match["conntrack", xt_conntrack_mtinfo3, 3] |
| mark xt_entry_match["mark", xt_mark_mtinfo1, 1] |
| connmark xt_entry_match["connmark", xt_connmark_mtinfo1, 1] |
| realm xt_entry_match["realm", xt_realm_info, 0] |
| connbytes xt_entry_match["connbytes", xt_connbytes_info, 0] |
| quota xt_entry_match["quota", xt_quota_info, 0] |
| limit xt_entry_match["limit", xt_rateinfo, 0] |
| addrtype1 xt_entry_match["addrtype", xt_addrtype_info_v1, 1] |
| ipvs xt_entry_match["ipvs", xt_ipvs_mtinfo, 0] |
| nfacct xt_entry_match["nfacct", xt_nfacct_match_info, 0] |
| mac xt_entry_match["mac", xt_mac_info, 0] |
| comment xt_entry_match["comment", xt_comment_info, 0] |
| statistic xt_entry_match["statistic", xt_statistic_info, 0] |
| string xt_entry_match["string", xt_string_info, 1] |
| physdev xt_entry_match["physdev", xt_physdev_info, 0] |
| connlabel xt_entry_match["connlabel", xt_connlabel_mtinfo, 0] |
| devgroup xt_entry_match["devgroup", xt_devgroup_info, 0] |
| cluster xt_entry_match["cluster", xt_cluster_match_info, 0] |
| owner xt_entry_match["owner", xt_owner_match_info, 0] |
| pkttype xt_entry_match["pkttype", xt_pkttype_info, 0] |
| u32 xt_entry_match["u32", xt_u32, 0] |
| cpu xt_entry_match["cpu", xt_cpu_info, 0] |
| state xt_entry_match["state", xt_state_info, 0] |
| ] [varlen] |
| |
| xt_inet_matches [ |
| l2tp xt_entry_match["l2tp", xt_l2tp_info, 0] |
| socket1 xt_entry_match["socket", flags[xt_socket_flags_v1, int8], 1] |
| socket2 xt_entry_match["socket", flags[xt_socket_flags_v2, int8], 2] |
| socket3 xt_entry_match["socket", flags[xt_socket_flags_v3, int8], 3] |
| tcp xt_entry_match["tcp", xt_tcp, 0] |
| udp xt_entry_match["udp", xt_udp, 0] |
| udplite xt_entry_match["udplite", xt_udp, 0] |
| set1 xt_entry_match["set", xt_set_info_match_v1, 1] |
| set2 xt_entry_match["set", xt_set_info_match_v1, 2] |
| set3 xt_entry_match["set", xt_set_info_match_v3, 3] |
| set4 xt_entry_match["set", xt_set_info_match_v4, 4] |
| sctp xt_entry_match["sctp", xt_sctp_info, 0] |
| dccp xt_entry_match["dccp", xt_dccp_info, 0] |
| hashlimit1 xt_entry_match["hashlimit", xt_hashlimit_mtinfo1, 1] |
| hashlimit2 xt_entry_match["hashlimit", xt_hashlimit_mtinfo2, 2] |
| hashlimit3 xt_entry_match["hashlimit", xt_hashlimit_mtinfo3, 3] |
| length xt_entry_match["length", xt_length_info, 0] |
| ipcomp xt_entry_match["ipcomp", xt_ipcomp, 0] |
| recent0 xt_entry_match["recent", xt_recent_mtinfo, 0] |
| recent1 xt_entry_match["recent", xt_recent_mtinfo_v1, 0] |
| dscp xt_entry_match["dscp", xt_dscp_info, 0] |
| tos xt_entry_match["tos", xt_tos_match_info, 0] |
| policy xt_entry_match["policy", xt_policy_info, 0] |
| tcpmss xt_entry_match["tcpmss", xt_tcpmss_match_info, 0] |
| multiport xt_entry_match["multiport", xt_multiport_v1, 1] |
| ecn xt_entry_match["ecn", xt_ecn_info, 0] |
| iprange xt_entry_match["iprange", xt_iprange_mtinfo, 1] |
| esp xt_entry_match["esp", xt_esp, 0] |
| ] [varlen] |
| |
| xt_inet_mangle_matches [ |
| rpfilter xt_entry_match["rpfilter", xt_rpfilter_info, 0] |
| ] [varlen] |
| |
| xt_inet_raw_matches [ |
| rpfilter xt_entry_match["rpfilter", xt_rpfilter_info, 0] |
| ] [varlen] |
| |
| xt_socket_flags_v1 = XT_SOCKET_TRANSPARENT |
| xt_socket_flags_v2 = XT_SOCKET_TRANSPARENT, XT_SOCKET_NOWILDCARD |
| xt_socket_flags_v3 = XT_SOCKET_TRANSPARENT, XT_SOCKET_NOWILDCARD, XT_SOCKET_RESTORESKMARK |
| |
| xt_rpfilter_info { |
| flags flags[xt_rpfilter_flags, int8] |
| } |
| |
| xt_rpfilter_flags = XT_RPFILTER_LOOSE, XT_RPFILTER_VALID_MARK, XT_RPFILTER_ACCEPT_LOCAL, XT_RPFILTER_INVERT |
| |
| xt_cgroup_info_v0 { |
| # TODO: this is some "cgroup classid", what's this? |
| id int32 |
| invert bool32 |
| } |
| |
| xt_cgroup_info_v1 { |
| has_path bool8 |
| has_classid bool8 |
| invert_path bool8 |
| invert_classid bool8 |
| path string[cgroup_paths, PATH_MAX] |
| # TODO: again "cgroup classid" |
| classid int32 |
| priv intptr |
| } |
| |
| xt_helper_info { |
| invert bool32 |
| name string[xt_helper_names, 30] |
| } |
| |
| xt_helper_names = "ftp-20000", "tftp-20000", "sip-20000", "irc-20000", "sane-20000", "amanda", "RAS", "Q.931", "H.245" |
| |
| xt_rateest_match_info { |
| name1 devname |
| name2 devname |
| flags flags[xt_rateest_match_flags, int16] |
| mode flags[xt_rateest_match_mode, int16] |
| bps1 int32 |
| pps1 int32 |
| bps2 int32 |
| pps2 int32 |
| est1 intptr |
| est2 intptr |
| } |
| |
| xt_rateest_match_flags = XT_RATEEST_MATCH_INVERT, XT_RATEEST_MATCH_ABS, XT_RATEEST_MATCH_REL, XT_RATEEST_MATCH_DELTA, XT_RATEEST_MATCH_BPS, XT_RATEEST_MATCH_PPS |
| xt_rateest_match_mode = XT_RATEEST_MATCH_NONE, XT_RATEEST_MATCH_EQ, XT_RATEEST_MATCH_LT, XT_RATEEST_MATCH_GT |
| |
| xt_l2tp_info { |
| tid l2tp_tunnel32 |
| sid l2tp_session32 |
| version int8[2:3] |
| type flags[xt_l2tp_type, int8] |
| flags flags[xt_l2tp_flags, int8] |
| } |
| |
| xt_l2tp_type = XT_L2TP_TYPE_CONTROL, XT_L2TP_TYPE_DATA |
| xt_l2tp_flags = XT_L2TP_TID, XT_L2TP_SID, XT_L2TP_VERSION, XT_L2TP_TYPE |
| |
| xt_time_info { |
| date_start int32 |
| date_stop int32 |
| daytime_start int32[0:XT_TIME_MAX_DAYTIME] |
| daytime_stop int32[0:XT_TIME_MAX_DAYTIME] |
| monthdays_match int32 |
| weekdays_match int8 |
| flags flags[xt_time_flags, int8] |
| } |
| |
| xt_time_flags = XT_TIME_LOCAL_TZ, XT_TIME_CONTIGUOUS |
| |
| xt_bpf_info { |
| bpf_program_num_elem int16[0:XT_BPF_MAX_NUM_INSTR] |
| bpf_program array[sock_filter, XT_BPF_MAX_NUM_INSTR] |
| filter intptr |
| } |
| |
| xt_bpf_info_v1 [ |
| bytecode xt_bpf_info_bytecode |
| pinned xt_bpf_info_pinned |
| fd xt_bpf_info_fd |
| ] |
| |
| xt_bpf_info_bytecode { |
| mode const[XT_BPF_MODE_BYTECODE, int16] |
| bpf_program_num_elem int16[0:XT_BPF_MAX_NUM_INSTR] |
| fd const[0, int32] |
| bpf_program array[sock_filter, XT_BPF_MAX_NUM_INSTR] |
| filter intptr |
| } |
| |
| xt_bpf_info_pinned { |
| mode const[XT_BPF_MODE_FD_PINNED, int16] |
| bpf_program_num_elem const[0, int16] |
| fd const[0, int32] |
| path string[filename, XT_BPF_PATH_MAX] |
| filter intptr |
| } |
| |
| xt_bpf_info_fd { |
| mode const[XT_BPF_MODE_FD_ELF, int16] |
| bpf_program_num_elem const[0, int16] |
| fd fd_bpf_prog |
| } |
| |
| xt_connlimit_info { |
| mask ipv6_addr_mask |
| limit int32 |
| flags flags[xt_connlimit_flags, int32] |
| data intptr |
| } |
| |
| xt_connlimit_flags = XT_CONNLIMIT_INVERT, XT_CONNLIMIT_DADDR |
| |
| xt_conntrack_mtinfo_common { |
| origsrc_addr nf_inet_addr |
| origsrc_mask ipv6_addr_mask |
| origdst_addr nf_inet_addr |
| origdst_mask ipv6_addr_mask |
| replsrc_addr nf_inet_addr |
| replsrc_mask ipv6_addr_mask |
| repldst_addr nf_inet_addr |
| repldst_mask ipv6_addr_mask |
| expires_min int32 |
| expires_max int32 |
| l4proto flags[ipv6_types, int16] |
| origsrc_port sock_port |
| origdst_port sock_port |
| replsrc_port sock_port |
| repldst_port sock_port |
| match_flags flags[xt_conntrack_flags, int16] |
| invert_flags flags[xt_conntrack_flags, int16] |
| } |
| |
| xt_conntrack_mtinfo1 { |
| common xt_conntrack_mtinfo_common |
| state_mask flags[xt_conntrack_state, int8] |
| status_mask flags[xt_conntrack_status, int8] |
| } |
| |
| xt_conntrack_mtinfo2 { |
| common xt_conntrack_mtinfo_common |
| state_mask flags[xt_conntrack_state, int16] |
| status_mask flags[xt_conntrack_status, int16] |
| } |
| |
| xt_conntrack_mtinfo3 { |
| common xt_conntrack_mtinfo_common |
| state_mask flags[xt_conntrack_state, int16] |
| status_mask flags[xt_conntrack_status, int16] |
| origsrc_port_high sock_port |
| origdst_port_high sock_port |
| replsrc_port_high sock_port |
| repldst_port_high sock_port |
| } |
| |
| xt_conntrack_flags = XT_CONNTRACK_STATE, XT_CONNTRACK_PROTO, XT_CONNTRACK_ORIGSRC, XT_CONNTRACK_ORIGDST, XT_CONNTRACK_REPLSRC, XT_CONNTRACK_REPLDST, XT_CONNTRACK_STATUS, XT_CONNTRACK_EXPIRES, XT_CONNTRACK_ORIGSRC_PORT, XT_CONNTRACK_ORIGDST_PORT, XT_CONNTRACK_REPLSRC_PORT, XT_CONNTRACK_REPLDST_PORT, XT_CONNTRACK_DIRECTION, XT_CONNTRACK_STATE_ALIAS |
| xt_conntrack_state = XT_CONNTRACK_STATE_INVALID, XT_CONNTRACK_STATE_SNAT, XT_CONNTRACK_STATE_DNAT, XT_CONNTRACK_STATE_UNTRACKED |
| xt_conntrack_status = IPS_EXPECTED, IPS_SEEN_REPLY, IPS_ASSURED, IPS_CONFIRMED, IPS_SRC_NAT, IPS_DST_NAT, IPS_SEQ_ADJUST, IPS_SRC_NAT_DONE, IPS_DST_NAT_DONE, IPS_DYING, IPS_FIXED_TIMEOUT, IPS_TEMPLATE, IPS_UNTRACKED, IPS_HELPER |
| |
| xt_tcp { |
| spts_min sock_port |
| spts_max sock_port |
| dpts_min sock_port |
| dpts_max sock_port |
| option flags[tcp_option_types, int8] |
| flg_mask flags[tcp_flags, int8] |
| flg_cmp flags[tcp_flags, int8] |
| invflags flags[xt_tcp_inv_flags, int8] |
| } |
| |
| xt_tcp_inv_flags = XT_TCP_INV_SRCPT, XT_TCP_INV_DSTPT, XT_TCP_INV_FLAGS, XT_TCP_INV_OPTION |
| |
| xt_udp { |
| spts_min sock_port |
| spts_max sock_port |
| dpts_min sock_port |
| dpts_max sock_port |
| invflags flags[xt_udp_inv_flags, int8] |
| } |
| |
| xt_udp_inv_flags = XT_UDP_INV_SRCPT, XT_UDP_INV_DSTPT |
| |
| xt_set_info_match_v0 { |
| match_set xt_set_info_v0 |
| } |
| |
| xt_set_info_match_v1 { |
| match_set xt_set_info |
| } |
| |
| xt_set_info_match_v3 { |
| match_set xt_set_info |
| packets ip_set_counter_match0 |
| bytes ip_set_counter_match0 |
| flags int32 |
| } |
| |
| xt_set_info_match_v4 { |
| match_set xt_set_info |
| packets ip_set_counter_match |
| bytes ip_set_counter_match |
| flags int32 |
| } |
| |
| xt_mark_mtinfo1 { |
| mark int32 |
| mask int32 |
| invert bool8 |
| } |
| |
| xt_connmark_mtinfo1 { |
| mark int32 |
| mask int32 |
| invert bool32 |
| } |
| |
| xt_realm_info { |
| id int32 |
| mask int32 |
| invert bool8 |
| } |
| |
| xt_connbytes_info { |
| count_from int64 |
| count_to int64 |
| what flags[xt_connbytes_what, int8] |
| direction flags[xt_connbytes_direction, int8] |
| } |
| |
| xt_connbytes_what = XT_CONNBYTES_PKTS, XT_CONNBYTES_BYTES, XT_CONNBYTES_AVGPKT |
| xt_connbytes_direction = XT_CONNBYTES_DIR_ORIGINAL, XT_CONNBYTES_DIR_REPLY, XT_CONNBYTES_DIR_BOTH |
| |
| xt_quota_info { |
| flags bool32 |
| pad const[0, int32] |
| quota int64 |
| master intptr |
| } |
| |
| xt_sctp_info { |
| dpts_min sock_port |
| dpts_max sock_port |
| spts_min sock_port |
| spts_max sock_port |
| chunkmap array[int32, 64] |
| chunk_match_type flags[xt_sctp_match_type, int32] |
| flag_info array[xt_sctp_flag_info, XT_NUM_SCTP_FLAGS] |
| flag_count int32[0:XT_NUM_SCTP_FLAGS] |
| flags flags[xt_sctp_flags, int32] |
| invflags flags[xt_sctp_flags, int32] |
| } |
| |
| xt_sctp_match_type = SCTP_CHUNK_MATCH_ANY, SCTP_CHUNK_MATCH_ALL, SCTP_CHUNK_MATCH_ONLY |
| xt_sctp_flags = XT_SCTP_SRC_PORTS, XT_SCTP_DEST_PORTS, XT_SCTP_CHUNK_TYPES |
| |
| xt_sctp_flag_info { |
| chunktype int8 |
| flag int8 |
| flag_mask int8 |
| } |
| |
| xt_rateinfo { |
| avg int32 |
| burst int32 |
| prev intptr |
| credit int32 |
| credit_cap int32 |
| cost int32 |
| master intptr |
| } |
| |
| xt_addrtype_info { |
| source flags[xt_addrtype_type, int16] |
| dest flags[xt_addrtype_type, int16] |
| invert_source bool32 |
| invert_dest bool32 |
| } |
| |
| xt_addrtype_info_v1 { |
| source flags[xt_addrtype_type, int16] |
| dest flags[xt_addrtype_type, int16] |
| flags flags[xt_addrtype_flags, int32] |
| } |
| |
| xt_addrtype_type = XT_ADDRTYPE_UNSPEC, XT_ADDRTYPE_UNICAST, XT_ADDRTYPE_LOCAL, XT_ADDRTYPE_BROADCAST, XT_ADDRTYPE_ANYCAST, XT_ADDRTYPE_MULTICAST, XT_ADDRTYPE_BLACKHOLE, XT_ADDRTYPE_UNREACHABLE, XT_ADDRTYPE_PROHIBIT, XT_ADDRTYPE_THROW, XT_ADDRTYPE_NAT, XT_ADDRTYPE_XRESOLVE |
| xt_addrtype_flags = XT_ADDRTYPE_INVERT_SOURCE, XT_ADDRTYPE_INVERT_DEST, XT_ADDRTYPE_LIMIT_IFACE_IN, XT_ADDRTYPE_LIMIT_IFACE_OUT |
| |
| xt_ipvs_mtinfo { |
| vaddr nf_inet_addr |
| vmask ipv6_addr_mask |
| vport sock_port |
| l4proto flags[ipv6_types, int8] |
| fwd_method int8[0:IP_VS_CONN_F_FWD_MASK] |
| vportctl sock_port |
| invert flags[xt_ipvs_flags, int8] |
| bitmask flags[xt_ipvs_flags, int8] |
| } |
| |
| xt_ipvs_flags = XT_IPVS_IPVS_PROPERTY, XT_IPVS_PROTO, XT_IPVS_VADDR, XT_IPVS_VPORT, XT_IPVS_DIR, XT_IPVS_METHOD, XT_IPVS_VPORT |
| |
| xt_dccp_info { |
| dpts_min sock_port |
| dpts_max sock_port |
| spts_min sock_port |
| spts_max sock_port |
| flags flags[xt_dccp_flags, int16] |
| invflags flags[xt_dccp_flags, int16] |
| typemask int16 |
| option int8 |
| } |
| |
| xt_dccp_flags = XT_DCCP_SRC_PORTS, XT_DCCP_DEST_PORTS, XT_DCCP_TYPE, XT_DCCP_OPTION |
| |
| xt_hashlimit_mtinfo1 { |
| name devname |
| cfg hashlimit_cfg1 |
| hinfo intptr |
| } |
| |
| xt_hashlimit_mtinfo2 { |
| name string[devnames, NAME_MAX] |
| cfg hashlimit_cfg2 |
| hinfo intptr |
| } |
| |
| xt_hashlimit_mtinfo3 { |
| name string[devnames, NAME_MAX] |
| cfg hashlimit_cfg3 |
| hinfo intptr |
| } |
| |
| hashlimit_cfg1 { |
| mode flags[xt_hashlimit_modes, int32] |
| avg int32 |
| burst int32 |
| size int32 |
| max int32 |
| gc_interval int32 |
| expire int32 |
| srcmask flags[xt_hashlimit_mask, int8] |
| dstmask flags[xt_hashlimit_mask, int8] |
| } |
| |
| hashlimit_cfg2 { |
| avg int64 |
| burst int64 |
| mode flags[xt_hashlimit_modes, int32] |
| size int32 |
| max int32 |
| gc_interval int32 |
| expire int32 |
| srcmask flags[xt_hashlimit_mask, int8] |
| dstmask flags[xt_hashlimit_mask, int8] |
| } |
| |
| hashlimit_cfg3 { |
| avg int64 |
| burst int64 |
| mode flags[xt_hashlimit_modes, int32] |
| size int32 |
| max int32 |
| gc_interval int32 |
| expire int32 |
| interval int32 |
| srcmask flags[xt_hashlimit_mask, int8] |
| dstmask flags[xt_hashlimit_mask, int8] |
| } |
| |
| xt_hashlimit_modes = XT_HASHLIMIT_HASH_DIP, XT_HASHLIMIT_HASH_DPT, XT_HASHLIMIT_HASH_SIP, XT_HASHLIMIT_HASH_SPT, XT_HASHLIMIT_INVERT, XT_HASHLIMIT_BYTES, XT_HASHLIMIT_RATE_MATCH |
| xt_hashlimit_mask = 0, 8, 24, 32, 64, 120, 128 |
| |
| xt_nfacct_match_info { |
| name string[xt_nfacct_match_names, NFACCT_NAME_MAX] |
| nfacct intptr |
| } |
| |
| xt_nfacct_match_names = "syz0", "syz1" |
| |
| xt_length_info { |
| min int16 |
| max int16 |
| invert bool8 |
| } |
| |
| xt_mac_info { |
| srcaddr mac_addr |
| invert bool32 |
| } |
| |
| xt_comment_info { |
| comment array[const[0, int8], XT_MAX_COMMENT_LEN] |
| } |
| |
| xt_ipcomp { |
| spis_min xfrm_spi |
| spis_max xfrm_spi |
| invflags flags[xt_ipcomp_flags, int8] |
| hdrres const[0, int8] |
| } |
| |
| xt_ipcomp_flags = XT_IPCOMP_INV_SPI, XT_IPCOMP_INV_MASK |
| |
| xt_statistic_info { |
| mode bool16 |
| flags bool16 |
| every int32 |
| packet int32 |
| count int32 |
| master intptr |
| } |
| |
| xt_recent_mtinfo { |
| seconds int32 |
| hit_count int32 |
| check_set flags[xt_recent_check_set, int8] |
| invert bool8 |
| name string[xt_recent_names, XT_RECENT_NAME_LEN] |
| side int8 |
| } |
| |
| xt_recent_mtinfo_v1 { |
| seconds int32 |
| hit_count int32 |
| check_set flags[xt_recent_check_set, int8] |
| invert bool8 |
| name string[xt_recent_names, XT_RECENT_NAME_LEN] |
| side int8 |
| mask ipv6_addr_mask |
| } |
| |
| xt_recent_names = "syz0", "syz1" |
| xt_recent_check_set = XT_RECENT_CHECK, XT_RECENT_SET, XT_RECENT_UPDATE, XT_RECENT_REMOVE, XT_RECENT_TTL, XT_RECENT_REAP, XT_RECENT_SOURCE, XT_RECENT_DEST |
| |
| xt_dscp_info { |
| dscp int8 |
| invert bool8 |
| } |
| |
| xt_tos_match_info { |
| tos_mask int8 |
| tos_value int8 |
| invert bool8 |
| } |
| |
| xt_policy_info { |
| pol array[xt_policy_elem, XT_POLICY_MAX_ELEM] |
| flags flags[xt_policy_flags, int16] |
| len int16[0:XT_POLICY_MAX_ELEM] |
| } |
| |
| xt_policy_elem { |
| saddr nf_inet_addr |
| smask ipv6_addr_mask |
| daddr nf_inet_addr |
| dmask ipv6_addr_mask |
| spi xfrm_spi |
| reqid xfrm_req_id |
| proto flags[ipv6_types, int8] |
| mode flags[xt_policy_mode, int8] |
| match flags[xt_policy_spec, int8] |
| invert flags[xt_policy_spec, int8] |
| } |
| |
| xt_policy_flags = XT_POLICY_MATCH_IN, XT_POLICY_MATCH_OUT, XT_POLICY_MATCH_NONE, XT_POLICY_MATCH_STRICT |
| xt_policy_mode = XT_POLICY_MODE_TRANSPORT, XT_POLICY_MODE_TUNNEL |
| xt_policy_spec = 1, 2, 4, 8, 16 |
| |
| xt_tcpmss_match_info { |
| mss_min int16 |
| mss_max int16 |
| invert bool8 |
| } |
| |
| xt_string_info { |
| from_offset int16 |
| to_offset int16 |
| algo string[textsearch_algos, XT_STRING_MAX_ALGO_NAME_SIZE] |
| pattern array[int8, XT_STRING_MAX_PATTERN_SIZE] |
| patlen int8[0:XT_STRING_MAX_PATTERN_SIZE] |
| flags flags[xt_string_flags, int8] |
| config intptr |
| } |
| |
| textsearch_algos = "bm", "fsm", "kmp" |
| xt_string_flags = XT_STRING_FLAG_INVERT, XT_STRING_FLAG_IGNORECASE |
| |
| xt_physdev_info { |
| physindev devname |
| in_mask devname_mask |
| physoutdev devname |
| out_mask devname_mask |
| invert flags[xt_physdev_flags, int8] |
| bitmask flags[xt_physdev_flags, int8] |
| } |
| |
| xt_physdev_flags = XT_PHYSDEV_OP_IN, XT_PHYSDEV_OP_OUT, XT_PHYSDEV_OP_BRIDGED, XT_PHYSDEV_OP_ISIN, XT_PHYSDEV_OP_ISOUT |
| |
| xt_connlabel_mtinfo { |
| bit int16 |
| options flags[xt_connlabel_mtopts, int16] |
| } |
| |
| xt_connlabel_mtopts = XT_CONNLABEL_OP_INVERT, XT_CONNLABEL_OP_SET |
| |
| xt_devgroup_info { |
| flags flags[xt_devgroup_flags, int32] |
| src_group int32 |
| src_mask int32 |
| dst_group int32 |
| dst_mask int32 |
| } |
| |
| xt_devgroup_flags = XT_DEVGROUP_MATCH_SRC, XT_DEVGROUP_INVERT_SRC, XT_DEVGROUP_MATCH_DST, XT_DEVGROUP_INVERT_DST |
| |
| xt_multiport_v1 { |
| flags int8[0:2] |
| count int8[0:XT_MULTI_PORTS] |
| ports array[sock_port, XT_MULTI_PORTS] |
| pflags array[bool8, XT_MULTI_PORTS] |
| invert bool8 |
| } |
| |
| xt_cluster_match_info { |
| total_nodes int32 |
| node_mask int32 |
| hash_seed int32 |
| flags bool32 |
| } |
| |
| xt_ecn_info { |
| operation flags[xt_ecn_operation, int8] |
| invert flags[xt_ecn_operation, int8] |
| ip_ect int8 |
| ect int8 |
| } |
| |
| xt_ecn_operation = XT_ECN_OP_MATCH_IP, XT_ECN_OP_MATCH_ECE, XT_ECN_OP_MATCH_CWR |
| |
| xt_owner_match_info { |
| uid_min uid |
| uid_max uid |
| gid_min gid |
| gid_max gid |
| match flags[xt_owner_match_flags, int8] |
| invert flags[xt_owner_match_flags, int8] |
| } |
| |
| xt_owner_match_flags = XT_OWNER_UID, XT_OWNER_GID, XT_OWNER_SOCKET |
| |
| xt_pkttype_info { |
| pkttype int32 |
| invert int32 |
| } |
| |
| xt_u32 { |
| tests array[xt_u32_test, XT_U32_REAL_MAXSIZE] |
| ntests int8[0:XT_U32_REAL_MAXSIZE] |
| invert bool8 |
| } |
| |
| xt_u32_test { |
| location array[xt_u32_location_element, XT_U32_REAL_MAXSIZE] |
| value array[xt_u32_value_element, XT_U32_REAL_MAXSIZE] |
| nnums int8[0:XT_U32_REAL_MAXSIZE] |
| nvalues int8[0:XT_U32_REAL_MAXSIZE] |
| } |
| |
| xt_u32_location_element { |
| number int32 |
| nextop flags[xt_u32_ops, int8] |
| } |
| |
| xt_u32_value_element { |
| min int32 |
| max int32 |
| } |
| |
| xt_u32_ops = XT_U32_AND, XT_U32_LEFTSH, XT_U32_RIGHTSH, XT_U32_AT |
| define XT_U32_REAL_MAXSIZE XT_U32_MAXSIZE + 1 |
| |
| xt_iprange_mtinfo { |
| src_min nf_inet_addr |
| src_max nf_inet_addr |
| dst_min nf_inet_addr |
| dst_max nf_inet_addr |
| flags flags[xt_iprange_flags, int8] |
| } |
| |
| xt_iprange_flags = IPRANGE_SRC, IPRANGE_DST, IPRANGE_SRC_INV, IPRANGE_DST_INV |
| |
| xt_esp { |
| spis_min xfrm_spi |
| spis_max xfrm_spi |
| invflags flags[xt_esp_flags, int8] |
| } |
| |
| xt_esp_flags = XT_ESP_INV_SPI, XT_ESP_INV_MASK |
| |
| xt_cpu_info { |
| cpu int32 |
| invert bool32 |
| } |
| |
| xt_state_info { |
| statemask int32 |
| } |