summaryrefslogtreecommitdiffstats
path: root/src/plugins
ModeNameSize
-rw-r--r--Makefile.am2958logstatsplain
-rw-r--r--abf.am881logstatsplain
d---------abf366logstatsplain
-rw-r--r--acl.am2400logstatsplain
d---------acl1051logstatsplain
-rw-r--r--avf.am2059logstatsplain
d---------avf515logstatsplain
-rw-r--r--cdp.am1147logstatsplain
d---------cdp419logstatsplain
-rw-r--r--dpdk.am3045logstatsplain
d---------dpdk232logstatsplain
d---------examples121logstatsplain
-rw-r--r--flowprobe.am1195logstatsplain
d---------flowprobe345logstatsplain
-rw-r--r--gbp.am1046logstatsplain
d---------gbp942logstatsplain
-rw-r--r--gtpu.am1124logstatsplain
d---------gtpu390logstatsplain
-rw-r--r--igmp.am1126logstatsplain
d---------igmp1187logstatsplain
-rw-r--r--ila.am713logstatsplain
d---------ila66logstatsplain
-rw-r--r--ioam.am7730logstatsplain
d---------ioam513logstatsplain
-rw-r--r--ixge.am719logstatsplain
d---------ixge68logstatsplain
-rw-r--r--l2e.am829logstatsplain
d---------l2e223logstatsplain
-rw-r--r--lacp.am1494logstatsplain
d---------lacp847logstatsplain
-rw-r--r--lb.am1026logstatsplain
d---------lb383logstatsplain
-rw-r--r--mactime.am1118logstatsplain
d---------mactime282logstatsplain
-rw-r--r--map.am1087logstatsplain
d---------map599logstatsplain
-rw-r--r--marvell.am1368logstatsplain
d---------marvell103logstatsplain
-rw-r--r--memif.am2200logstatsplain
d---------memif451logstatsplain
-rw-r--r--nat.am2002logstatsplain
d---------nat1636logstatsplain
-rw-r--r--pppoe.am1168logstatsplain
d---------pppoe440logstatsplain
d---------srv6-ad142logstatsplain
d---------srv6-am142logstatsplain
d---------srv6-as142logstatsplain
-rw-r--r--srv6_ad.am748logstatsplain
-rw-r--r--srv6_am.am748logstatsplain
-rw-r--r--srv6_as.am749logstatsplain
-rw-r--r--stn.am1019logstatsplain
d---------stn261logstatsplain
-rw-r--r--tlsmbedtls.am836logstatsplain
d---------tlsmbedtls41logstatsplain
-rw-r--r--tlsopenssl.am943logstatsplain
d---------tlsopenssl121logstatsplain
">dst_addr1 = &ip1->dst_address; ip_lookup_set_buffer_fib_index (im->fib_index_by_sw_if_index, p0); ip_lookup_set_buffer_fib_index (im->fib_index_by_sw_if_index, p1); lbi0 = ip6_fib_table_fwding_lookup (im, vnet_buffer (p0)->ip.fib_index, dst_addr0); lbi1 = ip6_fib_table_fwding_lookup (im, vnet_buffer (p1)->ip.fib_index, dst_addr1); lb0 = load_balance_get (lbi0); lb1 = load_balance_get (lbi1); ASSERT (lb0->lb_n_buckets > 0); ASSERT (lb1->lb_n_buckets > 0); ASSERT (is_pow2 (lb0->lb_n_buckets)); ASSERT (is_pow2 (lb1->lb_n_buckets)); vnet_buffer (p0)->ip.flow_hash = vnet_buffer (p1)->ip.flow_hash = 0; if (PREDICT_FALSE (lb0->lb_n_buckets > 1)) { flow_hash_config0 = lb0->lb_hash_config; vnet_buffer (p0)->ip.flow_hash = ip6_compute_flow_hash (ip0, flow_hash_config0); dpo0 = load_balance_get_fwd_bucket (lb0, (vnet_buffer (p0)->ip.flow_hash & (lb0->lb_n_buckets_minus_1))); } else { dpo0 = load_balance_get_bucket_i (lb0, 0); } if (PREDICT_FALSE (lb1->lb_n_buckets > 1)) { flow_hash_config1 = lb1->lb_hash_config; vnet_buffer (p1)->ip.flow_hash = ip6_compute_flow_hash (ip1, flow_hash_config1); dpo1 = load_balance_get_fwd_bucket (lb1, (vnet_buffer (p1)->ip.flow_hash & (lb1->lb_n_buckets_minus_1))); } else { dpo1 = load_balance_get_bucket_i (lb1, 0); } next0 = dpo0->dpoi_next_node; next1 = dpo1->dpoi_next_node; /* Only process the HBH Option Header if explicitly configured to do so */ if (PREDICT_FALSE (ip0->protocol == IP_PROTOCOL_IP6_HOP_BY_HOP_OPTIONS)) { next0 = (dpo_is_adj (dpo0) && im->hbh_enabled) ? (ip_lookup_next_t) IP6_LOOKUP_NEXT_HOP_BY_HOP : next0; } if (PREDICT_FALSE (ip1->protocol == IP_PROTOCOL_IP6_HOP_BY_HOP_OPTIONS)) { next1 = (dpo_is_adj (dpo1) && im->hbh_enabled) ? (ip_lookup_next_t) IP6_LOOKUP_NEXT_HOP_BY_HOP : next1; } vnet_buffer (p0)->ip.adj_index[VLIB_TX] = dpo0->dpoi_index; vnet_buffer (p1)->ip.adj_index[VLIB_TX] = dpo1->dpoi_index; vlib_increment_combined_counter (cm, thread_index, lbi0, 1, vlib_buffer_length_in_chain (vm, p0)); vlib_increment_combined_counter (cm, thread_index, lbi1, 1, vlib_buffer_length_in_chain (vm, p1)); from += 2; to_next += 2; n_left_to_next -= 2; n_left_from -= 2; wrong_next = (next0 != next) + 2 * (next1 != next); if (PREDICT_FALSE (wrong_next != 0)) { switch (wrong_next) { case 1: /* A B A */ to_next[-2] = pi1; to_next -= 1; n_left_to_next += 1; vlib_set_next_frame_buffer (vm, node, next0, pi0); break; case 2: /* A A B */ to_next -= 1; n_left_to_next += 1; vlib_set_next_frame_buffer (vm, node, next1, pi1); break; case 3: /* A B C */ to_next -= 2; n_left_to_next += 2; vlib_set_next_frame_buffer (vm, node, next0, pi0); vlib_set_next_frame_buffer (vm, node, next1, pi1); if (next0 == next1) { /* A B B */ vlib_put_next_frame (vm, node, next, n_left_to_next); next = next1; vlib_get_next_frame (vm, node, next, to_next, n_left_to_next); } } } } while (n_left_from > 0 && n_left_to_next > 0) { vlib_buffer_t *p0; ip6_header_t *ip0; u32 pi0, lbi0; ip_lookup_next_t next0; load_balance_t *lb0; ip6_address_t *dst_addr0; u32 flow_hash_config0; const dpo_id_t *dpo0; pi0 = from[0]; to_next[0] = pi0; p0 = vlib_get_buffer (vm, pi0); ip0 = vlib_buffer_get_current (p0); dst_addr0 = &ip0->dst_address; ip_lookup_set_buffer_fib_index (im->fib_index_by_sw_if_index, p0); lbi0 = ip6_fib_table_fwding_lookup (im, vnet_buffer (p0)->ip.fib_index, dst_addr0); lb0 = load_balance_get (lbi0); flow_hash_config0 = lb0->lb_hash_config; vnet_buffer (p0)->ip.flow_hash = 0; ASSERT (lb0->lb_n_buckets > 0); ASSERT (is_pow2 (lb0->lb_n_buckets)); if (PREDICT_FALSE (lb0->lb_n_buckets > 1)) { flow_hash_config0 = lb0->lb_hash_config; vnet_buffer (p0)->ip.flow_hash = ip6_compute_flow_hash (ip0, flow_hash_config0); dpo0 = load_balance_get_fwd_bucket (lb0, (vnet_buffer (p0)->ip.flow_hash & (lb0->lb_n_buckets_minus_1))); } else { dpo0 = load_balance_get_bucket_i (lb0, 0); } dpo0 = load_balance_get_bucket_i (lb0, (vnet_buffer (p0)->ip.flow_hash & lb0->lb_n_buckets_minus_1)); next0 = dpo0->dpoi_next_node; /* Only process the HBH Option Header if explicitly configured to do so */ if (PREDICT_FALSE (ip0->protocol == IP_PROTOCOL_IP6_HOP_BY_HOP_OPTIONS)) { next0 = (dpo_is_adj (dpo0) && im->hbh_enabled) ? (ip_lookup_next_t) IP6_LOOKUP_NEXT_HOP_BY_HOP : next0; } vnet_buffer (p0)->ip.adj_index[VLIB_TX] = dpo0->dpoi_index; vlib_increment_combined_counter (cm, thread_index, lbi0, 1, vlib_buffer_length_in_chain (vm, p0)); from += 1; to_next += 1; n_left_to_next -= 1; n_left_from -= 1; if (PREDICT_FALSE (next0 != next)) { n_left_to_next += 1; vlib_put_next_frame (vm, node, next, n_left_to_next); next = next0; vlib_get_next_frame (vm, node, next, to_next, n_left_to_next); to_next[0] = pi0; to_next += 1; n_left_to_next -= 1; } } vlib_put_next_frame (vm, node, next, n_left_to_next); } if (node->flags & VLIB_NODE_FLAG_TRACE) ip6_forward_next_trace (vm, node, frame, VLIB_TX); return frame->n_vectors; } #endif /*__included_ip6_forward_h__ */ /* * fd.io coding-style-patch-verification: ON * * Local Variables: * eval: (c-set-style "gnu") * End: */