Manual enable/disable works right.
This commit is contained in:
parent
08f0290a1e
commit
e4bfafa100
1 changed files with 16 additions and 0 deletions
|
@ -65,6 +65,7 @@ static_remove(struct proto *p, struct static_route *r)
|
||||||
static void
|
static void
|
||||||
static_add(struct proto *p, struct static_route *r)
|
static_add(struct proto *p, struct static_route *r)
|
||||||
{
|
{
|
||||||
|
DBG("static_add(%I/%d,%d)\n", r->net, r->masklen, r->dest);
|
||||||
switch (r->dest)
|
switch (r->dest)
|
||||||
{
|
{
|
||||||
case RTD_ROUTER:
|
case RTD_ROUTER:
|
||||||
|
@ -101,6 +102,20 @@ static_start(struct proto *p)
|
||||||
return PS_UP;
|
return PS_UP;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
static_shutdown(struct proto *p)
|
||||||
|
{
|
||||||
|
struct static_config *c = (void *) p->cf;
|
||||||
|
struct static_route *r;
|
||||||
|
|
||||||
|
DBG("Static: prepare for landing!\n");
|
||||||
|
WALK_LIST(r, c->iface_routes)
|
||||||
|
static_remove(p, r);
|
||||||
|
WALK_LIST(r, c->other_routes)
|
||||||
|
static_remove(p, r);
|
||||||
|
return PS_DOWN;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
static_neigh_notify(struct neighbor *n)
|
static_neigh_notify(struct neighbor *n)
|
||||||
{
|
{
|
||||||
|
@ -250,6 +265,7 @@ struct protocol proto_static = {
|
||||||
init: static_init,
|
init: static_init,
|
||||||
dump: static_dump,
|
dump: static_dump,
|
||||||
start: static_start,
|
start: static_start,
|
||||||
|
shutdown: static_shutdown,
|
||||||
reconfigure: static_reconfigure,
|
reconfigure: static_reconfigure,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue