openl2tp-1.4

Tagged:

ftp://ftp.openl2tp.org/releases/openl2tp-1.4

V1.4, 27-MAY-2008

Fix a bug in the parsing of some parameters of config files. Previous
versions limited the characters that could be used in string values
such that parameters that were filenames containing the / character
lead to parse errors. The parser is now more flexible about the
characters that it allows in string values.

Revert a change made in 1.0 to do with L2TP Hello message
generation. Prior to 1.0, we only sent Hello packets if no L2TP
control _or_ data packets passed over the tunnel during the Hello
timeout period, but this was changed to unconditionally send
Hellos. It turns out that the L2TPv3 spec (Openl2tp is currently
L2TPv2) specifies the behaviour that we had prior to 1.0. The new spec
says that the L2TPv2 spec was misinterpreted by several vendors and
explicitely calls out that all L2TP implementations should check for
both control and data activity before sending a Hello. This avoids
possible Hello timeouts when under extreme load conditions, where
Hello messages might be swamped by data traffic.

Don't create the tunnel PPPoX socket until the tunnel is up. (Session
PPPoX sockets are unchanged.) We previously created the tunnel socket
when the tunnel instance was created, before the peer tunnel id was
known. This change means that the actual peer tunnel id so can be
passed down to the kernel when the connect() call is made.

Update the ipsec plugin to use absolute paths to the ipsec
utilities. This avoids problems when the server runs somewhere other
than / (typically when run in the foreground for debugging).

Change GNU-specific __FUNCTION__ strings in the source code to
__func__ since the former is now deprecated. This change does not
alter the generated code.

Change the structure of a struct l2tp_packet to store a struct iovec
in the structure rather than using our own struct
l2tp_packet_buffer. This avoids allocating a struct iovec when
building the struct msghdr for sendmsg() calls. It also avoids
converting from one struct format to another and is therefore more
efficient. There are no externally visible differences as a result of
this change.

Fix the no_ppp=yes parameter of session and session profiles. A change
in version 1.2 broke this feature such that sessions failed whenever
this parameter was set.