X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=lib%2Fnx-match.c;h=05f1ce99fc6e5a77c6a7c192aa83eb4e8ab5ff5b;hb=33d82a56df179219ccc3581437ca6e0c2d6b42ee;hp=991899403cc5a7a05333c524204e180a846577b5;hpb=296e07ace0ff2d5819ce760d6018ba82d14aa2a8;p=sliver-openvswitch.git diff --git a/lib/nx-match.c b/lib/nx-match.c index 991899403..05f1ce99f 100644 --- a/lib/nx-match.c +++ b/lib/nx-match.c @@ -547,7 +547,7 @@ nx_put_raw(struct ofpbuf *b, bool oxm, const struct match *match, int match_len; int i; - BUILD_ASSERT_DECL(FLOW_WC_SEQ == 17); + BUILD_ASSERT_DECL(FLOW_WC_SEQ == 18); /* Metadata. */ if (match->wc.masks.in_port) { @@ -626,7 +626,8 @@ nx_put_raw(struct ofpbuf *b, bool oxm, const struct match *match, flow->arp_tha, match->wc.masks.arp_tha); } } - } else if (flow->dl_type == htons(ETH_TYPE_ARP)) { + } else if (flow->dl_type == htons(ETH_TYPE_ARP) || + flow->dl_type == htons(ETH_TYPE_RARP)) { /* ARP. */ if (match->wc.masks.nw_proto) { nxm_put_16(b, oxm ? OXM_OF_ARP_OP : NXM_OF_ARP_OP, @@ -643,8 +644,8 @@ nx_put_raw(struct ofpbuf *b, bool oxm, const struct match *match, } /* Tunnel ID. */ - nxm_put_64m(b, NXM_NX_TUN_ID, flow->tunnel.tun_id, - match->wc.masks.tunnel.tun_id); + nxm_put_64m(b, oxm ? OXM_OF_TUNNEL_ID : NXM_NX_TUN_ID, + flow->tunnel.tun_id, match->wc.masks.tunnel.tun_id); /* Registers. */ for (i = 0; i < FLOW_N_REGS; i++) { @@ -1201,6 +1202,7 @@ nxm_reg_load_to_nxast(const struct ofpact_reg_load *load, struct ofp_header *oh = (struct ofp_header *)openflow->l2; switch(oh->version) { + case OFP13_VERSION: case OFP12_VERSION: set_field_to_ofast(load, openflow); break;