Commit edc7d573 authored by stephen hemminger's avatar stephen hemminger Committed by David S. Miller

netlink: add attributes to fdb interface

Later changes need to be able to refer to neighbour attributes
when doing fdb_add.
Signed-off-by: default avatarStephen Hemminger <shemminger@vyatta.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent de0a4148
...@@ -6889,7 +6889,7 @@ static int ixgbe_set_features(struct net_device *netdev, ...@@ -6889,7 +6889,7 @@ static int ixgbe_set_features(struct net_device *netdev,
return 0; 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, struct net_device *dev,
const unsigned char *addr, const unsigned char *addr,
u16 flags) u16 flags)
......
...@@ -546,7 +546,7 @@ static int macvlan_vlan_rx_kill_vid(struct net_device *dev, ...@@ -546,7 +546,7 @@ static int macvlan_vlan_rx_kill_vid(struct net_device *dev,
return 0; 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, struct net_device *dev,
const unsigned char *addr, const unsigned char *addr,
u16 flags) u16 flags)
......
...@@ -904,7 +904,8 @@ struct netdev_fcoe_hbainfo { ...@@ -904,7 +904,8 @@ struct netdev_fcoe_hbainfo {
* feature set might be less than what was returned by ndo_fix_features()). * feature set might be less than what was returned by ndo_fix_features()).
* Must return >0 or -errno if it changed dev->features itself. * 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) * const unsigned char *addr, u16 flags)
* Adds an FDB entry to dev for addr. * Adds an FDB entry to dev for addr.
* int (*ndo_fdb_del)(struct ndmsg *ndm, struct net_device *dev, * int (*ndo_fdb_del)(struct ndmsg *ndm, struct net_device *dev,
...@@ -1014,6 +1015,7 @@ struct net_device_ops { ...@@ -1014,6 +1015,7 @@ struct net_device_ops {
void (*ndo_neigh_destroy)(struct neighbour *n); void (*ndo_neigh_destroy)(struct neighbour *n);
int (*ndo_fdb_add)(struct ndmsg *ndm, int (*ndo_fdb_add)(struct ndmsg *ndm,
struct nlattr *tb[],
struct net_device *dev, struct net_device *dev,
const unsigned char *addr, const unsigned char *addr,
u16 flags); u16 flags);
......
...@@ -608,7 +608,8 @@ static int fdb_add_entry(struct net_bridge_port *source, const __u8 *addr, ...@@ -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 */ /* 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) const unsigned char *addr, u16 nlh_flags)
{ {
struct net_bridge_port *p; struct net_bridge_port *p;
......
...@@ -364,7 +364,7 @@ extern void br_fdb_update(struct net_bridge *br, ...@@ -364,7 +364,7 @@ extern void br_fdb_update(struct net_bridge *br,
extern int br_fdb_delete(struct ndmsg *ndm, extern int br_fdb_delete(struct ndmsg *ndm,
struct net_device *dev, struct net_device *dev,
const unsigned char *addr); 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, struct net_device *dev,
const unsigned char *addr, const unsigned char *addr,
u16 nlh_flags); u16 nlh_flags);
......
...@@ -2090,7 +2090,8 @@ static int rtnl_fdb_add(struct sk_buff *skb, struct nlmsghdr *nlh, void *arg) ...@@ -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) && if ((!ndm->ndm_flags || ndm->ndm_flags & NTF_MASTER) &&
(dev->priv_flags & IFF_BRIDGE_PORT)) { (dev->priv_flags & IFF_BRIDGE_PORT)) {
master = dev->master; 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); nlh->nlmsg_flags);
if (err) if (err)
goto out; goto out;
...@@ -2100,7 +2101,8 @@ static int rtnl_fdb_add(struct sk_buff *skb, struct nlmsghdr *nlh, void *arg) ...@@ -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 */ /* Embedded bridge, macvlan, and any other device support */
if ((ndm->ndm_flags & NTF_SELF) && dev->netdev_ops->ndo_fdb_add) { 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); nlh->nlmsg_flags);
if (!err) { if (!err) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment