RIP: Fix handling of passive mode for demand circuit interfaces
This commit is contained in:
parent
b8bbbbaf56
commit
5fc8407177
1 changed files with 15 additions and 1 deletions
|
@ -532,6 +532,9 @@ rip_iface_start(struct rip_iface *ifa)
|
||||||
|
|
||||||
ifa->up = 1;
|
ifa->up = 1;
|
||||||
|
|
||||||
|
if (ifa->cf->passive)
|
||||||
|
return;
|
||||||
|
|
||||||
rip_send_request(p, ifa);
|
rip_send_request(p, ifa);
|
||||||
rip_send_table(p, ifa, ifa->addr, 0);
|
rip_send_table(p, ifa, ifa->addr, 0);
|
||||||
}
|
}
|
||||||
|
@ -556,7 +559,7 @@ rip_iface_stop(struct rip_iface *ifa)
|
||||||
ifa->tx_pending = 0;
|
ifa->tx_pending = 0;
|
||||||
ifa->req_pending = 0;
|
ifa->req_pending = 0;
|
||||||
|
|
||||||
if (ifa->cf->demand_circuit)
|
if (ifa->cf->demand_circuit && !ifa->cf->passive)
|
||||||
rip_send_flush(p, ifa);
|
rip_send_flush(p, ifa);
|
||||||
|
|
||||||
WALK_LIST_FIRST(n, ifa->neigh_list)
|
WALK_LIST_FIRST(n, ifa->neigh_list)
|
||||||
|
@ -730,6 +733,17 @@ rip_reconfigure_iface(struct rip_proto *p, struct rip_iface *ifa, struct rip_ifa
|
||||||
(ifa->next_regular > (current_time() + new->update_time)))
|
(ifa->next_regular > (current_time() + new->update_time)))
|
||||||
ifa->next_regular = current_time() + (random() % new->update_time) + 100 MS;
|
ifa->next_regular = current_time() + (random() % new->update_time) + 100 MS;
|
||||||
|
|
||||||
|
if (ifa->up && new->demand_circuit && (new->passive != old->passive))
|
||||||
|
{
|
||||||
|
if (new->passive)
|
||||||
|
rip_send_flush(p, ifa);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
rip_send_request(p, ifa);
|
||||||
|
rip_send_table(p, ifa, ifa->addr, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (new->check_link != old->check_link)
|
if (new->check_link != old->check_link)
|
||||||
rip_iface_update_state(ifa);
|
rip_iface_update_state(ifa);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue