On Sun, Mar 25, 2012 at 08:58:53PM -0500, Chris Wopat wrote:
> Claudio and crew,
>
> When you enable OSPF-TE (http://tools.ietf.org/html/rfc3630) on a
> Cisco router, OpenOSPFD crashes with "Invalid LSA type". Assuming you
> have a functional setup, adding this (the last line) will recreate:
>
> router ospf 1
> mpls traffic-eng router-id Loopback0
> mpls traffic-eng area 0
>
>
> OpenBSD Log:
>
> Mar 25 19:54:27 openbsd-lab ospfd[223]: fatal in rde: rt_calc: invalid LSA
> type
> Mar 25 19:54:27 openbsd-lab ospfd[12417]: lost child: route decision
> engine exited
>
Thanks for the log and tcpdumps. It seems you're the first person to try
opaque LSA against ospfd. Can you give the following diff a spin?
I think this will solve the problems.
--
:wq Claudio
Index: rde_spf.c
===================================================================
RCS file: /cvs/src/usr.sbin/ospfd/rde_spf.c,v
retrieving revision 1.73
diff -u -p -r1.73 rde_spf.c
--- rde_spf.c 24 May 2011 20:21:51 -0000 1.73
+++ rde_spf.c 30 Mar 2012 20:24:42 -0000
@@ -262,6 +262,9 @@ rt_calc(struct vertex *v, struct area *a
}
break;
+ case LSA_TYPE_AREA_OPAQ:
+ /* nothing to calculate */
+ break;
default:
/* as-external LSA are stored in a different tree */
fatalx("rt_calc: invalid LSA type");
@@ -338,6 +341,9 @@ asext_calc(struct vertex *v)
rt_update(addr, mask2prefixlen(v->lsa->data.asext.mask),
&v->nexthop, v->type, v->cost, cost2, a, adv_rtr, type,
DT_NET, 0, ntohl(v->lsa->data.asext.ext_tag));
+ break;
+ case LSA_TYPE_AS_OPAQ:
+ /* nothing to calculate */
break;
default:
fatalx("asext_calc: invalid LSA type");