···49495050 If unsure, say N.51515252+config IPV6_ROUTE_INFO5353+ bool "IPv6: Route Information (RFC 4191) support (EXPERIMENTAL)"5454+ depends on IPV6_ROUTER_PREF && EXPERIMENTAL5555+ ---help---5656+ This is experimental support of Route Information.5757+5858+ If unsure, say N.5959+5260config INET6_AH5361 tristate "IPv6: AH transformation"5462 depends on IPV6
+24-1
net/ipv6/ndisc.c
···156156157157/* ND options */158158struct ndisc_options {159159- struct nd_opt_hdr *nd_opt_array[__ND_OPT_MAX];159159+ struct nd_opt_hdr *nd_opt_array[__ND_OPT_ARRAY_MAX];160160+#ifdef CONFIG_IPV6_ROUTE_INFO161161+ struct nd_opt_hdr *nd_opts_ri;162162+ struct nd_opt_hdr *nd_opts_ri_end;163163+#endif160164};161165162166#define nd_opts_src_lladdr nd_opt_array[ND_OPT_SOURCE_LL_ADDR]···259255 if (ndopts->nd_opt_array[nd_opt->nd_opt_type] == 0)260256 ndopts->nd_opt_array[nd_opt->nd_opt_type] = nd_opt;261257 break;258258+#ifdef CONFIG_IPV6_ROUTE_INFO259259+ case ND_OPT_ROUTE_INFO:260260+ ndopts->nd_opts_ri_end = nd_opt;261261+ if (!ndopts->nd_opts_ri)262262+ ndopts->nd_opts_ri = nd_opt;263263+ break;264264+#endif262265 default:263266 /*264267 * Unknown options must be silently ignored,···12121201 NEIGH_UPDATE_F_OVERRIDE_ISROUTER|12131202 NEIGH_UPDATE_F_ISROUTER);12141203 }12041204+12051205+#ifdef CONFIG_IPV6_ROUTE_INFO12061206+ if (ndopts.nd_opts_ri) {12071207+ struct nd_opt_hdr *p;12081208+ for (p = ndopts.nd_opts_ri;12091209+ p;12101210+ p = ndisc_next_option(p, ndopts.nd_opts_ri_end)) {12111211+ rt6_route_rcv(skb->dev, (u8*)p, (p->nd_opt_len) << 3,12121212+ &skb->nh.ipv6h->saddr);12131213+ }12141214+ }12151215+#endif1215121612161217 if (in6_dev->cnf.accept_ra_pinfo && ndopts.nd_opts_pi) {12171218 struct nd_opt_hdr *p;