git://git.onelab.eu
/
sliver-openvswitch.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'master' of git://openvswitch.org/openvswitch
[sliver-openvswitch.git]
/
lib
/
netdev.c
diff --git
a/lib/netdev.c
b/lib/netdev.c
index
2561538
..
d5a51fa
100644
(file)
--- a/
lib/netdev.c
+++ b/
lib/netdev.c
@@
-89,6
+89,8
@@
netdev_initialize(void)
netdev_register_provider(&netdev_tap_class);
netdev_register_provider(&netdev_bsd_class);
#endif
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);
}
}
}
}
@@
-1386,11
+1388,18
@@
netdev_get_class(const struct netdev *netdev)
/* Returns the netdev with 'name' or NULL if there is none.
*
/* Returns the netdev with 'name' or NULL if there is none.
*
- * The caller must
not free the returned value
. */
+ * The caller must
free the returned netdev with netdev_close()
. */
struct netdev *
netdev_from_name(const char *name)
{
struct netdev *
netdev_from_name(const char *name)
{
- return shash_find_data(&netdev_shash, name);
+ struct netdev *netdev;
+
+ netdev = shash_find_data(&netdev_shash, name);
+ if (netdev) {
+ netdev_ref(netdev);
+ }
+
+ return netdev;
}
/* Fills 'device_list' with devices that match 'netdev_class'.
}
/* Fills 'device_list' with devices that match 'netdev_class'.
@@
-1415,8
+1424,10
@@
netdev_get_devices(const struct netdev_class *netdev_class,
const char *
netdev_get_type_from_name(const char *name)
{
const char *
netdev_get_type_from_name(const char *name)
{
- const struct netdev *dev = netdev_from_name(name);
- return dev ? netdev_get_type(dev) : NULL;
+ struct netdev *dev = netdev_from_name(name);
+ const char *type = dev ? netdev_get_type(dev) : NULL;
+ netdev_close(dev);
+ return type;
}
\f
void
}
\f
void