X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=ofproto%2Fin-band.c;h=e75d19eac340452de7a9752dfae516b2744698ec;hb=d4f15cb982ff772110509c4292697bbe8a68d0f4;hp=3046ba1b183a75af763239d19f001d40e7b9bb64;hpb=ee8b231cfc819f518f02b52ceda3cd199546fda2;p=openvswitch diff --git a/ofproto/in-band.c b/ofproto/in-band.c index 3046ba1b..e75d19ea 100644 --- a/ofproto/in-band.c +++ b/ofproto/in-band.c @@ -35,7 +35,6 @@ #include "openflow/openflow.h" #include "packets.h" #include "poll-loop.h" -#include "status.h" #include "timeval.h" #include "vlog.h" @@ -235,7 +234,6 @@ struct in_band_remote { struct in_band { struct ofproto *ofproto; - struct status_category *ss_cat; int queue_id, prev_queue_id; /* Remote information. */ @@ -373,33 +371,12 @@ refresh_local(struct in_band *ib) return true; } -static void -in_band_status_cb(struct status_reply *sr, void *in_band_) -{ - struct in_band *in_band = in_band_; - - if (!eth_addr_is_zero(in_band->local_mac)) { - status_reply_put(sr, "local-mac="ETH_ADDR_FMT, - ETH_ADDR_ARGS(in_band->local_mac)); - } - - if (in_band->n_remotes - && !eth_addr_is_zero(in_band->remotes[0].remote_mac)) { - status_reply_put(sr, "remote-mac="ETH_ADDR_FMT, - ETH_ADDR_ARGS(in_band->remotes[0].remote_mac)); - } -} - /* Returns true if 'packet' should be sent to the local port regardless * of the flow table. */ bool in_band_msg_in_hook(struct in_band *in_band, const struct flow *flow, const struct ofpbuf *packet) { - if (!in_band) { - return false; - } - /* Regardless of how the flow table is configured, we want to be * able to see replies to our DHCP requests. */ if (flow->dl_type == htons(ETH_TYPE_IP) @@ -428,13 +405,9 @@ in_band_msg_in_hook(struct in_band *in_band, const struct flow *flow, /* Returns true if the rule that would match 'flow' with 'actions' is * allowed to be set up in the datapath. */ bool -in_band_rule_check(struct in_band *in_band, const struct flow *flow, +in_band_rule_check(const struct flow *flow, const struct nlattr *actions, size_t actions_len) { - if (!in_band) { - return true; - } - /* Don't allow flows that would prevent DHCP replies from being seen * by the local port. */ if (flow->dl_type == htons(ETH_TYPE_IP) @@ -703,23 +676,14 @@ in_band_flushed(struct in_band *in_band) } int -in_band_create(struct ofproto *ofproto, struct dpif *dpif, - struct switch_status *ss, struct in_band **in_bandp) +in_band_create(struct ofproto *ofproto, const char *local_name, + struct in_band **in_bandp) { struct in_band *in_band; - char local_name[IF_NAMESIZE]; struct netdev *local_netdev; int error; *in_bandp = NULL; - error = dpif_port_get_name(dpif, ODPP_LOCAL, - local_name, sizeof local_name); - if (error) { - VLOG_ERR("failed to initialize in-band control: cannot get name " - "of datapath local port (%s)", strerror(error)); - return error; - } - error = netdev_open_default(local_name, &local_netdev); if (error) { VLOG_ERR("failed to initialize in-band control: cannot open " @@ -729,8 +693,6 @@ in_band_create(struct ofproto *ofproto, struct dpif *dpif, in_band = xzalloc(sizeof *in_band); in_band->ofproto = ofproto; - in_band->ss_cat = switch_status_register(ss, "in-band", - in_band_status_cb, in_band); in_band->queue_id = in_band->prev_queue_id = -1; in_band->next_remote_refresh = TIME_MIN; in_band->next_local_refresh = TIME_MIN; @@ -747,7 +709,6 @@ in_band_destroy(struct in_band *ib) if (ib) { drop_rules(ib); in_band_set_remotes(ib, NULL, 0); - switch_status_unregister(ib->ss_cat); netdev_close(ib->local_netdev); free(ib); }