api: add helper macros for native endian 84/34584/2
authorMohsin Kazmi <sykazmi@cisco.com>
Thu, 25 Nov 2021 15:02:24 +0000 (16:02 +0100)
committerOle Tr�an <otroan@employees.org>
Fri, 26 Nov 2021 14:11:20 +0000 (14:11 +0000)
Type: improvement

Change-Id: Ifa074dfd337f9cd68858468d34abf641fe7f247f
Signed-off-by: Mohsin Kazmi <sykazmi@cisco.com>
src/plugins/linux-cp/lcp_api.c
src/plugins/nat/nat44-ed/nat44_ed_api.c
src/plugins/nat/nat44-ei/nat44_ei_api.c
src/plugins/nat/pnat/pnat_api.c
src/vlibapi/api_helper_macros.h

index 7f77bf7..01d6647 100644 (file)
@@ -78,11 +78,7 @@ vl_api_lcp_itf_pair_add_del_t_handler (vl_api_lcp_itf_pair_add_del_t *mp)
   lip_host_type_t lip_host_type;
   int rv;
 
-  if (!vnet_sw_if_index_is_api_valid (mp->sw_if_index))
-    {
-      rv = VNET_API_ERROR_INVALID_SW_IF_INDEX;
-      goto bad_sw_if_index;
-    }
+  VALIDATE_SW_IF_INDEX_END (mp);
 
   phy_sw_if_index = mp->sw_if_index;
   lip_host_type = api_decode_host_type (mp->host_if_type);
@@ -110,11 +106,7 @@ vl_api_lcp_itf_pair_add_del_v2_t_handler (vl_api_lcp_itf_pair_add_del_v2_t *mp)
   lip_host_type_t lip_host_type;
   int rv;
 
-  if (!vnet_sw_if_index_is_api_valid (mp->sw_if_index))
-    {
-      rv = VNET_API_ERROR_INVALID_SW_IF_INDEX;
-      goto bad_sw_if_index;
-    }
+  VALIDATE_SW_IF_INDEX_END (mp);
 
   phy_sw_if_index = mp->sw_if_index;
   lip_host_type = api_decode_host_type (mp->host_if_type);
index 6123544..6b76967 100644 (file)
@@ -554,11 +554,7 @@ vl_api_nat44_ed_add_del_output_interface_t_handler (
   snat_main_t *sm = &snat_main;
   int rv = 0;
 
-  if (!vnet_sw_if_index_is_api_valid (mp->sw_if_index))
-    {
-      rv = VNET_API_ERROR_INVALID_SW_IF_INDEX;
-      goto bad_sw_if_index;
-    }
+  VALIDATE_SW_IF_INDEX_END (mp);
 
   if (mp->is_add)
     {
index 1d469b3..425c03c 100644 (file)
@@ -715,11 +715,7 @@ vl_api_nat44_ei_add_del_output_interface_t_handler (
   nat44_ei_main_t *nm = &nat44_ei_main;
   int rv = 0;
 
-  if (!vnet_sw_if_index_is_api_valid (mp->sw_if_index))
-    {
-      rv = VNET_API_ERROR_INVALID_SW_IF_INDEX;
-      goto bad_sw_if_index;
-    }
+  VALIDATE_SW_IF_INDEX_END (mp);
 
   if (mp->is_add)
     {
index 2c4a138..442ee7c 100644 (file)
@@ -46,11 +46,7 @@ vl_api_pnat_binding_attach_t_handler(vl_api_pnat_binding_attach_t *mp) {
     vl_api_pnat_binding_attach_reply_t *rmp;
     int rv;
 
-    /* Ensure that the interface exists */
-    if (!vnet_sw_if_index_is_api_valid(mp->sw_if_index)) {
-        rv = VNET_API_ERROR_INVALID_SW_IF_INDEX;
-        goto bad_sw_if_index;
-    }
+    VALIDATE_SW_IF_INDEX_END(mp);
 
     rv =
         pnat_binding_attach(mp->sw_if_index, mp->attachment, mp->binding_index);
@@ -65,11 +61,7 @@ vl_api_pnat_binding_detach_t_handler(vl_api_pnat_binding_detach_t *mp) {
     vl_api_pnat_binding_detach_reply_t *rmp;
     int rv;
 
-    /* Ensure that the interface exists */
-    if (!vnet_sw_if_index_is_api_valid(mp->sw_if_index)) {
-        rv = VNET_API_ERROR_INVALID_SW_IF_INDEX;
-        goto bad_sw_if_index;
-    }
+    VALIDATE_SW_IF_INDEX_END(mp);
 
     rv =
         pnat_binding_detach(mp->sw_if_index, mp->attachment, mp->binding_index);
index 7a04bb0..3203905 100644 (file)
@@ -273,6 +273,17 @@ do {                                                               \
     }                                                           \
 } while(0);
 
+#define VALIDATE_SW_IF_INDEX_END(mp)                                          \
+  do                                                                          \
+    {                                                                         \
+      if (!vnet_sw_if_index_is_api_valid ((mp)->sw_if_index))                 \
+       {                                                                     \
+         rv = VNET_API_ERROR_INVALID_SW_IF_INDEX;                            \
+         goto bad_sw_if_index;                                               \
+       }                                                                     \
+    }                                                                         \
+  while (0);
+
 #define BAD_SW_IF_INDEX_LABEL                   \
 do {                                            \
 bad_sw_if_index:                                \
@@ -287,6 +298,17 @@ bad_sw_if_index:                                \
     }                                                           \
 } while(0);
 
+#define VALIDATE_RX_SW_IF_INDEX_END(mp)                                       \
+  do                                                                          \
+    {                                                                         \
+      if (!vnet_sw_if_index_is_api_valid ((mp)->rx_sw_if_index))              \
+       {                                                                     \
+         rv = VNET_API_ERROR_INVALID_SW_IF_INDEX;                            \
+         goto bad_rx_sw_if_index;                                            \
+       }                                                                     \
+    }                                                                         \
+  while (0);
+
 #define BAD_RX_SW_IF_INDEX_LABEL               \
 do {                                            \
 bad_rx_sw_if_index:                            \
@@ -301,6 +323,17 @@ bad_rx_sw_if_index:                                \
     }                                                           \
 } while(0);
 
+#define VALIDATE_TX_SW_IF_INDEX_END(mp)                                       \
+  do                                                                          \
+    {                                                                         \
+      if (!vnet_sw_if_index_is_api_valid (mp->tx_sw_if_index))                \
+       {                                                                     \
+         rv = VNET_API_ERROR_INVALID_SW_IF_INDEX;                            \
+         goto bad_tx_sw_if_index;                                            \
+       }                                                                     \
+    }                                                                         \
+  while (0);
+
 #define BAD_TX_SW_IF_INDEX_LABEL               \
 do {                                            \
 bad_tx_sw_if_index:                            \
@@ -315,6 +348,17 @@ bad_tx_sw_if_index:                                \
     }                                          \
 } while(0);
 
+#define VALIDATE_BD_ID_END(mp)                                                \
+  do                                                                          \
+    {                                                                         \
+      if (mp->bd_id > L2_BD_ID_MAX)                                           \
+       {                                                                     \
+         rv = VNET_API_ERROR_BD_ID_EXCEED_MAX;                               \
+         goto bad_bd_id;                                                     \
+       }                                                                     \
+    }                                                                         \
+  while (0);
+
 #define BAD_BD_ID_LABEL                                \
 do {                                            \
 bad_bd_id:                                     \