diff options
-rw-r--r-- | src/plugins/linux-cp/lcp_api.c | 12 | ||||
-rw-r--r-- | src/plugins/nat/nat44-ed/nat44_ed_api.c | 6 | ||||
-rw-r--r-- | src/plugins/nat/nat44-ei/nat44_ei_api.c | 6 | ||||
-rw-r--r-- | src/plugins/nat/pnat/pnat_api.c | 12 | ||||
-rw-r--r-- | src/vlibapi/api_helper_macros.h | 44 |
5 files changed, 50 insertions, 30 deletions
diff --git a/src/plugins/linux-cp/lcp_api.c b/src/plugins/linux-cp/lcp_api.c index 7f77bf71f1d..01d66478b90 100644 --- a/src/plugins/linux-cp/lcp_api.c +++ b/src/plugins/linux-cp/lcp_api.c @@ -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); diff --git a/src/plugins/nat/nat44-ed/nat44_ed_api.c b/src/plugins/nat/nat44-ed/nat44_ed_api.c index 6123544087b..6b769672135 100644 --- a/src/plugins/nat/nat44-ed/nat44_ed_api.c +++ b/src/plugins/nat/nat44-ed/nat44_ed_api.c @@ -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) { diff --git a/src/plugins/nat/nat44-ei/nat44_ei_api.c b/src/plugins/nat/nat44-ei/nat44_ei_api.c index 1d469b3f43f..425c03c5154 100644 --- a/src/plugins/nat/nat44-ei/nat44_ei_api.c +++ b/src/plugins/nat/nat44-ei/nat44_ei_api.c @@ -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) { diff --git a/src/plugins/nat/pnat/pnat_api.c b/src/plugins/nat/pnat/pnat_api.c index 2c4a1382d2a..442ee7c42c2 100644 --- a/src/plugins/nat/pnat/pnat_api.c +++ b/src/plugins/nat/pnat/pnat_api.c @@ -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); diff --git a/src/vlibapi/api_helper_macros.h b/src/vlibapi/api_helper_macros.h index 7a04bb056f2..320390534a5 100644 --- a/src/vlibapi/api_helper_macros.h +++ b/src/vlibapi/api_helper_macros.h @@ -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: \ |