diff options
author | Paul Jakma <paul@jakma.org> | 2009-08-03 13:47:25 +0000 |
---|---|---|
committer | David Lamparter <equinox@diac24.net> | 2010-02-04 02:03:42 +0100 |
commit | 2f9994561e1a6547f9e55d41da85f755c97553f4 (patch) | |
tree | 163aef7b480f16c302168355c290df6d5fa3ed90 /ospfd/ospf_route.c | |
parent | 64c87944ec8799443c62ca144046abf5788e8216 (diff) | |
download | quagga-2f9994561e1a6547f9e55d41da85f755c97553f4.tar.bz2 quagga-2f9994561e1a6547f9e55d41da85f755c97553f4.tar.xz |
ospfd: External routes over PtoP must be directly connected.
On Fri, 31 Jul 2009, Joakim Tjernlund wrote:
> How can I do that? ASE is screwing with the P2P route and needs
> some fixing. Perhaps you are suggesting to remove the check in ase
> all togher(delete the whole for loop) and place it somewhere else?
> I haven't looked at that possiblity and I am not convinced that it
> is a good idea either.
Well, what I'm curious about is how you don't see a similar issue
with non-AS-external routes? Indeed, I wonder why we can't just apply
your check much earlier - as/when we add routes to the intra-area
routing table - and just get rid of that complete_direct_routes thing
altogether.
> ASE is forcing a nexthop.s_addr when it should not.
So would this perhaps fix it too (and if so, possibly fix similar
issues with other kinds of routes too)?:
REPLACES "External routes over PtoP must be directly connected."
by Joakim Tjernlund
As all locally routes over PtoP interfaces are interface routes,
one must also make sure that external routes over PtoP interfaces
are directly connected.
Cc: David Lamparter <equinox@diac24.net>
Diffstat (limited to 'ospfd/ospf_route.c')
-rw-r--r-- | ospfd/ospf_route.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/ospfd/ospf_route.c b/ospfd/ospf_route.c index 267237b8..2a81e97a 100644 --- a/ospfd/ospf_route.c +++ b/ospfd/ospf_route.c @@ -810,12 +810,18 @@ ospf_route_copy_nexthops_from_vertex (struct ospf_route *to, { nexthop = vp->nexthop; - if (nexthop->oi != NULL) + if (nexthop->oi != NULL) { - if (! ospf_path_exist (to->paths, nexthop->router, nexthop->oi)) + if (!ospf_path_exist (to->paths, nexthop->router, nexthop->oi)) { path = ospf_path_new (); - path->nexthop = nexthop->router; + + /* PtoP I/F's are always directly connected */ + if (if_is_pointopoint (nexthop->oi->ifp)) + path->nexthop.s_addr = INADDR_ANY; + else + path->nexthop = nexthop->router; + path->ifindex = nexthop->oi->ifp->ifindex; listnode_add (to->paths, path); } |