Diff for /embedaddon/quagga/zebra/redistribute.c between versions 1.1.1.1 and 1.1.1.3

version 1.1.1.1, 2012/02/21 17:26:11 version 1.1.1.3, 2013/07/21 23:54:41
Line 107  zebra_redistribute_default (struct zserv *client) Line 107  zebra_redistribute_default (struct zserv *client)
       rn = route_node_lookup (table, (struct prefix *)&p);        rn = route_node_lookup (table, (struct prefix *)&p);
       if (rn)        if (rn)
         {          {
          for (newrib = rn->info; newrib; newrib = newrib->next)          RNODE_FOREACH_RIB (rn, newrib)
             if (CHECK_FLAG (newrib->flags, ZEBRA_FLAG_SELECTED)              if (CHECK_FLAG (newrib->flags, ZEBRA_FLAG_SELECTED)
                 && newrib->distance != DISTANCE_INFINITY)                  && newrib->distance != DISTANCE_INFINITY)
               zsend_route_multipath (ZEBRA_IPV4_ROUTE_ADD, client, &rn->p, newrib);                zsend_route_multipath (ZEBRA_IPV4_ROUTE_ADD, client, &rn->p, newrib);
Line 127  zebra_redistribute_default (struct zserv *client) Line 127  zebra_redistribute_default (struct zserv *client)
       rn = route_node_lookup (table, (struct prefix *)&p6);        rn = route_node_lookup (table, (struct prefix *)&p6);
       if (rn)        if (rn)
         {          {
          for (newrib = rn->info; newrib; newrib = newrib->next)          RNODE_FOREACH_RIB (rn, newrib)
             if (CHECK_FLAG (newrib->flags, ZEBRA_FLAG_SELECTED)              if (CHECK_FLAG (newrib->flags, ZEBRA_FLAG_SELECTED)
                 && newrib->distance != DISTANCE_INFINITY)                  && newrib->distance != DISTANCE_INFINITY)
               zsend_route_multipath (ZEBRA_IPV6_ROUTE_ADD, client, &rn->p, newrib);                zsend_route_multipath (ZEBRA_IPV6_ROUTE_ADD, client, &rn->p, newrib);
Line 148  zebra_redistribute (struct zserv *client, int type) Line 148  zebra_redistribute (struct zserv *client, int type)
   table = vrf_table (AFI_IP, SAFI_UNICAST, 0);    table = vrf_table (AFI_IP, SAFI_UNICAST, 0);
   if (table)    if (table)
     for (rn = route_top (table); rn; rn = route_next (rn))      for (rn = route_top (table); rn; rn = route_next (rn))
      for (newrib = rn->info; newrib; newrib = newrib->next)      RNODE_FOREACH_RIB (rn, newrib)
         if (CHECK_FLAG (newrib->flags, ZEBRA_FLAG_SELECTED)           if (CHECK_FLAG (newrib->flags, ZEBRA_FLAG_SELECTED) 
             && newrib->type == type               && newrib->type == type 
             && newrib->distance != DISTANCE_INFINITY              && newrib->distance != DISTANCE_INFINITY
Line 159  zebra_redistribute (struct zserv *client, int type) Line 159  zebra_redistribute (struct zserv *client, int type)
   table = vrf_table (AFI_IP6, SAFI_UNICAST, 0);    table = vrf_table (AFI_IP6, SAFI_UNICAST, 0);
   if (table)    if (table)
     for (rn = route_top (table); rn; rn = route_next (rn))      for (rn = route_top (table); rn; rn = route_next (rn))
      for (newrib = rn->info; newrib; newrib = newrib->next)      RNODE_FOREACH_RIB (rn, newrib)
         if (CHECK_FLAG (newrib->flags, ZEBRA_FLAG_SELECTED)          if (CHECK_FLAG (newrib->flags, ZEBRA_FLAG_SELECTED)
             && newrib->type == type               && newrib->type == type 
             && newrib->distance != DISTANCE_INFINITY              && newrib->distance != DISTANCE_INFINITY
Line 245  zebra_redistribute_add (int command, struct zserv *cli Line 245  zebra_redistribute_add (int command, struct zserv *cli
   
   type = stream_getc (client->ibuf);    type = stream_getc (client->ibuf);
   
  switch (type)  if (type == 0 || type >= ZEBRA_ROUTE_MAX)
     return;
 
   if (! client->redist[type])
     {      {
    case ZEBRA_ROUTE_KERNEL:      client->redist[type] = 1;
    case ZEBRA_ROUTE_CONNECT:      zebra_redistribute (client, type);
    case ZEBRA_ROUTE_STATIC: 
    case ZEBRA_ROUTE_RIP: 
    case ZEBRA_ROUTE_RIPNG: 
    case ZEBRA_ROUTE_OSPF: 
    case ZEBRA_ROUTE_OSPF6: 
    case ZEBRA_ROUTE_BGP: 
      if (! client->redist[type]) 
        { 
          client->redist[type] = 1; 
          zebra_redistribute (client, type); 
        } 
      break; 
    default: 
      break; 
     }      }
}     }
   
 void  void
 zebra_redistribute_delete (int command, struct zserv *client, int length)  zebra_redistribute_delete (int command, struct zserv *client, int length)
Line 273  zebra_redistribute_delete (int command, struct zserv * Line 262  zebra_redistribute_delete (int command, struct zserv *
   
   type = stream_getc (client->ibuf);    type = stream_getc (client->ibuf);
   
  switch (type)  if (type == 0 || type >= ZEBRA_ROUTE_MAX)
    {    return;
    case ZEBRA_ROUTE_KERNEL:
    case ZEBRA_ROUTE_CONNECT:  client->redist[type] = 0;
    case ZEBRA_ROUTE_STATIC:}
    case ZEBRA_ROUTE_RIP: 
    case ZEBRA_ROUTE_RIPNG: 
    case ZEBRA_ROUTE_OSPF: 
    case ZEBRA_ROUTE_OSPF6: 
    case ZEBRA_ROUTE_BGP: 
      client->redist[type] = 0; 
      break; 
    default: 
      break; 
    } 
}      
   
 void  void
 zebra_redistribute_default_add (int command, struct zserv *client, int length)  zebra_redistribute_default_add (int command, struct zserv *client, int length)

Removed from v.1.1.1.1  
changed lines
  Added in v.1.1.1.3


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>