bridge: netlink: export port's id and number
authorNikolay Aleksandrov <nikolay@cumulusnetworks.com>
Tue, 6 Oct 2015 12:11:58 +0000 (14:11 +0200)
committerDavid S. Miller <davem@davemloft.net>
Wed, 7 Oct 2015 11:49:29 +0000 (04:49 -0700)
Add IFLA_BRPORT_(ID|NO) to allow getting port's port_id and port_no
respectively via netlink.

Signed-off-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/uapi/linux/if_link.h
net/bridge/br_netlink.c

index 837caf9..6857563 100644 (file)
@@ -296,6 +296,8 @@ enum {
        IFLA_BRPORT_BRIDGE_ID,  /* designated bridge */
        IFLA_BRPORT_DESIGNATED_PORT,
        IFLA_BRPORT_DESIGNATED_COST,
+       IFLA_BRPORT_ID,
+       IFLA_BRPORT_NO,
        __IFLA_BRPORT_MAX
 };
 #define IFLA_BRPORT_MAX (__IFLA_BRPORT_MAX - 1)
index 678d227..e513327 100644 (file)
@@ -131,6 +131,8 @@ static inline size_t br_port_info_size(void)
                + nla_total_size(sizeof(struct ifla_bridge_id)) /* IFLA_BRPORT_BRIDGE_ID */
                + nla_total_size(sizeof(u16))   /* IFLA_BRPORT_DESIGNATED_PORT */
                + nla_total_size(sizeof(u16))   /* IFLA_BRPORT_DESIGNATED_COST */
+               + nla_total_size(sizeof(u16))   /* IFLA_BRPORT_ID */
+               + nla_total_size(sizeof(u16))   /* IFLA_BRPORT_NO */
                + 0;
 }
 
@@ -170,7 +172,9 @@ static int br_port_fill_attrs(struct sk_buff *skb,
            nla_put(skb, IFLA_BRPORT_BRIDGE_ID, sizeof(struct ifla_bridge_id),
                    &p->designated_bridge) ||
            nla_put_u16(skb, IFLA_BRPORT_DESIGNATED_PORT, p->designated_port) ||
-           nla_put_u16(skb, IFLA_BRPORT_DESIGNATED_COST, p->designated_cost))
+           nla_put_u16(skb, IFLA_BRPORT_DESIGNATED_COST, p->designated_cost) ||
+           nla_put_u16(skb, IFLA_BRPORT_ID, p->port_id) ||
+           nla_put_u16(skb, IFLA_BRPORT_NO, p->port_no))
                return -EMSGSIZE;
 
        return 0;