@@ -91,7 +91,7 @@ fib_entry_src_action_init (fib_entry_t *fib_entry,
9191 .fes_entry_flags = flags ,
9292 };
9393
94- FIB_ENTRY_SRC_VFT_INVOKE (& esrc , fesv_init , (& esrc ));
94+ FIB_ENTRY_SRC_VFT_INVOKE (fib_entry , & esrc , fesv_init , (& esrc ));
9595
9696 vec_add1 (fib_entry -> fe_srcs , esrc );
9797 vec_sort_with_function (fib_entry -> fe_srcs ,
@@ -213,7 +213,7 @@ fib_entry_src_action_deinit (fib_entry_t *fib_entry,
213213
214214 ASSERT (NULL != esrc );
215215
216- FIB_ENTRY_SRC_VFT_INVOKE (esrc , fesv_deinit , (esrc ));
216+ FIB_ENTRY_SRC_VFT_INVOKE (fib_entry , esrc , fesv_deinit , (esrc ));
217217
218218 fib_path_ext_list_flush (& esrc -> fes_path_exts );
219219 vec_del1 (fib_entry -> fe_srcs , index );
@@ -776,7 +776,7 @@ fib_entry_src_action_copy (fib_entry_t *fib_entry,
776776 orig_src -> fes_src ,
777777 orig_src -> fes_entry_flags );
778778
779- FIB_ENTRY_SRC_VFT_INVOKE (esrc , fesv_copy ,
779+ FIB_ENTRY_SRC_VFT_INVOKE (fib_entry , esrc , fesv_copy ,
780780 (orig_src , fib_entry , esrc ));
781781
782782 fib_path_list_unlock (esrc -> fes_pl );
@@ -1095,7 +1095,7 @@ fib_entry_src_action_deactivate (fib_entry_t *fib_entry,
10951095
10961096 ASSERT (esrc -> fes_flags & FIB_ENTRY_SRC_FLAG_ACTIVE );
10971097
1098- FIB_ENTRY_SRC_VFT_INVOKE (esrc , fesv_deactivate ,
1098+ FIB_ENTRY_SRC_VFT_INVOKE (fib_entry , esrc , fesv_deactivate ,
10991099 (esrc , fib_entry ));
11001100
11011101 esrc -> fes_flags &= ~(FIB_ENTRY_SRC_FLAG_ACTIVE |
@@ -1134,7 +1134,7 @@ fib_entry_src_action_fwd_update (const fib_entry_t *fib_entry,
11341134
11351135 vec_foreach (esrc , fib_entry -> fe_srcs )
11361136 {
1137- FIB_ENTRY_SRC_VFT_INVOKE (esrc , fesv_fwd_update ,
1137+ FIB_ENTRY_SRC_VFT_INVOKE (fib_entry , esrc , fesv_fwd_update ,
11381138 (esrc , fib_entry , source ));
11391139 }
11401140}
@@ -1223,18 +1223,20 @@ fib_entry_src_action_reactivate (fib_entry_t *fib_entry,
12231223 fib_entry_src_action_fwd_update (fib_entry , source );
12241224}
12251225
1226- void
1227- fib_entry_src_action_installed (const fib_entry_t * fib_entry ,
1226+ fib_entry_t *
1227+ fib_entry_src_action_installed (fib_entry_t * fib_entry ,
12281228 fib_source_t source )
12291229{
12301230 fib_entry_src_t * esrc ;
12311231
12321232 esrc = fib_entry_src_find (fib_entry , source );
12331233
1234- FIB_ENTRY_SRC_VFT_INVOKE (esrc , fesv_installed ,
1234+ FIB_ENTRY_SRC_VFT_INVOKE (fib_entry , esrc , fesv_installed ,
12351235 (esrc , fib_entry ));
12361236
12371237 fib_entry_src_action_fwd_update (fib_entry , source );
1238+
1239+ return (fib_entry );
12381240}
12391241
12401242/*
@@ -1251,7 +1253,6 @@ fib_entry_src_action_add (fib_entry_t *fib_entry,
12511253 fib_entry_flag_t flags ,
12521254 const dpo_id_t * dpo )
12531255{
1254- fib_node_index_t fib_entry_index ;
12551256 fib_entry_src_t * esrc ;
12561257
12571258 esrc = fib_entry_src_find_or_create (fib_entry , source , flags );
@@ -1261,7 +1262,7 @@ fib_entry_src_action_add (fib_entry_t *fib_entry,
12611262
12621263 if (flags != esrc -> fes_entry_flags )
12631264 {
1264- FIB_ENTRY_SRC_VFT_INVOKE (esrc , fesv_flags_change ,
1265+ FIB_ENTRY_SRC_VFT_INVOKE (fib_entry , esrc , fesv_flags_change ,
12651266 (esrc , fib_entry , flags ));
12661267 }
12671268 esrc -> fes_entry_flags = flags ;
@@ -1274,20 +1275,13 @@ fib_entry_src_action_add (fib_entry_t *fib_entry,
12741275 return (fib_entry );
12751276 }
12761277
1277- /*
1278- * save variable so we can recover from a fib_entry realloc.
1279- */
1280- fib_entry_index = fib_entry_get_index (fib_entry );
1281-
1282- FIB_ENTRY_SRC_VFT_INVOKE (esrc , fesv_add ,
1278+ FIB_ENTRY_SRC_VFT_INVOKE (fib_entry , esrc , fesv_add ,
12831279 (esrc ,
12841280 fib_entry ,
12851281 flags ,
12861282 fib_entry_get_dpo_proto (fib_entry ),
12871283 dpo ));
12881284
1289- fib_entry = fib_entry_get (fib_entry_index );
1290-
12911285 esrc -> fes_flags |= FIB_ENTRY_SRC_FLAG_ADDED ;
12921286
12931287 fib_path_list_lock (esrc -> fes_pl );
@@ -1314,7 +1308,7 @@ fib_entry_src_action_update (fib_entry_t *fib_entry,
13141308 fib_entry_flag_t flags ,
13151309 const dpo_id_t * dpo )
13161310{
1317- fib_node_index_t fib_entry_index , old_path_list_index ;
1311+ fib_node_index_t old_path_list_index ;
13181312 fib_entry_src_t * esrc ;
13191313
13201314 esrc = fib_entry_src_find_or_create (fib_entry , source , flags );
@@ -1327,20 +1321,13 @@ fib_entry_src_action_update (fib_entry_t *fib_entry,
13271321 old_path_list_index = esrc -> fes_pl ;
13281322 esrc -> fes_entry_flags = flags ;
13291323
1330- /*
1331- * save variable so we can recover from a fib_entry realloc.
1332- */
1333- fib_entry_index = fib_entry_get_index (fib_entry );
1334-
1335- FIB_ENTRY_SRC_VFT_INVOKE (esrc , fesv_add ,
1324+ FIB_ENTRY_SRC_VFT_INVOKE (fib_entry , esrc , fesv_add ,
13361325 (esrc ,
13371326 fib_entry ,
13381327 flags ,
13391328 fib_entry_get_dpo_proto (fib_entry ),
13401329 dpo ));
13411330
1342- fib_entry = fib_entry_get (fib_entry_index );
1343-
13441331 esrc -> fes_flags |= FIB_ENTRY_SRC_FLAG_ADDED ;
13451332
13461333 fib_path_list_lock (esrc -> fes_pl );
@@ -1435,14 +1422,14 @@ fib_entry_src_action_remove (fib_entry_t *fib_entry,
14351422 }
14361423 else if (esrc -> fes_flags & FIB_ENTRY_SRC_FLAG_CONTRIBUTING )
14371424 {
1438- FIB_ENTRY_SRC_VFT_INVOKE (esrc , fesv_deactivate ,
1425+ FIB_ENTRY_SRC_VFT_INVOKE (fib_entry , esrc , fesv_deactivate ,
14391426 (esrc , fib_entry ));
14401427 esrc -> fes_flags &= ~FIB_ENTRY_SRC_FLAG_CONTRIBUTING ;
14411428 }
14421429
14431430 old_path_list = esrc -> fes_pl ;
14441431
1445- FIB_ENTRY_SRC_VFT_INVOKE (esrc , fesv_remove , (esrc ));
1432+ FIB_ENTRY_SRC_VFT_INVOKE (fib_entry , esrc , fesv_remove , (esrc ));
14461433
14471434 fib_path_list_unlock (old_path_list );
14481435 fib_entry_unlock (fib_entry_get_index (fib_entry ));
@@ -1584,15 +1571,10 @@ fib_entry_src_action_path_add (fib_entry_t *fib_entry,
15841571 fib_entry_flag_t flags ,
15851572 const fib_route_path_t * rpaths )
15861573{
1587- fib_node_index_t old_path_list , fib_entry_index ;
1574+ fib_node_index_t old_path_list ;
15881575 fib_path_list_flags_t pl_flags ;
15891576 fib_entry_src_t * esrc ;
15901577
1591- /*
1592- * save variable so we can recover from a fib_entry realloc.
1593- */
1594- fib_entry_index = fib_entry_get_index (fib_entry );
1595-
15961578 esrc = fib_entry_src_find (fib_entry , source );
15971579 if (NULL == esrc )
15981580 {
@@ -1625,9 +1607,8 @@ fib_entry_src_action_path_add (fib_entry_t *fib_entry,
16251607 pl_flags = fib_entry_src_flags_2_path_list_flags (fib_entry_get_flags_i (fib_entry ));
16261608 fib_entry_flags_update (fib_entry , rpaths , & pl_flags , esrc );
16271609
1628- FIB_ENTRY_SRC_VFT_INVOKE (esrc , fesv_path_add ,
1610+ FIB_ENTRY_SRC_VFT_INVOKE (fib_entry , esrc , fesv_path_add ,
16291611 (esrc , fib_entry , pl_flags , rpaths ));
1630- fib_entry = fib_entry_get (fib_entry_index );
16311612
16321613 fib_path_list_lock (esrc -> fes_pl );
16331614 fib_path_list_unlock (old_path_list );
@@ -1650,17 +1631,12 @@ fib_entry_src_action_path_swap (fib_entry_t *fib_entry,
16501631 fib_entry_flag_t flags ,
16511632 const fib_route_path_t * rpaths )
16521633{
1653- fib_node_index_t old_path_list , fib_entry_index ;
1634+ fib_node_index_t old_path_list ;
16541635 fib_path_list_flags_t pl_flags ;
16551636 fib_entry_src_t * esrc ;
16561637
16571638 esrc = fib_entry_src_find (fib_entry , source );
16581639
1659- /*
1660- * save variable so we can recover from a fib_entry realloc.
1661- */
1662- fib_entry_index = fib_entry_get_index (fib_entry );
1663-
16641640 if (NULL == esrc )
16651641 {
16661642 const dpo_id_t * dpo ;
@@ -1681,7 +1657,7 @@ fib_entry_src_action_path_swap (fib_entry_t *fib_entry,
16811657 {
16821658 if (flags != esrc -> fes_entry_flags )
16831659 {
1684- FIB_ENTRY_SRC_VFT_INVOKE (esrc , fesv_flags_change ,
1660+ FIB_ENTRY_SRC_VFT_INVOKE (fib_entry , esrc , fesv_flags_change ,
16851661 (esrc , fib_entry , flags ));
16861662 }
16871663 esrc -> fes_entry_flags = flags ;
@@ -1700,12 +1676,10 @@ fib_entry_src_action_path_swap (fib_entry_t *fib_entry,
17001676
17011677 fib_entry_flags_update (fib_entry , rpaths , & pl_flags , esrc );
17021678
1703- FIB_ENTRY_SRC_VFT_INVOKE (esrc , fesv_path_swap ,
1679+ FIB_ENTRY_SRC_VFT_INVOKE (fib_entry , esrc , fesv_path_swap ,
17041680 (esrc , fib_entry ,
17051681 pl_flags , rpaths ));
17061682
1707- fib_entry = fib_entry_get (fib_entry_index );
1708-
17091683 fib_path_list_lock (esrc -> fes_pl );
17101684 fib_path_list_unlock (old_path_list );
17111685
@@ -1739,7 +1713,7 @@ fib_entry_src_action_path_remove (fib_entry_t *fib_entry,
17391713 pl_flags = fib_entry_src_flags_2_path_list_flags (fib_entry_get_flags_i (fib_entry ));
17401714 fib_entry_flags_update (fib_entry , rpaths , & pl_flags , esrc );
17411715
1742- FIB_ENTRY_SRC_VFT_INVOKE (esrc , fesv_path_remove ,
1716+ FIB_ENTRY_SRC_VFT_INVOKE (fib_entry , esrc , fesv_path_remove ,
17431717 (esrc , pl_flags , rpaths ));
17441718
17451719 /*
@@ -1901,7 +1875,7 @@ fib_entry_set_source_data (fib_node_index_t fib_entry_index,
19011875
19021876 if (NULL != esrc )
19031877 {
1904- FIB_ENTRY_SRC_VFT_INVOKE (esrc , fesv_set_data ,
1878+ FIB_ENTRY_SRC_VFT_INVOKE (fib_entry , esrc , fesv_set_data ,
19051879 (esrc , fib_entry , data ));
19061880 }
19071881}
0 commit comments