Commit 04f48a68c428 ("ofp-actions: Fix variable length meta-flow OXMs."), on
branch-2.7 as 9554b03d6ab7, attempted to address incorrect encode and decode of
variable length metaflow fields where the OXM/NXM encoding of the variable
length fields would incorrectly serialize the length. The patch addresses this
by introducing a new per-bridge structure that adds additional metaflow fields
for the variable-length fields on demand when the TLVs are configured by a
controller.Unfortunately, in the original patch there was nothing ensuring that flows referring to variable length fields would retain valid field references when controllers reconfigure the TLVs. In practice, this could lead to a crash of ovs-vswitchd by configuring a TLV field, adding a flow which refers to it, removing the TLV field, then running some traffic that hit the configured flow. This series looks to remedy the situation by reference counting the variable length fields and preventing a controller from reconfiguring TLV fields when there are active flows whose match or actions refer to the field. This series was applied to master, but given the size of the change and the minor changes necessary to apply to branch-2.7, I would feel more confident in backporting it if there was an extra round of review to ensure that nothing was missed when this series was first applied to master. Yi-Hung Wei (4): nx-match: Fix oxm decode. nx-match: Use vl_mff_map to parse match field. ofproto: Add ref counting for variable length mf_fields. ofproto: Move tun_table and vl_mff_map deletion. build-aux/extract-ofp-actions | 9 +- include/openvswitch/ofp-actions.h | 2 + include/openvswitch/ofp-errors.h | 4 + include/openvswitch/ofp-util.h | 7 +- lib/learn.c | 5 + lib/learning-switch.c | 2 +- lib/meta-flow.c | 228 ++++++++++++++++++++++++++++++++------ lib/nx-match.c | 52 ++++++--- lib/nx-match.h | 9 +- lib/ofp-actions.c | 208 +++++++++++++++++++++------------- lib/ofp-print.c | 4 +- lib/ofp-util.c | 101 +++++++++++------ lib/vl-mff-map.h | 17 ++- ofproto/ofproto-provider.h | 4 + ofproto/ofproto.c | 58 +++++++--- ovn/controller/pinctrl.c | 8 +- tests/ofproto.at | 15 ++- tests/tunnel.at | 76 ++++++++++++- utilities/ovs-ofctl.c | 15 +-- 19 files changed, 614 insertions(+), 210 deletions(-) -- 2.11.1 _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
