diff options
Diffstat (limited to 'proto/ospf/ospf.c')
-rw-r--r-- | proto/ospf/ospf.c | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/proto/ospf/ospf.c b/proto/ospf/ospf.c index e9e45d76..c753503b 100644 --- a/proto/ospf/ospf.c +++ b/proto/ospf/ospf.c @@ -153,13 +153,29 @@ ospf_start(struct proto *p) } /* Add all virtual links as interfaces */ - if(po->backbone) { struct ospf_iface_patt *ipatt; WALK_LIST(ac, c->area_list) { WALK_LIST(ipatt, ac->vlink_list) + { + if(!po->backbone) + { + oa = mb_allocz(p->pool, sizeof(struct ospf_area)); + add_tail(&po->area_list, NODE oa); + po->areano++; + oa->stub = 0; + oa->areaid = 0; + oa->rt = NULL; + oa->po = po; + fib_init(&oa->net_fib, p->pool, sizeof(struct area_net), 16, ospf_area_initfib); + fib_init(&oa->rtr, p->pool, sizeof(ort), 16, ospf_rt_initort); + po->backbone = oa; + oa->opt.byte = 0; + oa->opt.bit.e = 1; + } ospf_iface_new(po, NULL, ac, ipatt); + } } } return PS_UP; |