Paul Jakma <firstname.lastname@example.org> wrote on 2012/08/06 15:43:46: >
> On Mon, 6 Aug 2012, Joakim Tjernlund wrote:
> > Ifindex from where? The router LSA were one would put ifindex instead of
> > IP address?
> You put it in the link-data field, see 12.4.1 page 127 and 22.214.171.124.
Right, what I figured then. >
> > That does not work for the 2 cases I listed in the commit msg:
> >>> - Multiple PtP interfaces with the same IP address between two routers.
> > You don't have to set the unnumbered flag, for example current quagga
> > does not.
> Well, then that has to be set. That's part of the work that would have to
> be done for unnumbered support.
1) unnumbered is manually configured so how would you do that exactly?
2) You break current released Quagga if use unnumbered
3) I am not convinced that you must use unnumbered, current Q can
use the same IP on ppp links, just not more than on ppp link/router.
Why is this suddenly wrong? >
> >>> - Use Unnumbered PtP on just one end of the link.
> > Unumbered on just one side shoukd also work, at least according to
> > Acee L. on the ietf list( if not memory fails ).
> Why wouldn't this work with ifindex?
My turn to be a bit grumpy, we have been over this before. I tried to explain it to you,
here is a mail that I found after much digging:
Since this has become a long thread and I don't seem to get through to you, I
figured I should summarize:
- Cannot do unnumbered
- Cannot do multiple numbered PtoP with the same local IP
address to the same router.
- Can do multiple numbered PtoP with the same local IP
address to the different routers. Has been so for
Adding ifindex aka. b) version:
- Same as above plus:
- Can do unnumbered iff both ends of the link is unnumbered.
The reason for these limitations is in ospf_if_is_configured(). This
function tries to match the remote IP address of the PtoP I/F.
The nexthop_calculation() tries find a matching interface by looking
in the remote router LSA:
/* l is a regular point-to-point link.
Look for a link from W to V.
while ((l2 = ospf_get_next_link (w, v, l2)))
oi = ospf_if_is_configured (area->ospf,
if (oi == NULL)
if (!IPV4_ADDR_SAME (&oi->address->u.prefix4,
This will only work iff there is only ONE matching IP address. There will
be no IP address if the remote side is unnumbered. If there is more
that one matching IP address, it wont find the correct interface in many cases.
You should also note how inefficient this is:
Assume you have 8 PtP I/Fs and the the remote router lsa has
50 entries in it. ospf_get_next_link() will then search in average 25 entries
before finding a matching one, ospf_if_is_configured() will then have to
search all ospf interfaces in average 4 times before finding the
That is a lot of work for finding one PtP interface. Don't even want
to think about worst case.
Now look at the next case:
assert(w->type == OSPF_VERTEX_NETWORK);
oi = ospf_if_is_configured (area->ospf, &(l->link_data));
nh = vertex_nexthop_new ();
nh->oi = oi;
nh->router.s_addr = 0;
ospf_spf_add_parent (v, w, nh, distance);
Suppose you have a loopback IF with the same IP address as
one of your other addresses, then there is a risk that
the wrong IF is found.
the a) version gets rid of all these problems at virtually
no cost and will ALWAYS identify the correct interface.
Quagga-dev mailing list