From: WHR Date: Tue, 10 Jul 2018 01:10:24 +0000 (+0800) Subject: Fix netif_set_mtu for Solaris X-Git-Tag: ppp-2.4.9~39^2 X-Git-Url: http://git.ozlabs.org/?p=ppp.git;a=commitdiff_plain;h=16e5b2f669ed3fc894db376fcc35f4420c19643b Fix netif_set_mtu for Solaris The MTU setting for PPP interface is originally applied in function ppp_send_config, this funcion sets a static variable 'link_mtu' from the function argument 'mtu', then apply it to interface later using ioctl(2). However during commit cffe80d, this ioctl(2) calling code was moved into a separate function netif_set_mtu, with variable name 'link_mtu' unchanged. This new function netif_set_mtu is intended to apply the MTU for interface, from the passed argument 'mtu'; and it is called before ppp_send_config, so 'link_mtu' won't get updated to the correct value when ioctl(2) is called; the MTU value should be taken from argument 'mtu' instead of 'link_mtu'. Signed-off-by: WHR --- diff --git a/pppd/sys-solaris.c b/pppd/sys-solaris.c index 93d9033..df9d9ac 100644 --- a/pppd/sys-solaris.c +++ b/pppd/sys-solaris.c @@ -1513,7 +1513,7 @@ netif_set_mtu(unit, mtu) memset(&ifr, 0, sizeof(ifr)); strlcpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name)); - ifr.ifr_metric = link_mtu; + ifr.ifr_metric = mtu; if (ioctl(ipfd, SIOCSIFMTU, &ifr) < 0) { error("Couldn't set IP MTU (%s): %m", ifr.ifr_name); } @@ -1525,7 +1525,7 @@ netif_set_mtu(unit, mtu) memset(&lifr, 0, sizeof(lifr)); strlcpy(lifr.lifr_name, ifname, sizeof(lifr.lifr_name)); - lifr.lifr_mtu = link_mtu; + lifr.lifr_mtu = mtu; if (ioctl(fd, SIOCSLIFMTU, &lifr) < 0) { close(fd); error("Couldn't set IPv6 MTU (%s): %m", ifr.ifr_name);