Skip to content

Commit

Permalink
Fix netif_set_mtu for Solaris
Browse files Browse the repository at this point in the history
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 <msl0000023508@gmail.com>
  • Loading branch information
Low-power committed May 27, 2019
1 parent 5c765a6 commit 16e5b2f
Showing 1 changed file with 2 additions and 2 deletions.
4 changes: 2 additions & 2 deletions pppd/sys-solaris.c
Expand Up @@ -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);
}
Expand All @@ -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);
Expand Down

0 comments on commit 16e5b2f

Please sign in to comment.