fix session MRU, tunnel MTU
This commit is contained in:
parent
225f5be34c
commit
31e24f76ce
4 changed files with 14 additions and 9 deletions
4
Changes
4
Changes
|
|
@ -1,7 +1,9 @@
|
||||||
* Fri Dec 16 2005 Brendan O'Dea <bod@optus.net> 2.1.15
|
* Mon Dec 19 2005 Brendan O'Dea <bod@optus.net> 2.1.15
|
||||||
- Drop backtrace.
|
- Drop backtrace.
|
||||||
- Reduce logging of LCP EchoReply packets.
|
- Reduce logging of LCP EchoReply packets.
|
||||||
- Break LCP configure loop with shutdown.
|
- Break LCP configure loop with shutdown.
|
||||||
|
- Limit value of MRU of 1492 (rfc2516).
|
||||||
|
- Tun MTU should be MRU (not MRU+4).
|
||||||
|
|
||||||
* Fri Dec 9 2005 Brendan O'Dea <bod@optus.net> 2.1.14
|
* Fri Dec 9 2005 Brendan O'Dea <bod@optus.net> 2.1.14
|
||||||
- Run PLUGIN_RADIUS_ACCOUNT for Start records.
|
- Run PLUGIN_RADIUS_ACCOUNT for Start records.
|
||||||
|
|
|
||||||
13
l2tpns.c
13
l2tpns.c
|
|
@ -4,7 +4,7 @@
|
||||||
// Copyright (c) 2002 FireBrick (Andrews & Arnold Ltd / Watchfront Ltd) - GPL licenced
|
// Copyright (c) 2002 FireBrick (Andrews & Arnold Ltd / Watchfront Ltd) - GPL licenced
|
||||||
// vim: sw=8 ts=8
|
// vim: sw=8 ts=8
|
||||||
|
|
||||||
char const *cvs_id_l2tpns = "$Id: l2tpns.c,v 1.152 2005/12/14 02:19:15 bodea Exp $";
|
char const *cvs_id_l2tpns = "$Id: l2tpns.c,v 1.153 2005/12/19 06:08:42 bodea Exp $";
|
||||||
|
|
||||||
#include <arpa/inet.h>
|
#include <arpa/inet.h>
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
|
@ -554,8 +554,8 @@ static void inittun(void)
|
||||||
LOG(0, 0, 0, "Error setting tun queue length: %s\n", strerror(errno));
|
LOG(0, 0, 0, "Error setting tun queue length: %s\n", strerror(errno));
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
/* set MTU to modem MRU + 4 (tun header) */
|
/* set MTU to modem MRU */
|
||||||
ifr.ifr_mtu = MRU + 4;
|
ifr.ifr_mtu = MRU;
|
||||||
if (ioctl(ifrfd, SIOCSIFMTU, (void *) &ifr) < 0)
|
if (ioctl(ifrfd, SIOCSIFMTU, (void *) &ifr) < 0)
|
||||||
{
|
{
|
||||||
LOG(0, 0, 0, "Error setting tun MTU: %s\n", strerror(errno));
|
LOG(0, 0, 0, "Error setting tun MTU: %s\n", strerror(errno));
|
||||||
|
|
@ -2463,7 +2463,7 @@ void processudp(uint8_t *buf, int len, struct sockaddr_in *addr)
|
||||||
if (amagic == 0) amagic = time_now;
|
if (amagic == 0) amagic = time_now;
|
||||||
session[s].magic = amagic; // set magic number
|
session[s].magic = amagic; // set magic number
|
||||||
session[s].flags = aflags; // set flags received
|
session[s].flags = aflags; // set flags received
|
||||||
session[s].mru = PPPMTU; // default
|
session[s].mru = PPPoE_MRU; // default
|
||||||
controlnull(t); // ack
|
controlnull(t); // ack
|
||||||
|
|
||||||
// start LCP
|
// start LCP
|
||||||
|
|
@ -4295,12 +4295,15 @@ static void update_config()
|
||||||
#define L2TP_HDRS (20+8+6+4) // L2TP data encaptulation: ip + udp + l2tp (data) + ppp (inc hdlc)
|
#define L2TP_HDRS (20+8+6+4) // L2TP data encaptulation: ip + udp + l2tp (data) + ppp (inc hdlc)
|
||||||
#define TCP_HDRS (20+20) // TCP encapsulation: ip + tcp
|
#define TCP_HDRS (20+20) // TCP encapsulation: ip + tcp
|
||||||
|
|
||||||
if (config->l2tp_mtu <= 0) config->l2tp_mtu = PPPMTU;
|
if (config->l2tp_mtu <= 0) config->l2tp_mtu = 1500; // ethernet default
|
||||||
else if (config->l2tp_mtu < MINMTU) config->l2tp_mtu = MINMTU;
|
else if (config->l2tp_mtu < MINMTU) config->l2tp_mtu = MINMTU;
|
||||||
else if (config->l2tp_mtu > MAXMTU) config->l2tp_mtu = MAXMTU;
|
else if (config->l2tp_mtu > MAXMTU) config->l2tp_mtu = MAXMTU;
|
||||||
|
|
||||||
// reset MRU/MSS globals
|
// reset MRU/MSS globals
|
||||||
MRU = config->l2tp_mtu - L2TP_HDRS;
|
MRU = config->l2tp_mtu - L2TP_HDRS;
|
||||||
|
if (MRU > PPPoE_MRU)
|
||||||
|
MRU = PPPoE_MRU;
|
||||||
|
|
||||||
MSS = MRU - TCP_HDRS;
|
MSS = MRU - TCP_HDRS;
|
||||||
|
|
||||||
// Update radius
|
// Update radius
|
||||||
|
|
|
||||||
4
l2tpns.h
4
l2tpns.h
|
|
@ -1,5 +1,5 @@
|
||||||
// L2TPNS Global Stuff
|
// L2TPNS Global Stuff
|
||||||
// $Id: l2tpns.h,v 1.107 2005/12/14 02:19:15 bodea Exp $
|
// $Id: l2tpns.h,v 1.108 2005/12/19 06:08:43 bodea Exp $
|
||||||
|
|
||||||
#ifndef __L2TPNS_H__
|
#ifndef __L2TPNS_H__
|
||||||
#define __L2TPNS_H__
|
#define __L2TPNS_H__
|
||||||
|
|
@ -31,8 +31,8 @@
|
||||||
|
|
||||||
#define MAXCONTROL 1000 // max length control message we ever send...
|
#define MAXCONTROL 1000 // max length control message we ever send...
|
||||||
#define MINMTU 576 // minimum recommended MTU (rfc1063)
|
#define MINMTU 576 // minimum recommended MTU (rfc1063)
|
||||||
#define PPPMTU 1500 // default PPP MTU
|
|
||||||
#define MAXMTU 2600 // arbitrary maximum MTU
|
#define MAXMTU 2600 // arbitrary maximum MTU
|
||||||
|
#define PPPoE_MRU 1492 // maximum PPPoE MRU (rfc2516: 1500 less PPPoE header (6) and PPP protocol ID (2))
|
||||||
#define MAXETHER (MAXMTU+18) // max packet we try sending to tun
|
#define MAXETHER (MAXMTU+18) // max packet we try sending to tun
|
||||||
#define MAXTEL 96 // telephone number
|
#define MAXTEL 96 // telephone number
|
||||||
#define MAXUSER 128 // username
|
#define MAXUSER 128 // username
|
||||||
|
|
|
||||||
|
|
@ -43,5 +43,5 @@ rm -rf %{buildroot}
|
||||||
%attr(644,root,root) /usr/share/man/man[58]/*
|
%attr(644,root,root) /usr/share/man/man[58]/*
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
* Fri Dec 16 2005 Brendan O'Dea <bod@optus.net> 2.1.15-1
|
* Mon Dec 19 2005 Brendan O'Dea <bod@optus.net> 2.1.15-1
|
||||||
- 2.1.15 release, see /usr/share/doc/l2tpns-2.1.15/Changes
|
- 2.1.15 release, see /usr/share/doc/l2tpns-2.1.15/Changes
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue