diff options
| author | Philippe Guibert <philippe.guibert@6wind.com> | 2019-01-21 17:19:53 +0100 |
|---|---|---|
| committer | Philippe Guibert <philippe.guibert@6wind.com> | 2019-01-21 17:37:05 +0100 |
| commit | c7d14ba67ced338049a3cdf350a3b38d421b09ad (patch) | |
| tree | d0d8376c03dea94d342a860f8d18dd0b45f18b33 | |
| parent | e228ca1247363d548326e38590f8e9391b31b649 (diff) | |
bgpd: do not crash when removing ip vpn entries
when removing bgp instance, the parsing of rm->info contexts must be
protected. Also, the main level of hierarchy of rds must not be
allocated more than once.
Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
| -rw-r--r-- | bgpd/bgp_route.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/bgpd/bgp_route.c b/bgpd/bgp_route.c index 6bce7261ae..07077dfe1f 100644 --- a/bgpd/bgp_route.c +++ b/bgpd/bgp_route.c @@ -5081,6 +5081,9 @@ void bgp_static_delete(struct bgp *bgp) bgp_static = bgp_node_get_bgp_static_info( rm); + if (!bgp_static) + continue; + bgp_static_withdraw_safi( bgp, &rm->p, AFI_IP, safi, (struct prefix_rd *)&rn->p); @@ -5257,8 +5260,6 @@ int bgp_static_set_safi(afi_t afi, safi_t safi, struct vty *vty, if (!bgp_node_has_bgp_path_info_data(prn)) bgp_node_set_bgp_table_info(prn, bgp_table_init(bgp, afi, safi)); - else - bgp_unlock_node(prn); table = bgp_node_get_bgp_table_info(prn); rn = bgp_node_get(table, &p); |
