X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=ofproto%2Ffail-open.c;h=99bbccd3178f88a1b66fb5bf1043b4bd9bb9b190;hb=3b4d8ad3070ad30da9cf52d4f2abf792bc07f20d;hp=bf57b9fcc1669c9709d3a5f3f6a3ca0c5cfc46de;hpb=19a87e3637f8c278e1bc16bb9a7ab32af0a21d6b;p=openvswitch diff --git a/ofproto/fail-open.c b/ofproto/fail-open.c index bf57b9fc..99bbccd3 100644 --- a/ofproto/fail-open.c +++ b/ofproto/fail-open.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008, 2009, 2010, 2011 Nicira Networks. + * Copyright (c) 2008, 2009, 2010, 2011, 2012 Nicira, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -26,6 +26,7 @@ #include "ofp-util.h" #include "ofpbuf.h" #include "ofproto.h" +#include "ofproto-provider.h" #include "pktbuf.h" #include "poll-loop.h" #include "rconn.h" @@ -114,19 +115,23 @@ fail_open_is_active(const struct fail_open *fo) static void send_bogus_packet_ins(struct fail_open *fo) { + struct ofputil_packet_in pin; uint8_t mac[ETH_ADDR_LEN]; - struct ofpbuf *opi; struct ofpbuf b; - /* Compose ofp_packet_in. */ ofpbuf_init(&b, 128); eth_addr_nicira_random(mac); compose_benign_packet(&b, "Open vSwitch Controller Probe", 0xa033, mac); - opi = make_packet_in(pktbuf_get_null(), OFPP_LOCAL, OFPR_NO_MATCH, &b, 64); - ofpbuf_uninit(&b); - /* Send. */ - connmgr_broadcast(fo->connmgr, opi); + memset(&pin, 0, sizeof pin); + pin.packet = b.data; + pin.packet_len = b.size; + pin.reason = OFPR_NO_MATCH; + pin.send_len = b.size; + pin.fmd.in_port = OFPP_LOCAL; + connmgr_send_packet_in(fo->connmgr, &pin); + + ofpbuf_uninit(&b); } /* Enter fail-open mode if we should be in it. */ @@ -215,7 +220,7 @@ fail_open_flushed(struct fail_open *fo) /* Set up a flow that matches every packet and directs them to * OFPP_NORMAL. */ memset(&action, 0, sizeof action); - action.type = htons(OFPAT_OUTPUT); + action.type = htons(OFPAT10_OUTPUT); action.output.len = htons(sizeof action); action.output.port = htons(OFPP_NORMAL);