View | Details | Raw Unified | Return to bug 229432
Collapse All | Expand All

(-)sbin/dhclient/dispatch.c (-3 / +15 lines)
Lines 545-561 interface_set_mtu_priv(char *ifname, u_i Link Here
545
{
545
{
546
	struct ifreq ifr;
546
	struct ifreq ifr;
547
	int sock;
547
	int sock;
548
	u_int16_t old_mtu;
548
549
549
	if ((sock = socket(AF_INET, SOCK_DGRAM, 0)) == -1)
550
	if ((sock = socket(AF_INET, SOCK_DGRAM, 0)) == -1)
550
		error("Can't create socket");
551
		error("Can't create socket");
551
552
552
	memset(&ifr, 0, sizeof(ifr));
553
	memset(&ifr, 0, sizeof(ifr));
554
	old_mtu = 0;
553
555
554
	strlcpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
556
	strlcpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
555
	ifr.ifr_mtu = mtu;
556
557
557
	if (ioctl(sock, SIOCSIFMTU, &ifr) == -1)
558
	if (ioctl(sock, SIOCGIFMTU, (caddr_t)&ifr) == -1)
558
		warning("SIOCSIFMTU failed (%d): %s", mtu,
559
		warning("SIOCGIFMTU failed (%s): %s", ifname,
559
			strerror(errno));
560
			strerror(errno));
561
	else
562
		old_mtu = ifr.ifr_mtu;
563
564
	if (mtu != old_mtu) {	
565
		ifr.ifr_mtu = mtu;
566
567
		if (ioctl(sock, SIOCSIFMTU, &ifr) == -1)
568
			warning("SIOCSIFMTU failed (%d): %s", mtu,
569
				strerror(errno));
570
	}
571
560
	close(sock);
572
	close(sock);
561
}
573
}

Return to bug 229432