mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-27 03:10:12 +00:00
Merge branch 'netlink-specs-add-ynl-spec-for-ovs_flow'
Donald Hunter says: ==================== netlink: specs: add ynl spec for ovs_flow Add a ynl specification for ovs_flow. The spec is sufficient to dump ovs flows but some attrs have been left as binary blobs because ynl doesn't support C arrays in struct definitions yet. Patches 1-3 add features for genetlink-legacy specs Patch 4 is the ovs_flow netlink spec ==================== Link: https://lore.kernel.org/r/20230527133107.68161-1-donald.hunter@gmail.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
commit
eee2e03c8f
4 changed files with 845 additions and 2 deletions
|
@ -124,6 +124,12 @@ properties:
|
|||
$ref: '#/$defs/len-or-define'
|
||||
byte-order:
|
||||
enum: [ little-endian, big-endian ]
|
||||
doc:
|
||||
description: Documentation for the struct member attribute.
|
||||
type: string
|
||||
enum:
|
||||
description: Name of the enum type used for the attribute.
|
||||
type: string
|
||||
# End genetlink-legacy
|
||||
|
||||
attribute-sets:
|
||||
|
|
831
Documentation/netlink/specs/ovs_flow.yaml
Normal file
831
Documentation/netlink/specs/ovs_flow.yaml
Normal file
|
@ -0,0 +1,831 @@
|
|||
# SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause)
|
||||
|
||||
name: ovs_flow
|
||||
version: 1
|
||||
protocol: genetlink-legacy
|
||||
|
||||
doc:
|
||||
OVS flow configuration over generic netlink.
|
||||
|
||||
definitions:
|
||||
-
|
||||
name: ovs-header
|
||||
type: struct
|
||||
doc: |
|
||||
Header for OVS Generic Netlink messages.
|
||||
members:
|
||||
-
|
||||
name: dp-ifindex
|
||||
type: u32
|
||||
doc: |
|
||||
ifindex of local port for datapath (0 to make a request not specific
|
||||
to a datapath).
|
||||
-
|
||||
name: ovs-flow-stats
|
||||
type: struct
|
||||
members:
|
||||
-
|
||||
name: n-packets
|
||||
type: u64
|
||||
doc: Number of matched packets.
|
||||
-
|
||||
name: n-bytes
|
||||
type: u64
|
||||
doc: Number of matched bytes.
|
||||
-
|
||||
name: ovs-key-mpls
|
||||
type: struct
|
||||
members:
|
||||
-
|
||||
name: mpls-lse
|
||||
type: u32
|
||||
byte-order: big-endian
|
||||
-
|
||||
name: ovs-key-ipv4
|
||||
type: struct
|
||||
members:
|
||||
-
|
||||
name: ipv4-src
|
||||
type: u32
|
||||
byte-order: big-endian
|
||||
-
|
||||
name: ipv4-dst
|
||||
type: u32
|
||||
byte-order: big-endian
|
||||
-
|
||||
name: ipv4-proto
|
||||
type: u8
|
||||
-
|
||||
name: ipv4-tos
|
||||
type: u8
|
||||
-
|
||||
name: ipv4-ttl
|
||||
type: u8
|
||||
-
|
||||
name: ipv4-frag
|
||||
type: u8
|
||||
enum: ovs-frag-type
|
||||
-
|
||||
name: ovs-frag-type
|
||||
type: enum
|
||||
entries:
|
||||
-
|
||||
name: none
|
||||
doc: Packet is not a fragment.
|
||||
-
|
||||
name: first
|
||||
doc: Packet is a fragment with offset 0.
|
||||
-
|
||||
name: later
|
||||
doc: Packet is a fragment with nonzero offset.
|
||||
-
|
||||
name: any
|
||||
value: 255
|
||||
-
|
||||
name: ovs-key-tcp
|
||||
type: struct
|
||||
members:
|
||||
-
|
||||
name: tcp-src
|
||||
type: u16
|
||||
byte-order: big-endian
|
||||
-
|
||||
name: tcp-dst
|
||||
type: u16
|
||||
byte-order: big-endian
|
||||
-
|
||||
name: ovs-key-udp
|
||||
type: struct
|
||||
members:
|
||||
-
|
||||
name: udp-src
|
||||
type: u16
|
||||
byte-order: big-endian
|
||||
-
|
||||
name: udp-dst
|
||||
type: u16
|
||||
byte-order: big-endian
|
||||
-
|
||||
name: ovs-key-sctp
|
||||
type: struct
|
||||
members:
|
||||
-
|
||||
name: sctp-src
|
||||
type: u16
|
||||
byte-order: big-endian
|
||||
-
|
||||
name: sctp-dst
|
||||
type: u16
|
||||
byte-order: big-endian
|
||||
-
|
||||
name: ovs-key-icmp
|
||||
type: struct
|
||||
members:
|
||||
-
|
||||
name: icmp-type
|
||||
type: u8
|
||||
-
|
||||
name: icmp-code
|
||||
type: u8
|
||||
-
|
||||
name: ovs-key-ct-tuple-ipv4
|
||||
type: struct
|
||||
members:
|
||||
-
|
||||
name: ipv4-src
|
||||
type: u32
|
||||
byte-order: big-endian
|
||||
-
|
||||
name: ipv4-dst
|
||||
type: u32
|
||||
byte-order: big-endian
|
||||
-
|
||||
name: src-port
|
||||
type: u16
|
||||
byte-order: big-endian
|
||||
-
|
||||
name: dst-port
|
||||
type: u16
|
||||
byte-order: big-endian
|
||||
-
|
||||
name: ipv4-proto
|
||||
type: u8
|
||||
-
|
||||
name: ovs-action-push-vlan
|
||||
type: struct
|
||||
members:
|
||||
-
|
||||
name: vlan_tpid
|
||||
type: u16
|
||||
byte-order: big-endian
|
||||
doc: Tag protocol identifier (TPID) to push.
|
||||
-
|
||||
name: vlan_tci
|
||||
type: u16
|
||||
byte-order: big-endian
|
||||
doc: Tag control identifier (TCI) to push.
|
||||
-
|
||||
name: ovs-ufid-flags
|
||||
type: flags
|
||||
entries:
|
||||
- omit-key
|
||||
- omit-mask
|
||||
- omit-actions
|
||||
-
|
||||
name: ovs-action-hash
|
||||
type: struct
|
||||
members:
|
||||
-
|
||||
name: hash-algorithm
|
||||
type: u32
|
||||
doc: Algorithm used to compute hash prior to recirculation.
|
||||
-
|
||||
name: hash-basis
|
||||
type: u32
|
||||
doc: Basis used for computing hash.
|
||||
-
|
||||
name: ovs-hash-alg
|
||||
type: enum
|
||||
doc: |
|
||||
Data path hash algorithm for computing Datapath hash. The algorithm type only specifies
|
||||
the fields in a flow will be used as part of the hash. Each datapath is free to use its
|
||||
own hash algorithm. The hash value will be opaque to the user space daemon.
|
||||
entries:
|
||||
- ovs-hash-alg-l4
|
||||
|
||||
-
|
||||
name: ovs-action-push-mpls
|
||||
type: struct
|
||||
members:
|
||||
-
|
||||
name: lse
|
||||
type: u32
|
||||
byte-order: big-endian
|
||||
doc: |
|
||||
MPLS label stack entry to push
|
||||
-
|
||||
name: ethertype
|
||||
type: u32
|
||||
byte-order: big-endian
|
||||
doc: |
|
||||
Ethertype to set in the encapsulating ethernet frame. The only values
|
||||
ethertype should ever be given are ETH_P_MPLS_UC and ETH_P_MPLS_MC,
|
||||
indicating MPLS unicast or multicast. Other are rejected.
|
||||
-
|
||||
name: ovs-action-add-mpls
|
||||
type: struct
|
||||
members:
|
||||
-
|
||||
name: lse
|
||||
type: u32
|
||||
byte-order: big-endian
|
||||
doc: |
|
||||
MPLS label stack entry to push
|
||||
-
|
||||
name: ethertype
|
||||
type: u32
|
||||
byte-order: big-endian
|
||||
doc: |
|
||||
Ethertype to set in the encapsulating ethernet frame. The only values
|
||||
ethertype should ever be given are ETH_P_MPLS_UC and ETH_P_MPLS_MC,
|
||||
indicating MPLS unicast or multicast. Other are rejected.
|
||||
-
|
||||
name: tun-flags
|
||||
type: u16
|
||||
doc: |
|
||||
MPLS tunnel attributes.
|
||||
-
|
||||
name: ct-state-flags
|
||||
type: flags
|
||||
entries:
|
||||
-
|
||||
name: new
|
||||
doc: Beginning of a new connection.
|
||||
-
|
||||
name: established
|
||||
doc: Part of an existing connenction
|
||||
-
|
||||
name: related
|
||||
doc: Related to an existing connection.
|
||||
-
|
||||
name: reply-dir
|
||||
doc: Flow is in the reply direction.
|
||||
-
|
||||
name: invalid
|
||||
doc: Could not track the connection.
|
||||
-
|
||||
name: tracked
|
||||
doc: Conntrack has occurred.
|
||||
-
|
||||
name: src-nat
|
||||
doc: Packet's source address/port was mangled by NAT.
|
||||
-
|
||||
name: dst-nat
|
||||
doc: Packet's destination address/port was mangled by NAT.
|
||||
|
||||
attribute-sets:
|
||||
-
|
||||
name: flow-attrs
|
||||
attributes:
|
||||
-
|
||||
name: key
|
||||
type: nest
|
||||
nested-attributes: key-attrs
|
||||
doc: |
|
||||
Nested attributes specifying the flow key. Always present in
|
||||
notifications. Required for all requests (except dumps).
|
||||
-
|
||||
name: actions
|
||||
type: nest
|
||||
nested-attributes: action-attrs
|
||||
doc: |
|
||||
Nested attributes specifying the actions to take for packets that
|
||||
match the key. Always present in notifications. Required for
|
||||
OVS_FLOW_CMD_NEW requests, optional for OVS_FLOW_CMD_SET requests. An
|
||||
OVS_FLOW_CMD_SET without OVS_FLOW_ATTR_ACTIONS will not modify the
|
||||
actions. To clear the actions, an OVS_FLOW_ATTR_ACTIONS without any
|
||||
nested attributes must be given.
|
||||
-
|
||||
name: stats
|
||||
type: binary
|
||||
struct: ovs-flow-stats
|
||||
doc: |
|
||||
Statistics for this flow. Present in notifications if the stats would
|
||||
be nonzero. Ignored in requests.
|
||||
-
|
||||
name: tcp-flags
|
||||
type: u8
|
||||
doc: |
|
||||
An 8-bit value giving the ORed value of all of the TCP flags seen on
|
||||
packets in this flow. Only present in notifications for TCP flows, and
|
||||
only if it would be nonzero. Ignored in requests.
|
||||
-
|
||||
name: used
|
||||
type: u64
|
||||
doc: |
|
||||
A 64-bit integer giving the time, in milliseconds on the system
|
||||
monotonic clock, at which a packet was last processed for this
|
||||
flow. Only present in notifications if a packet has been processed for
|
||||
this flow. Ignored in requests.
|
||||
-
|
||||
name: clear
|
||||
type: flag
|
||||
doc: |
|
||||
If present in a OVS_FLOW_CMD_SET request, clears the last-used time,
|
||||
accumulated TCP flags, and statistics for this flow. Otherwise
|
||||
ignored in requests. Never present in notifications.
|
||||
-
|
||||
name: mask
|
||||
type: nest
|
||||
nested-attributes: key-attrs
|
||||
doc: |
|
||||
Nested attributes specifying the mask bits for wildcarded flow
|
||||
match. Mask bit value '1' specifies exact match with corresponding
|
||||
flow key bit, while mask bit value '0' specifies a wildcarded
|
||||
match. Omitting attribute is treated as wildcarding all corresponding
|
||||
fields. Optional for all requests. If not present, all flow key bits
|
||||
are exact match bits.
|
||||
-
|
||||
name: probe
|
||||
type: binary
|
||||
doc: |
|
||||
Flow operation is a feature probe, error logging should be suppressed.
|
||||
-
|
||||
name: ufid
|
||||
type: binary
|
||||
doc: |
|
||||
A value between 1-16 octets specifying a unique identifier for the
|
||||
flow. Causes the flow to be indexed by this value rather than the
|
||||
value of the OVS_FLOW_ATTR_KEY attribute. Optional for all
|
||||
requests. Present in notifications if the flow was created with this
|
||||
attribute.
|
||||
-
|
||||
name: ufid-flags
|
||||
type: u32
|
||||
enum: ovs-ufid-flags
|
||||
doc: |
|
||||
A 32-bit value of ORed flags that provide alternative semantics for
|
||||
flow installation and retrieval. Optional for all requests.
|
||||
-
|
||||
name: pad
|
||||
type: binary
|
||||
|
||||
-
|
||||
name: key-attrs
|
||||
attributes:
|
||||
-
|
||||
name: encap
|
||||
type: nest
|
||||
nested-attributes: key-attrs
|
||||
-
|
||||
name: priority
|
||||
type: u32
|
||||
-
|
||||
name: in-port
|
||||
type: u32
|
||||
-
|
||||
name: ethernet
|
||||
type: binary
|
||||
doc: struct ovs_key_ethernet
|
||||
-
|
||||
name: vlan
|
||||
type: u16
|
||||
byte-order: big-endian
|
||||
-
|
||||
name: ethertype
|
||||
type: u16
|
||||
byte-order: big-endian
|
||||
-
|
||||
name: ipv4
|
||||
type: binary
|
||||
struct: ovs-key-ipv4
|
||||
-
|
||||
name: ipv6
|
||||
type: binary
|
||||
doc: struct ovs_key_ipv6
|
||||
-
|
||||
name: tcp
|
||||
type: binary
|
||||
struct: ovs-key-tcp
|
||||
-
|
||||
name: udp
|
||||
type: binary
|
||||
struct: ovs-key-udp
|
||||
-
|
||||
name: icmp
|
||||
type: binary
|
||||
struct: ovs-key-icmp
|
||||
-
|
||||
name: icmpv6
|
||||
type: binary
|
||||
struct: ovs-key-icmp
|
||||
-
|
||||
name: arp
|
||||
type: binary
|
||||
doc: struct ovs_key_arp
|
||||
-
|
||||
name: nd
|
||||
type: binary
|
||||
doc: struct ovs_key_nd
|
||||
-
|
||||
name: skb-mark
|
||||
type: u32
|
||||
-
|
||||
name: tunnel
|
||||
type: nest
|
||||
nested-attributes: tunnel-key-attrs
|
||||
-
|
||||
name: sctp
|
||||
type: binary
|
||||
struct: ovs-key-sctp
|
||||
-
|
||||
name: tcp-flags
|
||||
type: u16
|
||||
byte-order: big-endian
|
||||
-
|
||||
name: dp-hash
|
||||
type: u32
|
||||
doc: Value 0 indicates the hash is not computed by the datapath.
|
||||
-
|
||||
name: recirc-id
|
||||
type: u32
|
||||
-
|
||||
name: mpls
|
||||
type: binary
|
||||
struct: ovs-key-mpls
|
||||
-
|
||||
name: ct-state
|
||||
type: u32
|
||||
enum: ct-state-flags
|
||||
enum-as-flags: true
|
||||
-
|
||||
name: ct-zone
|
||||
type: u16
|
||||
doc: connection tracking zone
|
||||
-
|
||||
name: ct-mark
|
||||
type: u32
|
||||
doc: connection tracking mark
|
||||
-
|
||||
name: ct-labels
|
||||
type: binary
|
||||
doc: 16-octet connection tracking label
|
||||
-
|
||||
name: ct-orig-tuple-ipv4
|
||||
type: binary
|
||||
struct: ovs-key-ct-tuple-ipv4
|
||||
-
|
||||
name: ct-orig-tuple-ipv6
|
||||
type: binary
|
||||
doc: struct ovs_key_ct_tuple_ipv6
|
||||
-
|
||||
name: nsh
|
||||
type: nest
|
||||
nested-attributes: ovs-nsh-key-attrs
|
||||
-
|
||||
name: packet-type
|
||||
type: u32
|
||||
byte-order: big-endian
|
||||
doc: Should not be sent to the kernel
|
||||
-
|
||||
name: nd-extensions
|
||||
type: binary
|
||||
doc: Should not be sent to the kernel
|
||||
-
|
||||
name: tunnel-info
|
||||
type: binary
|
||||
doc: struct ip_tunnel_info
|
||||
-
|
||||
name: ipv6-exthdrs
|
||||
type: binary
|
||||
doc: struct ovs_key_ipv6_exthdr
|
||||
-
|
||||
name: action-attrs
|
||||
attributes:
|
||||
-
|
||||
name: output
|
||||
type: u32
|
||||
doc: ovs port number in datapath
|
||||
-
|
||||
name: userspace
|
||||
type: nest
|
||||
nested-attributes: userspace-attrs
|
||||
-
|
||||
name: set
|
||||
type: nest
|
||||
nested-attributes: key-attrs
|
||||
doc: Replaces the contents of an existing header. The single nested attribute specifies a header to modify and its value.
|
||||
-
|
||||
name: push-vlan
|
||||
type: binary
|
||||
struct: ovs-action-push-vlan
|
||||
doc: Push a new outermost 802.1Q or 802.1ad header onto the packet.
|
||||
-
|
||||
name: pop-vlan
|
||||
type: flag
|
||||
doc: Pop the outermost 802.1Q or 802.1ad header from the packet.
|
||||
-
|
||||
name: sample
|
||||
type: nest
|
||||
nested-attributes: sample-attrs
|
||||
doc: |
|
||||
Probabilistically executes actions, as specified in the nested attributes.
|
||||
-
|
||||
name: recirc
|
||||
type: u32
|
||||
doc: recirc id
|
||||
-
|
||||
name: hash
|
||||
type: binary
|
||||
struct: ovs-action-hash
|
||||
-
|
||||
name: push-mpls
|
||||
type: binary
|
||||
struct: ovs-action-push-mpls
|
||||
doc: |
|
||||
Push a new MPLS label stack entry onto the top of the packets MPLS
|
||||
label stack. Set the ethertype of the encapsulating frame to either
|
||||
ETH_P_MPLS_UC or ETH_P_MPLS_MC to indicate the new packet contents.
|
||||
-
|
||||
name: pop-mpls
|
||||
type: u16
|
||||
byte-order: big-endian
|
||||
doc: ethertype
|
||||
-
|
||||
name: set-masked
|
||||
type: nest
|
||||
nested-attributes: key-attrs
|
||||
doc: |
|
||||
Replaces the contents of an existing header. A nested attribute
|
||||
specifies a header to modify, its value, and a mask. For every bit set
|
||||
in the mask, the corresponding bit value is copied from the value to
|
||||
the packet header field, rest of the bits are left unchanged. The
|
||||
non-masked value bits must be passed in as zeroes. Masking is not
|
||||
supported for the OVS_KEY_ATTR_TUNNEL attribute.
|
||||
-
|
||||
name: ct
|
||||
type: nest
|
||||
nested-attributes: ct-attrs
|
||||
doc: |
|
||||
Track the connection. Populate the conntrack-related entries
|
||||
in the flow key.
|
||||
-
|
||||
name: trunc
|
||||
type: u32
|
||||
doc: struct ovs_action_trunc is a u32 max length
|
||||
-
|
||||
name: push-eth
|
||||
type: binary
|
||||
doc: struct ovs_action_push_eth
|
||||
-
|
||||
name: pop-eth
|
||||
type: flag
|
||||
-
|
||||
name: ct-clear
|
||||
type: flag
|
||||
-
|
||||
name: push-nsh
|
||||
type: nest
|
||||
nested-attributes: ovs-nsh-key-attrs
|
||||
doc: |
|
||||
Push NSH header to the packet.
|
||||
-
|
||||
name: pop-nsh
|
||||
type: flag
|
||||
doc: |
|
||||
Pop the outermost NSH header off the packet.
|
||||
-
|
||||
name: meter
|
||||
type: u32
|
||||
doc: |
|
||||
Run packet through a meter, which may drop the packet, or modify the
|
||||
packet (e.g., change the DSCP field)
|
||||
-
|
||||
name: clone
|
||||
type: nest
|
||||
nested-attributes: action-attrs
|
||||
doc: |
|
||||
Make a copy of the packet and execute a list of actions without
|
||||
affecting the original packet and key.
|
||||
-
|
||||
name: check-pkt-len
|
||||
type: nest
|
||||
nested-attributes: check-pkt-len-attrs
|
||||
doc: |
|
||||
Check the packet length and execute a set of actions if greater than
|
||||
the specified packet length, else execute another set of actions.
|
||||
-
|
||||
name: add-mpls
|
||||
type: binary
|
||||
struct: ovs-action-add-mpls
|
||||
doc: |
|
||||
Push a new MPLS label stack entry at the start of the packet or at the
|
||||
start of the l3 header depending on the value of l3 tunnel flag in the
|
||||
tun_flags field of this OVS_ACTION_ATTR_ADD_MPLS argument.
|
||||
-
|
||||
name: dec-ttl
|
||||
type: nest
|
||||
nested-attributes: dec-ttl-attrs
|
||||
-
|
||||
name: tunnel-key-attrs
|
||||
attributes:
|
||||
-
|
||||
name: id
|
||||
type: u64
|
||||
byte-order: big-endian
|
||||
value: 0
|
||||
-
|
||||
name: ipv4-src
|
||||
type: u32
|
||||
byte-order: big-endian
|
||||
-
|
||||
name: ipv4-dst
|
||||
type: u32
|
||||
byte-order: big-endian
|
||||
-
|
||||
name: tos
|
||||
type: u8
|
||||
-
|
||||
name: ttl
|
||||
type: u8
|
||||
-
|
||||
name: dont-fragment
|
||||
type: flag
|
||||
-
|
||||
name: csum
|
||||
type: flag
|
||||
-
|
||||
name: oam
|
||||
type: flag
|
||||
-
|
||||
name: geneve-opts
|
||||
type: binary
|
||||
sub-type: u32
|
||||
-
|
||||
name: tp-src
|
||||
type: u16
|
||||
byte-order: big-endian
|
||||
-
|
||||
name: tp-dst
|
||||
type: u16
|
||||
byte-order: big-endian
|
||||
-
|
||||
name: vxlan-opts
|
||||
type: nest
|
||||
nested-attributes: vxlan-ext-attrs
|
||||
-
|
||||
name: ipv6-src
|
||||
type: binary
|
||||
doc: |
|
||||
struct in6_addr source IPv6 address
|
||||
-
|
||||
name: ipv6-dst
|
||||
type: binary
|
||||
doc: |
|
||||
struct in6_addr destination IPv6 address
|
||||
-
|
||||
name: pad
|
||||
type: binary
|
||||
-
|
||||
name: erspan-opts
|
||||
type: binary
|
||||
doc: |
|
||||
struct erspan_metadata
|
||||
-
|
||||
name: ipv4-info-bridge
|
||||
type: flag
|
||||
-
|
||||
name: check-pkt-len-attrs
|
||||
attributes:
|
||||
-
|
||||
name: pkt-len
|
||||
type: u16
|
||||
-
|
||||
name: actions-if-greater
|
||||
type: nest
|
||||
nested-attributes: action-attrs
|
||||
-
|
||||
name: actions-if-less-equal
|
||||
type: nest
|
||||
nested-attributes: action-attrs
|
||||
-
|
||||
name: sample-attrs
|
||||
attributes:
|
||||
-
|
||||
name: probability
|
||||
type: u32
|
||||
-
|
||||
name: actions
|
||||
type: nest
|
||||
nested-attributes: action-attrs
|
||||
-
|
||||
name: userspace-attrs
|
||||
attributes:
|
||||
-
|
||||
name: pid
|
||||
type: u32
|
||||
-
|
||||
name: userdata
|
||||
type: binary
|
||||
-
|
||||
name: egress-tun-port
|
||||
type: u32
|
||||
-
|
||||
name: actions
|
||||
type: flag
|
||||
-
|
||||
name: ovs-nsh-key-attrs
|
||||
attributes:
|
||||
-
|
||||
name: base
|
||||
type: binary
|
||||
-
|
||||
name: md1
|
||||
type: binary
|
||||
-
|
||||
name: md2
|
||||
type: binary
|
||||
-
|
||||
name: ct-attrs
|
||||
attributes:
|
||||
-
|
||||
name: commit
|
||||
type: flag
|
||||
-
|
||||
name: zone
|
||||
type: u16
|
||||
-
|
||||
name: mark
|
||||
type: binary
|
||||
-
|
||||
name: labels
|
||||
type: binary
|
||||
-
|
||||
name: helper
|
||||
type: string
|
||||
-
|
||||
name: nat
|
||||
type: nest
|
||||
nested-attributes: nat-attrs
|
||||
-
|
||||
name: force-commit
|
||||
type: flag
|
||||
-
|
||||
name: eventmask
|
||||
type: u32
|
||||
-
|
||||
name: timeout
|
||||
type: string
|
||||
-
|
||||
name: nat-attrs
|
||||
attributes:
|
||||
-
|
||||
name: src
|
||||
type: binary
|
||||
-
|
||||
name: dst
|
||||
type: binary
|
||||
-
|
||||
name: ip-min
|
||||
type: binary
|
||||
-
|
||||
name: ip-max
|
||||
type: binary
|
||||
-
|
||||
name: proto-min
|
||||
type: binary
|
||||
-
|
||||
name: proto-max
|
||||
type: binary
|
||||
-
|
||||
name: persistent
|
||||
type: binary
|
||||
-
|
||||
name: proto-hash
|
||||
type: binary
|
||||
-
|
||||
name: proto-random
|
||||
type: binary
|
||||
-
|
||||
name: dec-ttl-attrs
|
||||
attributes:
|
||||
-
|
||||
name: action
|
||||
type: nest
|
||||
nested-attributes: action-attrs
|
||||
-
|
||||
name: vxlan-ext-attrs
|
||||
attributes:
|
||||
-
|
||||
name: gbp
|
||||
type: u32
|
||||
|
||||
operations:
|
||||
fixed-header: ovs-header
|
||||
list:
|
||||
-
|
||||
name: flow-get
|
||||
doc: Get / dump OVS flow configuration and state
|
||||
value: 3
|
||||
attribute-set: flow-attrs
|
||||
do: &flow-get-op
|
||||
request:
|
||||
attributes:
|
||||
- dp-ifindex
|
||||
- key
|
||||
- ufid
|
||||
- ufid-flags
|
||||
reply:
|
||||
attributes:
|
||||
- dp-ifindex
|
||||
- key
|
||||
- ufid
|
||||
- mask
|
||||
- stats
|
||||
- actions
|
||||
dump: *flow-get-op
|
||||
|
||||
mcast-groups:
|
||||
list:
|
||||
-
|
||||
name: ovs_flow
|
|
@ -228,11 +228,13 @@ class SpecStructMember(SpecElement):
|
|||
Attributes:
|
||||
type string, type of the member attribute
|
||||
byte_order string or None for native byte order
|
||||
enum string, name of the enum definition
|
||||
"""
|
||||
def __init__(self, family, yaml):
|
||||
super().__init__(family, yaml)
|
||||
self.type = yaml['type']
|
||||
self.byte_order = yaml.get('byte-order')
|
||||
self.enum = yaml.get('enum')
|
||||
|
||||
|
||||
class SpecStruct(SpecElement):
|
||||
|
|
|
@ -412,7 +412,11 @@ class YnlFamily(SpecFamily):
|
|||
|
||||
def _decode_binary(self, attr, attr_spec):
|
||||
if attr_spec.struct_name:
|
||||
decoded = attr.as_struct(self.consts[attr_spec.struct_name])
|
||||
members = self.consts[attr_spec.struct_name]
|
||||
decoded = attr.as_struct(members)
|
||||
for m in members:
|
||||
if m.enum:
|
||||
self._decode_enum(decoded, m)
|
||||
elif attr_spec.sub_type:
|
||||
decoded = attr.as_c_array(attr_spec.sub_type)
|
||||
else:
|
||||
|
@ -541,7 +545,7 @@ class YnlFamily(SpecFamily):
|
|||
if op.fixed_header:
|
||||
fixed_header_members = self.consts[op.fixed_header].members
|
||||
for m in fixed_header_members:
|
||||
value = vals.pop(m.name)
|
||||
value = vals.pop(m.name) if m.name in vals else 0
|
||||
format = NlAttr.get_format(m.type, m.byte_order)
|
||||
msg += format.pack(value)
|
||||
for name, value in vals.items():
|
||||
|
|
Loading…
Reference in a new issue