summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--vnet/vnet/snap/node.c82
-rw-r--r--vnet/vnet/snap/pg.c40
-rw-r--r--vnet/vnet/snap/snap.c65
-rw-r--r--vnet/vnet/snap/snap.h61
4 files changed, 147 insertions, 101 deletions
diff --git a/vnet/vnet/snap/node.c b/vnet/vnet/snap/node.c
index 83d373a22de..884ff32444b 100644
--- a/vnet/vnet/snap/node.c
+++ b/vnet/vnet/snap/node.c
@@ -42,22 +42,25 @@
#include <vnet/llc/llc.h>
#include <vnet/snap/snap.h>
-typedef enum {
+typedef enum
+{
SNAP_INPUT_NEXT_DROP,
SNAP_INPUT_NEXT_PUNT,
SNAP_INPUT_NEXT_ETHERNET_TYPE,
SNAP_INPUT_N_NEXT,
} snap_input_next_t;
-typedef struct {
+typedef struct
+{
u8 packet_data[32];
} snap_input_trace_t;
-static u8 * format_snap_input_trace (u8 * s, va_list * va)
+static u8 *
+format_snap_input_trace (u8 * s, va_list * va)
{
CLIB_UNUSED (vlib_main_t * vm) = va_arg (*va, vlib_main_t *);
CLIB_UNUSED (vlib_node_t * node) = va_arg (*va, vlib_node_t *);
- snap_input_trace_t * t = va_arg (*va, snap_input_trace_t *);
+ snap_input_trace_t *t = va_arg (*va, snap_input_trace_t *);
s = format (s, "%U", format_snap_header, t->packet_data);
@@ -66,11 +69,10 @@ static u8 * format_snap_input_trace (u8 * s, va_list * va)
static uword
snap_input (vlib_main_t * vm,
- vlib_node_runtime_t * node,
- vlib_frame_t * from_frame)
+ vlib_node_runtime_t * node, vlib_frame_t * from_frame)
{
- snap_main_t * sm = &snap_main;
- u32 n_left_from, next_index, * from, * to_next;
+ snap_main_t *sm = &snap_main;
+ u32 n_left_from, next_index, *from, *to_next;
from = vlib_frame_vector_args (from_frame);
n_left_from = from_frame->n_vectors;
@@ -88,21 +90,21 @@ snap_input (vlib_main_t * vm,
{
u32 n_left_to_next;
- vlib_get_next_frame (vm, node, next_index,
- to_next, n_left_to_next);
+ vlib_get_next_frame (vm, node, next_index, to_next, n_left_to_next);
while (n_left_from >= 4 && n_left_to_next >= 2)
{
u32 bi0, bi1;
- vlib_buffer_t * b0, * b1;
- snap_header_t * h0, * h1;
- snap_protocol_info_t * pi0, * pi1;
- u8 next0, next1, is_ethernet0, is_ethernet1, len0, len1, enqueue_code;
+ vlib_buffer_t *b0, *b1;
+ snap_header_t *h0, *h1;
+ snap_protocol_info_t *pi0, *pi1;
+ u8 next0, next1, is_ethernet0, is_ethernet1, len0, len1,
+ enqueue_code;
u32 oui0, oui1;
/* Prefetch next iteration. */
{
- vlib_buffer_t * b2, * b3;
+ vlib_buffer_t *b2, *b3;
b2 = vlib_get_buffer (vm, from[2]);
b3 = vlib_get_buffer (vm, from[3]);
@@ -157,7 +159,7 @@ snap_input (vlib_main_t * vm,
b0->error = node->errors[SNAP_ERROR_UNKNOWN_PROTOCOL];
b1->error = node->errors[SNAP_ERROR_UNKNOWN_PROTOCOL];
- enqueue_code = (next0 != next_index) + 2*(next1 != next_index);
+ enqueue_code = (next0 != next_index) + 2 * (next1 != next_index);
if (PREDICT_FALSE (enqueue_code != 0))
{
@@ -189,18 +191,19 @@ snap_input (vlib_main_t * vm,
vlib_put_next_frame (vm, node, next_index,
n_left_to_next);
next_index = next1;
- vlib_get_next_frame (vm, node, next_index, to_next, n_left_to_next);
+ vlib_get_next_frame (vm, node, next_index, to_next,
+ n_left_to_next);
}
}
}
}
-
+
while (n_left_from > 0 && n_left_to_next > 0)
{
u32 bi0;
- vlib_buffer_t * b0;
- snap_header_t * h0;
- snap_protocol_info_t * pi0;
+ vlib_buffer_t *b0;
+ snap_header_t *h0;
+ snap_protocol_info_t *pi0;
u8 next0, is_ethernet0, len0;
u32 oui0;
@@ -257,12 +260,13 @@ snap_input (vlib_main_t * vm,
return from_frame->n_vectors;
}
-static char * snap_error_strings[] = {
+static char *snap_error_strings[] = {
#define _(f,s) s,
foreach_snap_error
#undef _
};
+/* *INDENT-OFF* */
VLIB_REGISTER_NODE (snap_input_node) = {
.function = snap_input,
.name = "snap-input",
@@ -283,11 +287,13 @@ VLIB_REGISTER_NODE (snap_input_node) = {
.format_trace = format_snap_input_trace,
.unformat_buffer = unformat_snap_header,
};
+/* *INDENT-ON* */
-static clib_error_t * snap_input_init (vlib_main_t * vm)
+static clib_error_t *
+snap_input_init (vlib_main_t * vm)
{
{
- clib_error_t * error = vlib_call_init_function (vm, snap_init);
+ clib_error_t *error = vlib_call_init_function (vm, snap_init);
if (error)
clib_error_report (error);
}
@@ -303,26 +309,24 @@ VLIB_INIT_FUNCTION (snap_input_init);
void
snap_register_input_protocol (vlib_main_t * vm,
- char * name,
- u32 ieee_oui,
- u16 protocol,
- u32 node_index)
+ char *name,
+ u32 ieee_oui, u16 protocol, u32 node_index)
{
- snap_main_t * sm = &snap_main;
- snap_protocol_info_t * pi;
+ snap_main_t *sm = &snap_main;
+ snap_protocol_info_t *pi;
snap_header_t h;
snap_oui_and_protocol_t key;
{
- clib_error_t * error = vlib_call_init_function (vm, snap_input_init);
+ clib_error_t *error = vlib_call_init_function (vm, snap_input_init);
if (error)
clib_error_report (error);
}
h.protocol = clib_host_to_net_u16 (protocol);
h.oui[0] = (ieee_oui >> 16) & 0xff;
- h.oui[1] = (ieee_oui >> 8) & 0xff;
- h.oui[2] = (ieee_oui >> 0) & 0xff;
+ h.oui[1] = (ieee_oui >> 8) & 0xff;
+ h.oui[2] = (ieee_oui >> 0) & 0xff;
pi = snap_get_protocol_info (sm, &h);
if (pi)
return;
@@ -331,9 +335,7 @@ snap_register_input_protocol (vlib_main_t * vm,
pi->name = format (0, "%s", name);
pi->node_index = node_index;
- pi->next_index = vlib_node_add_next (vm,
- snap_input_node.index,
- node_index);
+ pi->next_index = vlib_node_add_next (vm, snap_input_node.index, node_index);
key.oui = ieee_oui;
key.protocol = clib_host_to_net_u16 (protocol);
@@ -341,3 +343,11 @@ snap_register_input_protocol (vlib_main_t * vm,
mhash_set (&sm->protocol_hash, &key, pi - sm->protocols, /* old_value */ 0);
hash_set_mem (sm->protocol_info_by_name, name, pi - sm->protocols);
}
+
+/*
+ * fd.io coding-style-patch-verification: ON
+ *
+ * Local Variables:
+ * eval: (c-set-style "gnu")
+ * End:
+ */
diff --git a/vnet/vnet/snap/pg.c b/vnet/vnet/snap/pg.c
index 74c363fcc69..aad125f35b6 100644
--- a/vnet/vnet/snap/pg.c
+++ b/vnet/vnet/snap/pg.c
@@ -41,7 +41,8 @@
#include <vnet/pg/pg.h>
#include <vnet/snap/snap.h>
-typedef struct {
+typedef struct
+{
pg_edit_t oui;
pg_edit_t protocol;
} pg_snap_header_t;
@@ -56,30 +57,29 @@ pg_snap_header_init (pg_snap_header_t * e)
uword
unformat_pg_snap_header (unformat_input_t * input, va_list * args)
{
- pg_stream_t * s = va_arg (*args, pg_stream_t *);
- pg_snap_header_t * h;
+ pg_stream_t *s = va_arg (*args, pg_stream_t *);
+ pg_snap_header_t *h;
u32 group_index, error;
-
+
h = pg_create_edit_group (s, sizeof (h[0]), sizeof (snap_header_t),
&group_index);
pg_snap_header_init (h);
error = 1;
- if (! unformat (input, "%U -> %U",
- unformat_pg_edit,
- unformat_snap_protocol, &h->oui, &h->protocol))
+ if (!unformat (input, "%U -> %U",
+ unformat_pg_edit,
+ unformat_snap_protocol, &h->oui, &h->protocol))
goto done;
{
- snap_main_t * pm = &snap_main;
- snap_protocol_info_t * pi = 0;
- pg_node_t * pg_node = 0;
+ snap_main_t *pm = &snap_main;
+ snap_protocol_info_t *pi = 0;
+ pg_node_t *pg_node = 0;
- if (h->oui.type == PG_EDIT_FIXED
- && h->protocol.type == PG_EDIT_FIXED)
+ if (h->oui.type == PG_EDIT_FIXED && h->protocol.type == PG_EDIT_FIXED)
{
- u8 * o = h->oui.values[PG_EDIT_LO];
- u8 * p = h->protocol.values[PG_EDIT_LO];
+ u8 *o = h->oui.values[PG_EDIT_LO];
+ u8 *p = h->protocol.values[PG_EDIT_LO];
snap_header_t h;
h.oui[0] = o[0];
@@ -95,14 +95,22 @@ unformat_pg_snap_header (unformat_input_t * input, va_list * args)
&& unformat_user (input, pg_node->unformat_edit, s))
;
- else if (! unformat_user (input, unformat_pg_payload, s))
+ else if (!unformat_user (input, unformat_pg_payload, s))
goto done;
}
error = 0;
- done:
+done:
if (error)
pg_free_edit_group (s);
return error == 0;
}
+
+/*
+ * fd.io coding-style-patch-verification: ON
+ *
+ * Local Variables:
+ * eval: (c-set-style "gnu")
+ * End:
+ */
diff --git a/vnet/vnet/snap/snap.c b/vnet/vnet/snap/snap.c
index fb5b031c069..64482bfcfbb 100644
--- a/vnet/vnet/snap/snap.c
+++ b/vnet/vnet/snap/snap.c
@@ -44,17 +44,19 @@
/* Global main structure. */
snap_main_t snap_main;
-static u8 * format_cisco_snap_protocol (u8 * s, va_list * args)
+static u8 *
+format_cisco_snap_protocol (u8 * s, va_list * args)
{
- snap_header_t * h = va_arg (*args, snap_header_t *);
+ snap_header_t *h = va_arg (*args, snap_header_t *);
u16 protocol = clib_net_to_host_u16 (h->protocol);
- char * t = 0;
+ char *t = 0;
switch (protocol)
{
#define _(n,f) case n: t = #f; break;
foreach_snap_cisco_protocol;
#undef _
- default: break;
+ default:
+ break;
}
if (t)
return format (s, "%s", t);
@@ -62,9 +64,10 @@ static u8 * format_cisco_snap_protocol (u8 * s, va_list * args)
return format (s, "unknown 0x%x", protocol);
}
-u8 * format_snap_protocol (u8 * s, va_list * args)
+u8 *
+format_snap_protocol (u8 * s, va_list * args)
{
- snap_header_t * h = va_arg (*args, snap_header_t *);
+ snap_header_t *h = va_arg (*args, snap_header_t *);
u32 oui = snap_header_get_oui (h);
u16 protocol = clib_net_to_host_u16 (h->protocol);
@@ -81,11 +84,12 @@ u8 * format_snap_protocol (u8 * s, va_list * args)
}
}
-u8 * format_snap_header_with_length (u8 * s, va_list * args)
+u8 *
+format_snap_header_with_length (u8 * s, va_list * args)
{
- snap_main_t * sm = &snap_main;
- snap_header_t * h = va_arg (*args, snap_header_t *);
- snap_protocol_info_t * pi = snap_get_protocol_info (sm, h);
+ snap_main_t *sm = &snap_main;
+ snap_header_t *h = va_arg (*args, snap_header_t *);
+ snap_protocol_info_t *pi = snap_get_protocol_info (sm, h);
u32 max_header_bytes = va_arg (*args, u32);
uword indent, header_bytes;
@@ -99,7 +103,7 @@ u8 * format_snap_header_with_length (u8 * s, va_list * args)
if (max_header_bytes != 0 && header_bytes > max_header_bytes && pi != 0)
{
- vlib_node_t * node = vlib_get_node (sm->vlib_main, pi->node_index);
+ vlib_node_t *node = vlib_get_node (sm->vlib_main, pi->node_index);
if (node->format_buffer)
s = format (s, "\n%U%U",
format_white_space, indent,
@@ -110,9 +114,10 @@ u8 * format_snap_header_with_length (u8 * s, va_list * args)
return s;
}
-u8 * format_snap_header (u8 * s, va_list * args)
+u8 *
+format_snap_header (u8 * s, va_list * args)
{
- snap_header_t * h = va_arg (*args, snap_header_t *);
+ snap_header_t *h = va_arg (*args, snap_header_t *);
return format (s, "%U", format_snap_header_with_length, h, 0);
}
@@ -120,8 +125,8 @@ u8 * format_snap_header (u8 * s, va_list * args)
uword
unformat_snap_protocol (unformat_input_t * input, va_list * args)
{
- snap_header_t * result = va_arg (*args, snap_header_t *);
- snap_main_t * sm = &snap_main;
+ snap_header_t *result = va_arg (*args, snap_header_t *);
+ snap_main_t *sm = &snap_main;
snap_oui_and_protocol_t p;
u32 i;
@@ -138,7 +143,7 @@ unformat_snap_protocol (unformat_input_t * input, va_list * args)
else if (unformat_user (input, unformat_vlib_number_by_name,
sm->protocol_info_by_name, &i))
{
- snap_protocol_info_t * pi = vec_elt_at_index (sm->protocols, i);
+ snap_protocol_info_t *pi = vec_elt_at_index (sm->protocols, i);
p = pi->oui_and_protocol;
}
@@ -152,38 +157,48 @@ unformat_snap_protocol (unformat_input_t * input, va_list * args)
uword
unformat_snap_header (unformat_input_t * input, va_list * args)
{
- u8 ** result = va_arg (*args, u8 **);
- snap_header_t _h, * h = &_h;
+ u8 **result = va_arg (*args, u8 **);
+ snap_header_t _h, *h = &_h;
- if (! unformat (input, "%U", unformat_snap_protocol, h))
+ if (!unformat (input, "%U", unformat_snap_protocol, h))
return 0;
/* Add header to result. */
{
- void * p;
+ void *p;
u32 n_bytes = sizeof (h[0]);
vec_add2 (*result, p, n_bytes);
clib_memcpy (p, h, n_bytes);
}
-
+
return 1;
}
-static clib_error_t * snap_init (vlib_main_t * vm)
+static clib_error_t *
+snap_init (vlib_main_t * vm)
{
- snap_main_t * sm = &snap_main;
+ snap_main_t *sm = &snap_main;
memset (sm, 0, sizeof (sm[0]));
sm->vlib_main = vm;
- mhash_init (&sm->protocol_hash, sizeof (uword), sizeof (snap_oui_and_protocol_t));
+ mhash_init (&sm->protocol_hash, sizeof (uword),
+ sizeof (snap_oui_and_protocol_t));
sm->protocol_info_by_name
- = hash_create_string (/* elts */ 0, sizeof (uword));
+ = hash_create_string ( /* elts */ 0, sizeof (uword));
return vlib_call_init_function (vm, snap_input_init);
}
VLIB_INIT_FUNCTION (snap_init);
+
+/*
+ * fd.io coding-style-patch-verification: ON
+ *
+ * Local Variables:
+ * eval: (c-set-style "gnu")
+ * End:
+ */
diff --git a/vnet/vnet/snap/snap.h b/vnet/vnet/snap/snap.h
index ed4a10e207e..dbba15bf3f7 100644
--- a/vnet/vnet/snap/snap.h
+++ b/vnet/vnet/snap/snap.h
@@ -47,7 +47,8 @@
_ (0x000000, ethernet) \
_ (0x00000c, cisco)
-typedef enum {
+typedef enum
+{
#define _(n,f) IEEE_OUI_##f = n,
foreach_ieee_oui
#undef _
@@ -66,13 +67,16 @@ typedef enum {
_ (0x2004, dtp) \
_ (0x200a, stp_uplink_fast)
-typedef enum {
+typedef enum
+{
#define _(n,f) SNAP_cisco_##f = n,
foreach_snap_cisco_protocol
#undef _
} snap_cisco_protocol_t;
-typedef union {
+typedef union
+{
+ /* *INDENT-OFF* */
CLIB_PACKED (struct {
/* OUI: organization unique identifier. */
u8 oui[3];
@@ -80,18 +84,21 @@ typedef union {
/* Per-OUI protocol. */
u16 protocol;
});
+ /* *INDENT-ON* */
u8 as_u8[5];
} snap_header_t;
-typedef struct {
+typedef struct
+{
u32 oui;
u32 protocol;
} snap_oui_and_protocol_t;
-typedef struct {
+typedef struct
+{
/* Name vector string. */
- u8 * name;
+ u8 *name;
snap_oui_and_protocol_t oui_and_protocol;
@@ -109,32 +116,34 @@ snap_header_set_protocol (snap_header_t * h, snap_oui_and_protocol_t * p)
u32 oui = p->oui;
h->protocol = clib_host_to_net_u16 (protocol);
h->oui[0] = (oui >> 16) & 0xff;
- h->oui[1] = (oui >> 8) & 0xff;
- h->oui[2] = (oui >> 0) & 0xff;
+ h->oui[1] = (oui >> 8) & 0xff;
+ h->oui[2] = (oui >> 0) & 0xff;
}
#define foreach_snap_error \
_ (NONE, "no error") \
_ (UNKNOWN_PROTOCOL, "unknown oui/snap protocol")
-typedef enum {
+typedef enum
+{
#define _(f,s) SNAP_ERROR_##f,
foreach_snap_error
#undef _
- SNAP_N_ERROR,
+ SNAP_N_ERROR,
} snap_error_t;
-typedef struct {
- vlib_main_t * vlib_main;
+typedef struct
+{
+ vlib_main_t *vlib_main;
/* Vector of known SNAP oui/protocol pairs. */
- snap_protocol_info_t * protocols;
+ snap_protocol_info_t *protocols;
/* Hash table mapping oui/protocol to protocol index. */
mhash_t protocol_hash;
/* Hash table mapping protocol by name. */
- uword * protocol_info_by_name;
+ uword *protocol_info_by_name;
} snap_main_t;
always_inline u32
@@ -147,7 +156,7 @@ always_inline snap_protocol_info_t *
snap_get_protocol_info (snap_main_t * sm, snap_header_t * h)
{
snap_oui_and_protocol_t key;
- uword * p;
+ uword *p;
key.oui = snap_header_get_oui (h);
key.protocol = h->protocol;
@@ -161,15 +170,11 @@ snap_main_t snap_main;
/* Register given node index to take input for given snap type. */
void
snap_register_input_protocol (vlib_main_t * vm,
- char * name,
- u32 ieee_oui,
- u16 protocol,
- u32 node_index);
+ char *name,
+ u32 ieee_oui, u16 protocol, u32 node_index);
void snap_set_adjacency (vnet_rewrite_header_t * rw,
- uword max_data_bytes,
- u32 ieee_oui,
- u16 protocol);
+ uword max_data_bytes, u32 ieee_oui, u16 protocol);
format_function_t format_snap_protocol;
format_function_t format_snap_header;
@@ -185,8 +190,8 @@ unformat_function_t unformat_pg_snap_header;
always_inline void
snap_setup_node (vlib_main_t * vm, u32 node_index)
{
- vlib_node_t * n = vlib_get_node (vm, node_index);
- pg_node_t * pn = pg_get_node (node_index);
+ vlib_node_t *n = vlib_get_node (vm, node_index);
+ pg_node_t *pn = pg_get_node (node_index);
n->format_buffer = format_snap_header_with_length;
n->unformat_buffer = unformat_snap_header;
@@ -194,3 +199,11 @@ snap_setup_node (vlib_main_t * vm, u32 node_index)
}
#endif /* included_snap_h */
+
+/*
+ * fd.io coding-style-patch-verification: ON
+ *
+ * Local Variables:
+ * eval: (c-set-style "gnu")
+ * End:
+ */