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:
Neale Ranns
2020-10-26 13:00:06 +00:00
committed by Damjan Marion
parent 224a3c03d9
commit e4031131cc
55 changed files with 940 additions and 686 deletions
+3
View File
@@ -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;
+1
View File
@@ -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
+2
View File
@@ -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")
+1
View File
@@ -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 \
+2
View File
@@ -18,6 +18,8 @@
#include <plugins/gbp/gbp.h>
#include <vnet/util/throttle.h>
/**
* The maximum learning rate per-hashed EP
*/
+1
View File
@@ -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
{
+1
View File
@@ -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;
+1
View File
@@ -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 */
+1
View File
@@ -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 */
+2
View File
@@ -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 */
+1
View File
@@ -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>
+5
View File
@@ -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
+2
View File
@@ -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
+2 -1
View File
@@ -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
+2
View File
@@ -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>
-2
View File
@@ -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>
+1 -2
View File
@@ -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>
-1
View File
@@ -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>
-1
View File
@@ -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_
{
+2 -1
View File
@@ -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
+1 -1
View File
@@ -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_
{
-1
View File
@@ -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>
+20 -2
View File
@@ -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
*
+18 -3
View File
@@ -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
*
+2
View File
@@ -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
View File
@@ -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 */
/*
+1
View File
@@ -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