X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=ofproto%2Fofproto.c;h=1865277136e2294bed068a0ad031f9c1520549e4;hb=e34c9ddcc8f09925ff44879316f62897f172c30e;hp=78a5005be621a213e5c1e9f0ed54b8da71b4eb42;hpb=79e745c9aea483fcc67bfe42891156ba28929e08;p=openvswitch diff --git a/ofproto/ofproto.c b/ofproto/ofproto.c index 78a5005b..18652771 100644 --- a/ofproto/ofproto.c +++ b/ofproto/ofproto.c @@ -55,8 +55,8 @@ #include "poll-loop.h" #include "rconn.h" #include "shash.h" +#include "sset.h" #include "stream-ssl.h" -#include "svec.h" #include "tag.h" #include "timer.h" #include "timeval.h" @@ -543,7 +543,7 @@ ofproto_set_desc(struct ofproto *p, } int -ofproto_set_snoops(struct ofproto *ofproto, const struct svec *snoops) +ofproto_set_snoops(struct ofproto *ofproto, const struct sset *snoops) { return connmgr_set_snoops(ofproto->connmgr, snoops); } @@ -552,7 +552,7 @@ int ofproto_set_netflow(struct ofproto *ofproto, const struct netflow_options *nf_options) { - if (nf_options && nf_options->collectors.n) { + if (nf_options && !sset_is_empty(&nf_options->collectors)) { if (!ofproto->netflow) { ofproto->netflow = netflow_create(); } @@ -667,8 +667,14 @@ ofproto_get_fail_mode(const struct ofproto *p) return connmgr_get_fail_mode(p->connmgr); } +bool +ofproto_has_snoops(const struct ofproto *ofproto) +{ + return connmgr_has_snoops(ofproto->connmgr); +} + void -ofproto_get_snoops(const struct ofproto *ofproto, struct svec *snoops) +ofproto_get_snoops(const struct ofproto *ofproto, struct sset *snoops) { connmgr_get_snoops(ofproto->connmgr, snoops); } @@ -1026,25 +1032,25 @@ static void reinit_ports(struct ofproto *p) { struct dpif_port_dump dump; - struct shash_node *node; - struct shash devnames; + struct sset devnames; struct ofport *ofport; struct dpif_port dpif_port; + const char *devname; COVERAGE_INC(ofproto_reinit_ports); - shash_init(&devnames); + sset_init(&devnames); HMAP_FOR_EACH (ofport, hmap_node, &p->ports) { - shash_add_once (&devnames, ofport->opp.name, NULL); + sset_add(&devnames, ofport->opp.name); } DPIF_PORT_FOR_EACH (&dpif_port, &dump, p->dpif) { - shash_add_once (&devnames, dpif_port.name, NULL); + sset_add(&devnames, dpif_port.name); } - SHASH_FOR_EACH (node, &devnames) { - update_port(p, node->name); + SSET_FOR_EACH (devname, &devnames) { + update_port(p, devname); } - shash_destroy(&devnames); + sset_destroy(&devnames); } static struct ofport * @@ -1158,8 +1164,8 @@ ofport_run(struct ofproto *ofproto, struct ofport *ofport) struct ccm *ccm; ofpbuf_init(&packet, 0); - ccm = compose_packet(&packet, eth_addr_ccm, ofport->opp.hw_addr, - ETH_TYPE_CFM, sizeof *ccm); + ccm = eth_compose(&packet, eth_addr_ccm, ofport->opp.hw_addr, + ETH_TYPE_CFM, sizeof *ccm); cfm_compose_ccm(ofport->cfm, ccm); ofproto_send_packet(ofproto, ofport->odp_port, 0, &packet); ofpbuf_uninit(&packet);