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

Reply via email to