/* Statistics (not really errors) */
#define foreach_l2t_encap_error \
_(NETWORK_TO_USER, "L2TP L2 network to user (ip6) pkts") \
/* Statistics (not really errors) */
#define foreach_l2t_encap_error \
_(NETWORK_TO_USER, "L2TP L2 network to user (ip6) pkts") \
-_(LOOKUP_FAIL_TO_L3, "L2TP L2 session lookup failed pkts")
+_(LOOKUP_FAIL_TO_L3, "L2TP L2 session lookup failed pkts") \
+_(ADMIN_DOWN, "L2TP tunnel is down")
static char * l2t_encap_error_strings[] = {
#define _(sym,string) string,
static char * l2t_encap_error_strings[] = {
#define _(sym,string) string,
/* Other-than-output pkt? We're done... */
if (vnet_buffer(b)->l2t.next_index != L2T_ENCAP_NEXT_IP6_LOOKUP)
/* Other-than-output pkt? We're done... */
if (vnet_buffer(b)->l2t.next_index != L2T_ENCAP_NEXT_IP6_LOOKUP)
vlib_buffer_advance (b, -(sizeof (*ip6)));
ip6 = vlib_buffer_get_current (b);
vlib_buffer_advance (b, -(sizeof (*ip6)));
ip6 = vlib_buffer_get_current (b);
ip6->dst_address.as_u64[0] = s->client_address.as_u64[0];
ip6->dst_address.as_u64[1] = s->client_address.as_u64[1];
ip6->dst_address.as_u64[0] = s->client_address.as_u64[0];
ip6->dst_address.as_u64[1] = s->client_address.as_u64[1];
if (PREDICT_FALSE(b->flags & VLIB_BUFFER_IS_TRACED)) {
l2t_trace_t *t = vlib_add_trace (vm, node, b, sizeof (*t));
t->is_user_to_network = 0;
if (PREDICT_FALSE(b->flags & VLIB_BUFFER_IS_TRACED)) {
l2t_trace_t *t = vlib_add_trace (vm, node, b, sizeof (*t));
t->is_user_to_network = 0;