diff options
author | Dave Barach <dave@barachs.net> | 2016-12-09 09:52:16 -0500 |
---|---|---|
committer | Dave Barach <dave@barachs.net> | 2016-12-09 11:47:00 -0500 |
commit | d7cb1b5f22948eba272e1a8844c75a2b87706fc4 (patch) | |
tree | 20728b9b0e229ec43587f22fdbbcd4c2552b6965 /vnet/vnet/ip/ip4.h | |
parent | b78292efdfaf70baf89c778973d4bb3b822e95dd (diff) |
Coding standards cleanup for vnet/vnet/ip, VPP-255
Change-Id: I12892fa571cc50e0541d6463a8b68e1b618edd9f
Signed-off-by: Dave Barach <dave@barachs.net>
Diffstat (limited to 'vnet/vnet/ip/ip4.h')
-rw-r--r-- | vnet/vnet/ip/ip4.h | 184 |
1 files changed, 100 insertions, 84 deletions
diff --git a/vnet/vnet/ip/ip4.h b/vnet/vnet/ip/ip4.h index f69f25f5..0331c445 100644 --- a/vnet/vnet/ip/ip4.h +++ b/vnet/vnet/ip/ip4.h @@ -45,9 +45,10 @@ #include <vnet/ip/lookup.h> #include <vnet/feature/feature.h> -typedef struct ip4_fib_t { +typedef struct ip4_fib_t +{ /* Hash table for each prefix length mapping. */ - uword * fib_entry_by_dst_address[33]; + uword *fib_entry_by_dst_address[33]; /* Mtrie for fast lookups. Hash is used to maintain overlapping prefixes. */ ip4_fib_mtrie_t mtrie; @@ -74,12 +75,11 @@ typedef void (ip4_add_del_interface_address_function_t) uword opaque, u32 sw_if_index, ip4_address_t * address, - u32 address_length, - u32 if_address_index, - u32 is_del); + u32 address_length, u32 if_address_index, u32 is_del); -typedef struct { - ip4_add_del_interface_address_function_t * function; +typedef struct +{ + ip4_add_del_interface_address_function_t *function; uword function_opaque; } ip4_add_del_interface_address_callback_t; @@ -92,26 +92,28 @@ typedef struct { * - Feature node run time references */ -typedef struct ip4_main_t { +typedef struct ip4_main_t +{ ip_lookup_main_t lookup_main; /** Vector of FIBs. */ - struct fib_table_t_ * fibs; + struct fib_table_t_ *fibs; u32 fib_masks[33]; /** Table index indexed by software interface. */ - u32 * fib_index_by_sw_if_index; + u32 *fib_index_by_sw_if_index; /* IP4 enabled count by software interface */ - u8 * ip_enabled_by_sw_if_index; + u8 *ip_enabled_by_sw_if_index; /** Hash table mapping table id to fib index. ID space is not necessarily dense; index space is dense. */ - uword * fib_index_by_table_id; + uword *fib_index_by_table_id; /** Functions to call when interface address changes. */ - ip4_add_del_interface_address_callback_t * add_del_interface_address_callbacks; + ip4_add_del_interface_address_callback_t + * add_del_interface_address_callbacks; /** Template used to generate IP4 ARP packets. */ vlib_packet_template_t ip4_arp_request_packet_template; @@ -120,7 +122,8 @@ typedef struct ip4_main_t { u32 flow_hash_seed; /** @brief Template information for VPP generated packets */ - struct { + struct + { /** TTL to use for host generated packets. */ u8 ttl; @@ -146,16 +149,17 @@ extern vlib_node_registration_t ip4_midchain_node; always_inline uword ip4_destination_matches_route (const ip4_main_t * im, const ip4_address_t * key, - const ip4_address_t * dest, - uword dest_length) -{ return 0 == ((key->data_u32 ^ dest->data_u32) & im->fib_masks[dest_length]); } + const ip4_address_t * dest, uword dest_length) +{ + return 0 == ((key->data_u32 ^ dest->data_u32) & im->fib_masks[dest_length]); +} always_inline uword ip4_destination_matches_interface (ip4_main_t * im, ip4_address_t * key, ip_interface_address_t * ia) { - ip4_address_t * a = ip_interface_address_get_address (&im->lookup_main, ia); + ip4_address_t *a = ip_interface_address_get_address (&im->lookup_main, ia); return ip4_destination_matches_route (im, key, a, ia->address_length); } @@ -165,40 +169,46 @@ ip4_unaligned_destination_matches_route (ip4_main_t * im, ip4_address_t * key, ip4_address_t * dest, uword dest_length) -{ return 0 == ((clib_mem_unaligned (&key->data_u32, u32) ^ dest->data_u32) & im->fib_masks[dest_length]); } +{ + return 0 == + ((clib_mem_unaligned (&key->data_u32, u32) ^ dest-> + data_u32) & im->fib_masks[dest_length]); +} always_inline int ip4_src_address_for_packet (ip_lookup_main_t * lm, - u32 sw_if_index, - ip4_address_t * src) + u32 sw_if_index, ip4_address_t * src) { - u32 if_add_index = - lm->if_address_pool_index_by_sw_if_index[sw_if_index]; - if (PREDICT_TRUE(if_add_index != ~0)) { - ip_interface_address_t *if_add = - pool_elt_at_index(lm->if_address_pool, if_add_index); - ip4_address_t *if_ip = - ip_interface_address_get_address(lm, if_add); - *src = *if_ip; - return 0; + u32 if_add_index = lm->if_address_pool_index_by_sw_if_index[sw_if_index]; + if (PREDICT_TRUE (if_add_index != ~0)) + { + ip_interface_address_t *if_add = + pool_elt_at_index (lm->if_address_pool, if_add_index); + ip4_address_t *if_ip = ip_interface_address_get_address (lm, if_add); + *src = *if_ip; + return 0; } - else + else { - ASSERT(0); - src->as_u32 = 0; + ASSERT (0); + src->as_u32 = 0; } - return (!0); + return (!0); } /* Find interface address which matches destination. */ always_inline ip4_address_t * -ip4_interface_address_matching_destination (ip4_main_t * im, ip4_address_t * dst, u32 sw_if_index, - ip_interface_address_t ** result_ia) +ip4_interface_address_matching_destination (ip4_main_t * im, + ip4_address_t * dst, + u32 sw_if_index, + ip_interface_address_t ** + result_ia) { - ip_lookup_main_t * lm = &im->lookup_main; - ip_interface_address_t * ia; - ip4_address_t * result = 0; + ip_lookup_main_t *lm = &im->lookup_main; + ip_interface_address_t *ia; + ip4_address_t *result = 0; + /* *INDENT-OFF* */ foreach_ip_interface_address (lm, ia, sw_if_index, 1 /* honor unnumbered */, ({ @@ -209,54 +219,52 @@ ip4_interface_address_matching_destination (ip4_main_t * im, ip4_address_t * dst break; } })); + /* *INDENT-ON* */ if (result_ia) *result_ia = result ? ia : 0; return result; } -ip4_address_t * -ip4_interface_first_address (ip4_main_t * im, u32 sw_if_index, - ip_interface_address_t ** result_ia); +ip4_address_t *ip4_interface_first_address (ip4_main_t * im, u32 sw_if_index, + ip_interface_address_t ** + result_ia); -clib_error_t * -ip4_add_del_interface_address (vlib_main_t * vm, u32 sw_if_index, - ip4_address_t * address, u32 address_length, - u32 is_del); +clib_error_t *ip4_add_del_interface_address (vlib_main_t * vm, + u32 sw_if_index, + ip4_address_t * address, + u32 address_length, u32 is_del); -void -ip4_sw_interface_enable_disable (u32 sw_if_index, - u32 is_enable); +void ip4_sw_interface_enable_disable (u32 sw_if_index, u32 is_enable); int ip4_address_compare (ip4_address_t * a1, ip4_address_t * a2); /* Send an ARP request to see if given destination is reachable on given interface. */ -clib_error_t * -ip4_probe_neighbor (vlib_main_t * vm, ip4_address_t * dst, u32 sw_if_index); +clib_error_t *ip4_probe_neighbor (vlib_main_t * vm, ip4_address_t * dst, + u32 sw_if_index); -clib_error_t * -ip4_set_arp_limit (u32 arp_limit); +clib_error_t *ip4_set_arp_limit (u32 arp_limit); uword ip4_udp_register_listener (vlib_main_t * vm, - u16 dst_port, - u32 next_node_index); + u16 dst_port, u32 next_node_index); void -ip4_icmp_register_type (vlib_main_t * vm, icmp4_type_t type, - u32 node_index); +ip4_icmp_register_type (vlib_main_t * vm, icmp4_type_t type, u32 node_index); -u16 ip4_tcp_udp_compute_checksum (vlib_main_t * vm, vlib_buffer_t * p0, ip4_header_t * ip0); +u16 ip4_tcp_udp_compute_checksum (vlib_main_t * vm, vlib_buffer_t * p0, + ip4_header_t * ip0); void ip4_register_protocol (u32 protocol, u32 node_index); serialize_function_t serialize_vnet_ip4_main, unserialize_vnet_ip4_main; -int vnet_set_ip4_flow_hash (u32 table_id, flow_hash_config_t flow_hash_config); +int vnet_set_ip4_flow_hash (u32 table_id, + flow_hash_config_t flow_hash_config); void ip4_mtrie_init (ip4_fib_mtrie_t * m); int vnet_set_ip4_classify_intfc (vlib_main_t * vm, u32 sw_if_index, - u32 table_index); + u32 table_index); /* Compute flow hash. We'll use it to select which adjacency to use for this flow. And other things. */ @@ -264,43 +272,51 @@ 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); + 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; + 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; - b ^= (flow_hash_config & IP_FLOW_HASH_PROTO) ? ip->protocol : 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; + b ^= (flow_hash_config & IP_FLOW_HASH_PROTO) ? ip->protocol : 0; - t1 = is_tcp_udp ? tcp->ports.src : 0; - t2 = is_tcp_udp ? tcp->ports.dst : 0; + t1 = is_tcp_udp ? tcp->ports.src : 0; + t2 = is_tcp_udp ? tcp->ports.dst : 0; - t1 = (flow_hash_config & IP_FLOW_HASH_SRC_PORT) ? t1 : 0; - t2 = (flow_hash_config & IP_FLOW_HASH_DST_PORT) ? t2 : 0; + t1 = (flow_hash_config & IP_FLOW_HASH_SRC_PORT) ? t1 : 0; + t2 = (flow_hash_config & IP_FLOW_HASH_DST_PORT) ? t2 : 0; - c = (flow_hash_config & IP_FLOW_HASH_REVERSE_SRC_DST) ? - (t1<<16) | t2 : (t2<<16) | t1; + 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); + hash_v3_mix32 (a, b, c); + hash_v3_finalize32 (a, b, c); - return c; + return c; } void ip4_forward_next_trace (vlib_main_t * vm, - vlib_node_runtime_t * node, - vlib_frame_t * frame, - vlib_rx_or_tx_t which_adj_index); + vlib_node_runtime_t * node, + vlib_frame_t * frame, + vlib_rx_or_tx_t which_adj_index); -u8 * format_ip4_forward_next_trace (u8 * s, va_list * args); +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); #endif /* included_ip_ip4_h */ + +/* + * fd.io coding-style-patch-verification: ON + * + * Local Variables: + * eval: (c-set-style "gnu") + * End: + */ |