diff options
author | Benjamin Poirier <bpoirier@nvidia.com> | 2023-12-11 09:07:22 -0500 |
---|---|---|
committer | Stephen Hemminger <stephen@networkplumber.org> | 2023-12-22 09:54:23 -0800 |
commit | 7418335b4b43de1ed3e9d6f651f5d2cb39f8ee95 (patch) | |
tree | eaddd69186a8fefc920cd5a7b3f205c5acf24663 | |
parent | b627c387eb5c9c8ce37af1fc72fdbc30811fc78d (diff) | |
download | iproute2-next-7418335b4b43de1ed3e9d6f651f5d2cb39f8ee95.tar.gz |
bridge: vni: Guard close_vni_port() call
Currently, the call to open_vni_port() within print_vnifilter_rtm() is
written in a way that is safe if there is a RTM_{NEW,DEL,GET}TUNNEL message
without any VXLAN_VNIFILTER_ENTRY attribute. However the close_vni_port()
call is written in a way that assumes there is always at least one
VXLAN_VNIFILTER_ENTRY attribute within every RTM_*TUNNEL message. At this
time, this assumption is correct. However, the code should be consistent in
its assumptions. Choose the safe approach and fix the asymmetry between the
open_vni_port() and close_vni_port() calls by guarding the latter call with
a check.
Reviewed-by: Petr Machata <petrm@nvidia.com>
Tested-by: Petr Machata <petrm@nvidia.com>
Signed-off-by: Benjamin Poirier <bpoirier@nvidia.com>
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
-rw-r--r-- | bridge/vni.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/bridge/vni.c b/bridge/vni.c index 8a6ac2458..ca5d2e433 100644 --- a/bridge/vni.c +++ b/bridge/vni.c @@ -341,7 +341,9 @@ int print_vnifilter_rtm(struct nlmsghdr *n, void *arg) print_vni(t, tmsg->ifindex); } - close_vni_port(); + + if (!first) + close_vni_port(); print_string(PRINT_FP, NULL, "%s", _SL_); |