On Wed, May 14, 2014 at 07:55:44PM +0200, J??r??mie Courr??ges-Anglas wrote: > > Redirecting this to tech@ > > Consus has confirmed this fixed his "issue". I plan to commit it this > week-end if I hear no objection. > > j...@wxcvbn.org (J??r??mie Courr??ges-Anglas) writes: > > > Thanks for the detailed report. > > > > This diff makes rtadvd aware of route info messages on the listening > > side, no functional change except that the error message goes away. > > We just ignore the message since in that case there's no good reason to > > try to validate the more specifics advertized by other routers. > > > > ok?
OK bluhm@ > > Index: rtadvd.c > =================================================================== > RCS file: /cvs/src/usr.sbin/rtadvd/rtadvd.c,v > retrieving revision 1.45 > diff -u -p -r1.45 rtadvd.c > --- rtadvd.c 5 May 2013 14:25:52 -0000 1.45 > +++ rtadvd.c 6 May 2014 14:21:42 -0000 > @@ -121,6 +121,7 @@ union nd_opts { > #define NDOPT_FLAG_MTU (1 << 4) > #define NDOPT_FLAG_RDNSS (1 << 5) > #define NDOPT_FLAG_DNSSL (1 << 6) > +#define NDOPT_FLAG_ROUTE_INFO (1 << 7) > > u_int32_t ndopt_flags[] = { > [ND_OPT_SOURCE_LINKADDR] = NDOPT_FLAG_SRCLINKADDR, > @@ -128,6 +129,7 @@ u_int32_t ndopt_flags[] = { > [ND_OPT_PREFIX_INFORMATION] = NDOPT_FLAG_PREFIXINFO, > [ND_OPT_REDIRECTED_HEADER] = NDOPT_FLAG_RDHDR, > [ND_OPT_MTU] = NDOPT_FLAG_MTU, > + [ND_OPT_ROUTE_INFO] = NDOPT_FLAG_ROUTE_INFO, > [ND_OPT_RDNSS] = NDOPT_FLAG_RDNSS, > [ND_OPT_DNSSL] = NDOPT_FLAG_DNSSL, > }; > @@ -809,7 +811,8 @@ ra_input(int len, struct nd_router_adver > if (nd6_options((struct nd_opt_hdr *)(ra + 1), > len - sizeof(struct nd_router_advert), > &ndopts, NDOPT_FLAG_SRCLINKADDR | NDOPT_FLAG_PREFIXINFO > - | NDOPT_FLAG_MTU | NDOPT_FLAG_RDNSS | > NDOPT_FLAG_DNSSL)) { > + | NDOPT_FLAG_MTU | NDOPT_FLAG_ROUTE_INFO > + | NDOPT_FLAG_RDNSS | NDOPT_FLAG_DNSSL)) { > log_warnx("ND option check failed for an RA from %s on %s", > inet_ntop(AF_INET6, &from->sin6_addr, > ntopbuf, INET6_ADDRSTRLEN), > @@ -1109,6 +1112,7 @@ nd6_options(struct nd_opt_hdr *hdr, int > } > > if (hdr->nd_opt_type > ND_OPT_MTU && > + hdr->nd_opt_type != ND_OPT_ROUTE_INFO && > hdr->nd_opt_type != ND_OPT_RDNSS && > hdr->nd_opt_type != ND_OPT_DNSSL) > { > @@ -1142,6 +1146,7 @@ nd6_options(struct nd_opt_hdr *hdr, int > case ND_OPT_SOURCE_LINKADDR: > case ND_OPT_TARGET_LINKADDR: > case ND_OPT_REDIRECTED_HEADER: > + case ND_OPT_ROUTE_INFO: > case ND_OPT_RDNSS: > case ND_OPT_DNSSL: > break; /* we don't care about these options */ > > -- > jca | PGP : 0x1524E7EE / 5135 92C1 AD36 5293 2BDF DDCC 0DFA 74AE 1524 E7EE >