lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Fri, 14 Dec 2018 20:24:40 +0200
From:   Nikolay Aleksandrov <nikolay@...ulusnetworks.com>
To:     Roopa Prabhu <roopa@...ulusnetworks.com>, davem@...emloft.net
Cc:     netdev@...r.kernel.org, stephen@...workplumber.org,
        dsa@...ulusnetworks.com
Subject: Re: [PATCH net-next 2/4] bridge: support for ndo_fdb_get

On 14/12/2018 19:43, Roopa Prabhu wrote:
> From: Roopa Prabhu <roopa@...ulusnetworks.com>
> 
> This patch implements ndo_fdb_get for the bridge
> fdb.
> 
> Signed-off-by: Roopa Prabhu <roopa@...ulusnetworks.com>
> ---
>  net/bridge/br_device.c  |  1 +
>  net/bridge/br_fdb.c     | 26 ++++++++++++++++++++++++++
>  net/bridge/br_private.h |  3 +++
>  3 files changed, 30 insertions(+)
> 
> diff --git a/net/bridge/br_device.c b/net/bridge/br_device.c
> index 9f41a5d..013323b 100644
> --- a/net/bridge/br_device.c
> +++ b/net/bridge/br_device.c
> @@ -403,6 +403,7 @@ static const struct net_device_ops br_netdev_ops = {
>  	.ndo_fdb_add		 = br_fdb_add,
>  	.ndo_fdb_del		 = br_fdb_delete,
>  	.ndo_fdb_dump		 = br_fdb_dump,
> +	.ndo_fdb_get		 = br_fdb_get,
>  	.ndo_bridge_getlink	 = br_getlink,
>  	.ndo_bridge_setlink	 = br_setlink,
>  	.ndo_bridge_dellink	 = br_dellink,
> diff --git a/net/bridge/br_fdb.c b/net/bridge/br_fdb.c
> index 38b1d0d..fafff6c 100644
> --- a/net/bridge/br_fdb.c
> +++ b/net/bridge/br_fdb.c
> @@ -773,6 +773,32 @@ int br_fdb_dump(struct sk_buff *skb,
>  	return err;
>  }
>  
> +int br_fdb_get(struct sk_buff *skb,
> +	       struct nlattr *tb[],
> +	       struct net_device *dev,
> +	       const unsigned char *addr,
> +	       u16 vid, u32 portid, u32 seq,
> +	       struct netlink_ext_ack *extack)
> +{
> +	struct net_bridge *br = netdev_priv(dev);
> +	struct net_bridge_fdb_entry *f;
> +	int err = 0;
> +
> +	rcu_read_lock();
> +	f = br_fdb_find_rcu(br, addr, vid);
> +	if (!f) {
> +		NL_SET_ERR_MSG(extack, "fdb entry not found");
> +		err = -ENOENT;
> +		goto errout;
> +	}
> +
> +	err = fdb_fill_info(skb, br, f, portid, seq,
> +			    RTM_NEWNEIGH, 0);
> +errout:
> +	rcu_read_unlock();
> +	return err;
> +}
> +
>  /* Update (create or replace) forwarding database entry */
>  static int fdb_add_entry(struct net_bridge *br, struct net_bridge_port *source,
>  			 const u8 *addr, u16 state, u16 flags, u16 vid,
> diff --git a/net/bridge/br_private.h b/net/bridge/br_private.h
> index ff3dfb2..d240b3e 100644
> --- a/net/bridge/br_private.h
> +++ b/net/bridge/br_private.h
> @@ -575,6 +575,9 @@ int br_fdb_add(struct ndmsg *nlh, struct nlattr *tb[], struct net_device *dev,
>  	       const unsigned char *addr, u16 vid, u16 nlh_flags);
>  int br_fdb_dump(struct sk_buff *skb, struct netlink_callback *cb,
>  		struct net_device *dev, struct net_device *fdev, int *idx);
> +int br_fdb_get(struct sk_buff *skb, struct nlattr *tb[], struct net_device *dev,
> +	       const unsigned char *addr, u16 vid, u32 portid, u32 seq,
> +	       struct netlink_ext_ack *extack);
>  int br_fdb_sync_static(struct net_bridge *br, struct net_bridge_port *p);
>  void br_fdb_unsync_static(struct net_bridge *br, struct net_bridge_port *p);
>  int br_fdb_external_learn_add(struct net_bridge *br, struct net_bridge_port *p,
> 

Acked-by: Nikolay Aleksandrov <nikolay@...ulusnetworks.com>

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