File tree Expand file tree Collapse file tree 7 files changed +60
-1
lines changed Expand file tree Collapse file tree 7 files changed +60
-1
lines changed Original file line number Diff line number Diff line change @@ -987,6 +987,21 @@ impl Network {
987
987
}
988
988
}
989
989
990
+ pub ( crate ) fn update_locators ( & mut self ) {
991
+ self . graph [ self . idx ] . sn += 1 ;
992
+ self . send_on_links (
993
+ vec ! [ (
994
+ self . idx,
995
+ Details {
996
+ zid: false ,
997
+ locators: true ,
998
+ links: self . full_linkstate || self . router_peers_failover_brokering,
999
+ } ,
1000
+ ) ] ,
1001
+ |link| link. transport . get_whatami ( ) . unwrap_or ( WhatAmI :: Peer ) == WhatAmI :: Router ,
1002
+ ) ;
1003
+ }
1004
+
990
1005
fn remove_detached_nodes ( & mut self ) -> Vec < ( NodeIndex , Node ) > {
991
1006
let mut dfs_stack = vec ! [ self . idx] ;
992
1007
let mut visit_map = self . graph . visit_map ( ) ;
Original file line number Diff line number Diff line change @@ -277,6 +277,12 @@ impl HatBaseTrait for HatCode {
277
277
Ok ( ( ) )
278
278
}
279
279
280
+ fn update_self_locators ( & self , tables : & mut Tables ) {
281
+ if let Some ( net) = hat_mut ! ( tables) . linkstatepeers_net . as_mut ( ) {
282
+ net. update_locators ( ) ;
283
+ }
284
+ }
285
+
280
286
fn close_face (
281
287
& self ,
282
288
tables : & TablesLock ,
Original file line number Diff line number Diff line change @@ -105,6 +105,8 @@ pub(crate) trait HatBaseTrait {
105
105
send_declare : & mut SendDeclare ,
106
106
) -> ZResult < ( ) > ;
107
107
108
+ fn update_self_locators ( & self , _tables : & mut Tables ) { }
109
+
108
110
fn handle_oam (
109
111
& self ,
110
112
tables : & mut Tables ,
Original file line number Diff line number Diff line change @@ -605,4 +605,19 @@ impl Network {
605
605
}
606
606
vec ! [ ]
607
607
}
608
+
609
+ pub ( super ) fn update_locators ( & mut self ) {
610
+ self . graph [ self . idx ] . sn += 1 ;
611
+ self . send_on_links (
612
+ vec ! [ (
613
+ self . idx,
614
+ Details {
615
+ zid: false ,
616
+ locators: true ,
617
+ links: self . router_peers_failover_brokering,
618
+ } ,
619
+ ) ] ,
620
+ |link| link. transport . get_whatami ( ) . unwrap_or ( WhatAmI :: Peer ) == WhatAmI :: Router ,
621
+ ) ;
622
+ }
608
623
}
Original file line number Diff line number Diff line change @@ -219,6 +219,12 @@ impl HatBaseTrait for HatCode {
219
219
Ok ( ( ) )
220
220
}
221
221
222
+ fn update_self_locators ( & self , tables : & mut Tables ) {
223
+ if let Some ( net) = hat_mut ! ( tables) . gossip . as_mut ( ) {
224
+ net. update_locators ( ) ;
225
+ }
226
+ }
227
+
222
228
fn close_face (
223
229
& self ,
224
230
tables : & TablesLock ,
Original file line number Diff line number Diff line change @@ -460,6 +460,15 @@ impl HatBaseTrait for HatCode {
460
460
Ok ( ( ) )
461
461
}
462
462
463
+ fn update_self_locators ( & self , tables : & mut Tables ) {
464
+ if let Some ( net) = hat_mut ! ( tables) . routers_net . as_mut ( ) {
465
+ net. update_locators ( ) ;
466
+ }
467
+ if let Some ( net) = hat_mut ! ( tables) . linkstatepeers_net . as_mut ( ) {
468
+ net. update_locators ( ) ;
469
+ }
470
+ }
471
+
463
472
fn close_face (
464
473
& self ,
465
474
tables : & TablesLock ,
Original file line number Diff line number Diff line change @@ -449,7 +449,13 @@ impl Runtime {
449
449
450
450
update_iface_cache ( ) ;
451
451
self . update_locators ( ) ;
452
- // TODO Transmit new locators to peers?
452
+
453
+ {
454
+ let tables_lock = & self . state . router . tables ;
455
+ let _ctrl_lock = zlock ! ( tables_lock. ctrl_lock) ;
456
+ let mut tables = zwrite ! ( tables_lock. tables) ;
457
+ tables_lock. hat_code . update_self_locators ( & mut tables) ;
458
+ }
453
459
454
460
let scouting = self . state . scouting . lock ( ) . await ;
455
461
if let Some ( scouting) = scouting. as_ref ( ) {
You can’t perform that action at this time.
0 commit comments