From 4ea51dc9cc41cc22e7dbb0d41c68fc133c924adb Mon Sep 17 00:00:00 2001 From: Subhranil Choudhury Date: Mon, 6 Apr 2020 01:22:29 +0530 Subject: [PATCH 257/281] linux: Delete fdb entry using netdev Added and exported a new API to delete a bridge FDB entry using net device. Change-Id: Icc7c7f8608083edf02248cd25ee6a88cad81dd76 Signed-off-by: Subhranil Choudhury --- include/linux/if_bridge.h | 2 ++ net/bridge/br_fdb.c | 13 +++++++++++++ 2 files changed, 15 insertions(+) diff --git a/include/linux/if_bridge.h b/include/linux/if_bridge.h index 41c7a7b5a7c4..a2fafbd5b6af 100644 --- a/include/linux/if_bridge.h +++ b/include/linux/if_bridge.h @@ -253,6 +253,8 @@ struct br_fdb_event { extern void br_fdb_register_notify(struct notifier_block *nb); extern void br_fdb_unregister_notify(struct notifier_block *nb); extern struct net_device *br_fdb_bridge_dev_get_and_hold(struct net_bridge *br); +extern int br_fdb_delete_by_netdev(struct net_device *dev, + const unsigned char *addr, u16 vid); typedef struct net_bridge_port *br_get_dst_hook_t( const struct net_bridge_port *src, diff --git a/net/bridge/br_fdb.c b/net/bridge/br_fdb.c index 95a038a20c03..6c9ee0d28194 100644 --- a/net/bridge/br_fdb.c +++ b/net/bridge/br_fdb.c @@ -1365,6 +1365,19 @@ static int __br_fdb_delete(struct net_bridge *br, return err; } +int br_fdb_delete_by_netdev(struct net_device *dev, + const unsigned char *addr, u16 vid) +{ + int err; + + rtnl_lock(); + err = br_fdb_delete(NULL, NULL, dev, addr, vid); + rtnl_unlock(); + + return err; +} +EXPORT_SYMBOL_GPL(br_fdb_delete_by_netdev); + /* Remove neighbor entry with RTM_DELNEIGH */ int br_fdb_delete(struct ndmsg *ndm, struct nlattr *tb[], struct net_device *dev, -- 2.17.1