bridge: netlink: export port's designated cost and port
authorNikolay Aleksandrov <nikolay@cumulusnetworks.com>
Tue, 6 Oct 2015 12:11:57 +0000 (14:11 +0200)
committerDavid S. Miller <davem@davemloft.net>
Wed, 7 Oct 2015 11:49:29 +0000 (04:49 -0700)
Add IFLA_BRPORT_DESIGNATED_(COST|PORT) to allow getting the port's
designated cost and port 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 e891c32..837caf9 100644 (file)
@@ -294,6 +294,8 @@ enum {
        IFLA_BRPORT_PROXYARP_WIFI, /* proxy ARP for Wi-Fi */
        IFLA_BRPORT_ROOT_ID,    /* designated root */
        IFLA_BRPORT_BRIDGE_ID,  /* designated bridge */
+       IFLA_BRPORT_DESIGNATED_PORT,
+       IFLA_BRPORT_DESIGNATED_COST,
        __IFLA_BRPORT_MAX
 };
 #define IFLA_BRPORT_MAX (__IFLA_BRPORT_MAX - 1)
index c3e0b73..678d227 100644 (file)
@@ -129,6 +129,8 @@ static inline size_t br_port_info_size(void)
                + nla_total_size(1)     /* IFLA_BRPORT_PROXYARP_WIFI */
                + nla_total_size(sizeof(struct ifla_bridge_id)) /* IFLA_BRPORT_ROOT_ID */
                + 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 */
                + 0;
 }
 
@@ -166,7 +168,9 @@ static int br_port_fill_attrs(struct sk_buff *skb,
            nla_put(skb, IFLA_BRPORT_ROOT_ID, sizeof(struct ifla_bridge_id),
                    &p->designated_root) ||
            nla_put(skb, IFLA_BRPORT_BRIDGE_ID, sizeof(struct ifla_bridge_id),
-                   &p->designated_bridge))
+                   &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))
                return -EMSGSIZE;
 
        return 0;