X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Flisp-gpe%2Flisp_gpe_fwd_entry.c;h=ca1e320700e0430db7b991e7a58cb35854ef2b9b;hb=9128637ee8f7b0d903551f165a1447d427e8dd19;hp=d7d3cb8652fc31c139d9864552bcc94540a2d542;hpb=809bc74b5b73634678e6f1444344fd1c0a89e877;p=vpp.git diff --git a/src/vnet/lisp-gpe/lisp_gpe_fwd_entry.c b/src/vnet/lisp-gpe/lisp_gpe_fwd_entry.c index d7d3cb8652f..ca1e320700e 100644 --- a/src/vnet/lisp-gpe/lisp_gpe_fwd_entry.c +++ b/src/vnet/lisp-gpe/lisp_gpe_fwd_entry.c @@ -66,6 +66,7 @@ ip_dst_fib_add_route (u32 dst_fib_index, const ip_prefix_t * dst_prefix) /* create a new src FIB. */ src_fib_index = fib_table_create_and_lock (dst_fib_prefix.fp_proto, + FIB_SOURCE_LISP, "LISP-src for [%d,%U]", dst_fib_index, format_fib_prefix, &dst_fib_prefix); @@ -180,7 +181,8 @@ ip_src_dst_fib_del_route (u32 src_fib_index, */ fib_table_entry_special_remove (dst_fib_index, &dst_fib_prefix, FIB_SOURCE_LISP); - fib_table_unlock (src_fib_index, src_fib_prefix.fp_proto); + fib_table_unlock (src_fib_index, src_fib_prefix.fp_proto, + FIB_SOURCE_LISP); } } @@ -352,11 +354,12 @@ create_fib_entries (lisp_gpe_fwd_entry_t * lfe) if (vec_len (lgm->native_fwd_rpath[ip_version])) { ip_prefix_to_fib_prefix (&lfe->key->rmt.ippref, &fib_prefix); - fib_table_entry_update (lfe->eid_fib_index, &fib_prefix, - FIB_SOURCE_LISP, FIB_ENTRY_FLAG_NONE, - lgm->native_fwd_rpath[ip_version]); + fi = fib_table_entry_update (lfe->eid_fib_index, &fib_prefix, + FIB_SOURCE_LISP, + FIB_ENTRY_FLAG_NONE, + lgm->native_fwd_rpath[ip_version]); gpe_native_fwd_add_del_lfe (lfe, 1); - break; + goto done; } case LISP_NO_ACTION: /* TODO update timers? */ @@ -376,6 +379,7 @@ create_fib_entries (lisp_gpe_fwd_entry_t * lfe) { fi = ip_src_fib_add_route (lfe->src_fib_index, &ippref, lfe->paths); } +done: fe = fib_entry_get (fi); return fe->fe_lb.dpoi_index; } @@ -544,7 +548,8 @@ add_ip_fwd_entry (lisp_gpe_main_t * lgm, lfe->tenant = lisp_gpe_tenant_find_or_create (lfe->key->vni); lfe->eid_table_id = a->table_id; lfe->eid_fib_index = fib_table_find_or_create_and_lock (fproto, - lfe->eid_table_id); + lfe->eid_table_id, + FIB_SOURCE_LISP); lfe->is_src_dst = a->is_src_dst; if (LISP_GPE_FWD_ENTRY_TYPE_NEGATIVE != lfe->type) @@ -578,7 +583,7 @@ del_ip_fwd_entry_i (lisp_gpe_main_t * lgm, lisp_gpe_fwd_entry_t * lfe) fproto = (IP4 == ip_prefix_version (&fid_addr_ippref (&lfe->key->rmt)) ? FIB_PROTOCOL_IP4 : FIB_PROTOCOL_IP6); - fib_table_unlock (lfe->eid_fib_index, fproto); + fib_table_unlock (lfe->eid_fib_index, fproto, FIB_SOURCE_LISP); hash_unset_mem (lgm->lisp_gpe_fwd_entries, lfe->key); clib_mem_free (lfe->key); @@ -782,6 +787,7 @@ lisp_gpe_l2_update_fwding (lisp_gpe_fwd_entry_t * lfe) { fib_path_list_contribute_forwarding (lfe->l2.path_list_index, FIB_FORW_CHAIN_TYPE_ETHERNET, + FIB_PATH_LIST_FWD_FLAG_NONE, &lfe->l2.dpo); dpo_copy (&dpo, &lfe->l2.dpo); } @@ -1043,6 +1049,7 @@ lisp_gpe_nsh_update_fwding (lisp_gpe_fwd_entry_t * lfe) { fib_path_list_contribute_forwarding (lfe->nsh.path_list_index, FIB_FORW_CHAIN_TYPE_NSH, + FIB_PATH_LIST_FWD_FLAG_NONE, &lfe->nsh.dpo); /* @@ -1366,9 +1373,9 @@ vnet_lisp_gpe_fwd_entry_flush (void) } static u8 * -format_lisp_fwd_path (u8 * s, va_list ap) +format_lisp_fwd_path (u8 * s, va_list * ap) { - lisp_fwd_path_t *lfp = va_arg (ap, lisp_fwd_path_t *); + lisp_fwd_path_t *lfp = va_arg (*ap, lisp_fwd_path_t *); s = format (s, "weight:%d ", lfp->weight); s = format (s, "adj:[%U]\n", @@ -1387,12 +1394,12 @@ typedef enum lisp_gpe_fwd_entry_format_flag_t_ static u8 * -format_lisp_gpe_fwd_entry (u8 * s, va_list ap) +format_lisp_gpe_fwd_entry (u8 * s, va_list * ap) { lisp_gpe_main_t *lgm = &lisp_gpe_main; - lisp_gpe_fwd_entry_t *lfe = va_arg (ap, lisp_gpe_fwd_entry_t *); + lisp_gpe_fwd_entry_t *lfe = va_arg (*ap, lisp_gpe_fwd_entry_t *); lisp_gpe_fwd_entry_format_flag_t flags = - va_arg (ap, lisp_gpe_fwd_entry_format_flag_t); + va_arg (*ap, lisp_gpe_fwd_entry_format_flag_t); s = format (s, "VNI:%d VRF:%d EID: %U -> %U [index:%d]", lfe->key->vni, lfe->eid_table_id,