mirror of
				https://gitlab.labs.nic.cz/labs/bird.git
				synced 2024-05-11 16:54:54 +00:00 
			
		
		
		
	Fixes a bug in NBMA on an iface with multiple IP addresses.
This commit is contained in:
		@@ -472,6 +472,9 @@ ospf_iface_new(struct proto_ospf *po, struct iface *iface, struct ifa *addr,
 | 
			
		||||
 | 
			
		||||
  WALK_LIST(nb, ip->nbma_list)
 | 
			
		||||
  {
 | 
			
		||||
    if (!ipa_in_net(nb->ip, addr->prefix, addr->pxlen))
 | 
			
		||||
      continue;
 | 
			
		||||
 | 
			
		||||
    nbma = mb_alloc(p->pool, sizeof(struct nbma_node));
 | 
			
		||||
    nbma->ip = nb->ip;
 | 
			
		||||
    nbma->eligible = nb->eligible;
 | 
			
		||||
 
 | 
			
		||||
@@ -855,7 +855,7 @@ ospf_reconfigure(struct proto *p, struct proto_config *c)
 | 
			
		||||
	{
 | 
			
		||||
	  found = 0;
 | 
			
		||||
	  WALK_LIST(nb2, newip->nbma_list)
 | 
			
		||||
	    if (ipa_compare(nb1->ip, nb2->ip) == 0)
 | 
			
		||||
	    if (ipa_equal(nb1->ip, nb2->ip))
 | 
			
		||||
	  {
 | 
			
		||||
	    found = 1;
 | 
			
		||||
	    if (nb1->eligible != nb2->eligible)
 | 
			
		||||
@@ -877,9 +877,12 @@ ospf_reconfigure(struct proto *p, struct proto_config *c)
 | 
			
		||||
	/* And then add new */
 | 
			
		||||
	WALK_LIST(nb2, newip->nbma_list)
 | 
			
		||||
	{
 | 
			
		||||
	  if (!ipa_in_net(nb2->ip, ifa->addr->prefix, ifa->addr->pxlen))
 | 
			
		||||
	    continue;
 | 
			
		||||
 | 
			
		||||
	  found = 0;
 | 
			
		||||
	  WALK_LIST(nb1, ifa->nbma_list)
 | 
			
		||||
	    if (ipa_compare(nb1->ip, nb2->ip) == 0)
 | 
			
		||||
	    if (ipa_equal(nb1->ip, nb2->ip))
 | 
			
		||||
	  {
 | 
			
		||||
	    found = 1;
 | 
			
		||||
	    break;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user