X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=ofproto%2Fconnmgr.c;h=87dc2ad3cfc338013b9ec4466f843d7fec029e92;hb=f25d0cf3c366d92042269a4f787f19c741c2530c;hp=8cdaa1f80bdf7c45eacfc45427b92842a5419901;hpb=690a61c50a4744603be2ee3de8e22c97f9140d94;p=sliver-openvswitch.git diff --git a/ofproto/connmgr.c b/ofproto/connmgr.c index 8cdaa1f80..87dc2ad3c 100644 --- a/ofproto/connmgr.c +++ b/ofproto/connmgr.c @@ -25,6 +25,7 @@ #include "fail-open.h" #include "in-band.h" #include "odp-util.h" +#include "ofp-actions.h" #include "ofp-util.h" #include "ofpbuf.h" #include "ofproto-provider.h" @@ -1573,15 +1574,17 @@ connmgr_flushed(struct connmgr *mgr) * traffic until a controller has been defined and it tells us to do so. */ if (!connmgr_has_controllers(mgr) && mgr->fail_mode == OFPROTO_FAIL_STANDALONE) { - union ofp_action action; + struct ofpbuf ofpacts; struct cls_rule rule; - memset(&action, 0, sizeof action); - action.type = htons(OFPAT10_OUTPUT); - action.output.len = htons(sizeof action); - action.output.port = htons(OFPP_NORMAL); + ofpbuf_init(&ofpacts, OFPACT_OUTPUT_SIZE); + ofpact_put_OUTPUT(&ofpacts)->port = OFPP_NORMAL; + ofpact_pad(&ofpacts); + cls_rule_init_catchall(&rule, 0); - ofproto_add_flow(mgr->ofproto, &rule, &action, 1); + ofproto_add_flow(mgr->ofproto, &rule, ofpacts.data, ofpacts.size); + + ofpbuf_uninit(&ofpacts); } }