aboutsummaryrefslogtreecommitdiffstats
path: root/vnet/vnet/cdp/cdp_node.c
diff options
context:
space:
mode:
Diffstat (limited to 'vnet/vnet/cdp/cdp_node.c')
-rw-r--r--vnet/vnet/cdp/cdp_node.c172
1 files changed, 93 insertions, 79 deletions
diff --git a/vnet/vnet/cdp/cdp_node.c b/vnet/vnet/cdp/cdp_node.c
index 7411ebeb5f6..de62d4c7ef5 100644
--- a/vnet/vnet/cdp/cdp_node.c
+++ b/vnet/vnet/cdp/cdp_node.c
@@ -33,7 +33,7 @@ static vlib_node_registration_t cdp_process_node;
* packet counter strings
* Dump these counters via the "show error" CLI command
*/
-static char * cdp_error_strings[] = {
+static char *cdp_error_strings[] = {
#define _(sym,string) string,
foreach_cdp_error
#undef _
@@ -44,9 +44,10 @@ static char * cdp_error_strings[] = {
* them, so the graph node has only one next-index. The "error-drop"
* node automatically bumps our per-node packet counters for us.
*/
-typedef enum {
- CDP_INPUT_NEXT_NORMAL,
- CDP_INPUT_N_NEXT,
+typedef enum
+{
+ CDP_INPUT_NEXT_NORMAL,
+ CDP_INPUT_N_NEXT,
} cdp_next_t;
/*
@@ -55,24 +56,23 @@ typedef enum {
*/
static uword
cdp_node_fn (vlib_main_t * vm,
- vlib_node_runtime_t * node,
- vlib_frame_t * frame)
+ vlib_node_runtime_t * node, vlib_frame_t * frame)
{
- u32 n_left_from, * from;
- cdp_input_trace_t * t0;
+ u32 n_left_from, *from;
+ cdp_input_trace_t *t0;
- from = vlib_frame_vector_args (frame); /* array of buffer indices */
- n_left_from = frame->n_vectors; /* number of buffer indices */
+ from = vlib_frame_vector_args (frame); /* array of buffer indices */
+ n_left_from = frame->n_vectors; /* number of buffer indices */
while (n_left_from > 0)
{
u32 bi0;
- vlib_buffer_t * b0;
+ vlib_buffer_t *b0;
u32 next0, error0;
bi0 = from[0];
b0 = vlib_get_buffer (vm, bi0);
-
+
next0 = CDP_INPUT_NEXT_NORMAL;
/* scan this cdp pkt. error0 is the counter index to bump */
@@ -80,14 +80,15 @@ cdp_node_fn (vlib_main_t * vm,
b0->error = node->errors[error0];
/* If this pkt is traced, snapshoot the data */
- if (b0->flags & VLIB_BUFFER_IS_TRACED) {
- int len;
+ if (b0->flags & VLIB_BUFFER_IS_TRACED)
+ {
+ int len;
t0 = vlib_add_trace (vm, node, b0, sizeof (*t0));
- len = (b0->current_length < sizeof (t0->data))
- ? b0->current_length : sizeof (t0->data);
- t0->len = len;
- clib_memcpy (t0->data, vlib_buffer_get_current (b0), len);
- }
+ len = (b0->current_length < sizeof (t0->data))
+ ? b0->current_length : sizeof (t0->data);
+ t0->len = len;
+ clib_memcpy (t0->data, vlib_buffer_get_current (b0), len);
+ }
/* push this pkt to the next graph node, always error-drop */
vlib_set_next_frame_buffer (vm, node, next0, bi0);
@@ -101,6 +102,7 @@ cdp_node_fn (vlib_main_t * vm,
/*
* cdp input graph node declaration
*/
+/* *INDENT-OFF* */
VLIB_REGISTER_NODE (cdp_input_node, static) = {
.function = cdp_node_fn,
.name = "cdp-input",
@@ -109,86 +111,98 @@ VLIB_REGISTER_NODE (cdp_input_node, static) = {
.n_errors = CDP_N_ERROR,
.error_strings = cdp_error_strings,
-
+
.format_trace = cdp_input_format_trace,
-
+
.n_next_nodes = CDP_INPUT_N_NEXT,
.next_nodes = {
- [CDP_INPUT_NEXT_NORMAL] = "error-drop",
+ [CDP_INPUT_NEXT_NORMAL] = "error-drop",
},
};
+/* *INDENT-ON* */
/*
* cdp periodic function
*/
static uword
-cdp_process (vlib_main_t * vm,
- vlib_node_runtime_t * rt,
- vlib_frame_t * f)
+cdp_process (vlib_main_t * vm, vlib_node_runtime_t * rt, vlib_frame_t * f)
{
- cdp_main_t * cm = &cdp_main;
- f64 poll_time_remaining;
- uword event_type, * event_data = 0;
-
- /* So we can send events to the cdp process */
- cm->cdp_process_node_index = cdp_process_node.index;
-
- /* Dynamically register the cdp input node with the snap classifier */
- snap_register_input_protocol (vm, "cdp-input",
- 0xC /* ieee_oui, Cisco */,
- 0x2000 /* protocol CDP */,
- cdp_input_node.index);
-
- snap_register_input_protocol (vm, "cdp-input",
- 0xC /* ieee_oui, Cisco */,
- 0x2004 /* protocol CDP */,
- cdp_input_node.index);
-
-#if 0 /* retain for reference */
- /* with the hdlc classifier */
- hdlc_register_input_protocol (vm, HDLC_PROTOCOL_cdp,
- cdp_input_node.index);
+ cdp_main_t *cm = &cdp_main;
+ f64 poll_time_remaining;
+ uword event_type, *event_data = 0;
+
+ /* So we can send events to the cdp process */
+ cm->cdp_process_node_index = cdp_process_node.index;
+
+ /* Dynamically register the cdp input node with the snap classifier */
+ snap_register_input_protocol (vm, "cdp-input", 0xC /* ieee_oui, Cisco */ ,
+ 0x2000 /* protocol CDP */ ,
+ cdp_input_node.index);
+
+ snap_register_input_protocol (vm, "cdp-input", 0xC /* ieee_oui, Cisco */ ,
+ 0x2004 /* protocol CDP */ ,
+ cdp_input_node.index);
+
+#if 0 /* retain for reference */
+ /* with the hdlc classifier */
+ hdlc_register_input_protocol (vm, HDLC_PROTOCOL_cdp, cdp_input_node.index);
#endif
- /* with ethernet input (for SRP) */
- ethernet_register_input_type (vm, ETHERNET_TYPE_CDP /* CDP */,
- cdp_input_node.index);
-
- poll_time_remaining = 10.0 /* seconds */;
- while (1) {
- /* sleep until next poll time, or msg serialize event occurs */
- poll_time_remaining =
- vlib_process_wait_for_event_or_clock (vm, poll_time_remaining);
-
- event_type = vlib_process_get_events (vm, &event_data);
- switch (event_type) {
- case ~0: /* no events => timeout */
- break;
-
- default:
- clib_warning ("BUG: event type 0x%wx", event_type);
- break;
- }
- if (event_data)
- _vec_len (event_data) = 0;
-
- /* peer timeout scan, send announcements */
- if (vlib_process_suspend_time_is_zero (poll_time_remaining)) {
- cdp_periodic (vm);
- poll_time_remaining = 10.0;
- }
+ /* with ethernet input (for SRP) */
+ ethernet_register_input_type (vm, ETHERNET_TYPE_CDP /* CDP */ ,
+ cdp_input_node.index);
+
+ poll_time_remaining = 10.0 /* seconds */ ;
+ while (1)
+ {
+ /* sleep until next poll time, or msg serialize event occurs */
+ poll_time_remaining =
+ vlib_process_wait_for_event_or_clock (vm, poll_time_remaining);
+
+ event_type = vlib_process_get_events (vm, &event_data);
+ switch (event_type)
+ {
+ case ~0: /* no events => timeout */
+ break;
+
+ default:
+ clib_warning ("BUG: event type 0x%wx", event_type);
+ break;
+ }
+ if (event_data)
+ _vec_len (event_data) = 0;
+
+ /* peer timeout scan, send announcements */
+ if (vlib_process_suspend_time_is_zero (poll_time_remaining))
+ {
+ cdp_periodic (vm);
+ poll_time_remaining = 10.0;
+ }
}
- return 0;
+ return 0;
}
/*
* cdp periodic node declaration
*/
+/* *INDENT-OFF* */
VLIB_REGISTER_NODE (cdp_process_node, static) = {
- .function = cdp_process,
- .type = VLIB_NODE_TYPE_PROCESS,
- .name = "cdp-process",
+ .function = cdp_process,
+ .type = VLIB_NODE_TYPE_PROCESS,
+ .name = "cdp-process",
};
+/* *INDENT-ON* */
-void vnet_cdp_node_reference(void) { }
+void
+vnet_cdp_node_reference (void)
+{
+}
+
+/*
+ * fd.io coding-style-patch-verification: ON
+ *
+ * Local Variables:
+ * eval: (c-set-style "gnu")
+ * End:
+ */