[quagga-users 14109] Re: OSPFv3 daemon inconsistencies between Quagga versions (and problems!)

Mark Kamichoff prox at prolixium.com
Sun Aug 9 02:00:29 BST 2015


On Wed, Jul 29, 2015 at 04:49:39PM -0500, Mark Kamichoff wrote:
> The major difference I see here between this and others that are
> accepted is that Junos sets the LA bit.  Here's a prefix that's
> accepted (originated from another Quagga box, actually):
> 
> Age:  473 Type: Intra-Prefix
> Link State ID: 0.0.0.0
> Advertising Router: 10.3.4.28
> LS Sequence Number: 0x8000262d
> CheckSum: 0xf75b Length: 52
> Duration: 00:07:52
>      Number of Prefix: 1
>      Reference: Router Id: 0.0.0.0 Adv: 10.3.4.28
>      Prefix Options: --|--|--|--
>      Prefix: 2001:48c8:1:104::3c/128
> 
> ... no LA bit, but the rest of the LSID appears similar.
> 
> The LA bit is described in RFC
> 5340 under A.4.1.1.1:
> 
> >>>>>>>
> 
>    LA-bit
>       The "local address" capability bit.  If set, the prefix is
>       actually an IPv6 interface address of the Advertising Router.
>       Advertisement of local interface addresses is described in
>       Section 4.4.3.9.  An implementation MAY also set the LA-bit for
>       prefixes advertised with a host PrefixLength (128).
> 
> >>>>>>>
> 
> http://tools.ietf.org/html/rfc5340#appendix-A.4.1.1
> 
> Is Quagga checking the LA bit and doing something wrong with it?
> 
> I'm guessing this is a bug/regression.

I finally took a few minutes today to grab the source for Quagga and
nail down what's going on.  It seems that there's an issue with this
chunk of code around line 1277 of ospf6d/ospf6_intra.c:

  /* Appendix A.4.1.1 */
  if (CHECK_FLAG(op->prefix_options, OSPF6_PREFIX_OPTION_NU) ||
   CHECK_FLAG(op->prefix_options, OSPF6_PREFIX_OPTION_LA))
 {
   if (IS_OSPF6_DEBUG_EXAMIN (INTRA_PREFIX))
     {
       ospf6_linkstate_prefix2str ((struct prefix *)OSPF6_PREFIX_BODY(op),
                       buf, sizeof (buf));
       zlog_debug ("%s: Skipping Prefix %s has NU/LA option set",
             __func__, buf);
     }
   continue;
 }

From the RFC, the NU bit should be checked here but not the LA bit.  So,
I removed checking for the OSPF6_PREFIX_OPTION_LA and recompiled.  Now,
the /128 from Junos is inserted into the routing table by ospf6d,
correctly.

I'll be submitting a bug report for this, I guess.

- Mark

-- 
Mark Kamichoff
prox at prolixium.com
http://www.prolixium.com/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: Digital signature
URL: <http://lists.quagga.net/pipermail/quagga-users/attachments/20150808/f114da81/attachment.sig>


More information about the Quagga-users mailing list