From: Roy Marples Date: Tue, 28 Jul 2015 21:32:13 +0000 (+0000) Subject: Extract the route MTU for Linux. X-Git-Tag: v6.9.2~21 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9d5e7dff51b6ecd34e8ce8754e3b8a4bbf3d98c0;p=thirdparty%2Fdhcpcd.git Extract the route MTU for Linux. --- diff --git a/if-linux.c b/if-linux.c index 727c2c94..e5340b97 100644 --- a/if-linux.c +++ b/if-linux.c @@ -437,7 +437,25 @@ if_copyrt(struct dhcpcd_ctx *ctx, struct rt *rt, struct nlmsghdr *nlm) case RTA_PRIORITY: rt->metric = *(unsigned int *)RTA_DATA(rta); break; + case RTA_METRICS: + { + struct rtattr *r2; + size_t l2; + + l2 = rta->rta_len; + r2 = (struct rtattr *)RTA_DATA(rta); + while (RTA_OK(r2, l2)) { + switch (r2->rta_type) { + case RTAX_MTU: + rt->mtu = *(unsigned int *)RTA_DATA(r2); + break; + } + r2 = RTA_NEXT(r2, l2); + } + break; + } } + rta = RTA_NEXT(rta, len); } @@ -498,6 +516,23 @@ if_copyrt6(struct dhcpcd_ctx *ctx, struct rt6 *rt, struct nlmsghdr *nlm) case RTA_PRIORITY: rt->metric = *(unsigned int *)RTA_DATA(rta); break; + case RTA_METRICS: + { + struct rtattr *r2; + size_t l2; + + l2 = rta->rta_len; + r2 = (struct rtattr *)RTA_DATA(rta); + while (RTA_OK(r2, l2)) { + switch (r2->rta_type) { + case RTAX_MTU: + rt->mtu = *(unsigned int *)RTA_DATA(r2); + break; + } + r2 = RTA_NEXT(r2, l2); + } + break; + } } rta = RTA_NEXT(rta, len); }