diff options
author | Dave Barach <dave@barachs.net> | 2019-07-23 16:28:36 -0400 |
---|---|---|
committer | Dave Barach <dave@barachs.net> | 2019-07-23 16:29:10 -0400 |
commit | 3940de36728b768574a3e998389bb90d55f690d1 (patch) | |
tree | f3c04d65748319ca38cbabce43c918f7ea745f1d /src/vpp/api/custom_dump.c | |
parent | b725ebb3f47302c416e41c7be3f5a8bb3c9fe547 (diff) |
api: binary api cleanup
Multiple API message handlers call vnet_get_sup_hw_interface(...)
without checking the inbound sw_if_index. This can cause a
pool_elt_at_index ASSERT in a debug image, and major disorder in a
production image.
Given that a number of places are coded as follows, add an
"api_visible_or_null" variant of vnet_get_sup_hw_interface, which
returns NULL given an invalid sw_if_index, or a hidden sw interface:
- hw = vnet_get_sup_hw_interface (vnm, sw_if_index);
+ hw = vnet_get_sup_hw_interface_api_visible_or_null (vnm, sw_if_index);
if (hw == NULL || memif_device_class.index != hw->dev_class_index)
return clib_error_return (0, "not a memif interface");
Rename two existing xxx_safe functions -> xxx_or_null to make it
obvious what they return.
Type: fix
Change-Id: I29996e8d0768fd9e0c5495bd91ff8bedcf2c5697
Signed-off-by: Dave Barach <dave@barachs.net>
Diffstat (limited to 'src/vpp/api/custom_dump.c')
-rw-r--r-- | src/vpp/api/custom_dump.c | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/src/vpp/api/custom_dump.c b/src/vpp/api/custom_dump.c index c6427f282bf..840889d6cc3 100644 --- a/src/vpp/api/custom_dump.c +++ b/src/vpp/api/custom_dump.c @@ -3775,6 +3775,18 @@ static void *vl_api_qos_record_enable_disable_t_print FINISH; } +#define foreach_no_print_function \ +_(memclnt_keepalive_reply) + +#define _(f) \ +static void * vl_api_ ## f ## _t_print \ + (vl_api_ ## f ## _t * mp, void * handle) \ +{ \ + return handle; \ +} +foreach_no_print_function; +#undef _ + #define foreach_custom_print_no_arg_function \ _(lisp_eid_table_vni_dump) \ _(lisp_map_resolver_dump) \ @@ -3791,7 +3803,7 @@ static void * vl_api_ ## f ## _t_print \ s = format (0, "SCRIPT: " #f ); \ FINISH; \ } -foreach_custom_print_no_arg_function +foreach_custom_print_no_arg_function; #undef _ #define foreach_custom_print_function \ _(CREATE_LOOPBACK, create_loopback) \ @@ -3993,8 +4005,10 @@ _(DNS_RESOLVE_NAME, dns_resolve_name) \ _(DNS_RESOLVE_IP, dns_resolve_ip) \ _(SESSION_RULE_ADD_DEL, session_rule_add_del) \ _(OUTPUT_ACL_SET_INTERFACE, output_acl_set_interface) \ -_(QOS_RECORD_ENABLE_DISABLE, qos_record_enable_disable) - void +_(QOS_RECORD_ENABLE_DISABLE, qos_record_enable_disable) \ +_(MEMCLNT_KEEPALIVE_REPLY, memclnt_keepalive_reply) + +void vl_msg_api_custom_dump_configure (api_main_t * am) { #define _(n,f) am->msg_print_handlers[VL_API_##n] \ |