[ovs-dev] [PATCH V2 1/3] tc: Refactor nl_msg_put_flower_options

Roi Dayan roid at mellanox.com
Thu Aug 3 13:38:23 UTC 2017


From: Paul Blakey <paulb at mellanox.com>

Refactor nl_msg_put_flower_options to be more readable.
This commit doesn't change functionality.

Signed-off-by: Paul Blakey <paulb at mellanox.com>
Reviewed-by: Roi Dayan <roid at mellanox.com>
Acked-by: Simon Horman <simon.horman at netronome.com>
---
 lib/tc.c | 81 +++++++++++++---------------------------------------------------
 1 file changed, 16 insertions(+), 65 deletions(-)

diff --git a/lib/tc.c b/lib/tc.c
index 82c5ee7..64ad814 100644
--- a/lib/tc.c
+++ b/lib/tc.c
@@ -985,6 +985,10 @@ nl_msg_put_flower_tunnel(struct ofpbuf *request, struct tc_flower *flower)
     nl_msg_put_be16(request, TCA_FLOWER_KEY_ENC_UDP_DST_PORT, tp_dst);
 }
 
+#define FLOWER_PUT_MASKED_VALUE(member, type) \
+    nl_msg_put_masked_value(request, type, type##_MASK, &flower->key.member, \
+                            &flower->mask.member, sizeof flower->key.member)
+
 static void
 nl_msg_put_flower_options(struct ofpbuf *request, struct tc_flower *flower)
 {
@@ -995,17 +999,8 @@ nl_msg_put_flower_options(struct ofpbuf *request, struct tc_flower *flower)
         host_eth_type = ntohs(flower->key.encap_eth_type);
     }
 
