misc: Break the big IP header files to improve compile time
Type: refactor Signed-off-by: Neale Ranns <neale.ranns@cisco.com> Change-Id: Id1801519638a9b97175847d7ed58824fb83433d6
This commit is contained in:
committed by
Damjan Marion
parent
224a3c03d9
commit
e4031131cc
@@ -22,6 +22,9 @@
|
||||
#include <vnet/dpo/load_balance.h>
|
||||
#include <vnet/dpo/load_balance_map.h>
|
||||
|
||||
#include <vnet/ip/ip4_inlines.h>
|
||||
#include <vnet/ip/ip6_inlines.h>
|
||||
|
||||
typedef struct cnat_translation_trace_t_
|
||||
{
|
||||
cnat_session_t session;
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
#include <vnet/fib/fib_source.h>
|
||||
#include <vnet/ip/ip_types.h>
|
||||
#include <vnet/ip/ip.h>
|
||||
#include <vnet/util/throttle.h>
|
||||
|
||||
/* only in the default table for v4 and v6 */
|
||||
#define CNAT_FIB_TABLE 0
|
||||
|
||||
@@ -17,6 +17,8 @@
|
||||
#include <plugins/gbp/gbp_bridge_domain.h>
|
||||
#include <plugins/gbp/gbp_route_domain.h>
|
||||
|
||||
#include <vnet/ip/ip.h>
|
||||
|
||||
#define foreach_gbp_itf_mode \
|
||||
_(L2, "l2") \
|
||||
_(L3, "L3")
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
|
||||
#include <vnet/l2/l2_input.h>
|
||||
#include <vnet/l2/l2_output.h>
|
||||
#include <vnet/dpo/dpo.h>
|
||||
|
||||
|
||||
#define foreach_gdb_l3_feature \
|
||||
|
||||
@@ -18,6 +18,8 @@
|
||||
|
||||
#include <plugins/gbp/gbp.h>
|
||||
|
||||
#include <vnet/util/throttle.h>
|
||||
|
||||
/**
|
||||
* The maximum learning rate per-hashed EP
|
||||
*/
|
||||
|
||||
@@ -46,6 +46,7 @@
|
||||
#include <ioam/ip6/ioam_cache.h>
|
||||
#include <vnet/ip/ip6_hop_by_hop.h>
|
||||
#include <vnet/ip/ip6_hop_by_hop_packet.h>
|
||||
#include <vnet/ip/ip6_inlines.h>
|
||||
|
||||
typedef struct
|
||||
{
|
||||
|
||||
@@ -46,6 +46,7 @@
|
||||
#include <ioam/ip6/ioam_cache.h>
|
||||
#include <vnet/ip/ip6_hop_by_hop.h>
|
||||
#include <vnet/ip/ip6_hop_by_hop_packet.h>
|
||||
#include <vnet/ip/ip6_inlines.h>
|
||||
|
||||
typedef struct
|
||||
{
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
#include <plugins/l2e/l2e.h>
|
||||
#include <vnet/l2/l2_input.h>
|
||||
#include <vnet/l2/feat_bitmap.h>
|
||||
#include <vnet/ip/ip.h>
|
||||
|
||||
l2_emulation_main_t l2_emulation_main;
|
||||
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
|
||||
#include <vnet/ip/ip_format_fns.h>
|
||||
#include <vnet/ethernet/ethernet_format_fns.h>
|
||||
#include <vnet/ethernet/mac_address.h>
|
||||
#include <lisp/lisp-cp/lisp_types.h>
|
||||
|
||||
/* define message IDs */
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
|
||||
#include <vnet/ip/ip_format_fns.h>
|
||||
#include <vnet/ethernet/ethernet_format_fns.h>
|
||||
#include <vnet/ethernet/mac_address.h>
|
||||
#include <lisp/lisp-cp/lisp_types.h>
|
||||
|
||||
/* define message IDs */
|
||||
|
||||
@@ -16,6 +16,8 @@
|
||||
#include <lisp/lisp-cp/packets.h>
|
||||
#include <lisp/lisp-cp/lisp_cp_messages.h>
|
||||
#include <vnet/udp/udp_packet.h>
|
||||
#include <vnet/ip/ip4_inlines.h>
|
||||
#include <vnet/ip/ip6_inlines.h>
|
||||
|
||||
/* Returns IP ID for the packet */
|
||||
/* static u16 ip_id = 0;
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
|
||||
#include <vnet/ip/ip_format_fns.h>
|
||||
#include <vnet/ethernet/ethernet_format_fns.h>
|
||||
#include <vnet/ethernet/mac_address.h>
|
||||
#include <lisp/lisp-cp/lisp_types.h>
|
||||
|
||||
/* define message IDs */
|
||||
|
||||
@@ -32,6 +32,7 @@
|
||||
#include <vnet/ip/reass/ip4_sv_reass.h>
|
||||
#include <vppinfra/bihash_16_8.h>
|
||||
#include <nat/nat44/ed_inlines.h>
|
||||
#include <vnet/ip/ip_table.h>
|
||||
|
||||
#include <vpp/app/version.h>
|
||||
|
||||
|
||||
@@ -406,6 +406,7 @@ list(APPEND VNET_SOURCES
|
||||
ip/reass/ip6_sv_reass.c
|
||||
ip/ip_api.c
|
||||
ip/ip_checksum.c
|
||||
ip/ip_container_proxy.c
|
||||
ip/ip_frag.c
|
||||
ip/ip.c
|
||||
ip/ip_interface.c
|
||||
@@ -444,14 +445,18 @@ list(APPEND VNET_HEADERS
|
||||
ip/ip4_error.h
|
||||
ip/ip4.h
|
||||
ip/ip4_mtrie.h
|
||||
ip/ip4_inlines.h
|
||||
ip/ip4_packet.h
|
||||
ip/ip46_address.h
|
||||
ip/ip6_error.h
|
||||
ip/ip6.h
|
||||
ip/ip6_hop_by_hop.h
|
||||
ip/ip6_hop_by_hop_packet.h
|
||||
ip/ip6_inlines.h
|
||||
ip/ip6_packet.h
|
||||
ip/ip.h
|
||||
ip/ip_container_proxy.h
|
||||
ip/ip_flow_hash.h
|
||||
ip/ip_table.h
|
||||
ip/ip_interface.h
|
||||
ip/ip_packet.h
|
||||
|
||||
@@ -23,6 +23,8 @@
|
||||
#include <vnet/dpo/load_balance.h>
|
||||
#include <vnet/fib/fib_walk.h>
|
||||
#include <vnet/fib/fib_entry.h>
|
||||
#include <vnet/ip/ip4_inlines.h>
|
||||
#include <vnet/ip/ip6_inlines.h>
|
||||
|
||||
/**
|
||||
* @brief Trace data for packets traversing the midchain tx node
|
||||
|
||||
@@ -15,7 +15,8 @@
|
||||
|
||||
#include <vnet/bier/bier_imp.h>
|
||||
#include <vnet/bier/bier_hdr_inlines.h>
|
||||
#include <vnet/ip/ip.h>
|
||||
#include <vnet/ip/ip4_inlines.h>
|
||||
#include <vnet/ip/ip6_inlines.h>
|
||||
|
||||
/**
|
||||
* @brief A struct to hold tracing information for the BIER imposition
|
||||
|
||||
@@ -28,6 +28,8 @@
|
||||
#include <vnet/classify/policer_classify.h>
|
||||
#include <vnet/classify/flow_classify.h>
|
||||
#include <vnet/l2/l2_classify.h>
|
||||
#include <vnet/ip/ip6.h>
|
||||
#include <vnet/ip/ip4.h>
|
||||
|
||||
#include <vnet/vnet_msg_enum.h>
|
||||
|
||||
|
||||
@@ -33,8 +33,6 @@
|
||||
#include <vlib/vlib.h>
|
||||
#include <vlib/unix/unix.h>
|
||||
|
||||
#include <vnet/ip/ip.h>
|
||||
|
||||
#include <vnet/ethernet/ethernet.h>
|
||||
#include <vnet/devices/devices.h>
|
||||
#include <vnet/feature/feature.h>
|
||||
|
||||
@@ -33,11 +33,10 @@
|
||||
#include <vlib/vlib.h>
|
||||
#include <vlib/unix/unix.h>
|
||||
|
||||
#include <vnet/ip/ip.h>
|
||||
|
||||
#include <vnet/ethernet/ethernet.h>
|
||||
#include <vnet/devices/devices.h>
|
||||
#include <vnet/feature/feature.h>
|
||||
#include <vnet/udp/udp_packet.h>
|
||||
|
||||
#include <vnet/devices/virtio/vhost_user.h>
|
||||
#include <vnet/devices/virtio/vhost_user_inline.h>
|
||||
|
||||
@@ -34,8 +34,6 @@
|
||||
#include <vlib/vlib.h>
|
||||
#include <vlib/unix/unix.h>
|
||||
|
||||
#include <vnet/ip/ip.h>
|
||||
|
||||
#include <vnet/ethernet/ethernet.h>
|
||||
#include <vnet/devices/devices.h>
|
||||
#include <vnet/feature/feature.h>
|
||||
|
||||
@@ -22,7 +22,6 @@
|
||||
|
||||
#include <vnet/interface.h>
|
||||
#include <vnet/api_errno.h>
|
||||
#include <vnet/ip/ip.h>
|
||||
#include <vnet/devices/virtio/virtio.h>
|
||||
#include <vnet/devices/virtio/pci.h>
|
||||
#include <vlib/pci/pci_types_api.h>
|
||||
|
||||
@@ -22,7 +22,6 @@
|
||||
#define __L3_PROXY_DPO_H__
|
||||
|
||||
#include <vnet/dpo/dpo.h>
|
||||
#include <vnet/ip/ip6.h>
|
||||
|
||||
typedef struct l3_proxy_dpo_t_
|
||||
{
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include <vnet/ip/lookup.h>
|
||||
#include <vnet/dpo/load_balance.h>
|
||||
#include <vnet/dpo/load_balance_map.h>
|
||||
#include <vnet/dpo/drop_dpo.h>
|
||||
@@ -23,6 +22,8 @@
|
||||
#include <vnet/fib/fib_urpf_list.h>
|
||||
#include <vnet/bier/bier_fwd.h>
|
||||
#include <vnet/fib/mpls_fib.h>
|
||||
#include <vnet/ip/ip4_inlines.h>
|
||||
#include <vnet/ip/ip6_inlines.h>
|
||||
|
||||
/*
|
||||
* distribution error tolerance for load-balancing
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
#define __RECEIVE_DPO_H__
|
||||
|
||||
#include <vnet/dpo/dpo.h>
|
||||
#include <vnet/ip/ip6.h>
|
||||
#include <vnet/ip/ip46_address.h>
|
||||
|
||||
typedef struct receive_dpo_t_
|
||||
{
|
||||
|
||||
@@ -17,7 +17,6 @@
|
||||
#define __FIB_TYPES_H__
|
||||
|
||||
#include <stdbool.h>
|
||||
#include <vlib/vlib.h>
|
||||
#include <vnet/ip/ip46_address.h>
|
||||
#include <vnet/mpls/packet.h>
|
||||
#include <vnet/dpo/dpo.h>
|
||||
|
||||
@@ -39,6 +39,10 @@
|
||||
|
||||
#include <vnet/ip-neighbor/ip4_neighbor.h>
|
||||
#include <vnet/ethernet/ethernet.h>
|
||||
#include <vnet/util/throttle.h>
|
||||
|
||||
/** ARP throttling */
|
||||
static throttle_t arp_throttle;
|
||||
|
||||
void
|
||||
ip4_neighbor_probe_dst (const ip_adjacency_t * adj, const ip4_address_t * dst)
|
||||
@@ -128,7 +132,7 @@ ip4_arp_inline (vlib_main_t * vm,
|
||||
if (node->flags & VLIB_NODE_FLAG_TRACE)
|
||||
ip4_forward_next_trace (vm, node, frame, VLIB_TX);
|
||||
|
||||
seed = throttle_seed (&im->arp_throttle, thread_index, vlib_time_now (vm));
|
||||
seed = throttle_seed (&arp_throttle, thread_index, vlib_time_now (vm));
|
||||
|
||||
from = vlib_frame_vector_args (frame);
|
||||
n_left_from = frame->n_vectors;
|
||||
@@ -186,7 +190,7 @@ ip4_arp_inline (vlib_main_t * vm,
|
||||
r0 = (u64) resolve0.data_u32 << 32;
|
||||
r0 |= sw_if_index0;
|
||||
|
||||
if (throttle_check (&im->arp_throttle, thread_index, r0, seed))
|
||||
if (throttle_check (&arp_throttle, thread_index, r0, seed))
|
||||
{
|
||||
p0->error = node->errors[IP4_ARP_ERROR_THROTTLED];
|
||||
continue;
|
||||
@@ -310,6 +314,20 @@ arp_notrace_init (vlib_main_t * vm)
|
||||
|
||||
VLIB_INIT_FUNCTION (arp_notrace_init);
|
||||
|
||||
static clib_error_t *
|
||||
ip4_neighbor_main_loop_enter (vlib_main_t * vm)
|
||||
{
|
||||
vlib_thread_main_t *tm = &vlib_thread_main;
|
||||
u32 n_vlib_mains = tm->n_vlib_mains;
|
||||
|
||||
throttle_init (&arp_throttle, n_vlib_mains, 1e-3);
|
||||
|
||||
return (NULL);
|
||||
}
|
||||
|
||||
VLIB_MAIN_LOOP_ENTER_FUNCTION (ip4_neighbor_main_loop_enter);
|
||||
|
||||
|
||||
/*
|
||||
* fd.io coding-style-patch-verification: ON
|
||||
*
|
||||
|
||||
@@ -16,6 +16,10 @@
|
||||
*/
|
||||
|
||||
#include <vnet/ip-neighbor/ip6_neighbor.h>
|
||||
#include <vnet/util/throttle.h>
|
||||
|
||||
/** ND throttling */
|
||||
static throttle_t nd_throttle;
|
||||
|
||||
void
|
||||
ip6_neighbor_probe_dst (const ip_adjacency_t * adj, const ip6_address_t * dst)
|
||||
@@ -121,7 +125,6 @@ ip6_discover_neighbor_inline (vlib_main_t * vm,
|
||||
vlib_frame_t * frame, int is_glean)
|
||||
{
|
||||
vnet_main_t *vnm = vnet_get_main ();
|
||||
ip6_main_t *im = &ip6_main;
|
||||
u32 *from, *to_next_drop;
|
||||
uword n_left_from, n_left_to_next_drop;
|
||||
u64 seed;
|
||||
@@ -130,7 +133,7 @@ ip6_discover_neighbor_inline (vlib_main_t * vm,
|
||||
if (node->flags & VLIB_NODE_FLAG_TRACE)
|
||||
ip6_forward_next_trace (vm, node, frame, VLIB_TX);
|
||||
|
||||
seed = throttle_seed (&im->nd_throttle, thread_index, vlib_time_now (vm));
|
||||
seed = throttle_seed (&nd_throttle, thread_index, vlib_time_now (vm));
|
||||
|
||||
from = vlib_frame_vector_args (frame);
|
||||
n_left_from = frame->n_vectors;
|
||||
@@ -173,7 +176,7 @@ ip6_discover_neighbor_inline (vlib_main_t * vm,
|
||||
/* combine the address and interface for a hash */
|
||||
r0 = ip6_address_hash_to_u64 (&ip0->dst_address) ^ sw_if_index0;
|
||||
|
||||
drop0 = throttle_check (&im->nd_throttle, thread_index, r0, seed);
|
||||
drop0 = throttle_check (&nd_throttle, thread_index, r0, seed);
|
||||
|
||||
from += 1;
|
||||
n_left_from -= 1;
|
||||
@@ -329,6 +332,18 @@ ip6_neighbor_init (vlib_main_t * vm)
|
||||
|
||||
VLIB_INIT_FUNCTION (ip6_neighbor_init);
|
||||
|
||||
static clib_error_t *
|
||||
ip6_nd_main_loop_enter (vlib_main_t * vm)
|
||||
{
|
||||
vlib_thread_main_t *tm = &vlib_thread_main;
|
||||
|
||||
throttle_init (&nd_throttle, tm->n_vlib_mains, 1e-3);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
VLIB_MAIN_LOOP_ENTER_FUNCTION (ip6_nd_main_loop_enter);
|
||||
|
||||
/*
|
||||
* fd.io coding-style-patch-verification: ON
|
||||
*
|
||||
|
||||
@@ -15,6 +15,8 @@
|
||||
#ifndef included_vnet_icmp6_h
|
||||
#define included_vnet_icmp6_h
|
||||
|
||||
#include <vnet/ip/icmp46_packet.h>
|
||||
|
||||
#define foreach_icmp6_error \
|
||||
_ (NONE, "valid packets") \
|
||||
_ (UNKNOWN_TYPE, "unknown type") \
|
||||
|
||||
+3
-115
@@ -41,12 +41,13 @@
|
||||
#define included_ip_ip4_h
|
||||
|
||||
#include <vnet/ip/ip4_packet.h>
|
||||
#include <vnet/ip/ip_flow_hash.h>
|
||||
|
||||
#include <vnet/ip/lookup.h>
|
||||
#include <vnet/ip/ip_interface.h>
|
||||
#include <vnet/buffer.h>
|
||||
#include <vnet/feature/feature.h>
|
||||
#include <vnet/ip/icmp46_packet.h>
|
||||
#include <vnet/util/throttle.h>
|
||||
|
||||
typedef struct ip4_mfib_t
|
||||
{
|
||||
@@ -163,10 +164,6 @@ typedef struct ip4_main_t
|
||||
|
||||
u8 pad[2];
|
||||
} host_config;
|
||||
|
||||
/** ARP throttling */
|
||||
throttle_t arp_throttle;
|
||||
|
||||
} ip4_main_t;
|
||||
|
||||
#define ARP_THROTTLE_BITS (512)
|
||||
@@ -295,56 +292,6 @@ void ip4_punt_redirect_add_paths (u32 rx_sw_if_index,
|
||||
|
||||
void ip4_punt_redirect_del (u32 rx_sw_if_index);
|
||||
|
||||
/* Compute flow hash. We'll use it to select which adjacency to use for this
|
||||
flow. And other things. */
|
||||
always_inline u32
|
||||
ip4_compute_flow_hash (const ip4_header_t * ip,
|
||||
flow_hash_config_t flow_hash_config)
|
||||
{
|
||||
tcp_header_t *tcp = (void *) (ip + 1);
|
||||
u32 a, b, c, t1, t2;
|
||||
uword is_tcp_udp = (ip->protocol == IP_PROTOCOL_TCP
|
||||
|| ip->protocol == IP_PROTOCOL_UDP);
|
||||
|
||||
t1 = (flow_hash_config & IP_FLOW_HASH_SRC_ADDR)
|
||||
? ip->src_address.data_u32 : 0;
|
||||
t2 = (flow_hash_config & IP_FLOW_HASH_DST_ADDR)
|
||||
? ip->dst_address.data_u32 : 0;
|
||||
|
||||
a = (flow_hash_config & IP_FLOW_HASH_REVERSE_SRC_DST) ? t2 : t1;
|
||||
b = (flow_hash_config & IP_FLOW_HASH_REVERSE_SRC_DST) ? t1 : t2;
|
||||
|
||||
t1 = is_tcp_udp ? tcp->src : 0;
|
||||
t2 = is_tcp_udp ? tcp->dst : 0;
|
||||
|
||||
t1 = (flow_hash_config & IP_FLOW_HASH_SRC_PORT) ? t1 : 0;
|
||||
t2 = (flow_hash_config & IP_FLOW_HASH_DST_PORT) ? t2 : 0;
|
||||
|
||||
if (flow_hash_config & IP_FLOW_HASH_SYMMETRIC)
|
||||
{
|
||||
if (b < a)
|
||||
{
|
||||
c = a;
|
||||
a = b;
|
||||
b = c;
|
||||
}
|
||||
if (t2 < t1)
|
||||
{
|
||||
t2 += t1;
|
||||
t1 = t2 - t1;
|
||||
t2 = t2 - t1;
|
||||
}
|
||||
}
|
||||
|
||||
b ^= (flow_hash_config & IP_FLOW_HASH_PROTO) ? ip->protocol : 0;
|
||||
c = (flow_hash_config & IP_FLOW_HASH_REVERSE_SRC_DST) ?
|
||||
(t1 << 16) | t2 : (t2 << 16) | t1;
|
||||
|
||||
hash_v3_mix32 (a, b, c);
|
||||
hash_v3_finalize32 (a, b, c);
|
||||
|
||||
return c;
|
||||
}
|
||||
|
||||
void
|
||||
ip4_forward_next_trace (vlib_main_t * vm,
|
||||
@@ -356,66 +303,6 @@ u8 *format_ip4_forward_next_trace (u8 * s, va_list * args);
|
||||
|
||||
u32 ip4_tcp_udp_validate_checksum (vlib_main_t * vm, vlib_buffer_t * p0);
|
||||
|
||||
#define IP_DF 0x4000 /* don't fragment */
|
||||
|
||||
always_inline void *
|
||||
vlib_buffer_push_ip4_custom (vlib_main_t * vm, vlib_buffer_t * b,
|
||||
ip4_address_t * src, ip4_address_t * dst,
|
||||
int proto, u8 csum_offload, u8 is_df)
|
||||
{
|
||||
ip4_header_t *ih;
|
||||
|
||||
/* make some room */
|
||||
ih = vlib_buffer_push_uninit (b, sizeof (ip4_header_t));
|
||||
|
||||
ih->ip_version_and_header_length = 0x45;
|
||||
ih->tos = 0;
|
||||
ih->length = clib_host_to_net_u16 (vlib_buffer_length_in_chain (vm, b));
|
||||
|
||||
/* No fragments */
|
||||
ih->flags_and_fragment_offset = is_df ? clib_host_to_net_u16 (IP_DF) : 0;
|
||||
ih->ttl = 255;
|
||||
ih->protocol = proto;
|
||||
ih->src_address.as_u32 = src->as_u32;
|
||||
ih->dst_address.as_u32 = dst->as_u32;
|
||||
|
||||
vnet_buffer (b)->l3_hdr_offset = (u8 *) ih - b->data;
|
||||
b->flags |= VNET_BUFFER_F_IS_IP4 | VNET_BUFFER_F_L3_HDR_OFFSET_VALID;
|
||||
|
||||
/* Offload ip4 header checksum generation */
|
||||
if (csum_offload)
|
||||
{
|
||||
ih->checksum = 0;
|
||||
b->flags |= VNET_BUFFER_F_OFFLOAD_IP_CKSUM;
|
||||
}
|
||||
else
|
||||
ih->checksum = ip4_header_checksum (ih);
|
||||
|
||||
return ih;
|
||||
}
|
||||
|
||||
/**
|
||||
* Push IPv4 header to buffer
|
||||
*
|
||||
* This does not support fragmentation.
|
||||
*
|
||||
* @param vm - vlib_main
|
||||
* @param b - buffer to write the header to
|
||||
* @param src - source IP
|
||||
* @param dst - destination IP
|
||||
* @param prot - payload proto
|
||||
*
|
||||
* @return - pointer to start of IP header
|
||||
*/
|
||||
always_inline void *
|
||||
vlib_buffer_push_ip4 (vlib_main_t * vm, vlib_buffer_t * b,
|
||||
ip4_address_t * src, ip4_address_t * dst, int proto,
|
||||
u8 csum_offload)
|
||||
{
|
||||
return vlib_buffer_push_ip4_custom (vm, b, src, dst, proto, csum_offload,
|
||||
1 /* is_df */ );
|
||||
}
|
||||
|
||||
always_inline u32
|
||||
vlib_buffer_get_ip4_fib_index (vlib_buffer_t * b)
|
||||
{
|
||||
@@ -425,6 +312,7 @@ vlib_buffer_get_ip4_fib_index (vlib_buffer_t * b)
|
||||
return (fib_index == (u32) ~ 0) ?
|
||||
vec_elt (ip4_main.fib_index_by_sw_if_index, sw_if_index) : fib_index;
|
||||
}
|
||||
|
||||
#endif /* included_ip_ip4_h */
|
||||
|
||||
/*
|
||||
|
||||
@@ -43,6 +43,7 @@
|
||||
#include <vppinfra/cache.h>
|
||||
#include <vnet/fib/ip4_fib.h>
|
||||
#include <vnet/dpo/load_balance_map.h>
|
||||
#include <vnet/ip/ip4_inlines.h>
|
||||
|
||||
/**
|
||||
* @file
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user