diff options
| -rw-r--r-- | bgpd/bgp_nht.c | 2 | ||||
| -rw-r--r-- | staticd/static_nht.c | 2 | ||||
| -rwxr-xr-x | tools/frr-reload.py | 29 |
3 files changed, 25 insertions, 8 deletions
diff --git a/bgpd/bgp_nht.c b/bgpd/bgp_nht.c index 2c9e379299..8b6ff3fa22 100644 --- a/bgpd/bgp_nht.c +++ b/bgpd/bgp_nht.c @@ -88,7 +88,7 @@ int bgp_find_nexthop(struct bgp_info *path, int connected) static void bgp_unlink_nexthop_check(struct bgp_nexthop_cache *bnc) { - if (LIST_EMPTY(&(bnc->paths)) && bnc->nht_info) { + if (LIST_EMPTY(&(bnc->paths)) && !bnc->nht_info) { if (BGP_DEBUG(nht, NHT)) { char buf[PREFIX2STR_BUFFER]; zlog_debug("bgp_unlink_nexthop: freeing bnc %s", diff --git a/staticd/static_nht.c b/staticd/static_nht.c index f9f937f905..c6e4587b6a 100644 --- a/staticd/static_nht.c +++ b/staticd/static_nht.c @@ -42,7 +42,7 @@ void static_nht_update(struct prefix *p, uint32_t nh_num, vrf = vrf_lookup_by_id(vrf_id); - if (!vrf->info) + if (!vrf || !vrf->info) return; svrf = vrf->info; diff --git a/tools/frr-reload.py b/tools/frr-reload.py index a9f183ed7b..9d1af27d6c 100755 --- a/tools/frr-reload.py +++ b/tools/frr-reload.py @@ -413,7 +413,7 @@ end ctx_keys = [] current_context_lines = [] - elif line in ["exit-address-family", "exit", "exit-vnc", "exit-vni"]: + elif line in ["exit-address-family", "exit", "exit-vnc"]: # if this exit is for address-family ipv4 unicast, ignore the pop if main_ctx_key: self.save_contexts(ctx_keys, current_context_lines) @@ -423,6 +423,15 @@ end current_context_lines = [] log.debug('LINE %-50s: popping from subcontext to ctx%-50s', line, ctx_keys) + elif line == "exit-vni": + if sub_main_ctx_key: + self.save_contexts(ctx_keys, current_context_lines) + + # Start a new context + ctx_keys = copy.deepcopy(sub_main_ctx_key) + current_context_lines = [] + log.debug('LINE %-50s: popping from sub-subcontext to ctx%-50s', line, ctx_keys) + elif new_ctx is True: if not main_ctx_key: ctx_keys = [line, ] @@ -436,11 +445,7 @@ end elif (line.startswith("address-family ") or line.startswith("vnc defaults") or line.startswith("vnc l2-group") or - line.startswith("vnc nve-group") or - (line.startswith("vni ") and - len(ctx_keys) == 2 and - ctx_keys[0].startswith('router bgp') and - ctx_keys[1] == 'address-family l2vpn evpn')): + line.startswith("vnc nve-group")): main_ctx_key = [] # Save old context first @@ -458,6 +463,18 @@ end else: ctx_keys.append(line) + elif ((line.startswith("vni ") and + len(ctx_keys) == 2 and + ctx_keys[0].startswith('router bgp') and + ctx_keys[1] == 'address-family l2vpn evpn')): + + # Save old context first + self.save_contexts(ctx_keys, current_context_lines) + current_context_lines = [] + sub_main_ctx_key = copy.deepcopy(ctx_keys) + log.debug('LINE %-50s: entering sub-sub-context, append to ctx_keys', line) + ctx_keys.append(line) + else: # Continuing in an existing context, add non-commented lines to it current_context_lines.append(line) |
