inited = true;
fatal_signal_add_hook(close_all_netdevs, NULL, NULL, true);
+ netdev_vport_patch_register();
#ifdef LINUX_DATAPATH
netdev_register_provider(&netdev_linux_class);
netdev_register_provider(&netdev_internal_class);
netdev_register_provider(&netdev_tap_class);
- netdev_vport_register();
+ netdev_vport_tunnel_register();
#endif
#ifdef __FreeBSD__
netdev_register_provider(&netdev_tap_class);
netdev_register_provider(&netdev_bsd_class);
#endif
+ netdev_register_provider(&netdev_tunnel_class);
+ netdev_register_provider(&netdev_pltap_class);
}
}
}
}
-/* Returns true if a network device named 'name' exists and may be opened,
- * otherwise false. */
-bool
-netdev_exists(const char *name)
-{
- struct netdev *netdev;
- int error;
-
- error = netdev_open(name, "system", &netdev);
- if (!error) {
- netdev_close(netdev);
- return true;
- } else {
- if (error != ENODEV) {
- VLOG_WARN("failed to open network device %s: %s",
- name, strerror(error));
- }
- return false;
- }
-}
-
-/* Returns true if a network device named 'name' is currently opened,
- * otherwise false. */
-bool
-netdev_is_open(const char *name)
-{
- return !!shash_find_data(&netdev_dev_shash, name);
-}
-
/* Parses 'netdev_name_', which is of the form [type@]name into its component
* pieces. 'name' and 'type' must be freed by the caller. */
void
return netdev_get_dev(netdev)->netdev_class->type;
}
+
+const char *
+netdev_get_type_from_name(const char *name)
+{
+ const struct netdev_dev *dev = netdev_dev_from_name(name);
+ return dev ? netdev_dev_get_type(dev) : NULL;
+}
+
struct netdev_dev *
netdev_get_dev(const struct netdev *netdev)
{