diff options
author | Ben Pfaff <blp@nicira.com> | 2011-03-25 15:26:30 -0700 |
---|---|---|
committer | Ben Pfaff <blp@nicira.com> | 2011-03-31 16:42:01 -0700 |
commit | b3c01ed3308e7899e98e981bf465f74be86f5f12 (patch) | |
tree | 20103c6515c654382cc9b43ae0058b7393a0defb /lib/dpif-linux.c | |
parent | f391294fde05ecae7c9a1ff8752f872a1db94f3a (diff) |
Convert shash users that don't use the 'data' value to sset instead.
In each of the cases converted here, an shash was used simply to maintain
a set of strings, with the shash_nodes' 'data' values set to NULL. This
commit converts them to use sset instead.
Diffstat (limited to 'lib/dpif-linux.c')
-rw-r--r-- | lib/dpif-linux.c | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/lib/dpif-linux.c b/lib/dpif-linux.c index 509174c8..3c22b556 100644 --- a/lib/dpif-linux.c +++ b/lib/dpif-linux.c @@ -45,6 +45,7 @@ #include "rtnetlink.h" #include "rtnetlink-link.h" #include "shash.h" +#include "sset.h" #include "svec.h" #include "unaligned.h" #include "util.h" @@ -125,7 +126,7 @@ struct dpif_linux { unsigned int listen_mask; /* Change notification. */ - struct shash changed_ports; /* Ports that have changed. */ + struct sset changed_ports; /* Ports that have changed. */ struct rtnetlink_notifier port_notifier; bool change_error; }; @@ -231,7 +232,7 @@ open_dpif(const struct dpif_linux_dp *dp, struct dpif **dpifp) } dpif->listen_mask = 0; dpif->dp_ifindex = dp->dp_ifindex; - shash_init(&dpif->changed_ports); + sset_init(&dpif->changed_ports); dpif->change_error = false; *dpifp = &dpif->dpif; @@ -247,7 +248,7 @@ dpif_linux_close(struct dpif *dpif_) { struct dpif_linux *dpif = dpif_linux_cast(dpif_); rtnetlink_link_notifier_unregister(&dpif->port_notifier); - shash_destroy(&dpif->changed_ports); + sset_destroy(&dpif->changed_ports); free(dpif); } @@ -483,11 +484,10 @@ dpif_linux_port_poll(const struct dpif *dpif_, char **devnamep) if (dpif->change_error) { dpif->change_error = false; - shash_clear(&dpif->changed_ports); + sset_clear(&dpif->changed_ports); return ENOBUFS; - } else if (!shash_is_empty(&dpif->changed_ports)) { - struct shash_node *node = shash_first(&dpif->changed_ports); - *devnamep = shash_steal(&dpif->changed_ports, node); + } else if (!sset_is_empty(&dpif->changed_ports)) { + *devnamep = sset_pop(&dpif->changed_ports); return 0; } else { return EAGAIN; @@ -498,7 +498,7 @@ static void dpif_linux_port_poll_wait(const struct dpif *dpif_) { struct dpif_linux *dpif = dpif_linux_cast(dpif_); - if (!shash_is_empty(&dpif->changed_ports) || dpif->change_error) { + if (!sset_is_empty(&dpif->changed_ports) || dpif->change_error) { poll_immediate_wake(); } else { rtnetlink_link_notifier_wait(); @@ -1041,7 +1041,7 @@ dpif_linux_port_changed(const struct rtnetlink_link_change *change, { /* Our datapath changed, either adding a new port or deleting an * existing one. */ - shash_add_once(&dpif->changed_ports, change->ifname, NULL); + sset_add(&dpif->changed_ports, change->ifname); } } else { dpif->change_error = true; |