netlink: add attributes to fdb interface
authorstephen hemminger <shemminger@vyatta.com>
Mon, 1 Oct 2012 12:32:33 +0000 (12:32 +0000)
committerDavid S. Miller <davem@davemloft.net>
Mon, 1 Oct 2012 22:39:44 +0000 (18:39 -0400)
Later changes need to be able to refer to neighbour attributes
when doing fdb_add.

Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
drivers/net/macvlan.c
include/linux/netdevice.h
net/bridge/br_fdb.c
net/bridge/br_private.h
net/core/rtnetlink.c

index 29465be..0ba6d95 100644 (file)
@@ -6889,7 +6889,7 @@ static int ixgbe_set_features(struct net_device *netdev,
        return 0;
 }
 
-static int ixgbe_ndo_fdb_add(struct ndmsg *ndm,
+static int ixgbe_ndo_fdb_add(struct ndmsg *ndm, struct nlattr *tb[],
                             struct net_device *dev,
                             const unsigned char *addr,
                             u16 flags)
index 815dfcf..68a43fe 100644 (file)
@@ -546,7 +546,7 @@ static int macvlan_vlan_rx_kill_vid(struct net_device *dev,
        return 0;
 }
 
-static int macvlan_fdb_add(struct ndmsg *ndm,
+static int macvlan_fdb_add(struct ndmsg *ndm, struct nlattr *tb[],
                           struct net_device *dev,
                           const unsigned char *addr,
                           u16 flags)
index dd320bb..807a610 100644 (file)
@@ -904,7 +904,8 @@ struct netdev_fcoe_hbainfo {
  *     feature set might be less than what was returned by ndo_fix_features()).
  *     Must return >0 or -errno if it changed dev->features itself.
  *
- * int (*ndo_fdb_add)(struct ndmsg *ndm, struct net_device *dev,
+ * int (*ndo_fdb_add)(struct ndmsg *ndm, struct nlattr *tb[],
+ *                   struct net_device *dev,
  *                   const unsigned char *addr, u16 flags)
  *     Adds an FDB entry to dev for addr.
  * int (*ndo_fdb_del)(struct ndmsg *ndm, struct net_device *dev,
@@ -1014,6 +1015,7 @@ struct net_device_ops {
        void                    (*ndo_neigh_destroy)(struct neighbour *n);
 
        int                     (*ndo_fdb_add)(struct ndmsg *ndm,
+                                              struct nlattr *tb[],
                                               struct net_device *dev,
                                               const unsigned char *addr,
                                               u16 flags);
index 0286119..d9576e6 100644 (file)
@@ -608,7 +608,8 @@ static int fdb_add_entry(struct net_bridge_port *source, const __u8 *addr,
 }
 
 /* Add new permanent fdb entry with RTM_NEWNEIGH */
-int br_fdb_add(struct ndmsg *ndm, struct net_device *dev,
+int br_fdb_add(struct ndmsg *ndm, struct nlattr *tb[],
+              struct net_device *dev,
               const unsigned char *addr, u16 nlh_flags)
 {
        struct net_bridge_port *p;
index 11a984b..9b278c4 100644 (file)
@@ -364,7 +364,7 @@ extern void br_fdb_update(struct net_bridge *br,
 extern int br_fdb_delete(struct ndmsg *ndm,
                         struct net_device *dev,
                         const unsigned char *addr);
-extern int br_fdb_add(struct ndmsg *nlh,
+extern int br_fdb_add(struct ndmsg *nlh, struct nlattr *tb[],
                      struct net_device *dev,
                      const unsigned char *addr,
                      u16 nlh_flags);
index 9257537..76d4c2c 100644 (file)
@@ -2090,7 +2090,8 @@ static int rtnl_fdb_add(struct sk_buff *skb, struct nlmsghdr *nlh, void *arg)
        if ((!ndm->ndm_flags || ndm->ndm_flags & NTF_MASTER) &&
            (dev->priv_flags & IFF_BRIDGE_PORT)) {
                master = dev->master;
-               err = master->netdev_ops->ndo_fdb_add(ndm, dev, addr,
+               err = master->netdev_ops->ndo_fdb_add(ndm, tb,
+                                                     dev, addr,
                                                      nlh->nlmsg_flags);
                if (err)
                        goto out;
@@ -2100,7 +2101,8 @@ static int rtnl_fdb_add(struct sk_buff *skb, struct nlmsghdr *nlh, void *arg)
 
        /* Embedded bridge, macvlan, and any other device support */
        if ((ndm->ndm_flags & NTF_SELF) && dev->netdev_ops->ndo_fdb_add) {
-               err = dev->netdev_ops->ndo_fdb_add(ndm, dev, addr,
+               err = dev->netdev_ops->ndo_fdb_add(ndm, tb,
+                                                  dev, addr,
                                                   nlh->nlmsg_flags);
 
                if (!err) {