On Fri, 30 Nov 2012 17:58:32 +0800 Cong Wang <amwang@xxxxxxxxxx> wrote: > port_no will be used to get ifindex of a port in user-space, > export it togather with port_id. > > Cc: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx> > Cc: Stephen Hemminger <shemminger@xxxxxxxxxx> > Cc: "David S. Miller" <davem@xxxxxxxxxxxxx> > Cc: Thomas Graf <tgraf@xxxxxxx> > Cc: Jesper Dangaard Brouer <brouer@xxxxxxxxxx> > Signed-off-by: Cong Wang <amwang@xxxxxxxxxx> > Acked-by: Thomas Graf <tgraf@xxxxxxx> > Signed-off-by: Cong Wang <amwang@xxxxxxxxxx> > --- > include/uapi/linux/if_link.h | 2 ++ > net/bridge/br_netlink.c | 8 +++++++- > 2 files changed, 9 insertions(+), 1 deletions(-) > > diff --git a/include/uapi/linux/if_link.h b/include/uapi/linux/if_link.h > index bb58aeb..9cd91a9 100644 > --- a/include/uapi/linux/if_link.h > +++ b/include/uapi/linux/if_link.h > @@ -218,6 +218,8 @@ enum { > IFLA_BRPORT_MODE, /* mode (hairpin) */ > IFLA_BRPORT_GUARD, /* bpdu guard */ > IFLA_BRPORT_PROTECT, /* root port protection */ > + IFLA_BRPORT_NO, /* port no */ > + IFLA_BRPORT_ID, /* port id */ > __IFLA_BRPORT_MAX > }; > #define IFLA_BRPORT_MAX (__IFLA_BRPORT_MAX - 1) > diff --git a/net/bridge/br_netlink.c b/net/bridge/br_netlink.c > index 65429b9..7b7414e 100644 > --- a/net/bridge/br_netlink.c > +++ b/net/bridge/br_netlink.c > @@ -28,6 +28,8 @@ static inline size_t br_port_info_size(void) > + nla_total_size(1) /* IFLA_BRPORT_MODE */ > + nla_total_size(1) /* IFLA_BRPORT_GUARD */ > + nla_total_size(1) /* IFLA_BRPORT_PROTECT */ > + + nla_total_size(2) /* IFLA_BRPORT_NO */ > + + nla_total_size(2) /* IFLA_BRPORT_ID */ > + 0; > } > > @@ -53,7 +55,9 @@ static int br_port_fill_attrs(struct sk_buff *skb, > nla_put_u32(skb, IFLA_BRPORT_COST, p->path_cost) || > nla_put_u8(skb, IFLA_BRPORT_MODE, mode) || > nla_put_u8(skb, IFLA_BRPORT_GUARD, !!(p->flags & BR_BPDU_GUARD)) || > - nla_put_u8(skb, IFLA_BRPORT_PROTECT, !!(p->flags & BR_ROOT_BLOCK))) > + nla_put_u8(skb, IFLA_BRPORT_PROTECT, !!(p->flags & BR_ROOT_BLOCK)) || > + nla_put_u16(skb, IFLA_BRPORT_NO, p->port_no) || > + nla_put_u16(skb, IFLA_BRPORT_ID, p->port_id)) > return -EMSGSIZE; > > return 0; > @@ -168,6 +172,8 @@ static const struct nla_policy ifla_brport_policy[IFLA_BRPORT_MAX + 1] = { > [IFLA_BRPORT_MODE] = { .type = NLA_U8 }, > [IFLA_BRPORT_GUARD] = { .type = NLA_U8 }, > [IFLA_BRPORT_PROTECT] = { .type = NLA_U8 }, > + [IFLA_BRPORT_NO] = { .type = NLA_U16 }, > + [IFLA_BRPORT_ID] = { .type = NLA_U16 }, > }; > > /* Change the state of the port and notify spanning tree */ I don't think these are necessary. The device is already available and the relationship can be determined from other messages. This is what RSTP daemon does.