set MTU on tunnel interface so the kernel will re-fragment large packets to within MRU

This commit is contained in:
bodea 2005-11-17 07:35:35 +00:00
parent 2dd8d794c9
commit 4bbf91e608
4 changed files with 19 additions and 6 deletions

View file

@ -4,7 +4,7 @@
// Copyright (c) 2002 FireBrick (Andrews & Arnold Ltd / Watchfront Ltd) - GPL licenced
// vim: sw=8 ts=8
char const *cvs_id_l2tpns = "$Id: l2tpns.c,v 1.149 2005/11/17 06:46:24 bodea Exp $";
char const *cvs_id_l2tpns = "$Id: l2tpns.c,v 1.150 2005/11/17 07:35:35 bodea Exp $";
#include <arpa/inet.h>
#include <assert.h>
@ -554,6 +554,13 @@ static void inittun(void)
LOG(0, 0, 0, "Error setting tun queue length: %s\n", strerror(errno));
exit(1);
}
/* set MTU to modem MRU + 4 (tun header) */
ifr.ifr_mtu = MRU + 4;
if (ioctl(ifrfd, SIOCSIFMTU, (void *) &ifr) < 0)
{
LOG(0, 0, 0, "Error setting tun MTU: %s\n", strerror(errno));
exit(1);
}
ifr.ifr_flags = IFF_UP;
if (ioctl(ifrfd, SIOCSIFFLAGS, (void *) &ifr) < 0)
{