From dd8e7d0e512425ec05de652a3c71028561e0f40a Mon Sep 17 00:00:00 2001 From: Mohsin Kazmi Date: Mon, 23 Jul 2018 14:45:57 +0200 Subject: Multiversioning: Device (tx) function constructor Change-Id: I39f87ca161c891fb22462a23188982fef7c3243f Signed-off-by: Mohsin Kazmi --- src/vnet/interface.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'src/vnet/interface.c') diff --git a/src/vnet/interface.c b/src/vnet/interface.c index ca4dc493aac..1e69ccbf6ea 100644 --- a/src/vnet/interface.c +++ b/src/vnet/interface.c @@ -1359,6 +1359,27 @@ vnet_interface_init (vlib_main_t * vm) { c->index = vec_len (im->device_classes); hash_set_mem (im->device_class_by_name, c->name, c->index); + + if (c->tx_fn_registrations) + { + vlib_node_fn_registration_t *fnr = c->tx_fn_registrations; + int priority = -1; + + /* to avoid confusion, please remove ".tx_function" statiement + from VNET_DEVICE_CLASS() if using function candidates */ + ASSERT (c->tx_function == 0); + + while (fnr) + { + if (fnr->priority > priority) + { + priority = fnr->priority; + c->tx_function = fnr->function; + } + fnr = fnr->next_registration; + } + } + vec_add1 (im->device_classes, c[0]); c = c->next_class_registration; } -- cgit 1.2.3-korg