mirror of
				https://git.proxmox.com/git/mirror_frr
				synced 2025-11-03 23:47:16 +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 */
 | 
			
		||||
  assert (bgp);
 | 
			
		||||
  if (!bgp)
 | 
			
		||||
    return;
 | 
			
		||||
 | 
			
		||||
  h = bgp->rfapi;
 | 
			
		||||
  assert (h);
 | 
			
		||||
 | 
			
		||||
@ -208,12 +208,17 @@ prefix_bag_free (void *pb)
 | 
			
		||||
static void
 | 
			
		||||
print_rhn_list (const char *tag1, const char *tag2)
 | 
			
		||||
{
 | 
			
		||||
  struct bgp *bgp = bgp_get_default ();
 | 
			
		||||
  struct skiplist *sl = bgp->rfapi->resolve_nve_nexthop;
 | 
			
		||||
  struct bgp *bgp;
 | 
			
		||||
  struct skiplist *sl;
 | 
			
		||||
  struct skiplistnode *p;
 | 
			
		||||
  struct prefix_bag *pb;
 | 
			
		||||
  int count = 0;
 | 
			
		||||
 | 
			
		||||
  bgp = bgp_get_default ();
 | 
			
		||||
  if (!bgp)
 | 
			
		||||
    return;
 | 
			
		||||
 | 
			
		||||
  sl = bgp->frapi->resolve_nve_nexthop;
 | 
			
		||||
  if (!sl)
 | 
			
		||||
    {
 | 
			
		||||
      zlog_debug ("%s: %s: RHN List is empty", (tag1 ? tag1 : ""),
 | 
			
		||||
@ -251,6 +256,8 @@ vnc_rhnck (char *tag)
 | 
			
		||||
  struct skiplistnode *p;
 | 
			
		||||
 | 
			
		||||
  bgp = bgp_get_default ();
 | 
			
		||||
  if (!bgp)
 | 
			
		||||
    return;
 | 
			
		||||
  sl = bgp->rfapi->resolve_nve_nexthop;
 | 
			
		||||
 | 
			
		||||
  if (!sl)
 | 
			
		||||
@ -1798,6 +1805,9 @@ vnc_import_bgp_exterior_add_route_it (
 | 
			
		||||
  struct bgp *bgp_default = bgp_get_default ();
 | 
			
		||||
  afi_t afi = family2afi (prefix->family);
 | 
			
		||||
 | 
			
		||||
  if (!bgp_default)
 | 
			
		||||
    return;
 | 
			
		||||
 | 
			
		||||
  h = bgp_default->rfapi;
 | 
			
		||||
  hc = bgp_default->rfapi_cfg;
 | 
			
		||||
 | 
			
		||||
@ -1992,6 +2002,9 @@ vnc_import_bgp_exterior_del_route (
 | 
			
		||||
  afi_t afi = family2afi (prefix->family);
 | 
			
		||||
  struct bgp *bgp_default = bgp_get_default ();
 | 
			
		||||
 | 
			
		||||
  if (!bgp_default)
 | 
			
		||||
    return;
 | 
			
		||||
 | 
			
		||||
  memset (&pfx_orig_nexthop, 0, sizeof (struct prefix));        /* keep valgrind happy */
 | 
			
		||||
 | 
			
		||||
  h = bgp_default->rfapi;
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user