On 07/21/2015 12:28 AM, Stephen Hemminger wrote:
On Fri, 10 Jul 2015 08:02:08 -0700
Nikolay Aleksandrov [off-list ref] wrote:
quoted
diff --git a/include/uapi/linux/if_bridge.h b/include/uapi/linux/if_bridge.h
index eaaea6208b42..3635b7797508 100644
--- a/include/uapi/linux/if_bridge.h
+++ b/include/uapi/linux/if_bridge.h
@@ -182,6 +182,7 @@ struct br_mdb_entry {
#define MDB_TEMPORARY 0
#define MDB_PERMANENT 1
__u8 state;
+ __u16 vid;
struct {
union {
__be32 ip4;
You added a new field into an unused hole in a data
structure shared as part of API with user space.
This seems like it might break when newer iproute
is run on older kernels. The vid would always be 0
on show and ignored when adding entries.
I thought it'd be fine because the vid was 0 anyway and
when it's 0 it's not shown i.e. no vid so the show command
will have the same output. And when set - it'll be ignored
which is again as the behaviour before when it couldn't be
specified.
Here's the new iproute2 on an older kernel:
# ./bridge/bridge mdb add dev virbr0 port vnet1 grp 239.0.0.1 permanent vid 200
# ./bridge/bridge mdb
dev virbr0 port vnet1 grp 239.0.0.1 permanent