[ovs-dev] [slow path 04/11] odp-util: Use switch for checking values of an enum.

Ben Pfaff blp at nicira.com
Sat May 5 18:10:41 UTC 2012


The compiler warns when we forget to handle some value of an enum, whereas
it won't for a sequence of 'if' statements.

Signed-off-by: Ben Pfaff <blp at nicira.com>
---
 lib/odp-util.c         |    8 ++++++--
 ofproto/ofproto-dpif.c |    9 +++++++--
 2 files changed, 13 insertions(+), 4 deletions(-)

diff --git a/lib/odp-util.c b/lib/odp-util.c
index 36ea5a4..8d0e95f 100644
--- a/lib/odp-util.c
+++ b/lib/odp-util.c
@@ -189,12 +189,16 @@ format_odp_userspace_action(struct ds *ds, const struct nlattr *attr)
 
         memcpy(&cookie, &userdata, sizeof cookie);
 
-        if (cookie.type == USER_ACTION_COOKIE_SFLOW) {
+        switch (cookie.type) {
+        case USER_ACTION_COOKIE_SFLOW:
             ds_put_format(ds, ",sFlow,n_output=%"PRIu8","
                           "vid=%"PRIu16",pcp=%"PRIu8",ifindex=%"PRIu32,
                           cookie.n_output, vlan_tci_to_vid(cookie.vlan_tci),
                           vlan_tci_to_pcp(cookie.vlan_tci), cookie.data);
-        } else {
+            break;
+
+        case USER_ACTION_COOKIE_UNSPEC:
+        default:
             ds_put_format(ds, ",userdata=0x%"PRIx64, userdata);
         }
     }
diff --git a/ofproto/ofproto-dpif.c b/ofproto/ofproto-dpif.c
index 52a7412..5a8edcd 100644
--- a/ofproto/ofproto-dpif.c
+++ b/ofproto/ofproto-dpif.c
@@ -3031,13 +3031,18 @@ handle_userspace_upcall(struct ofproto_dpif *ofproto,
         return;
     }
 
-    if (cookie.type == USER_ACTION_COOKIE_SFLOW) {
+    switch (cookie.type) {
+    case USER_ACTION_COOKIE_SFLOW:
         if (ofproto->sflow) {
             dpif_sflow_received(ofproto->sflow, upcall->packet, &flow,
                                 &cookie);
         }
-    } else {
+        break;
+
+    case USER_ACTION_COOKIE_UNSPEC:
+    default:
         VLOG_WARN_RL(&rl, "invalid user cookie : 0x%"PRIx64, upcall->userdata);
+        break;
     }
 }
 
-- 
1.7.2.5




More information about the dev mailing list