mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-11 15:18:06 +00:00
bgpd: Fix crashes when no default bgp instance is configured.
The vnc code assumes that bgp must have a default instance. This code change checks to make sure that we do before proceeding. It makes no assurances that vnc will behave correctly without a default instance. Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com> Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
This commit is contained in:
parent
94d95cde35
commit
34620e24b5
@ -4414,7 +4414,8 @@ rfapiProcessPeerDown (struct peer *peer)
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
bgp = bgp_get_default (); /* assume 1 instance for now */
|
bgp = bgp_get_default (); /* assume 1 instance for now */
|
||||||
assert (bgp);
|
if (!bgp)
|
||||||
|
return;
|
||||||
|
|
||||||
h = bgp->rfapi;
|
h = bgp->rfapi;
|
||||||
assert (h);
|
assert (h);
|
||||||
|
@ -208,12 +208,17 @@ prefix_bag_free (void *pb)
|
|||||||
static void
|
static void
|
||||||
print_rhn_list (const char *tag1, const char *tag2)
|
print_rhn_list (const char *tag1, const char *tag2)
|
||||||
{
|
{
|
||||||
struct bgp *bgp = bgp_get_default ();
|
struct bgp *bgp;
|
||||||
struct skiplist *sl = bgp->rfapi->resolve_nve_nexthop;
|
struct skiplist *sl;
|
||||||
struct skiplistnode *p;
|
struct skiplistnode *p;
|
||||||
struct prefix_bag *pb;
|
struct prefix_bag *pb;
|
||||||
int count = 0;
|
int count = 0;
|
||||||
|
|
||||||
|
bgp = bgp_get_default ();
|
||||||
|
if (!bgp)
|
||||||
|
return;
|
||||||
|
|
||||||
|
sl = bgp->frapi->resolve_nve_nexthop;
|
||||||
if (!sl)
|
if (!sl)
|
||||||
{
|
{
|
||||||
zlog_debug ("%s: %s: RHN List is empty", (tag1 ? tag1 : ""),
|
zlog_debug ("%s: %s: RHN List is empty", (tag1 ? tag1 : ""),
|
||||||
@ -251,6 +256,8 @@ vnc_rhnck (char *tag)
|
|||||||
struct skiplistnode *p;
|
struct skiplistnode *p;
|
||||||
|
|
||||||
bgp = bgp_get_default ();
|
bgp = bgp_get_default ();
|
||||||
|
if (!bgp)
|
||||||
|
return;
|
||||||
sl = bgp->rfapi->resolve_nve_nexthop;
|
sl = bgp->rfapi->resolve_nve_nexthop;
|
||||||
|
|
||||||
if (!sl)
|
if (!sl)
|
||||||
@ -1798,6 +1805,9 @@ vnc_import_bgp_exterior_add_route_it (
|
|||||||
struct bgp *bgp_default = bgp_get_default ();
|
struct bgp *bgp_default = bgp_get_default ();
|
||||||
afi_t afi = family2afi (prefix->family);
|
afi_t afi = family2afi (prefix->family);
|
||||||
|
|
||||||
|
if (!bgp_default)
|
||||||
|
return;
|
||||||
|
|
||||||
h = bgp_default->rfapi;
|
h = bgp_default->rfapi;
|
||||||
hc = bgp_default->rfapi_cfg;
|
hc = bgp_default->rfapi_cfg;
|
||||||
|
|
||||||
@ -1992,6 +2002,9 @@ vnc_import_bgp_exterior_del_route (
|
|||||||
afi_t afi = family2afi (prefix->family);
|
afi_t afi = family2afi (prefix->family);
|
||||||
struct bgp *bgp_default = bgp_get_default ();
|
struct bgp *bgp_default = bgp_get_default ();
|
||||||
|
|
||||||
|
if (!bgp_default)
|
||||||
|
return;
|
||||||
|
|
||||||
memset (&pfx_orig_nexthop, 0, sizeof (struct prefix)); /* keep valgrind happy */
|
memset (&pfx_orig_nexthop, 0, sizeof (struct prefix)); /* keep valgrind happy */
|
||||||
|
|
||||||
h = bgp_default->rfapi;
|
h = bgp_default->rfapi;
|
||||||
|
Loading…
Reference in New Issue
Block a user