Now OFPACT_SET_xxx actions are consolidated into OFPACT_SET_FIELDS. So they can be dropped.
Signed-off-by: Isaku Yamahata <yamah...@valinux.co.jp> --- lib/ofp-actions.c | 137 +++--------------------------------------------- lib/ofp-actions.h | 52 ++----------------- ofproto/ofproto-dpif.c | 39 -------------- 3 files changed, 12 insertions(+), 216 deletions(-) diff --git a/lib/ofp-actions.c b/lib/ofp-actions.c index d6f1fe9..048b713 100644 --- a/lib/ofp-actions.c +++ b/lib/ofp-actions.c @@ -867,14 +867,7 @@ ofpact_check__(const struct ofpact *a, const struct flow *flow, int max_ports) case OFPACT_BUNDLE: return bundle_check(ofpact_get_BUNDLE(a), max_ports, flow); - case OFPACT_SET_VLAN_VID: - case OFPACT_SET_VLAN_PCP: case OFPACT_STRIP_VLAN: - case OFPACT_SET_ETH_SRC: - case OFPACT_SET_ETH_DST: - case OFPACT_SET_IPV4_SRC: - case OFPACT_SET_IPV4_DST: - case OFPACT_SET_IPV4_DSCP: case OFPACT_SET_L4_SRC_PORT: case OFPACT_SET_L4_DST_PORT: return 0; @@ -1092,14 +1085,7 @@ ofpact_to_nxast(const struct ofpact *a, struct ofpbuf *out) case OFPACT_END: case OFPACT_OUTPUT: case OFPACT_ENQUEUE: - case OFPACT_SET_VLAN_VID: - case OFPACT_SET_VLAN_PCP: case OFPACT_STRIP_VLAN: - case OFPACT_SET_ETH_SRC: - case OFPACT_SET_ETH_DST: - case OFPACT_SET_IPV4_SRC: - case OFPACT_SET_IPV4_DST: - case OFPACT_SET_IPV4_DSCP: case OFPACT_SET_L4_SRC_PORT: case OFPACT_SET_L4_DST_PORT: case OFPACT_SET_FIELD: @@ -1146,45 +1132,10 @@ ofpact_to_openflow10(const struct ofpact *a, struct ofpbuf *out) ofpact_enqueue_to_openflow10(ofpact_get_ENQUEUE(a), out); break; - case OFPACT_SET_VLAN_VID: - ofputil_put_OFPAT10_SET_VLAN_VID(out)->vlan_vid - = htons(ofpact_get_SET_VLAN_VID(a)->vlan_vid); - break; - - case OFPACT_SET_VLAN_PCP: - ofputil_put_OFPAT10_SET_VLAN_PCP(out)->vlan_pcp - = ofpact_get_SET_VLAN_PCP(a)->vlan_pcp; - break; - case OFPACT_STRIP_VLAN: ofputil_put_OFPAT10_STRIP_VLAN(out); break; - case OFPACT_SET_ETH_SRC: - memcpy(ofputil_put_OFPAT10_SET_DL_SRC(out)->dl_addr, - ofpact_get_SET_ETH_SRC(a)->mac, ETH_ADDR_LEN); - break; - - case OFPACT_SET_ETH_DST: - memcpy(ofputil_put_OFPAT10_SET_DL_DST(out)->dl_addr, - ofpact_get_SET_ETH_DST(a)->mac, ETH_ADDR_LEN); - break; - - case OFPACT_SET_IPV4_SRC: - ofputil_put_OFPAT10_SET_NW_SRC(out)->nw_addr - = ofpact_get_SET_IPV4_SRC(a)->ipv4; - break; - - case OFPACT_SET_IPV4_DST: - ofputil_put_OFPAT10_SET_NW_DST(out)->nw_addr - = ofpact_get_SET_IPV4_DST(a)->ipv4; - break; - - case OFPACT_SET_IPV4_DSCP: - ofputil_put_OFPAT10_SET_NW_TOS(out)->nw_tos - = ofpact_get_SET_IPV4_DSCP(a)->dscp; - break; - case OFPACT_SET_L4_SRC_PORT: ofputil_put_OFPAT10_SET_TP_SRC(out)->tp_port = htons(ofpact_get_SET_L4_SRC_PORT(a)->port); @@ -1196,8 +1147,10 @@ ofpact_to_openflow10(const struct ofpact *a, struct ofpbuf *out) break; case OFPACT_SET_FIELD: - set_field_to_openflow10(ofpact_get_SET_FIELD(a), out); - break; + if (set_field_to_openflow10(ofpact_get_SET_FIELD(a), out)) { + break; + } + /* fallthrough for nx */ case OFPACT_CONTROLLER: case OFPACT_OUTPUT_REG: @@ -1260,45 +1213,10 @@ ofpact_to_openflow11(const struct ofpact *a, struct ofpbuf *out) /* XXX */ break; - case OFPACT_SET_VLAN_VID: - ofputil_put_OFPAT11_SET_VLAN_VID(out)->vlan_vid - = htons(ofpact_get_SET_VLAN_VID(a)->vlan_vid); - break; - - case OFPACT_SET_VLAN_PCP: - ofputil_put_OFPAT11_SET_VLAN_PCP(out)->vlan_pcp - = ofpact_get_SET_VLAN_PCP(a)->vlan_pcp; - break; - case OFPACT_STRIP_VLAN: /* XXX */ break; - case OFPACT_SET_ETH_SRC: - memcpy(ofputil_put_OFPAT11_SET_DL_SRC(out)->dl_addr, - ofpact_get_SET_ETH_SRC(a)->mac, ETH_ADDR_LEN); - break; - - case OFPACT_SET_ETH_DST: - memcpy(ofputil_put_OFPAT11_SET_DL_DST(out)->dl_addr, - ofpact_get_SET_ETH_DST(a)->mac, ETH_ADDR_LEN); - break; - - case OFPACT_SET_IPV4_SRC: - ofputil_put_OFPAT11_SET_NW_SRC(out)->nw_addr - = ofpact_get_SET_IPV4_SRC(a)->ipv4; - break; - - case OFPACT_SET_IPV4_DST: - ofputil_put_OFPAT11_SET_NW_DST(out)->nw_addr - = ofpact_get_SET_IPV4_DST(a)->ipv4; - break; - - case OFPACT_SET_IPV4_DSCP: - ofputil_put_OFPAT11_SET_NW_TOS(out)->nw_tos - = ofpact_get_SET_IPV4_DSCP(a)->dscp; - break; - case OFPACT_SET_L4_SRC_PORT: ofputil_put_OFPAT11_SET_TP_SRC(out)->tp_port = htons(ofpact_get_SET_L4_SRC_PORT(a)->port); @@ -1310,8 +1228,10 @@ ofpact_to_openflow11(const struct ofpact *a, struct ofpbuf *out) break; case OFPACT_SET_FIELD: - set_field_to_openflow11(ofpact_get_SET_FIELD(a), out); - break; + if (set_field_to_openflow11(ofpact_get_SET_FIELD(a), out)) { + break; + } + /* fallthrough for NX */ case OFPACT_CONTROLLER: case OFPACT_OUTPUT_REG: @@ -1392,14 +1312,7 @@ ofpact_outputs_to_port(const struct ofpact *ofpact, uint16_t port) case OFPACT_END: case OFPACT_OUTPUT_REG: case OFPACT_BUNDLE: - case OFPACT_SET_VLAN_VID: - case OFPACT_SET_VLAN_PCP: case OFPACT_STRIP_VLAN: - case OFPACT_SET_ETH_SRC: - case OFPACT_SET_ETH_DST: - case OFPACT_SET_IPV4_SRC: - case OFPACT_SET_IPV4_DST: - case OFPACT_SET_IPV4_DSCP: case OFPACT_SET_L4_SRC_PORT: case OFPACT_SET_L4_DST_PORT: case OFPACT_SET_FIELD: @@ -1544,44 +1457,10 @@ ofpact_format(const struct ofpact *a, struct ds *s) bundle_format(ofpact_get_BUNDLE(a), s); break; - case OFPACT_SET_VLAN_VID: - ds_put_format(s, "mod_vlan_vid:%"PRIu16, - ofpact_get_SET_VLAN_VID(a)->vlan_vid); - break; - - case OFPACT_SET_VLAN_PCP: - ds_put_format(s, "mod_vlan_pcp:%"PRIu8, - ofpact_get_SET_VLAN_PCP(a)->vlan_pcp); - break; - case OFPACT_STRIP_VLAN: ds_put_cstr(s, "strip_vlan"); break; - case OFPACT_SET_ETH_SRC: - ds_put_format(s, "mod_dl_src:"ETH_ADDR_FMT, - ETH_ADDR_ARGS(ofpact_get_SET_ETH_SRC(a)->mac)); - break; - - case OFPACT_SET_ETH_DST: - ds_put_format(s, "mod_dl_dst:"ETH_ADDR_FMT, - ETH_ADDR_ARGS(ofpact_get_SET_ETH_DST(a)->mac)); - break; - - case OFPACT_SET_IPV4_SRC: - ds_put_format(s, "mod_nw_src:"IP_FMT, - IP_ARGS(&ofpact_get_SET_IPV4_SRC(a)->ipv4)); - break; - - case OFPACT_SET_IPV4_DST: - ds_put_format(s, "mod_nw_dst:"IP_FMT, - IP_ARGS(&ofpact_get_SET_IPV4_DST(a)->ipv4)); - break; - - case OFPACT_SET_IPV4_DSCP: - ds_put_format(s, "mod_nw_tos:%d", ofpact_get_SET_IPV4_DSCP(a)->dscp); - break; - case OFPACT_SET_L4_SRC_PORT: ds_put_format(s, "mod_tp_src:%d", ofpact_get_SET_L4_SRC_PORT(a)->port); break; diff --git a/lib/ofp-actions.h b/lib/ofp-actions.h index 41d61ec..8436461 100644 --- a/lib/ofp-actions.h +++ b/lib/ofp-actions.h @@ -60,14 +60,7 @@ DEFINE_OFPACT(BUNDLE, ofpact_bundle, slaves) \ \ /* Header changes. */ \ - DEFINE_OFPACT(SET_VLAN_VID, ofpact_vlan_vid, ofpact) \ - DEFINE_OFPACT(SET_VLAN_PCP, ofpact_vlan_pcp, ofpact) \ DEFINE_OFPACT(STRIP_VLAN, ofpact_null, ofpact) \ - DEFINE_OFPACT(SET_ETH_SRC, ofpact_mac, ofpact) \ - DEFINE_OFPACT(SET_ETH_DST, ofpact_mac, ofpact) \ - DEFINE_OFPACT(SET_IPV4_SRC, ofpact_ipv4, ofpact) \ - DEFINE_OFPACT(SET_IPV4_DST, ofpact_ipv4, ofpact) \ - DEFINE_OFPACT(SET_IPV4_DSCP, ofpact_dscp, ofpact) \ DEFINE_OFPACT(SET_L4_SRC_PORT, ofpact_l4_port, ofpact) \ DEFINE_OFPACT(SET_L4_DST_PORT, ofpact_l4_port, ofpact) \ DEFINE_OFPACT(REG_MOVE, ofpact_reg_move, ofpact) \ @@ -211,46 +204,6 @@ struct ofpact_bundle { uint16_t slaves[]; }; -/* OFPACT_SET_VLAN_VID. - * - * Used for OFPAT10_SET_VLAN_VID. */ -struct ofpact_vlan_vid { - struct ofpact ofpact; - uint16_t vlan_vid; /* VLAN VID in low 12 bits, 0 in other bits. */ -}; - -/* OFPACT_SET_VLAN_PCP. - * - * Used for OFPAT10_SET_VLAN_PCP. */ -struct ofpact_vlan_pcp { - struct ofpact ofpact; - uint8_t vlan_pcp; /* VLAN PCP in low 3 bits, 0 in other bits. */ -}; - -/* OFPACT_SET_ETH_SRC, OFPACT_SET_ETH_DST. - * - * Used for OFPAT10_SET_DL_SRC, OFPAT10_SET_DL_DST. */ -struct ofpact_mac { - struct ofpact ofpact; - uint8_t mac[ETH_ADDR_LEN]; -}; - -/* OFPACT_SET_IPV4_SRC, OFPACT_SET_IPV4_DST. - * - * Used for OFPAT10_SET_NW_SRC, OFPAT10_SET_NW_DST. */ -struct ofpact_ipv4 { - struct ofpact ofpact; - ovs_be32 ipv4; -}; - -/* OFPACT_SET_IPV4_DSCP. - * - * Used for OFPAT10_SET_NW_TOS. */ -struct ofpact_dscp { - struct ofpact ofpact; - uint8_t dscp; /* DSCP in high 6 bits, rest ignored. */ -}; - /* OFPACT_SET_L4_SRC_PORT, OFPACT_SET_L4_DST_PORT. * * Used for OFPAT10_SET_TP_SRC, OFPAT10_SET_TP_DST. */ @@ -381,7 +334,10 @@ struct ofpact_note { /* OFPACT_SET_FIELD * - * used for OFPAT12_SET_FIELD */ + * used for OFPAT10_SET_VLAN_VID, OFPAT10_SET_VLAN_PCP, + * OFPAT10_SET_DL_SRC, OFPAT10_SET_DL_DST, + * OFPAT10_SET_NW_SRC, OFPAT10_SET_NW_DST, OFPAT10_SET_NW_TOS, + * OFPAT12_SET_FIELD */ struct ofpact_set_field { struct ofpact ofpact; const struct mf_field *mf; diff --git a/ofproto/ofproto-dpif.c b/ofproto/ofproto-dpif.c index e484833..36673f5 100644 --- a/ofproto/ofproto-dpif.c +++ b/ofproto/ofproto-dpif.c @@ -5395,49 +5395,10 @@ do_xlate_actions(const struct ofpact *ofpacts, struct action_xlate_ctx *ctx) xlate_enqueue_action(ctx, ofpact_get_ENQUEUE(a)); break; - case OFPACT_SET_VLAN_VID: - ctx->flow.vlan_tci &= ~htons(VLAN_VID_MASK); - ctx->flow.vlan_tci |= (htons(ofpact_get_SET_VLAN_VID(a)->vlan_vid) - | htons(VLAN_CFI)); - break; - - case OFPACT_SET_VLAN_PCP: - ctx->flow.vlan_tci &= ~htons(VLAN_PCP_MASK); - ctx->flow.vlan_tci |= htons((ofpact_get_SET_VLAN_PCP(a)->vlan_pcp - << VLAN_PCP_SHIFT) - | VLAN_CFI); - break; - case OFPACT_STRIP_VLAN: ctx->flow.vlan_tci = htons(0); break; - case OFPACT_SET_ETH_SRC: - memcpy(ctx->flow.dl_src, ofpact_get_SET_ETH_SRC(a)->mac, - ETH_ADDR_LEN); - break; - - case OFPACT_SET_ETH_DST: - memcpy(ctx->flow.dl_dst, ofpact_get_SET_ETH_DST(a)->mac, - ETH_ADDR_LEN); - break; - - case OFPACT_SET_IPV4_SRC: - ctx->flow.nw_src = ofpact_get_SET_IPV4_SRC(a)->ipv4; - break; - - case OFPACT_SET_IPV4_DST: - ctx->flow.nw_dst = ofpact_get_SET_IPV4_DST(a)->ipv4; - break; - - case OFPACT_SET_IPV4_DSCP: - /* OpenFlow 1.0 only supports IPv4. */ - if (ctx->flow.dl_type == htons(ETH_TYPE_IP)) { - ctx->flow.nw_tos &= ~IP_DSCP_MASK; - ctx->flow.nw_tos |= ofpact_get_SET_IPV4_DSCP(a)->dscp; - } - break; - case OFPACT_SET_L4_SRC_PORT: ctx->flow.tp_src = htons(ofpact_get_SET_L4_SRC_PORT(a)->port); break; -- 1.7.1.1 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev