X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Flisp-gpe%2Flisp_gpe_fwd_entry.c;h=f810ae5fec46f8c4192861d7a3a7bce22be0ac03;hb=3c2fed5145d9e40a9ecd178c2866c813eddc6203;hp=0a8dc039909b745113707d45040fa49f7f2c565c;hpb=1500254bee11355bbd69cc1dd9705be4f002f2bd;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 0a8dc039909..f810ae5fec4 100644 --- a/src/vnet/lisp-gpe/lisp_gpe_fwd_entry.c +++ b/src/vnet/lisp-gpe/lisp_gpe_fwd_entry.c @@ -354,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? */ @@ -378,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; } @@ -785,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); } @@ -1046,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); /* @@ -1285,6 +1289,9 @@ vnet_lisp_flush_stats (void) vlib_combined_counter_main_t *cm = &lgm->counters; u32 i; + if (cm->counters == NULL) + return 0; + for (i = 0; i < vlib_combined_counter_n_counters (cm); i++) vlib_zero_combined_counter (cm, i); @@ -1369,9 +1376,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", @@ -1390,12 +1397,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,