mirror of
https://github.com/torvalds/linux.git
synced 2026-04-18 14:53:58 -04:00
netdevsim: allow two netdevsim ports to be connected
Add two netdevsim bus attribute to sysfs: /sys/bus/netdevsim/link_device /sys/bus/netdevsim/unlink_device Writing "A M B N" to link_device will link netdevsim M in netnsid A with netdevsim N in netnsid B. Writing "A M" to unlink_device will unlink netdevsim M in netnsid A from its peer, if any. rtnl_lock is taken to ensure nothing changes during the linking. Signed-off-by: David Wei <dw@davidwei.uk> Reviewed-by: Maciek Machnikowski <maciek@machnikowski.net> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
e2d890afba
commit
f532957d76
@@ -413,8 +413,13 @@ err_free_netdev:
|
||||
void nsim_destroy(struct netdevsim *ns)
|
||||
{
|
||||
struct net_device *dev = ns->netdev;
|
||||
struct netdevsim *peer;
|
||||
|
||||
rtnl_lock();
|
||||
peer = rtnl_dereference(ns->peer);
|
||||
if (peer)
|
||||
RCU_INIT_POINTER(peer->peer, NULL);
|
||||
RCU_INIT_POINTER(ns->peer, NULL);
|
||||
unregister_netdevice(dev);
|
||||
if (nsim_dev_port_is_pf(ns->nsim_dev_port)) {
|
||||
nsim_macsec_teardown(ns);
|
||||
@@ -427,6 +432,11 @@ void nsim_destroy(struct netdevsim *ns)
|
||||
free_netdev(dev);
|
||||
}
|
||||
|
||||
bool netdev_is_nsim(struct net_device *dev)
|
||||
{
|
||||
return dev->netdev_ops == &nsim_netdev_ops;
|
||||
}
|
||||
|
||||
static int nsim_validate(struct nlattr *tb[], struct nlattr *data[],
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user