summaryrefslogtreecommitdiffstats
path: root/src/vpp
diff options
context:
space:
mode:
authorDave Barach <dave@barachs.net>2019-07-23 16:28:36 -0400
committerDave Barach <dave@barachs.net>2019-07-24 08:14:39 -0400
commitb71b5ffbfb2ddbad408a22ef17046dfe5fea1cad (patch)
tree73490766e73d335ae722f45c89b092cfcd707b34 /src/vpp
parent9fb50d83dbe22cab30532cec8c85e711af1f82ff (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> (cherry picked from commit 3940de36728b768574a3e998389bb90d55f690d1)
Diffstat (limited to 'src/vpp')
-rw-r--r--src/vpp/api/custom_dump.c20
1 files changed, 17 insertions, 3 deletions
diff --git a/src/vpp/api/custom_dump.c b/src/vpp/api/custom_dump.c
index 9e150e91a7b..161d7fbfdce 100644
--- a/src/vpp/api/custom_dump.c
+++ b/src/vpp/api/custom_dump.c
@@ -3756,6 +3756,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) \
@@ -3772,7 +3784,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) \
@@ -3969,8 +3981,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] \