This patch combined with an corresponding kernel patch makes it possible to route link-local addresses which, in practice, means DHCPv6, RA, RS are now functional.
Signed-off-by: Michal Kazior <michal.kaz...@tieto.com> --- main.c | 3 +++ route.c | 22 ++++++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/main.c b/main.c index e1d1dc997b6f..30906b2df2e9 100644 --- a/main.c +++ b/main.c @@ -1341,6 +1341,9 @@ static int usage(const char *progname) " -P Disable DHCP options parsing\n" " -L <ipaddr> Enable local access using <ipaddr> as source address\n" " -6 Enable IPv6 support\n" +#ifdef RTAX_FEATURE_XFACE + "IPv6 link-local routing capability is compiled in.\n" +#endif "\n", progname); return -1; diff --git a/route.c b/route.c index fc15e9945aaf..05d8cee18214 100644 --- a/route.c +++ b/route.c @@ -191,6 +191,13 @@ rtnl_route_request(struct relayd_interface *rif, struct relayd_host *host, struct rtattr rta; int ifindex; } __packed dev; + struct { + struct rtattr rta; + struct { + struct rtattr rta; + int val; + } __packed features; + } __packed metrics; union { struct rtnl_addr4 addr4[3]; struct rtnl_addr6 addr6[3]; @@ -209,6 +216,21 @@ rtnl_route_request(struct relayd_interface *rif, struct relayd_host *host, .rta_type = RTA_OIF, .rta_len = sizeof(req.dev), }, + .metrics = { + .rta = { + .rta_type = RTA_METRICS, + .rta_len = sizeof(req.metrics), + }, + .features = { + .rta = { + .rta_type = RTAX_FEATURES, + .rta_len = sizeof(req.metrics.features), + }, +#ifdef RTAX_FEATURE_XFACE + .val = RTAX_FEATURE_XFACE, +#endif + }, + }, }; int pktlen = sizeof(req) - sizeof(req.addrs); void *addrs = &req.addrs; -- 2.1.4 _______________________________________________ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel