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) |