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
stream-ssl: Improve messages when configuring SSL if it is unsupported.
[sliver-openvswitch.git]
/
lib
/
netdev.c
diff --git
a/lib/netdev.c
b/lib/netdev.c
index
f06742a
..
bf7ff6a
100644
(file)
--- a/
lib/netdev.c
+++ b/
lib/netdev.c
@@
-37,6
+37,7
@@
#include "packets.h"
#include "poll-loop.h"
#include "shash.h"
#include "packets.h"
#include "poll-loop.h"
#include "shash.h"
+#include "sset.h"
#include "svec.h"
#include "vlog.h"
#include "svec.h"
#include "vlog.h"
@@
-176,18
+177,18
@@
netdev_lookup_provider(const char *type)
}
/* Clears 'types' and enumerates the types of all currently registered netdev
}
/* Clears 'types' and enumerates the types of all currently registered netdev
- * providers into it. The caller must first initialize the s
vec
. */
+ * providers into it. The caller must first initialize the s
set
. */
void
void
-netdev_enumerate_types(struct s
vec
*types)
+netdev_enumerate_types(struct s
set
*types)
{
struct shash_node *node;
netdev_initialize();
{
struct shash_node *node;
netdev_initialize();
- s
vec
_clear(types);
+ s
set
_clear(types);
SHASH_FOR_EACH(node, &netdev_classes) {
const struct netdev_class *netdev_class = node->data;
SHASH_FOR_EACH(node, &netdev_classes) {
const struct netdev_class *netdev_class = node->data;
- s
vec
_add(types, netdev_class->type);
+ s
set
_add(types, netdev_class->type);
}
}
}
}
@@
-359,20
+360,20
@@
netdev_is_open(const char *name)
return !!shash_find_data(&netdev_dev_shash, name);
}
return !!shash_find_data(&netdev_dev_shash, name);
}
-/* Clears 's
vec
' and enumerates the names of all known network devices. */
+/* Clears 's
set
' and enumerates the names of all known network devices. */
int
int
-netdev_enumerate(struct s
vec *svec
)
+netdev_enumerate(struct s
set *sset
)
{
struct shash_node *node;
int error = 0;
netdev_initialize();
{
struct shash_node *node;
int error = 0;
netdev_initialize();
- s
vec_clear(svec
);
+ s
set_clear(sset
);
SHASH_FOR_EACH(node, &netdev_classes) {
const struct netdev_class *netdev_class = node->data;
if (netdev_class->enumerate) {
SHASH_FOR_EACH(node, &netdev_classes) {
const struct netdev_class *netdev_class = node->data;
if (netdev_class->enumerate) {
- int retval = netdev_class->enumerate(s
vec
);
+ int retval = netdev_class->enumerate(s
set
);
if (retval) {
VLOG_WARN("failed to enumerate %s network devices: %s",
netdev_class->type, strerror(retval));
if (retval) {
VLOG_WARN("failed to enumerate %s network devices: %s",
netdev_class->type, strerror(retval));
@@
-963,13
+964,13
@@
netdev_set_policing(struct netdev *netdev, uint32_t kbits_rate,
* Every network device supports disabling QoS with a type of "", but this type
* will not be added to 'types'.
*
* Every network device supports disabling QoS with a type of "", but this type
* will not be added to 'types'.
*
- * The caller must initialize 'types' (e.g. with s
vec
_init()) before calling
+ * The caller must initialize 'types' (e.g. with s
set
_init()) before calling
* this function. The caller is responsible for destroying 'types' (e.g. with
* this function. The caller is responsible for destroying 'types' (e.g. with
- * s
vec
_destroy()) when it is no longer needed.
+ * s
set
_destroy()) when it is no longer needed.
*
* Returns 0 if successful, otherwise a positive errno value. */
int
*
* Returns 0 if successful, otherwise a positive errno value. */
int
-netdev_get_qos_types(const struct netdev *netdev, struct s
vec
*types)
+netdev_get_qos_types(const struct netdev *netdev, struct s
set
*types)
{
const struct netdev_class *class = netdev_get_dev(netdev)->netdev_class;
return (class->get_qos_types
{
const struct netdev_class *class = netdev_get_dev(netdev)->netdev_class;
return (class->get_qos_types
@@
-1257,12
+1258,11
@@
struct netdev *
netdev_find_dev_by_in4(const struct in_addr *in4)
{
struct netdev *netdev;
netdev_find_dev_by_in4(const struct in_addr *in4)
{
struct netdev *netdev;
- struct s
vec dev_list = SVEC_EMPTY_INITIALIZER
;
-
size_t i
;
+ struct s
set dev_list = SSET_INITIALIZER(&dev_list)
;
+
const char *name
;
netdev_enumerate(&dev_list);
netdev_enumerate(&dev_list);
- for (i = 0; i < dev_list.n; i++) {
- const char *name = dev_list.names[i];
+ SSET_FOR_EACH (name, &dev_list) {
struct in_addr dev_in4;
if (!netdev_open_default(name, &netdev)
struct in_addr dev_in4;
if (!netdev_open_default(name, &netdev)
@@
-1275,7
+1275,7
@@
netdev_find_dev_by_in4(const struct in_addr *in4)
netdev = NULL;
exit:
netdev = NULL;
exit:
- s
vec
_destroy(&dev_list);
+ s
set
_destroy(&dev_list);
return netdev;
}
\f
return netdev;
}
\f
@@
-1444,7
+1444,7
@@
netdev_notifier_init(struct netdev_notifier *notifier, struct netdev *netdev,
/* Tracks changes in the status of a set of network devices. */
struct netdev_monitor {
struct shash polled_netdevs;
/* Tracks changes in the status of a set of network devices. */
struct netdev_monitor {
struct shash polled_netdevs;
- struct s
hash
changed_netdevs;
+ struct s
set
changed_netdevs;
};
/* Creates and returns a new structure for monitor changes in the status of
};
/* Creates and returns a new structure for monitor changes in the status of
@@
-1454,7
+1454,7
@@
netdev_monitor_create(void)
{
struct netdev_monitor *monitor = xmalloc(sizeof *monitor);
shash_init(&monitor->polled_netdevs);
{
struct netdev_monitor *monitor = xmalloc(sizeof *monitor);
shash_init(&monitor->polled_netdevs);
- s
hash
_init(&monitor->changed_netdevs);
+ s
set
_init(&monitor->changed_netdevs);
return monitor;
}
return monitor;
}
@@
-1472,7
+1472,7
@@
netdev_monitor_destroy(struct netdev_monitor *monitor)
}
shash_destroy(&monitor->polled_netdevs);
}
shash_destroy(&monitor->polled_netdevs);
- s
hash
_destroy(&monitor->changed_netdevs);
+ s
set
_destroy(&monitor->changed_netdevs);
free(monitor);
}
}
free(monitor);
}
}
@@
-1482,7
+1482,7
@@
netdev_monitor_cb(struct netdev_notifier *notifier)
{
struct netdev_monitor *monitor = notifier->aux;
const char *name = netdev_get_name(notifier->netdev);
{
struct netdev_monitor *monitor = notifier->aux;
const char *name = netdev_get_name(notifier->netdev);
- s
hash_add_once(&monitor->changed_netdevs, name, NULL
);
+ s
set_add(&monitor->changed_netdevs, name
);
}
/* Attempts to add 'netdev' as a netdev monitored by 'monitor'. Returns 0 if
}
/* Attempts to add 'netdev' as a netdev monitored by 'monitor'. Returns 0 if
@@
-1526,10
+1526,7
@@
netdev_monitor_remove(struct netdev_monitor *monitor, struct netdev *netdev)
shash_delete(&monitor->polled_netdevs, node);
/* Drop any pending notification. */
shash_delete(&monitor->polled_netdevs, node);
/* Drop any pending notification. */
- node = shash_find(&monitor->changed_netdevs, netdev_name);
- if (node) {
- shash_delete(&monitor->changed_netdevs, node);
- }
+ sset_find_and_delete(&monitor->changed_netdevs, netdev_name);
}
}
}
}
@@
-1543,12
+1540,11
@@
netdev_monitor_remove(struct netdev_monitor *monitor, struct netdev *netdev)
int
netdev_monitor_poll(struct netdev_monitor *monitor, char **devnamep)
{
int
netdev_monitor_poll(struct netdev_monitor *monitor, char **devnamep)
{
- struct shash_node *node = shash_first(&monitor->changed_netdevs);
- if (!node) {
+ if (sset_is_empty(&monitor->changed_netdevs)) {
*devnamep = NULL;
return EAGAIN;
} else {
*devnamep = NULL;
return EAGAIN;
} else {
- *devnamep = s
hash_steal(&monitor->changed_netdevs, node
);
+ *devnamep = s
set_pop(&monitor->changed_netdevs
);
return 0;
}
}
return 0;
}
}
@@
-1559,7
+1555,7
@@
netdev_monitor_poll(struct netdev_monitor *monitor, char **devnamep)
void
netdev_monitor_poll_wait(const struct netdev_monitor *monitor)
{
void
netdev_monitor_poll_wait(const struct netdev_monitor *monitor)
{
- if (!s
hash
_is_empty(&monitor->changed_netdevs)) {
+ if (!s
set
_is_empty(&monitor->changed_netdevs)) {
poll_immediate_wake();
} else {
/* XXX Nothing needed here for netdev_linux, but maybe other netdev
poll_immediate_wake();
} else {
/* XXX Nothing needed here for netdev_linux, but maybe other netdev