int br_del_bridge(char *name) { struct net_device *dev; struct net_bridge *br; dev = __dev_get_by_name(name); if (!dev) return -ENXIO; if (dev->hard_start_xmit != br_dev_xmit) return -EPERM; if (dev->flags & IFF_UP) return -EBUSY; br = dev->priv; BUG_ON(&br->dev != dev); del_ifs(br); unregister_netdevice(dev); kfree(br); br_dec_use_count(); return 0; }
int br_del_bridge(char *name) { struct net_bridge **b; struct net_bridge *br; if ((b = __find_br(name)) == NULL) return -ENXIO; br = *b; if (br->dev.flags & IFF_UP) return -EBUSY; del_ifs(br); *b = br->next; unregister_netdev(&br->dev); kfree(br); br_dec_use_count(); return 0; }