#endif
static inline u32
-adj_get_rewrite_node (fib_link_t linkt)
+adj_get_rewrite_node (vnet_link_t linkt)
{
switch (linkt) {
- case FIB_LINK_IP4:
+ case VNET_LINK_IP4:
return (ip4_rewrite_node.index);
- case FIB_LINK_IP6:
+ case VNET_LINK_IP6:
return (ip6_rewrite_node.index);
- case FIB_LINK_MPLS:
+ case VNET_LINK_MPLS:
return (mpls_output_node.index);
- case FIB_LINK_ETHERNET:
+ case VNET_LINK_ETHERNET:
return (adj_l2_rewrite_node.index);
- }
- ASSERT(0);
- return (0);
-}
-
-static inline vnet_l3_packet_type_t
-adj_fib_link_2_vnet (fib_link_t linkt)
-{
- switch (linkt)
- {
- case FIB_LINK_IP4:
- return (VNET_L3_PACKET_TYPE_IP4);
- case FIB_LINK_IP6:
- return (VNET_L3_PACKET_TYPE_IP6);
- case FIB_LINK_MPLS:
- return (VNET_L3_PACKET_TYPE_MPLS_UNICAST);
- case FIB_LINK_ETHERNET:
+ case VNET_LINK_ARP:
break;
}
+ ASSERT(0);
return (0);
}
extern ip_adjacency_t * adj_alloc(fib_protocol_t proto);
extern void adj_nbr_remove(fib_protocol_t nh_proto,
- fib_link_t link_type,
+ vnet_link_t link_type,
const ip46_address_t *nh_addr,
u32 sw_if_index);
extern void adj_glean_remove(fib_protocol_t proto,
/**
* The two midchain tx feature node indices
*/
-static u32 adj_midchain_tx_feature_node[FIB_LINK_NUM];
-static u32 adj_midchain_tx_no_count_feature_node[FIB_LINK_NUM];
+static u32 adj_midchain_tx_feature_node[VNET_LINK_NUM];
+static u32 adj_midchain_tx_no_count_feature_node[VNET_LINK_NUM];
/**
* @brief Trace data for packets traversing the midchain tx node
VNET_IP4_TX_FEATURE_INIT (adj_midchain_tx_ip4, static) = {
.node_name = "adj-midchain-tx",
.runs_before = ORDER_CONSTRAINTS {"interface-output"},
- .feature_index = &adj_midchain_tx_feature_node[FIB_LINK_IP4],
+ .feature_index = &adj_midchain_tx_feature_node[VNET_LINK_IP4],
};
VNET_IP4_TX_FEATURE_INIT (adj_midchain_tx_no_count_ip4, static) = {
.node_name = "adj-midchain-tx-no-count",
.runs_before = ORDER_CONSTRAINTS {"interface-output"},
- .feature_index = &adj_midchain_tx_no_count_feature_node[FIB_LINK_IP4],
+ .feature_index = &adj_midchain_tx_no_count_feature_node[VNET_LINK_IP4],
};
VNET_IP6_TX_FEATURE_INIT (adj_midchain_tx_ip6, static) = {
.node_name = "adj-midchain-tx",
.runs_before = ORDER_CONSTRAINTS {"interface-output"},
- .feature_index = &adj_midchain_tx_feature_node[FIB_LINK_IP6],
+ .feature_index = &adj_midchain_tx_feature_node[VNET_LINK_IP6],
};
VNET_IP6_TX_FEATURE_INIT (adj_midchain_tx_no_count_ip6, static) = {
.node_name = "adj-midchain-tx-no-count",
.runs_before = ORDER_CONSTRAINTS {"interface-output"},
- .feature_index = &adj_midchain_tx_no_count_feature_node[FIB_LINK_IP6],
+ .feature_index = &adj_midchain_tx_no_count_feature_node[VNET_LINK_IP6],
};
VNET_MPLS_TX_FEATURE_INIT (adj_midchain_tx_mpls, static) = {
.node_name = "adj-midchain-txs",
.runs_before = ORDER_CONSTRAINTS {"interface-output"},
- .feature_index = &adj_midchain_tx_feature_node[FIB_LINK_MPLS],
+ .feature_index = &adj_midchain_tx_feature_node[VNET_LINK_MPLS],
};
VNET_MPLS_TX_FEATURE_INIT (adj_midchain_tx_no_count_mpls, static) = {
.node_name = "adj-midchain-tx-no-count",
.runs_before = ORDER_CONSTRAINTS {"interface-output"},
- .feature_index = &adj_midchain_tx_no_count_feature_node[FIB_LINK_MPLS],
+ .feature_index = &adj_midchain_tx_no_count_feature_node[VNET_LINK_MPLS],
};
VNET_ETHERNET_TX_FEATURE_INIT (adj_midchain_tx_ethernet, static) = {
.node_name = "adj-midchain-tx",
.runs_before = ORDER_CONSTRAINTS {"error-drop"},
- .feature_index = &adj_midchain_tx_feature_node[FIB_LINK_ETHERNET],
+ .feature_index = &adj_midchain_tx_feature_node[VNET_LINK_ETHERNET],
};
VNET_ETHERNET_TX_FEATURE_INIT (adj_midchain_tx_no_count_ethernet, static) = {
.node_name = "adj-midchain-tx-no-count",
.runs_before = ORDER_CONSTRAINTS {"error-drop"},
- .feature_index = &adj_midchain_tx_no_count_feature_node[FIB_LINK_ETHERNET],
+ .feature_index = &adj_midchain_tx_no_count_feature_node[VNET_LINK_ETHERNET],
};
static inline u32
-adj_get_midchain_node (fib_link_t link)
+adj_get_midchain_node (vnet_link_t link)
{
switch (link) {
- case FIB_LINK_IP4:
+ case VNET_LINK_IP4:
return (ip4_midchain_node.index);
- case FIB_LINK_IP6:
+ case VNET_LINK_IP6:
return (ip6_midchain_node.index);
- case FIB_LINK_MPLS:
+ case VNET_LINK_MPLS:
return (mpls_midchain_node.index);
- case FIB_LINK_ETHERNET:
+ case VNET_LINK_ETHERNET:
return (adj_l2_midchain_node.index);
+ case VNET_LINK_ARP:
+ break;
}
ASSERT(0);
return (0);
switch (adj->ia_link)
{
- case FIB_LINK_IP4:
+ case VNET_LINK_IP4:
{
ip4_main_t * im = &ip4_main;
ip_lookup_main_t * lm = &im->lookup_main;
cm = &lm->feature_config_mains[VNET_IP_TX_FEAT];
break;
}
- case FIB_LINK_IP6:
+ case VNET_LINK_IP6:
{
ip6_main_t * im = &ip6_main;
ip_lookup_main_t * lm = &im->lookup_main;
cm = &lm->feature_config_mains[VNET_IP_TX_FEAT];
break;
}
- case FIB_LINK_MPLS:
+ case VNET_LINK_MPLS:
{
mpls_main_t * mm = &mpls_main;
cm = &mm->feature_config_mains[VNET_IP_TX_FEAT];
break;
}
- case FIB_LINK_ETHERNET:
+ case VNET_LINK_ETHERNET:
{
cm = ðernet_main.feature_config_mains[VNET_IP_TX_FEAT];
break;
}
+ case VNET_LINK_ARP:
+ ASSERT(0);
+ break;
}
return (cm);
*/
dpo_stack_from_node(adj->sub_type.midchain.tx_function_node,
&adj->sub_type.midchain.next_dpo,
- drop_dpo_get(fib_link_to_dpo_proto(adj->ia_link)));
+ drop_dpo_get(vnet_link_to_dpo_proto(adj->ia_link)));
/*
* update the rewirte with the workers paused.
* stack on the drop
*/
dpo_stack(DPO_ADJACENCY_MIDCHAIN,
- fib_link_to_dpo_proto(adj->ia_link),
+ vnet_link_to_dpo_proto(adj->ia_link),
&adj->sub_type.midchain.next_dpo,
- drop_dpo_get(fib_link_to_dpo_proto(adj->ia_link)));
+ drop_dpo_get(vnet_link_to_dpo_proto(adj->ia_link)));
CLIB_MEMORY_BARRIER();
}
vnet_main_t * vnm = vnet_get_main();
ip_adjacency_t * adj = adj_get(index);
- s = format (s, "%U", format_fib_link, adj->ia_link);
+ s = format (s, "%U", format_vnet_link, adj->ia_link);
s = format (s, " via %U ",
format_ip46_address, &adj->sub_type.nbr.next_hop);
s = format (s, " %U",
static void
adj_nbr_insert (fib_protocol_t nh_proto,
- fib_link_t link_type,
+ vnet_link_t link_type,
const ip46_address_t *nh_addr,
u32 sw_if_index,
adj_index_t adj_index)
void
adj_nbr_remove (fib_protocol_t nh_proto,
- fib_link_t link_type,
+ vnet_link_t link_type,
const ip46_address_t *nh_addr,
u32 sw_if_index)
{
static adj_index_t
adj_nbr_find (fib_protocol_t nh_proto,
- fib_link_t link_type,
+ vnet_link_t link_type,
const ip46_address_t *nh_addr,
u32 sw_if_index)
{
static ip_adjacency_t*
adj_nbr_alloc (fib_protocol_t nh_proto,
- fib_link_t link_type,
+ vnet_link_t link_type,
const ip46_address_t *nh_addr,
u32 sw_if_index)
{
*/
adj_index_t
adj_nbr_add_or_lock (fib_protocol_t nh_proto,
- fib_link_t link_type,
+ vnet_link_t link_type,
const ip46_address_t *nh_addr,
u32 sw_if_index)
{
adj_index_t
adj_nbr_add_or_lock_w_rewrite (fib_protocol_t nh_proto,
- fib_link_t link_type,
+ vnet_link_t link_type,
const ip46_address_t *nh_addr,
u32 sw_if_index,
u8 *rewrite)
* The link type MPLS Adj never has children. So if it is this adj
* that is updated, we need to walk from its IP sibling.
*/
- if (FIB_LINK_MPLS == adj->ia_link)
+ if (VNET_LINK_MPLS == adj->ia_link)
{
adj_index = adj_nbr_find(adj->ia_nh_proto,
fib_proto_to_link(adj->ia_nh_proto),
vnet_main_t * vnm = vnet_get_main();
ip_adjacency_t * adj = adj_get(index);
- s = format (s, "arp-%U", format_fib_link, adj->ia_link);
+ s = format (s, "arp-%U", format_vnet_link, adj->ia_link);
s = format (s, ": via %U",
format_ip46_address, &adj->sub_type.nbr.next_hop,
adj_proto_to_46(adj->ia_nh_proto));
vnet_main_t * vnm = vnet_get_main();
ip_adjacency_t * adj = adj_get(index);
- s = format (s, "%U", format_fib_link, adj->ia_link);
+ s = format (s, "%U", format_vnet_link, adj->ia_link);
s = format (s, " via %U ",
format_ip46_address, &adj->sub_type.nbr.next_hop,
adj_proto_to_46(adj->ia_nh_proto));
* The interface on which the peer resides
*/
extern adj_index_t adj_nbr_add_or_lock(fib_protocol_t nh_proto,
- fib_link_t link_type,
+ vnet_link_t link_type,
const ip46_address_t *nh_addr,
u32 sw_if_index);
* The rewrite to prepend to packets
*/
extern adj_index_t adj_nbr_add_or_lock_w_rewrite(fib_protocol_t nh_proto,
- fib_link_t link_type,
+ vnet_link_t link_type,
const ip46_address_t *nh_addr,
u32 sw_if_index,
u8 *rewrite);
*/
adj_index_t
adj_rewrite_add_and_lock (fib_protocol_t nh_proto,
- fib_link_t link_type,
+ vnet_link_t link_type,
u32 sw_if_index,
u8 *rewrite)
{
* The rewrite to prepend to packets
*/
extern adj_index_t adj_rewrite_add_and_lock(fib_protocol_t nh_proto,
- fib_link_t link_type,
+ vnet_link_t link_type,
u32 sw_if_index,
u8 *rewrite);
return fib_entry->fe_prefix.fp_payload_proto;
}
- return (fib_entry->fe_prefix.fp_proto);
+ return (fib_proto_to_dpo(fib_entry->fe_prefix.fp_proto));
}
void
static const adj_index_t
fib_path_attached_next_hop_get_adj (fib_path_t *path,
- fib_link_t link)
+ vnet_link_t link)
{
if (vnet_sw_interface_is_p2p(vnet_get_main(),
path->attached_next_hop.fp_interface))
* find the adj in the shared db
*/
locked_ai = adj_nbr_add_or_lock(FIB_PROTOCOL_IP4,
- FIB_LINK_IP4,
+ VNET_LINK_IP4,
&nh_10_10_10_1,
tm->hw[0]->sw_if_index);
FIB_TEST((locked_ai == ai), "ADJ NBR DB find");
"11.11.11.11/32 via incomplete adj");
ai_01 = adj_nbr_add_or_lock(FIB_PROTOCOL_IP4,
- FIB_LINK_IP4,
+ VNET_LINK_IP4,
&pfx_10_10_10_1_s_32.fp_addr,
tm->hw[0]->sw_if_index);
FIB_TEST((FIB_NODE_INDEX_INVALID != ai_01), "adj created");
"RPF list for adj-fib contains adj");
ai_12_12_12_12 = adj_nbr_add_or_lock(FIB_PROTOCOL_IP4,
- FIB_LINK_IP4,
+ VNET_LINK_IP4,
&nh_12_12_12_12,
tm->hw[1]->sw_if_index);
FIB_TEST((FIB_NODE_INDEX_INVALID != ai_12_12_12_12), "adj created");
eth_addr[5] = 0xb2;
ai_02 = adj_nbr_add_or_lock(FIB_PROTOCOL_IP4,
- FIB_LINK_IP4,
+ VNET_LINK_IP4,
&pfx_10_10_10_2_s_32.fp_addr,
tm->hw[0]->sw_if_index);
FIB_TEST((FIB_NODE_INDEX_INVALID != ai_02), "adj created");
fib_entry_pool_size());
ai_03 = adj_nbr_add_or_lock(FIB_PROTOCOL_IP4,
- FIB_LINK_IP4,
+ VNET_LINK_IP4,
&nh_10_10_10_3,
tm->hw[0]->sw_if_index);
ai = fib_entry_get_adj(fei);
ai2 = adj_nbr_add_or_lock(FIB_PROTOCOL_IP4,
- FIB_LINK_IP4,
+ VNET_LINK_IP4,
&pfx_4_1_1_1_s_32.fp_addr,
tm->hw[0]->sw_if_index);
FIB_TEST((ai == ai2), "Attached-host link to incomplete ADJ");
adj = adj_get(ai);
FIB_TEST((adj->lookup_next_index == IP_LOOKUP_NEXT_ARP),
"2001::/64 via ARP-adj");
- FIB_TEST((adj->ia_link == FIB_LINK_IP6),
+ FIB_TEST((adj->ia_link == VNET_LINK_IP6),
"2001::/64 is link type v6");
FIB_TEST((adj->ia_nh_proto == FIB_PROTOCOL_IP4),
"2001::/64 ADJ-adj is NH proto v4");
* find the adj in the shared db
*/
locked_ai = adj_nbr_add_or_lock(FIB_PROTOCOL_IP6,
- FIB_LINK_IP6,
+ VNET_LINK_IP6,
&nh_2001_2,
tm->hw[0]->sw_if_index);
FIB_TEST((locked_ai == ai), "ADJ NBR DB find");
};
ai_01 = adj_nbr_add_or_lock(FIB_PROTOCOL_IP6,
- FIB_LINK_IP6,
+ VNET_LINK_IP6,
&pfx_2001_1_2_s_128.fp_addr,
tm->hw[0]->sw_if_index);
FIB_TEST((FIB_NODE_INDEX_INVALID != ai_01), "adj created");
eth_addr[5] = 0xb2;
ai_02 = adj_nbr_add_or_lock(FIB_PROTOCOL_IP6,
- FIB_LINK_IP6,
+ VNET_LINK_IP6,
&pfx_2001_1_3_s_128.fp_addr,
tm->hw[0]->sw_if_index);
FIB_TEST((FIB_NODE_INDEX_INVALID != ai_02), "adj created");
adj = adj_get(ai);
FIB_TEST((adj->lookup_next_index == IP_LOOKUP_NEXT_ARP),
"1.1.1.1/32 via ARP-adj");
- FIB_TEST((adj->ia_link == FIB_LINK_IP4),
+ FIB_TEST((adj->ia_link == VNET_LINK_IP4),
"1.1.1.1/32 ADJ-adj is link type v4");
FIB_TEST((adj->ia_nh_proto == FIB_PROTOCOL_IP6),
"1.1.1.1/32 ADJ-adj is NH proto v6");
/* vec_add(rewrite, &byte, 6); */
/* adjfib_ai1 = adj_nbr_add_or_lock(FIB_PROTOCOL_IP4, */
- /* FIB_LINK_IP4, */
+ /* VNET_LINK_IP4, */
/* &nh_10_10_10_2, */
/* tm->hw[0]->sw_if_index); */
/* adj_nbr_update_rewrite(FIB_PROTOCOL_IP4, */
/* "Adj-fib10 adj is rewrite"); */
/* adjfib_ai2 = adj_nbr_add_or_lock(FIB_PROTOCOL_IP4, */
- /* FIB_LINK_IP4, */
+ /* VNET_LINK_IP4, */
/* &nh_10_10_11_2, */
/* tm->hw[1]->sw_if_index); */
/* adj_nbr_update_rewrite(FIB_PROTOCOL_IP4, */
};
ai_v4_10_10_11_1 = adj_nbr_add_or_lock(FIB_PROTOCOL_IP4,
- FIB_LINK_IP4,
+ VNET_LINK_IP4,
&nh_10_10_11_1,
tm->hw[1]->sw_if_index);
ai_v4_10_10_11_2 = adj_nbr_add_or_lock(FIB_PROTOCOL_IP4,
- FIB_LINK_IP4,
+ VNET_LINK_IP4,
&nh_10_10_11_2,
tm->hw[1]->sw_if_index);
ai_mpls_10_10_10_1 = adj_nbr_add_or_lock(FIB_PROTOCOL_IP4,
- FIB_LINK_MPLS,
+ VNET_LINK_MPLS,
&nh_10_10_10_1,
tm->hw[0]->sw_if_index);
ai_mpls_10_10_11_2 = adj_nbr_add_or_lock(FIB_PROTOCOL_IP4,
- FIB_LINK_MPLS,
+ VNET_LINK_MPLS,
&nh_10_10_11_2,
tm->hw[1]->sw_if_index);
ai_mpls_10_10_11_1 = adj_nbr_add_or_lock(FIB_PROTOCOL_IP4,
- FIB_LINK_MPLS,
+ VNET_LINK_MPLS,
&nh_10_10_11_1,
tm->hw[1]->sw_if_index);
* arrays of protocol and link names
*/
static const char* fib_protocol_names[] = FIB_PROTOCOLS;
-static const char* fib_link_names[] = FIB_LINKS;
+static const char* vnet_link_names[] = VNET_LINKS;
static const char* fib_forw_chain_names[] = FIB_FORW_CHAINS;
u8 *
}
u8 *
-format_fib_link (u8 * s, va_list ap)
+format_vnet_link (u8 * s, va_list ap)
{
- fib_link_t link = va_arg(ap, int); // fib_link_t promotion
+ vnet_link_t link = va_arg(ap, int); // vnet_link_t promotion
- return (format (s, "%s", fib_link_names[link]));
+ return (format (s, "%s", vnet_link_names[link]));
}
u8 *
}
dpo_proto_t
-fib_link_to_dpo_proto (fib_link_t linkt)
+vnet_link_to_dpo_proto (vnet_link_t linkt)
{
switch (linkt)
{
- case FIB_LINK_IP6:
+ case VNET_LINK_IP6:
return (DPO_PROTO_IP6);
- case FIB_LINK_IP4:
+ case VNET_LINK_IP4:
return (DPO_PROTO_IP4);
- case FIB_LINK_MPLS:
+ case VNET_LINK_MPLS:
return (DPO_PROTO_MPLS);
- case FIB_LINK_ETHERNET:
+ case VNET_LINK_ETHERNET:
return (DPO_PROTO_ETHERNET);
+ case VNET_LINK_ARP:
+ break;
}
ASSERT(0);
return (0);
return (0);
}
-fib_link_t
+vnet_link_t
fib_proto_to_link (fib_protocol_t proto)
{
switch (proto)
{
case FIB_PROTOCOL_IP4:
- return (FIB_LINK_IP4);
+ return (VNET_LINK_IP4);
case FIB_PROTOCOL_IP6:
- return (FIB_LINK_IP6);
+ return (VNET_LINK_IP6);
case FIB_PROTOCOL_MPLS:
- return (FIB_LINK_MPLS);
+ return (VNET_LINK_MPLS);
}
ASSERT(0);
return (0);
return (FIB_FORW_CHAIN_TYPE_UNICAST_IP4);
}
-fib_link_t
+vnet_link_t
fib_forw_chain_type_to_link_type (fib_forward_chain_type_t fct)
{
switch (fct)
{
case FIB_FORW_CHAIN_TYPE_UNICAST_IP4:
- return (FIB_LINK_IP4);
+ return (VNET_LINK_IP4);
case FIB_FORW_CHAIN_TYPE_UNICAST_IP6:
- return (FIB_LINK_IP6);
+ return (VNET_LINK_IP6);
case FIB_FORW_CHAIN_TYPE_ETHERNET:
- return (FIB_LINK_ETHERNET);
+ return (VNET_LINK_ETHERNET);
case FIB_FORW_CHAIN_TYPE_MPLS_EOS:
/*
* insufficient information to to convert
ASSERT(0);
break;
case FIB_FORW_CHAIN_TYPE_MPLS_NON_EOS:
- return (FIB_LINK_MPLS);
+ return (VNET_LINK_MPLS);
}
- return (FIB_LINK_IP4);
+ return (VNET_LINK_IP4);
}
dpo_proto_t
case FIB_FORW_CHAIN_TYPE_MPLS_NON_EOS:
return (DPO_PROTO_MPLS);
}
- return (FIB_LINK_IP4);
+ return (VNET_LINK_IP4);
}
_item <= FIB_PROTOCOL_IP6; \
_item++)
-
-/**
- * Link Type. This maps directly into the ethertype.
- */
-typedef enum fib_link_t_ {
- FIB_LINK_IP4 = VNET_LINK_IP4,
- FIB_LINK_IP6 = VNET_LINK_IP6,
- FIB_LINK_MPLS = VNET_LINK_MPLS,
- FIB_LINK_ETHERNET = VNET_LINK_ETHERNET,
-} __attribute__ ((packed)) fib_link_t;
-
-/**
- * Definition outside of enum so it does not need to be included in non-defaulted
- * switch statements
- */
-#define FIB_LINK_NUM (FIB_LINK_ETHERNET+1)
-
-#define FIB_LINKS { \
- [FIB_LINK_ETHERNET] = "ethernet", \
- [FIB_LINK_IP4] = "ipv4", \
- [FIB_LINK_IP6] = "ipv6", \
- [FIB_LINK_MPLS] = "mpls", \
-}
-
-#define FOR_EACH_FIB_LINK(_item) \
- for (_item = FIB_LINK_IP4; \
- _item <= FIB_LINK_MPLS; \
- _item++)
-
-#define FOR_EACH_FIB_IP_LINK(_item) \
- for (_item = FIB_LINK_IP4; \
- _item <= FIB_LINK_IP6; \
- _item++)
-
/**
* @brief Convert from a protocol to a link type
*/
-fib_link_t fib_proto_to_link (fib_protocol_t proto);
+vnet_link_t fib_proto_to_link (fib_protocol_t proto);
/**
* FIB output chain type. When a child object requests a forwarding contribution
/**
* @brief Convert from a chain type to the adjacencies link type
*/
-extern fib_link_t fib_forw_chain_type_to_link_type(fib_forward_chain_type_t fct);
+extern vnet_link_t fib_forw_chain_type_to_link_type(fib_forward_chain_type_t fct);
/**
* @brief Convert from a payload-protocol to a chain type.
extern u8 * format_fib_forw_chain_type(u8 * s, va_list * args);
extern dpo_proto_t fib_proto_to_dpo(fib_protocol_t fib_proto);
-extern dpo_proto_t fib_link_to_dpo_proto(fib_link_t linkt);
+extern dpo_proto_t vnet_link_to_dpo_proto(vnet_link_t linkt);
extern fib_protocol_t dpo_proto_to_fib(dpo_proto_t dpo_proto);
/**
_item <= FIB_SPEICAL_TYPE_LAST; _item++)
extern u8 * format_fib_protocol(u8 * s, va_list ap);
-extern u8 * format_fib_link(u8 *s, va_list ap);
+extern u8 * format_vnet_link(u8 *s, va_list ap);
/**
* Path flags from the control plane
* add the stats to the continuous histogram collection.
*/
bucket = (fwalk->fw_n_visits / HISTOGRAM_VISITS_PER_WALK_INCR);
- bucket = (bucket > HISTOGRAM_VISITS_PER_WALK_N_BUCKETS ?
+ bucket = (bucket >= HISTOGRAM_VISITS_PER_WALK_N_BUCKETS ?
HISTOGRAM_VISITS_PER_WALK_N_BUCKETS - 1 :
bucket);
fib_walk_hist_vists_per_walk[bucket]++;
if (t->teb)
{
t->l2_adj_index = adj_nbr_add_or_lock(FIB_PROTOCOL_IP4,
- FIB_LINK_ETHERNET,
+ VNET_LINK_ETHERNET,
&zero_addr,
sw_if_index);
VNET_LINK_ARP,
} __attribute__ ((packed)) vnet_link_t;
+#define VNET_LINKS { \
+ [VNET_LINK_ETHERNET] = "ethernet", \
+ [VNET_LINK_IP4] = "ipv4", \
+ [VNET_LINK_IP6] = "ipv6", \
+ [VNET_LINK_MPLS] = "mpls", \
+ [VNET_LINK_ARP] = "arp", \
+}
+
+/**
+ * @brief Number of link types. Not part of the enum so it does not have to be included in
+ * switch statements
+ */
+#define VNET_LINK_NUM (VNET_LINK_ARP+1)
+
/**
* @brief Convert a link to to an Ethertype
*/
check_adj_port_range_x1 (const protocol_port_range_dpo_t * ppr_dpo,
u16 dst_port, u32 next)
{
- const protocol_port_range_t *range;
u16x8vec_t key;
u16x8vec_t diff1;
u16x8vec_t diff2;
winner_mask = sum_nonzero & sum_equal;
if (winner_mask)
return next;
- range++;
}
return IP4_SOURCE_AND_PORT_RANGE_CHECK_NEXT_DROP;
}
{0x33, 0x33, 0x00, 0x00, 0x00, IP6_MULTICAST_GROUP_ID_all_hosts};
a->all_nodes_adj_index = adj_rewrite_add_and_lock(FIB_PROTOCOL_IP6,
- FIB_LINK_IP6,
+ VNET_LINK_IP6,
sw_if_index,
link_layer_address);
}
{0x33, 0x33, 0x00, 0x00, 0x00, IP6_MULTICAST_GROUP_ID_all_routers};
a->all_routers_adj_index = adj_rewrite_add_and_lock(FIB_PROTOCOL_IP6,
- FIB_LINK_IP6,
+ VNET_LINK_IP6,
sw_if_index,
link_layer_address);
}
a->all_mldv2_routers_adj_index =
adj_rewrite_add_and_lock(FIB_PROTOCOL_IP6,
- FIB_LINK_IP6,
+ VNET_LINK_IP6,
sw_if_index,
link_layer_address);
}
/*
* link/ether-type
*/
- u8 ia_link;
+ vnet_link_t ia_link;
u8 ia_nh_proto;
union {
}
static lisp_gpe_next_protocol_e
-lisp_gpe_adj_proto_from_fib_link_type (fib_link_t linkt)
+lisp_gpe_adj_proto_from_vnet_link_type (vnet_link_t linkt)
{
switch (linkt)
{
- case FIB_LINK_IP4:
+ case VNET_LINK_IP4:
return (LISP_GPE_NEXT_PROTO_IP4);
- case FIB_LINK_IP6:
+ case VNET_LINK_IP6:
return (LISP_GPE_NEXT_PROTO_IP6);
- case FIB_LINK_ETHERNET:
+ case VNET_LINK_ETHERNET:
return (LISP_GPE_NEXT_PROTO_ETHERNET);
default:
ASSERT (0);
ADJ_MIDCHAIN_FLAG_NO_COUNT :
ADJ_MIDCHAIN_FLAG_NONE),
lisp_gpe_tunnel_build_rewrite
- (lgt, ladj, lisp_gpe_adj_proto_from_fib_link_type (linkt)));
+ (lgt, ladj, lisp_gpe_adj_proto_from_vnet_link_type (linkt)));
lisp_gpe_adj_stack_one (ladj, ai);
}
s = format (s, " %U\n",
format_lisp_gpe_tunnel,
lisp_gpe_tunnel_get (ladj->tunnel_index));
- /* s = format (s, " FIB adjacencies: IPV4:%d IPv6:%d L2:%d\n", */
- /* ladj->adjs[FIB_LINK_IP4], */
- /* ladj->adjs[FIB_LINK_IP6], ladj->adjs[FIB_LINK_ETHERNET]); */
}
else
{
fib_route_path_t *rpath;
adj_nbr_add_or_lock_w_rewrite (FIB_PROTOCOL_IP4,
- FIB_LINK_IP4,
+ VNET_LINK_IP4,
&next_hops[i],
sw_if_index, mac_addrs[i].mac_addr);
u32 next_hop_weight, u32 next_hop_out_label)
{
vnet_classify_main_t *cm = &vnet_classify_main;
- fib_protocol_t proto = prefix->fp_proto;
stats_main_t *sm = &stats_main;
if (is_multipath)
return VNET_API_ERROR_NO_SUCH_TABLE;
}
- dpo_set (&dpo, DPO_CLASSIFY, proto,
+ dpo_set (&dpo, DPO_CLASSIFY, dproto,
classify_dpo_create (prefix->fp_proto,
ntohl (classify_table_index)));
}