On 10/31/17 4:20 PM, Jeff Barnhill wrote: > Thanks, David. Those slides are extremely helpful. > > Also, I ran into a bug that manifested on big endian architecture: > > diff --git i/drivers/net/vrf.c w/drivers/net/vrf.c > index b23bb2fae5f8..a5f984689aee 100644 > --- i/drivers/net/vrf.c > +++ w/drivers/net/vrf.c > @@ -1130,7 +1130,7 @@ static int vrf_fib_rule(const struct net_device > *dev, __u8 family, bool add_it) > frh->family = family; > frh->action = FR_ACT_TO_TBL; > > - if (nla_put_u32(skb, FRA_L3MDEV, 1)) > + if (nla_put_u8(skb, FRA_L3MDEV, 1)) > goto nla_put_failure; > > if (nla_put_u32(skb, FRA_PRIORITY, FIB_RULE_PREF)) > > I was surprised that nlmsg_parse in fib_nl_newrule() didn't pick this > up, but I verified that the received value for this attribute was 0, > not 1 (w/o the patch). >
yikes, I am surprised the fib rule policy did not catch that. Please submit formally with: Fixes: 1aa6c4f6b8cd8 ("net: vrf: Add l3mdev rules on first device create")