Break out the broom for some cleanup work
Maintain the MAINTAINERS file. Removed src/plugins/*.am listings. Added a couple of plugins. Add vlib_process_create (vlib_main_t *vm, char *name, vlib_node_function_t *f, u32 log2_n_stack_bytes); /** @brief Create a vlib process * @param vm &vlib_global_main * @param f the process node function * @param log2_n_stack_bytes size of the process stack, defaults to 16K * @return newly-create node index * @warning call only on the main thread. Barrier sync required. */ This function makes it easy to spin up periodic processes when features are enabled for the first time. That coding pattern is highly recommended. Update the emacs-lisp plugin generator to use vlib_process_create, instead of generating static periodic process nodes. Change-Id: Icda33e93b9034779d3a3e228cd1110af14b058a5 Signed-off-by: Dave Barach <dave@barachs.net>
This commit is contained in:

committed by
Damjan Marion

parent
4d376f67a6
commit
11965c7b47
31
MAINTAINERS
31
MAINTAINERS
@@ -14,15 +14,13 @@ Descriptions of section entries:
|
||||
Build System
|
||||
M: Damjan Marion <damarion@cisco.com>
|
||||
F: Makefile
|
||||
F: src/*.ac
|
||||
F: src/*.am
|
||||
F: src/*.mk
|
||||
F: src/m4/
|
||||
F: src/CMakeLists.txt
|
||||
F: src/cmake/
|
||||
|
||||
Build System Internal
|
||||
M: Dave Barach <dave@barachs.net>
|
||||
F: build-root/Makefile
|
||||
F: build-data/*
|
||||
F: build-data/
|
||||
|
||||
Doxygen
|
||||
M: Chris Luke <chrisy@flirble.org>
|
||||
@@ -42,12 +40,12 @@ Infrastructure Library
|
||||
M: Dave Barach <dave@barachs.net>
|
||||
F: src/vppinfra/
|
||||
|
||||
VLIB Library
|
||||
Vector Library
|
||||
M: Dave Barach <dave@barachs.net>
|
||||
M: Damjan Marion <damarion@cisco.com>
|
||||
F: src/vlib/
|
||||
|
||||
VLIB API Libraries
|
||||
Binary API Libraries
|
||||
M: Dave Barach <dave@barachs.net>
|
||||
F: src/vlibapi/
|
||||
F: src/vlibmemory/
|
||||
@@ -126,7 +124,6 @@ M: John Lo <loj@cisco.com>
|
||||
F: src/vnet/vxlan/
|
||||
|
||||
VNET VXLAN-GPE
|
||||
M: Keith Burns <alagalah@gmail.com>
|
||||
M: Hongjun Ni <hongjun.ni@intel.com>
|
||||
F: src/vnet/vxlan-gpe/
|
||||
|
||||
@@ -144,50 +141,48 @@ F: src/plugins/tlsmbedtls
|
||||
Plugin - ACL
|
||||
M: Andrew Yourtchenko <ayourtch@gmail.com>
|
||||
F: src/plugins/acl/
|
||||
F: src/plugins/acl.am
|
||||
|
||||
Plugin - flowprobe
|
||||
M: Ole Troan <otroan@employees.org>
|
||||
F: src/plugins/flowprobe/
|
||||
F: src/plugins/flowprobe.am
|
||||
|
||||
Plugin - GTPU
|
||||
M: Hongjun Ni <hongjun.ni@intel.com>
|
||||
F: src/plugins/gtpu/
|
||||
F: src/plugins/gtpu.am
|
||||
|
||||
Plugin - PPPoE
|
||||
M: Hongjun Ni <hongjun.ni@intel.com>
|
||||
F: src/plugins/pppoe/
|
||||
F: src/plugins/pppoe.am
|
||||
|
||||
Plugin - IPv6 Segment Routing Dynamic Proxy
|
||||
M: Francois Clad <fclad@cisco.com>
|
||||
F: src/plugins/srv6-ad/
|
||||
F: src/plugins/srv6_ad.am
|
||||
|
||||
Plugin - IPv6 Segment Routing Masquerading Proxy
|
||||
M: Francois Clad <fclad@cisco.com>
|
||||
F: src/plugins/srv6-am/
|
||||
F: src/plugins/srv6_am.am
|
||||
|
||||
Plugin - IPv6 Segment Routing Static Proxy
|
||||
M: Francois Clad <fclad@cisco.com>
|
||||
F: src/plugins/srv6-as/
|
||||
F: src/plugins/srv6_as.am
|
||||
|
||||
Plugin - Load Balancer
|
||||
M: Pierre Pfister <ppfister@cisco.com>
|
||||
M: Hongjun Ni <hongjun.ni@intel.com>
|
||||
F: src/plugins/lb/
|
||||
F: src/plugins/lb.am
|
||||
|
||||
Plugin - NSH
|
||||
M: Hongjun Ni <hongjun.ni@intel.com>
|
||||
M: Keith Burns <alagalah@gmail.com>
|
||||
M: Vengada <venggovi@cisco.com>
|
||||
F: src/plugins/nsh/
|
||||
F: src/plugins/nsh.am
|
||||
|
||||
Plugin - Time-based MAC filter
|
||||
M: Dave Barach <dave@barachs.net>
|
||||
F: src/plugins/mactime/
|
||||
|
||||
Plugin - Network Delay Simulator
|
||||
M: Dave Barach <dave@barachs.net>
|
||||
F: src/plugins/nsim/
|
||||
|
||||
Test Infrastructure
|
||||
M: Klement Sekera <ksekera@cisco.com>
|
||||
|
@@ -24,7 +24,7 @@ nil
|
||||
'(setq capital-oh-en "ON")
|
||||
"
|
||||
/*
|
||||
* " plugin-name ".h - skeleton vpp engine plug-in header file
|
||||
* " plugin-name ".h - skeleton vpp engine plug-in header file
|
||||
*
|
||||
* Copyright (c) <current-year> <your-organization>
|
||||
* Licensed under the Apache License, Version 2.0 (the \"License\");
|
||||
@@ -55,6 +55,8 @@ typedef struct {
|
||||
|
||||
/* on/off switch for the periodic function */
|
||||
u8 periodic_timer_enabled;
|
||||
/* Node index, non-zero if the periodic process has been created */
|
||||
u32 periodic_node_index;
|
||||
|
||||
/* convenience */
|
||||
vlib_main_t * vlib_main;
|
||||
@@ -72,6 +74,8 @@ extern vlib_node_registration_t " plugin-name "_periodic_node;
|
||||
#define " PLUGIN-NAME "_EVENT2 2
|
||||
#define " PLUGIN-NAME "_EVENT_PERIODIC_ENABLE_DISABLE 3
|
||||
|
||||
void " plugin-name "_create_periodic_process (" plugin-name "_main_t *);
|
||||
|
||||
#endif /* __included_" plugin-name "_h__ */
|
||||
|
||||
/*
|
||||
|
@@ -100,14 +100,16 @@ int " plugin-name "_enable_disable (" plugin-name "_main_t * " main-p ", u32 sw_
|
||||
if (sw->type != VNET_SW_INTERFACE_TYPE_HARDWARE)
|
||||
return VNET_API_ERROR_INVALID_SW_IF_INDEX;
|
||||
|
||||
" plugin-name "_create_periodic_process (" main-p ");
|
||||
|
||||
vnet_feature_enable_disable (\"device-input\", \"" plugin-name "\",
|
||||
sw_if_index, enable_disable, 0, 0);
|
||||
|
||||
/* Send an event to enable/disable the periodic scanner process */
|
||||
vlib_process_signal_event (" main-p "->vlib_main, " plugin-name"_periodic_node.index,
|
||||
" PLUGIN-NAME"_EVENT_PERIODIC_ENABLE_DISABLE,
|
||||
vlib_process_signal_event (" main-p "->vlib_main,
|
||||
" main-p"->periodic_node_index,
|
||||
" PLUGIN-NAME"_EVENT_PERIODIC_ENABLE_DISABLE,
|
||||
(uword)enable_disable);
|
||||
|
||||
return rv;
|
||||
}
|
||||
|
||||
|
@@ -22,8 +22,9 @@ nil
|
||||
(setq plugin-name (read-string "Plugin name: ")))
|
||||
'(setq PLUGIN-NAME (upcase plugin-name))
|
||||
'(setq capital-oh-en "ON")
|
||||
'(setq main-p (concat (substring plugin-name 0 1) "mp"))
|
||||
"/*
|
||||
* " plugin-name "_periodic.c - skeleton plug-in periodic function
|
||||
* " plugin-name "_periodic.c - skeleton plug-in periodic function
|
||||
*
|
||||
* Copyright (c) <current-year> <your-organization>
|
||||
* Licensed under the Apache License, Version 2.0 (the \"License\");
|
||||
@@ -43,22 +44,22 @@ nil
|
||||
#include <vppinfra/error.h>
|
||||
#include <" plugin-name "/" plugin-name ".h>
|
||||
|
||||
static void
|
||||
static void
|
||||
handle_event1 (" plugin-name "_main_t *pm, f64 now, uword event_data)
|
||||
{
|
||||
clib_warning (\"received " PLUGIN-NAME "_EVENT1\");
|
||||
}
|
||||
|
||||
static void
|
||||
|
||||
static void
|
||||
handle_event2 (" plugin-name "_main_t *pm, f64 now, uword event_data)
|
||||
{
|
||||
clib_warning (\"received " PLUGIN-NAME "_EVENT2\");
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
handle_periodic_enable_disable (" plugin-name"_main_t *pm, f64 now, uword event_data)
|
||||
{
|
||||
clib_warning (\"Periodic timeouts now %s\",
|
||||
clib_warning (\"Periodic timeouts now %s\",
|
||||
event_data ? \"enabled\" : \"disabled\");
|
||||
pm->periodic_timer_enabled = event_data;
|
||||
}
|
||||
@@ -120,14 +121,17 @@ static uword
|
||||
return 0; /* or not */
|
||||
}
|
||||
|
||||
/* *INDENT-OFF* */
|
||||
VLIB_REGISTER_NODE ("plugin-name"_periodic_node) =
|
||||
void " plugin-name "_create_periodic_process (" plugin-name "_main_t *" main-p")
|
||||
{
|
||||
.function = " plugin-name "_periodic_process,
|
||||
.type = VLIB_NODE_TYPE_PROCESS,
|
||||
.name = \"" plugin-name "-periodic-process\",
|
||||
};
|
||||
/* *INDENT-ON* */
|
||||
/* Already created the process node? */
|
||||
if (" main-p "->periodic_node_index > 0)
|
||||
return;
|
||||
|
||||
/* No, create it now and make a note of the node index */
|
||||
" main-p "->periodic_node_index = vlib_process_create (" main-p "->vlib_main,
|
||||
\"" plugin-name "-periodic-process\",
|
||||
" plugin-name "_periodic_process, 16 /* log2_n_stack_bytes */);
|
||||
}
|
||||
|
||||
/*
|
||||
* fd.io coding-style-patch-verification: " capital-oh-en "
|
||||
|
@@ -757,6 +757,34 @@ done:
|
||||
return error;
|
||||
}
|
||||
|
||||
u32
|
||||
vlib_process_create (vlib_main_t * vm, char *name,
|
||||
vlib_node_function_t * f, u32 log2_n_stack_bytes)
|
||||
{
|
||||
vlib_node_registration_t r;
|
||||
vlib_node_t *n;
|
||||
|
||||
memset (&r, 0, sizeof (r));
|
||||
|
||||
r.name = (char *) format (0, "%s", name, 0);
|
||||
r.function = f;
|
||||
r.process_log2_n_stack_bytes = log2_n_stack_bytes;
|
||||
r.type = VLIB_NODE_TYPE_PROCESS;
|
||||
|
||||
vlib_worker_thread_barrier_sync (vm);
|
||||
|
||||
vlib_register_node (vm, &r);
|
||||
vec_free (r.name);
|
||||
|
||||
vlib_worker_thread_node_runtime_update ();
|
||||
vlib_worker_thread_barrier_release (vm);
|
||||
|
||||
n = vlib_get_node (vm, r.index);
|
||||
vlib_start_process (vm, n->runtime_index);
|
||||
|
||||
return (r.index);
|
||||
}
|
||||
|
||||
/*
|
||||
* fd.io coding-style-patch-verification: ON
|
||||
*
|
||||
|
@@ -1186,6 +1186,16 @@ vlib_node_increment_counter (vlib_main_t * vm, u32 node_index,
|
||||
em->counters[node_counter_base_index + counter_index] += increment;
|
||||
}
|
||||
|
||||
/** @brief Create a vlib process
|
||||
* @param vm &vlib_global_main
|
||||
* @param f the process node function
|
||||
* @param log2_n_stack_bytes size of the process stack, defaults to 16K
|
||||
* @return newly-create node index
|
||||
* @warning call only on the main thread. Barrier sync required
|
||||
*/
|
||||
u32 vlib_process_create (vlib_main_t * vm, char *name,
|
||||
vlib_node_function_t * f, u32 log2_n_stack_bytes);
|
||||
|
||||
#endif /* included_vlib_node_funcs_h */
|
||||
|
||||
/*
|
||||
|
Reference in New Issue
Block a user