netlink: add attributes to fdb interface
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>
This commit is contained in:
parent
de0a41484c
commit
edc7d57327
@ -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,
|
|||||||
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 {
|
|||||||
* 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 {
|
|||||||
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,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* 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,
|
|||||||
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)
|
|||||||
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)
|
|||||||
|
|
||||||
/* 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) {
|
||||||
|
Loading…
Reference in New Issue
Block a user