static u8 *format_ip4_lookup_trace (u8 * s, va_list * args);
+/* *INDENT-OFF* */
VLIB_REGISTER_NODE (ip4_lookup_node) =
{
-.function = ip4_lookup,.name = "ip4-lookup",.vector_size =
- sizeof (u32),.format_trace = format_ip4_lookup_trace,.n_next_nodes =
- IP_LOOKUP_N_NEXT,.next_nodes = IP4_LOOKUP_NEXT_NODES,};
+ .function = ip4_lookup,
+ .name = "ip4-lookup",
+ .vector_size = sizeof (u32),
+ .format_trace = format_ip4_lookup_trace,
+ .n_next_nodes = IP_LOOKUP_N_NEXT,
+ .next_nodes = IP4_LOOKUP_NEXT_NODES,
+};
+/* *INDENT-ON* */
VLIB_NODE_FUNCTION_MULTIARCH (ip4_lookup_node, ip4_lookup);
return frame->n_vectors;
}
+/* *INDENT-OFF* */
VLIB_REGISTER_NODE (ip4_load_balance_node) =
{
-.function = ip4_load_balance,.name = "ip4-load-balance",.vector_size =
- sizeof (u32),.sibling_of = "ip4-lookup",.format_trace =
- format_ip4_lookup_trace,};
+ .function = ip4_load_balance,
+ .name = "ip4-load-balance",
+ .vector_size = sizeof (u32),
+ .sibling_of = "ip4-lookup",
+ .format_trace =
+ format_ip4_lookup_trace,
+};
+/* *INDENT-ON* */
VLIB_NODE_FUNCTION_MULTIARCH (ip4_load_balance_node, ip4_load_balance);
}
#define ip4_local_do_l4_check(is_tcp_udp, flags) \
- (is_tcp_udp && !(flags & VNET_BUFFER_F_L4_CHECKSUM_COMPUTED))
+ (is_tcp_udp && !(flags & VNET_BUFFER_F_L4_CHECKSUM_COMPUTED \
+ || flags & VNET_BUFFER_F_OFFLOAD_TCP_CKSUM \
+ || flags & VNET_BUFFER_F_OFFLOAD_UDP_CKSUM))
static inline uword
ip4_local_inline (vlib_main_t * vm,
is_tcp_udp1 = is_udp1 || proto1 == IP_PROTOCOL_TCP;
good_tcp_udp0 =
- (p0->flags & VNET_BUFFER_F_L4_CHECKSUM_CORRECT) != 0;
- good_tcp_udp1 =
- (p1->flags & VNET_BUFFER_F_L4_CHECKSUM_CORRECT) != 0;
+ (p0->flags & VNET_BUFFER_F_L4_CHECKSUM_CORRECT
+ || (p0->flags & VNET_BUFFER_F_OFFLOAD_TCP_CKSUM
+ || p0->flags & VNET_BUFFER_F_OFFLOAD_UDP_CKSUM)) != 0;
+ good_tcp_udp1 = (p1->flags & VNET_BUFFER_F_L4_CHECKSUM_CORRECT
+ || (p1->flags & VNET_BUFFER_F_OFFLOAD_TCP_CKSUM
+ || p1->flags &
+ VNET_BUFFER_F_OFFLOAD_UDP_CKSUM)) != 0;
if (PREDICT_FALSE (ip4_local_do_l4_check (is_tcp_udp0, p0->flags)
|| ip4_local_do_l4_check (is_tcp_udp1,
is_udp0 = proto0 == IP_PROTOCOL_UDP;
is_tcp_udp0 = is_udp0 || proto0 == IP_PROTOCOL_TCP;
+
good_tcp_udp0 =
- (p0->flags & VNET_BUFFER_F_L4_CHECKSUM_CORRECT) != 0;
+ (p0->flags & VNET_BUFFER_F_L4_CHECKSUM_CORRECT
+ || (p0->flags & VNET_BUFFER_F_OFFLOAD_TCP_CKSUM
+ || p0->flags & VNET_BUFFER_F_OFFLOAD_UDP_CKSUM)) != 0;
if (PREDICT_FALSE (ip4_local_do_l4_check (is_tcp_udp0, p0->flags)))
{
&im->ip4_arp_request_packet_template,
&bi0);
+ /* Seems we're out of buffers */
+ if (PREDICT_FALSE (!h0))
+ continue;
+
/* Add rewrite/encap string for ARP packet. */
vnet_rewrite_one_header (adj0[0], h0,
sizeof (ethernet_header_t));
[IP4_ARP_ERROR_NO_SOURCE_ADDRESS] = "no source address for ARP request",
};
+/* *INDENT-OFF* */
VLIB_REGISTER_NODE (ip4_arp_node) =
{
- .function = ip4_arp,.name = "ip4-arp",.vector_size =
- sizeof (u32),.format_trace = format_ip4_forward_next_trace,.n_errors =
- ARRAY_LEN (ip4_arp_error_strings),.error_strings =
- ip4_arp_error_strings,.n_next_nodes = IP4_ARP_N_NEXT,.next_nodes =
+ .function = ip4_arp,
+ .name = "ip4-arp",
+ .vector_size = sizeof (u32),
+ .format_trace = format_ip4_forward_next_trace,
+ .n_errors = ARRAY_LEN (ip4_arp_error_strings),
+ .error_strings = ip4_arp_error_strings,
+ .n_next_nodes = IP4_ARP_N_NEXT,
+ .next_nodes =
{
- [IP4_ARP_NEXT_DROP] = "error-drop",}
-,};
+ [IP4_ARP_NEXT_DROP] = "error-drop",
+ },
+};
VLIB_REGISTER_NODE (ip4_glean_node) =
{
- .function = ip4_glean,.name = "ip4-glean",.vector_size =
- sizeof (u32),.format_trace = format_ip4_forward_next_trace,.n_errors =
- ARRAY_LEN (ip4_arp_error_strings),.error_strings =
- ip4_arp_error_strings,.n_next_nodes = IP4_ARP_N_NEXT,.next_nodes =
- {
- [IP4_ARP_NEXT_DROP] = "error-drop",}
-,};
+ .function = ip4_glean,
+ .name = "ip4-glean",
+ .vector_size = sizeof (u32),
+ .format_trace = format_ip4_forward_next_trace,
+ .n_errors = ARRAY_LEN (ip4_arp_error_strings),
+ .error_strings = ip4_arp_error_strings,
+ .n_next_nodes = IP4_ARP_N_NEXT,
+ .next_nodes = {
+ [IP4_ARP_NEXT_DROP] = "error-drop",
+ },
+};
+/* *INDENT-ON* */
#define foreach_notrace_ip4_arp_error \
_(DROP) \