netlink-bindings 0.3.3

Type-safe Rust bindings for Netlink generated from YAML specifications
Documentation
# #define NF_NAT_RANGE_MAP_IPS			(1 << 0)
# #define NF_NAT_RANGE_PROTO_SPECIFIED		(1 << 1)
# #define NF_NAT_RANGE_PROTO_RANDOM		(1 << 2)
# #define NF_NAT_RANGE_PERSISTENT			(1 << 3)
# #define NF_NAT_RANGE_PROTO_RANDOM_FULLY		(1 << 4)
# #define NF_NAT_RANGE_PROTO_OFFSET		(1 << 5)
# #define NF_NAT_RANGE_NETMAP			(1 << 6)
#
# #define NF_NAT_RANGE_PROTO_RANDOM_ALL		\
# 	(NF_NAT_RANGE_PROTO_RANDOM | NF_NAT_RANGE_PROTO_RANDOM_FULLY)
#
# #define NF_NAT_RANGE_MASK					\
# 	(NF_NAT_RANGE_MAP_IPS | NF_NAT_RANGE_PROTO_SPECIFIED |	\
# 	 NF_NAT_RANGE_PROTO_RANDOM | NF_NAT_RANGE_PERSISTENT |	\
# 	 NF_NAT_RANGE_PROTO_RANDOM_FULLY | NF_NAT_RANGE_PROTO_OFFSET | \
# 	 NF_NAT_RANGE_NETMAP)
#
# struct nf_nat_ipv4_range {
# 	unsigned int			flags;
# 	__be32				min_ip;
# 	__be32				max_ip;
# 	union nf_conntrack_man_proto	min;
# 	union nf_conntrack_man_proto	max;
# };
#
# struct nf_nat_ipv4_multi_range_compat {
# 	unsigned int			rangesize;
# 	struct nf_nat_ipv4_range	range[1];
# };
#
# struct nf_nat_range {
# 	unsigned int			flags;
# 	union nf_inet_addr		min_addr;
# 	union nf_inet_addr		max_addr;
# 	union nf_conntrack_man_proto	min_proto;
# 	union nf_conntrack_man_proto	max_proto;
# };
#
# struct nf_nat_range2 {
# 	unsigned int			flags;
# 	union nf_inet_addr		min_addr;
# 	union nf_inet_addr		max_addr;
# 	union nf_conntrack_man_proto	min_proto;
# 	union nf_conntrack_man_proto	max_proto;
# 	union nf_conntrack_man_proto	base_proto;
# };

definitions:
  -
    name: nat-range2
    type: struct
    members:
      -
        name: flags
        type: u32
      -
        name: min-addr
        type: binary
        len: 16
      -
        name: max-addr
        type: binary
        len: 16
      -
        name: min-port
        type: u16
        byte-order: big-endian
      -
        name: max-port
        type: u16
        byte-order: big-endian
      -
        name: base-port
        type: u16
        byte-order: big-endian
  -
    name: nat-ipv4-multi-range
    type: struct
    members:
      -
        name: range-size
        doc: Always set to 1. Multiple ranges no longer supported.
        type: u32
      -
        name: range
        type: binary
        struct: nat-ipv4-range
  -
    name: nat-ipv4-range
    type: struct
    members:
      -
        name: flags
        type: u32
        enum: nat-range-flags
      -
        name: min-ip
        type: u32
        byte-order: big-endian
      -
        name: max-ip
        type: u32
        byte-order: big-endian
      -
        name: min-port
        type: u16
        byte-order: big-endian
      -
        name: max-port
        type: u16
        byte-order: big-endian
  -
    name: nat-range
    type: struct
    members:
      -
        name: flags
        type: u32
      -
        name: min-addr
        type: binary
        len: 16
      -
        name: max-addr
        type: binary
        len: 16
      -
        name: min-port
        type: u16
        byte-order: big-endian
      -
        name: max-port
        type: u16
        byte-order: big-endian


attribute-sets:
  -
    name: expr-target-attrs
    attributes:
      -
        name: info
        doc: |
          Grep for ``static struct xt_target`` in ``linux/net/nftables``.
          This field is usually a struct:

          - Name
          - Revision number
          - IP version (4/6)
          - Size of provided struct

operations:
  list:
    -
      name: batch-begin
      no-ack: true
    -
      name: batch-end
      no-ack: true
    -
      # Defined as nfnl_compat_subsys in net/netfilter/nft_compat.c
      name: getcompat
      attribute-set: compat-attrs
      fixed-header: nfgenmsg
      doc: Get / dump nft_compat info
      do:
        request:
          value: 0xb00
          attributes:
            - name
            - rev
            - type
        reply:
          value: 0xb00
          attributes:
            - name
            - rev
            - type
      dump:
        reply:
          attributes:
            - name
            - rev
            - type