-    nl_msg_put_masked_value(request,
-                            TCA_FLOWER_KEY_ETH_DST,
-                            TCA_FLOWER_KEY_ETH_DST_MASK,
-                            &flower->key.dst_mac,
-                            &flower->mask.dst_mac, ETH_ALEN);
-
-    nl_msg_put_masked_value(request,
-                            TCA_FLOWER_KEY_ETH_SRC,
-                            TCA_FLOWER_KEY_ETH_SRC_MASK,
-                            &flower->key.src_mac,
-                            &flower->mask.src_mac, ETH_ALEN);
+    FLOWER_PUT_MASKED_VALUE(dst_mac, TCA_FLOWER_KEY_ETH_DST);
+    FLOWER_PUT_MASKED_VALUE(src_mac, TCA_FLOWER_KEY_ETH_SRC);
 
     if (host_eth_type == ETH_P_IP || host_eth_type == ETH_P_IPV6) {
         if (flower->mask.ip_proto && flower->key.ip_proto) {
@@ -1014,67 +1009,23 @@ nl_msg_put_flower_options(struct ofpbuf *request, struct tc_flower *flower)
         }
 
         if (flower->key.ip_proto == IPPROTO_UDP) {
-            nl_msg_put_masked_value(request,
-                                    TCA_FLOWER_KEY_UDP_SRC,
-                                    TCA_FLOWER_KEY_UDP_SRC_MASK,
-                                    &flower->key.src_port,
-                                    &flower->mask.src_port, 2);
-            nl_msg_put_masked_value(request,
-                                    TCA_FLOWER_KEY_UDP_DST,
-                                    TCA_FLOWER_KEY_UDP_DST_MASK,
-                                    &flower->key.dst_port,
-                                    &flower->mask.dst_port, 2);
+            FLOWER_PUT_MASKED_VALUE(src_port, TCA_FLOWER_KEY_UDP_SRC);
+            FLOWER_PUT_MASKED_VALUE(dst_port, TCA_FLOWER_KEY_UDP_DST);
         } else if (flower->key.ip_proto == IPPROTO_TCP) {
-            nl_msg_put_masked_value(request,
-                                    TCA_FLOWER_KEY_TCP_SRC,
-                                    TCA_FLOWER_KEY_TCP_SRC_MASK,
-                                    &flower->key.src_port,
-                                    &flower->mask.src_port, 2);
-            nl_msg_put_masked_value(request,
-                                    TCA_FLOWER_KEY_TCP_DST,
-                                    TCA_FLOWER_KEY_TCP_DST_MASK,
-                                    &flower->key.dst_port,
-                                    &flower->mask.dst_port, 2);
+            FLOWER_PUT_MASKED_VALUE(src_port, TCA_FLOWER_KEY_TCP_SRC);
+            FLOWER_PUT_MASKED_VALUE(dst_port, TCA_FLOWER_KEY_TCP_DST);
         } else if (flower->key.ip_proto == IPPROTO_SCTP) {
-            nl_msg_put_masked_value(request,
-                                    TCA_FLOWER_KEY_SCTP_SRC,
-                                    TCA_FLOWER_KEY_SCTP_SRC_MASK,
-                                    &flower->key.src_port,
-                                    &flower->mask.src_port, 2);
-            nl_msg_put_masked_value(request,
-                                    TCA_FLOWER_KEY_SCTP_DST,
-                                    TCA_FLOWER_KEY_SCTP_DST_MASK,
-                                    &flower->key.dst_port,
-                                    &flower->mask.dst_port, 2);
+            FLOWER_PUT_MASKED_VALUE(src_port, TCA_FLOWER_KEY_SCTP_SRC);
+            FLOWER_PUT_MASKED_VALUE(dst_port, TCA_FLOWER_KEY_SCTP_DST);
         }
     }
 
     if (host_eth_type == ETH_P_IP) {
-            nl_msg_put_masked_value(request,
-                                    TCA_FLOWER_KEY_IPV4_SRC,
-                                    TCA_FLOWER_KEY_IPV4_SRC_MASK,
-                                    &flower->key.ipv4.ipv4_src,
-                                    &flower->mask.ipv4.ipv4_src,
-                                    sizeof flower->key.ipv4.ipv4_src);
-            nl_msg_put_masked_value(request,
-                                    TCA_FLOWER_KEY_IPV4_DST,
-                                    TCA_FLOWER_KEY_IPV4_DST_MASK,
-                                    &flower->key.ipv4.ipv4_dst,
-                                    &flower->mask.ipv4.ipv4_dst,
-                                    sizeof flower->key.ipv4.ipv4_dst);
+            FLOWER_PUT_MASKED_VALUE(ipv4.ipv4_src, TCA_FLOWER_KEY_IPV4_SRC);
+            FLOWER_PUT_MASKED_VALUE(ipv4.ipv4_dst, TCA_FLOWER_KEY_IPV4_DST);
     } else if (host_eth_type == ETH_P_IPV6) {
-            nl_msg_put_masked_value(request,
-                                    TCA_FLOWER_KEY_IPV6_SRC,
-                                    TCA_FLOWER_KEY_IPV6_SRC_MASK,
-                                    &flower->key.ipv6.ipv6_src,
-                                    &flower->mask.ipv6.ipv6_src,
-                                    sizeof flower->key.ipv6.ipv6_src);
-            nl_msg_put_masked_value(request,
-                                    TCA_FLOWER_KEY_IPV6_DST,
-                                    TCA_FLOWER_KEY_IPV6_DST_MASK,
-                                    &flower->key.ipv6.ipv6_dst,
-                                    &flower->mask.ipv6.ipv6_dst,
-                                    sizeof flower->key.ipv6.ipv6_dst);
+            FLOWER_PUT_MASKED_VALUE(ipv6.ipv6_src, TCA_FLOWER_KEY_IPV6_SRC);
+            FLOWER_PUT_MASKED_VALUE(ipv6.ipv6_dst, TCA_FLOWER_KEY_IPV6_DST);
     }
 
     nl_msg_put_be16(request, TCA_FLOWER_KEY_ETH_TYPE, flower->key.eth_type);
-- 
2.7.4



More information about the dev mailing list