Merge branch 'master' into epel8

i8ce
Paul Wouters 5 years ago
commit 7eb1f02788

16
.gitignore vendored

@ -0,0 +1,16 @@
xl2tpd-1.1.06.tar.gz
xl2tpd-1.1.07.tar.gz
xl2tpd-1.1.08.tar.gz
xl2tpd-1.1.09.tar.gz
xl2tpd-1.1.11.tar.gz
xl2tpd-1.1.12.tar.gz
xl2tpd-1.2.0.tar.gz
xl2tpd-1.2.4.tar.gz
xl2tpd-1.2.5.tar.gz
xl2tpd-1.2.7.tar.gz
xl2tpd-1.2.8.tar.gz
xl2tpd-1.3.0.tar.gz
xl2tpd-1.3.1.tar.gz
/xl2tpd-5619e1771048e74b729804e8602f409af0f3faea.tar.gz
/xl2tpd-1.3.8.tar.gz
/xl2tpd-1.3.14.tar.gz

@ -1,21 +0,0 @@
# Makefile for source rpm: xl2tpd
# $Id$
NAME := xl2tpd
SPECFILE = $(firstword $(wildcard *.spec))
define find-makefile-common
for d in common ../common ../../common ; do if [ -f $$d/Makefile.common ] ; then if [ -f $$d/CVS/Root -a -w $$/Makefile.common ] ; then cd $$d ; cvs -Q update ; fi ; echo "$$d/Makefile.common" ; break ; fi ; done
endef
MAKEFILE_COMMON := $(shell $(find-makefile-common))
ifeq ($(MAKEFILE_COMMON),)
# attept a checkout
define checkout-makefile-common
test -f CVS/Root && { cvs -Q -d $$(cat CVS/Root) checkout common && echo "common/Makefile.common" ; } || { echo "ERROR: I can't figure out how to checkout the 'common' module." ; exit -1 ; } >&2
endef
MAKEFILE_COMMON := $(shell $(checkout-makefile-common))
endif
include $(MAKEFILE_COMMON)

@ -0,0 +1 @@
SHA512 (xl2tpd-1.3.14.tar.gz) = a0c007b5a2d45f4c73d8651c8ca2525cd46b779e4b8cfabebd2c7905770d128f25edea5665c25828c53788083fda73896faccb49f4da9a38a2042b5f957a3327

@ -0,0 +1 @@
D /run/xl2tpd 0755 root root -

@ -0,0 +1,31 @@
diff -Naur xl2tpd-1.3.14-orig/examples/ppp-options.xl2tpd xl2tpd-1.3.14/examples/ppp-options.xl2tpd
--- xl2tpd-1.3.14-orig/examples/ppp-options.xl2tpd 2019-04-17 12:23:39.000000000 -0400
+++ xl2tpd-1.3.14/examples/ppp-options.xl2tpd 2019-09-24 20:47:35.056615746 -0400
@@ -1,9 +1,11 @@
ipcp-accept-local
ipcp-accept-remote
-ms-dns 192.168.1.1
-ms-dns 192.168.1.3
-ms-wins 192.168.1.2
-ms-wins 192.168.1.4
+ms-dns 8.8.8.8
+ms-dns 1.1.1.1
+# ms-dns 192.168.1.1
+# ms-dns 192.168.1.3
+# ms-wins 192.168.1.2
+# ms-wins 192.168.1.4
noccp
auth
crtscts
@@ -15,3 +17,11 @@
lock
proxyarp
connect-delay 5000
+# To allow authentication against a Windows domain EXAMPLE, and require the
+# user to be in a group "VPN Users". Requires the samba-winbind package
+# require-mschap-v2
+# plugin winbind.so
+# ntlm_auth-helper '/usr/bin/ntlm_auth --helper-protocol=ntlm-server-1 --require-membership-of="EXAMPLE\\VPN Users"'
+# You need to join the domain on the server, for example using samba:
+# http://rootmanager.com/ubuntu-ipsec-l2tp-windows-domain-auth/setting-up-openswan-xl2tpd-with-native-windows-clients-lucid.html
+

@ -0,0 +1,18 @@
diff -Naur xl2tpd-1.3.14-orig/xl2tpd.c xl2tpd-1.3.14/xl2tpd.c
--- xl2tpd-1.3.14-orig/xl2tpd.c 2019-04-17 12:23:39.000000000 -0400
+++ xl2tpd-1.3.14/xl2tpd.c 2019-09-24 21:48:49.234308626 -0400
@@ -277,14 +277,7 @@
* OK...pppd died, we can go ahead and close the pty for
* it
*/
-#ifdef USE_KERNEL
- if (!kernel_support) {
-
-#endif
close (c->fd);
-#ifdef USE_KERNEL
- }
-#endif
c->fd = -1;
/*
* terminate tunnel and call loops, returning to the

@ -0,0 +1,468 @@
diff -Naur xl2tpd-1.3.14-orig/aaa.c xl2tpd-1.3.14/aaa.c
--- xl2tpd-1.3.14-orig/aaa.c 2019-04-17 12:23:39.000000000 -0400
+++ xl2tpd-1.3.14/aaa.c 2019-09-24 20:51:39.478952494 -0400
@@ -21,6 +21,8 @@
#include <errno.h>
#include "l2tp.h"
+#include <openssl/md5.h>
+
extern void bufferDump (char *, int);
/* FIXME: Accounting? */
@@ -273,11 +275,11 @@
#endif
memset (chal->response, 0, MD_SIG_SIZE);
- MD5Init (&chal->md5);
- MD5Update (&chal->md5, &chal->ss, 1);
- MD5Update (&chal->md5, chal->secret, strlen ((char *)chal->secret));
- MD5Update (&chal->md5, chal->challenge, chal->chal_len);
- MD5Final (chal->response, &chal->md5);
+ MD5_Init (&chal->md5);
+ MD5_Update (&chal->md5, &chal->ss, 1);
+ MD5_Update (&chal->md5, chal->secret, strlen ((char *)chal->secret));
+ MD5_Update (&chal->md5, chal->challenge, chal->chal_len);
+ MD5_Final (chal->response, &chal->md5);
#ifdef DEBUG_AUTH
l2tp_log (LOG_DEBUG, "response is %X%X%X%X to '%s' and %X%X%X%X, %d\n",
*((int *) &chal->response[0]),
@@ -392,12 +394,12 @@
buf->len += length;
/* Back to the beginning of real data, including the original length AVP */
- MD5Init (&t->chal_them.md5);
- MD5Update (&t->chal_them.md5, (void *) &attr, 2);
- MD5Update (&t->chal_them.md5, t->chal_them.secret,
+ MD5_Init (&t->chal_them.md5);
+ MD5_Update (&t->chal_them.md5, (void *) &attr, 2);
+ MD5_Update (&t->chal_them.md5, t->chal_them.secret,
strlen ((char *)t->chal_them.secret));
- MD5Update (&t->chal_them.md5, t->chal_them.vector, VECTOR_SIZE);
- MD5Final (digest, &t->chal_them.md5);
+ MD5_Update (&t->chal_them.md5, t->chal_them.vector, VECTOR_SIZE);
+ MD5_Final (digest, &t->chal_them.md5);
/* Though not a "MUST" in the spec, our subformat length is always a multiple of 16 */
ptr = ((unsigned char *) new_hdr) + sizeof (struct avp_hdr);
@@ -421,11 +423,11 @@
#endif
if (ptr < end)
{
- MD5Init (&t->chal_them.md5);
- MD5Update (&t->chal_them.md5, t->chal_them.secret,
+ MD5_Init (&t->chal_them.md5);
+ MD5_Update (&t->chal_them.md5, t->chal_them.secret,
strlen ((char *)t->chal_them.secret));
- MD5Update (&t->chal_them.md5, previous_segment, MD_SIG_SIZE);
- MD5Final (digest, &t->chal_them.md5);
+ MD5_Update (&t->chal_them.md5, previous_segment, MD_SIG_SIZE);
+ MD5_Final (digest, &t->chal_them.md5);
}
previous_segment = ptr;
}
@@ -458,12 +460,12 @@
that it will be padded to a 16 byte boundary, so we
have to be more careful than when encrypting */
attr = ntohs (old_hdr->attr);
- MD5Init (&t->chal_us.md5);
- MD5Update (&t->chal_us.md5, (void *) &attr, 2);
- MD5Update (&t->chal_us.md5, t->chal_us.secret,
+ MD5_Init (&t->chal_us.md5);
+ MD5_Update (&t->chal_us.md5, (void *) &attr, 2);
+ MD5_Update (&t->chal_us.md5, t->chal_us.secret,
strlen ((char *)t->chal_us.secret));
- MD5Update (&t->chal_us.md5, t->chal_us.vector, t->chal_us.vector_len);
- MD5Final (digest, &t->chal_us.md5);
+ MD5_Update (&t->chal_us.md5, t->chal_us.vector, t->chal_us.vector_len);
+ MD5_Final (digest, &t->chal_us.md5);
#ifdef DEBUG_HIDDEN
l2tp_log (LOG_DEBUG, "attribute is %d and challenge is: ", attr);
print_challenge (&t->chal_us);
@@ -474,11 +476,11 @@
{
if (cnt >= MD_SIG_SIZE)
{
- MD5Init (&t->chal_us.md5);
- MD5Update (&t->chal_us.md5, t->chal_us.secret,
+ MD5_Init (&t->chal_us.md5);
+ MD5_Update (&t->chal_us.md5, t->chal_us.secret,
strlen ((char *)t->chal_us.secret));
- MD5Update (&t->chal_us.md5, saved_segment, MD_SIG_SIZE);
- MD5Final (digest, &t->chal_us.md5);
+ MD5_Update (&t->chal_us.md5, saved_segment, MD_SIG_SIZE);
+ MD5_Final (digest, &t->chal_us.md5);
cnt = 0;
}
/* at the beginning of each segment, we save the current segment (16 octets or less) of cipher
diff -Naur xl2tpd-1.3.14-orig/aaa.h xl2tpd-1.3.14/aaa.h
--- xl2tpd-1.3.14-orig/aaa.h 2019-04-17 12:23:39.000000000 -0400
+++ xl2tpd-1.3.14/aaa.h 2019-09-24 20:52:14.179531612 -0400
@@ -15,7 +15,7 @@
#ifndef _AAA_H
#define _AAA_H
-#include "md5.h"
+#include <openssl/md5.h>
#define ADDR_HASH_SIZE 256
#define MD_SIG_SIZE 16
@@ -34,7 +34,7 @@
struct challenge
{
- struct MD5Context md5;
+ MD5_CTX md5;
unsigned char ss; /* State we're sending in */
unsigned char secret[MAXSTRLEN]; /* The shared secret */
unsigned char *challenge; /* The original challenge */
diff -Naur xl2tpd-1.3.14-orig/Makefile xl2tpd-1.3.14/Makefile
--- xl2tpd-1.3.14-orig/Makefile 2019-04-17 12:23:39.000000000 -0400
+++ xl2tpd-1.3.14/Makefile 2019-09-24 20:53:02.420020643 -0400
@@ -101,8 +101,8 @@
IPFLAGS?= -DIP_ALLOCATION
CFLAGS+= $(DFLAGS) -Os -Wall -Wextra -DSANITY $(OSFLAGS) $(IPFLAGS)
-HDRS=l2tp.h avp.h misc.h control.h call.h scheduler.h file.h aaa.h md5.h
-OBJS=xl2tpd.o pty.o misc.o control.o avp.o call.o network.o avpsend.o scheduler.o file.o aaa.o md5.o
+HDRS=l2tp.h avp.h misc.h control.h call.h scheduler.h file.h aaa.h
+OBJS=xl2tpd.o pty.o misc.o control.o avp.o call.o network.o avpsend.o scheduler.o file.o aaa.o
SRCS=${OBJS:.o=.c} ${HDRS}
CONTROL_SRCS=xl2tpd-control.c
#LIBS= $(OSLIBS) # -lefence # efence for malloc checking
@@ -121,7 +121,7 @@
rm -f $(OBJS) $(EXEC) pfc.o pfc $(CONTROL_EXEC)
$(EXEC): $(OBJS) $(HDRS)
- $(CC) $(LDFLAGS) -o $@ $(OBJS) $(LDLIBS)
+ $(CC) $(LDFLAGS) -o $@ $(OBJS) -lcrypto $(LDLIBS)
$(CONTROL_EXEC): $(CONTROL_SRCS)
$(CC) $(CFLAGS) $(LDFLAGS) $(CONTROL_SRCS) -o $@
diff -Naur xl2tpd-1.3.14-orig/md5.c xl2tpd-1.3.14/md5.c
--- xl2tpd-1.3.14-orig/md5.c 2019-04-17 12:23:39.000000000 -0400
+++ xl2tpd-1.3.14/md5.c 1969-12-31 19:00:00.000000000 -0500
@@ -1,274 +0,0 @@
-#ifdef FREEBSD
-# include <machine/endian.h>
-#elif defined(OPENBSD) || defined(NETBSD)
-# define __BSD_VISIBLE 0
-# include <machine/endian.h>
-#elif defined(LINUX)
-# include <endian.h>
-#elif defined(SOLARIS)
-# include <sys/isa_defs.h>
-#endif
-#if __BYTE_ORDER == __BIG_ENDIAN
-#define HIGHFIRST 1
-#endif
-
-/*
- * This code implements the MD5 message-digest algorithm.
- * The algorithm is due to Ron Rivest. This code was
- * written by Colin Plumb in 1993, no copyright is claimed.
- * This code is in the public domain; do with it what you wish.
- *
- * Equivalent code is available from RSA Data Security, Inc.
- * This code has been tested against that, and is equivalent,
- * except that you don't need to include two pages of legalese
- * with every copy.
- *
- * To compute the message digest of a chunk of bytes, declare an
- * MD5Context structure, pass it to MD5Init, call MD5Update as
- * needed on buffers full of bytes, and then call MD5Final, which
- * will fill a supplied 16-byte array with the digest.
- */
-#include <string.h> /* for memcpy() */
-#include "md5.h"
-
-#ifndef HIGHFIRST
-#define byteReverse(buf, len) /* Nothing */
-#else
-void byteReverse (unsigned char *buf, unsigned longs);
-
-#ifndef ASM_MD5
-/*
- * Note: this code is harmless on little-endian machines.
- */
-void byteReverse (unsigned char *buf, unsigned longs)
-{
- uint32 t;
- do
- {
- t = (uint32) ((unsigned) buf[3] << 8 | buf[2]) << 16 |
- ((unsigned) buf[1] << 8 | buf[0]);
- *(uint32 *) buf = t;
- buf += 4;
- }
- while (--longs);
-}
-#endif
-#endif
-
-/*
- * Start MD5 accumulation. Set bit count to 0 and buffer to mysterious
- * initialization constants.
- */
-void MD5Init (struct MD5Context *ctx)
-{
- ctx->buf[0] = 0x67452301;
- ctx->buf[1] = 0xefcdab89;
- ctx->buf[2] = 0x98badcfe;
- ctx->buf[3] = 0x10325476;
-
- ctx->bits[0] = 0;
- ctx->bits[1] = 0;
-}
-
-/*
- * Update context to reflect the concatenation of another buffer full
- * of bytes.
- */
-void MD5Update (struct MD5Context *ctx, unsigned char const *buf,
- unsigned len)
-{
- uint32 t;
-
- /* Update bitcount */
-
- t = ctx->bits[0];
- if ((ctx->bits[0] = t + ((uint32) len << 3)) < t)
- ctx->bits[1]++; /* Carry from low to high */
- ctx->bits[1] += len >> 29;
-
- t = (t >> 3) & 0x3f; /* Bytes already in shsInfo->data */
-
- /* Handle any leading odd-sized chunks */
-
- if (t)
- {
- unsigned char *p = (unsigned char *) ctx->in + t;
-
- t = 64 - t;
- if (len < t)
- {
- memcpy (p, buf, len);
- return;
- }
- memcpy (p, buf, t);
- byteReverse (ctx->in, 16);
- MD5Transform (ctx->buf, (uint32 *) ctx->in);
- buf += t;
- len -= t;
- }
- /* Process data in 64-byte chunks */
-
- while (len >= 64)
- {
- memcpy (ctx->in, buf, 64);
- byteReverse (ctx->in, 16);
- MD5Transform (ctx->buf, (uint32 *) ctx->in);
- buf += 64;
- len -= 64;
- }
-
- /* Handle any remaining bytes of data. */
-
- memcpy (ctx->in, buf, len);
-}
-
-/*
- * Final wrapup - pad to 64-byte boundary with the bit pattern
- * 1 0* (64-bit count of bits processed, MSB-first)
- */
-void MD5Final (unsigned char digest[16], struct MD5Context *ctx)
-{
- unsigned count;
- unsigned char *p;
-
- /* Compute number of bytes mod 64 */
- count = (ctx->bits[0] >> 3) & 0x3F;
-
- /* Set the first char of padding to 0x80. This is safe since there is
- always at least one byte free */
- p = ctx->in + count;
- *p++ = 0x80;
-
- /* Bytes of padding needed to make 64 bytes */
- count = 64 - 1 - count;
-
- /* Pad out to 56 mod 64 */
- if (count < 8)
- {
- /* Two lots of padding: Pad the first block to 64 bytes */
- memset (p, 0, count);
- byteReverse (ctx->in, 16);
- MD5Transform (ctx->buf, (uint32 *) ctx->in);
-
- /* Now fill the next block with 56 bytes */
- memset (ctx->in, 0, 56);
- }
- else
- {
- /* Pad block to 56 bytes */
- memset (p, 0, count - 8);
- }
- byteReverse (ctx->in, 14);
-
- /* Append length in bits and transform */
- memcpy(ctx->in + 14 * sizeof(uint32), ctx->bits, sizeof(ctx->bits));
-
- MD5Transform (ctx->buf, (uint32 *) ctx->in);
- byteReverse ((unsigned char *) ctx->buf, 4);
- memcpy (digest, ctx->buf, 16);
- memset (ctx, 0, sizeof (*ctx)); /* In case it's sensitive */
-}
-
-#ifndef ASM_MD5
-
-/* The four core functions - F1 is optimized somewhat */
-
-/* #define F1(x, y, z) (x & y | ~x & z) */
-#define F1(x, y, z) (z ^ (x & (y ^ z)))
-#define F2(x, y, z) F1(z, x, y)
-#define F3(x, y, z) (x ^ y ^ z)
-#define F4(x, y, z) (y ^ (x | ~z))
-
-/* This is the central step in the MD5 algorithm. */
-#define MD5STEP(f, w, x, y, z, data, s) \
- ( w += f(x, y, z) + data, w = w<<s | w>>(32-s), w += x )
-
-/*
- * The core of the MD5 algorithm, this alters an existing MD5 hash to
- * reflect the addition of 16 longwords of new data. MD5Update blocks
- * the data and converts bytes into longwords for this routine.
- */
-void MD5Transform (uint32 buf[4], uint32 const in[16])
-{
- register uint32 a, b, c, d;
-
- a = buf[0];
- b = buf[1];
- c = buf[2];
- d = buf[3];
-
- MD5STEP (F1, a, b, c, d, in[0] + 0xd76aa478, 7);
- MD5STEP (F1, d, a, b, c, in[1] + 0xe8c7b756, 12);
- MD5STEP (F1, c, d, a, b, in[2] + 0x242070db, 17);
- MD5STEP (F1, b, c, d, a, in[3] + 0xc1bdceee, 22);
- MD5STEP (F1, a, b, c, d, in[4] + 0xf57c0faf, 7);
- MD5STEP (F1, d, a, b, c, in[5] + 0x4787c62a, 12);
- MD5STEP (F1, c, d, a, b, in[6] + 0xa8304613, 17);
- MD5STEP (F1, b, c, d, a, in[7] + 0xfd469501, 22);
- MD5STEP (F1, a, b, c, d, in[8] + 0x698098d8, 7);
- MD5STEP (F1, d, a, b, c, in[9] + 0x8b44f7af, 12);
- MD5STEP (F1, c, d, a, b, in[10] + 0xffff5bb1, 17);
- MD5STEP (F1, b, c, d, a, in[11] + 0x895cd7be, 22);
- MD5STEP (F1, a, b, c, d, in[12] + 0x6b901122, 7);
- MD5STEP (F1, d, a, b, c, in[13] + 0xfd987193, 12);
- MD5STEP (F1, c, d, a, b, in[14] + 0xa679438e, 17);
- MD5STEP (F1, b, c, d, a, in[15] + 0x49b40821, 22);
-
- MD5STEP (F2, a, b, c, d, in[1] + 0xf61e2562, 5);
- MD5STEP (F2, d, a, b, c, in[6] + 0xc040b340, 9);
- MD5STEP (F2, c, d, a, b, in[11] + 0x265e5a51, 14);
- MD5STEP (F2, b, c, d, a, in[0] + 0xe9b6c7aa, 20);
- MD5STEP (F2, a, b, c, d, in[5] + 0xd62f105d, 5);
- MD5STEP (F2, d, a, b, c, in[10] + 0x02441453, 9);
- MD5STEP (F2, c, d, a, b, in[15] + 0xd8a1e681, 14);
- MD5STEP (F2, b, c, d, a, in[4] + 0xe7d3fbc8, 20);
- MD5STEP (F2, a, b, c, d, in[9] + 0x21e1cde6, 5);
- MD5STEP (F2, d, a, b, c, in[14] + 0xc33707d6, 9);
- MD5STEP (F2, c, d, a, b, in[3] + 0xf4d50d87, 14);
- MD5STEP (F2, b, c, d, a, in[8] + 0x455a14ed, 20);
- MD5STEP (F2, a, b, c, d, in[13] + 0xa9e3e905, 5);
- MD5STEP (F2, d, a, b, c, in[2] + 0xfcefa3f8, 9);
- MD5STEP (F2, c, d, a, b, in[7] + 0x676f02d9, 14);
- MD5STEP (F2, b, c, d, a, in[12] + 0x8d2a4c8a, 20);
-
- MD5STEP (F3, a, b, c, d, in[5] + 0xfffa3942, 4);
- MD5STEP (F3, d, a, b, c, in[8] + 0x8771f681, 11);
- MD5STEP (F3, c, d, a, b, in[11] + 0x6d9d6122, 16);
- MD5STEP (F3, b, c, d, a, in[14] + 0xfde5380c, 23);
- MD5STEP (F3, a, b, c, d, in[1] + 0xa4beea44, 4);
- MD5STEP (F3, d, a, b, c, in[4] + 0x4bdecfa9, 11);
- MD5STEP (F3, c, d, a, b, in[7] + 0xf6bb4b60, 16);
- MD5STEP (F3, b, c, d, a, in[10] + 0xbebfbc70, 23);
- MD5STEP (F3, a, b, c, d, in[13] + 0x289b7ec6, 4);
- MD5STEP (F3, d, a, b, c, in[0] + 0xeaa127fa, 11);
- MD5STEP (F3, c, d, a, b, in[3] + 0xd4ef3085, 16);
- MD5STEP (F3, b, c, d, a, in[6] + 0x04881d05, 23);
- MD5STEP (F3, a, b, c, d, in[9] + 0xd9d4d039, 4);
- MD5STEP (F3, d, a, b, c, in[12] + 0xe6db99e5, 11);
- MD5STEP (F3, c, d, a, b, in[15] + 0x1fa27cf8, 16);
- MD5STEP (F3, b, c, d, a, in[2] + 0xc4ac5665, 23);
-
- MD5STEP (F4, a, b, c, d, in[0] + 0xf4292244, 6);
- MD5STEP (F4, d, a, b, c, in[7] + 0x432aff97, 10);
- MD5STEP (F4, c, d, a, b, in[14] + 0xab9423a7, 15);
- MD5STEP (F4, b, c, d, a, in[5] + 0xfc93a039, 21);
- MD5STEP (F4, a, b, c, d, in[12] + 0x655b59c3, 6);
- MD5STEP (F4, d, a, b, c, in[3] + 0x8f0ccc92, 10);
- MD5STEP (F4, c, d, a, b, in[10] + 0xffeff47d, 15);
- MD5STEP (F4, b, c, d, a, in[1] + 0x85845dd1, 21);
- MD5STEP (F4, a, b, c, d, in[8] + 0x6fa87e4f, 6);
- MD5STEP (F4, d, a, b, c, in[15] + 0xfe2ce6e0, 10);
- MD5STEP (F4, c, d, a, b, in[6] + 0xa3014314, 15);
- MD5STEP (F4, b, c, d, a, in[13] + 0x4e0811a1, 21);
- MD5STEP (F4, a, b, c, d, in[4] + 0xf7537e82, 6);
- MD5STEP (F4, d, a, b, c, in[11] + 0xbd3af235, 10);
- MD5STEP (F4, c, d, a, b, in[2] + 0x2ad7d2bb, 15);
- MD5STEP (F4, b, c, d, a, in[9] + 0xeb86d391, 21);
-
- buf[0] += a;
- buf[1] += b;
- buf[2] += c;
- buf[3] += d;
-}
-
-#endif
diff -Naur xl2tpd-1.3.14-orig/md5.h xl2tpd-1.3.14/md5.h
--- xl2tpd-1.3.14-orig/md5.h 2019-04-17 12:23:39.000000000 -0400
+++ xl2tpd-1.3.14/md5.h 1969-12-31 19:00:00.000000000 -0500
@@ -1,29 +0,0 @@
-#ifndef MD5_H
-#define MD5_H
-
-#ifdef __alpha
-typedef unsigned int uint32;
-#else
-#include <stdint.h>
-typedef uint32_t uint32;
-#endif
-
-struct MD5Context
-{
- uint32 buf[4];
- uint32 bits[2];
- unsigned char in[64];
-};
-
-void MD5Init (struct MD5Context *context);
-void MD5Update (struct MD5Context *context, unsigned char const *buf,
- unsigned len);
-void MD5Final (unsigned char digest[16], struct MD5Context *context);
-void MD5Transform (uint32 buf[4], uint32 const in[16]);
-
-/*
- * This is needed to make RSAREF happy on some MS-DOS compilers.
- */
-typedef struct MD5Context MD5_CTX;
-
-#endif /* !MD5_H */
diff -Naur xl2tpd-1.3.14-orig/xl2tpd.c xl2tpd-1.3.14/xl2tpd.c
--- xl2tpd-1.3.14-orig/xl2tpd.c 2019-04-17 12:23:39.000000000 -0400
+++ xl2tpd-1.3.14/xl2tpd.c 2019-09-24 20:53:50.969512827 -0400
@@ -1643,7 +1643,11 @@
static void usage(void) {
- printf("\nxl2tpd version: %s\n", SERVER_VERSION);
+ printf("\nxl2tpd version: %s\n"
+"This product includes software developed by the OpenSSL Project for use\n"
+"in the OpenSSL Toolkit. (http://www.openssl.org/)\n"
+, SERVER_VERSION);
+
printf("Usage: xl2tpd [-c <config file>] [-s <secret file>] [-p <pid file>]\n"
" [-C <control file>] [-D] [-l] [-q <tos decimal value for control>]\n"
" [-v, --version]\n");

@ -0,0 +1,40 @@
diff -Naur xl2tpd-1.3.6-orig/examples/ppp-options.xl2tpd xl2tpd-1.3.6/examples/ppp-options.xl2tpd
--- xl2tpd-1.3.6-orig/examples/ppp-options.xl2tpd 2014-01-15 15:58:37.000000000 -0500
+++ xl2tpd-1.3.6/examples/ppp-options.xl2tpd 2014-05-12 14:46:24.358653357 -0400
@@ -1,9 +1,10 @@
ipcp-accept-local
ipcp-accept-remote
-ms-dns 192.168.1.1
-ms-dns 192.168.1.3
-ms-wins 192.168.1.2
-ms-wins 192.168.1.4
+ms-dns 8.8.8.8
+# ms-dns 192.168.1.1
+# ms-dns 192.168.1.3
+# ms-wins 192.168.1.2
+# ms-wins 192.168.1.4
noccp
auth
crtscts
@@ -15,3 +16,11 @@
lock
proxyarp
connect-delay 5000
+# To allow authentication against a Windows domain EXAMPLE, and require the
+# user to be in a group "VPN Users". Requires the samba-winbind package
+# require-mschap-v2
+# plugin winbind.so
+# ntlm_auth-helper '/usr/bin/ntlm_auth --helper-protocol=ntlm-server-1 --require-membership-of="EXAMPLE\\VPN Users"'
+# You need to join the domain on the server, for example using samba:
+# http://rootmanager.com/ubuntu-ipsec-l2tp-windows-domain-auth/setting-up-openswan-xl2tpd-with-native-windows-clients-lucid.html
+
diff -Naur xl2tpd-1.3.6-orig/examples/README xl2tpd-1.3.6/examples/README
--- xl2tpd-1.3.6-orig/examples/README 2014-01-15 15:58:37.000000000 -0500
+++ xl2tpd-1.3.6/examples/README 2014-05-12 14:46:59.168476547 -0400
@@ -1,4 +1,4 @@
These are example files for use with xl2tpd.
-Openswan carries config examples for use with l2tp-over-ipsec.
-See http://www.openswan.org/
+xl2tpd is often used in combination with libreswan to offer L2TP/IPsec
+See https://libreswan.org/

@ -0,0 +1,466 @@
diff -Naur xl2tpd-1.3.6-orig/aaa.c xl2tpd-1.3.6/aaa.c
--- xl2tpd-1.3.6-orig/aaa.c 2014-01-15 15:58:37.000000000 -0500
+++ xl2tpd-1.3.6/aaa.c 2014-05-12 15:01:05.936492449 -0400
@@ -21,6 +21,8 @@
#include <errno.h>
#include "l2tp.h"
+#include <openssl/md5.h>
+
extern void bufferDump (char *, int);
/* FIXME: Accounting? */
@@ -273,11 +275,11 @@
#endif
memset (chal->response, 0, MD_SIG_SIZE);
- MD5Init (&chal->md5);
- MD5Update (&chal->md5, &chal->ss, 1);
- MD5Update (&chal->md5, chal->secret, strlen ((char *)chal->secret));
- MD5Update (&chal->md5, chal->challenge, chal->chal_len);
- MD5Final (chal->response, &chal->md5);
+ MD5_Init (&chal->md5);
+ MD5_Update (&chal->md5, &chal->ss, 1);
+ MD5_Update (&chal->md5, chal->secret, strlen ((char *)chal->secret));
+ MD5_Update (&chal->md5, chal->challenge, chal->chal_len);
+ MD5_Final (chal->response, &chal->md5);
#ifdef DEBUG_AUTH
l2tp_log (LOG_DEBUG, "response is %X%X%X%X to '%s' and %X%X%X%X, %d\n",
*((int *) &chal->response[0]),
@@ -392,12 +394,12 @@
buf->len += length;
/* Back to the beginning of real data, including the original length AVP */
- MD5Init (&t->chal_them.md5);
- MD5Update (&t->chal_them.md5, (void *) &attr, 2);
- MD5Update (&t->chal_them.md5, t->chal_them.secret,
+ MD5_Init (&t->chal_them.md5);
+ MD5_Update (&t->chal_them.md5, (void *) &attr, 2);
+ MD5_Update (&t->chal_them.md5, t->chal_them.secret,
strlen ((char *)t->chal_them.secret));
- MD5Update (&t->chal_them.md5, t->chal_them.vector, VECTOR_SIZE);
- MD5Final (digest, &t->chal_them.md5);
+ MD5_Update (&t->chal_them.md5, t->chal_them.vector, VECTOR_SIZE);
+ MD5_Final (digest, &t->chal_them.md5);
/* Though not a "MUST" in the spec, our subformat length is always a multiple of 16 */
ptr = ((unsigned char *) new_hdr) + sizeof (struct avp_hdr);
@@ -421,11 +423,11 @@
#endif
if (ptr < end)
{
- MD5Init (&t->chal_them.md5);
- MD5Update (&t->chal_them.md5, t->chal_them.secret,
+ MD5_Init (&t->chal_them.md5);
+ MD5_Update (&t->chal_them.md5, t->chal_them.secret,
strlen ((char *)t->chal_them.secret));
- MD5Update (&t->chal_them.md5, previous_segment, MD_SIG_SIZE);
- MD5Final (digest, &t->chal_them.md5);
+ MD5_Update (&t->chal_them.md5, previous_segment, MD_SIG_SIZE);
+ MD5_Final (digest, &t->chal_them.md5);
}
previous_segment = ptr;
}
@@ -458,12 +460,12 @@
that it will be padded to a 16 byte boundary, so we
have to be more careful than when encrypting */
attr = ntohs (old_hdr->attr);
- MD5Init (&t->chal_us.md5);
- MD5Update (&t->chal_us.md5, (void *) &attr, 2);
- MD5Update (&t->chal_us.md5, t->chal_us.secret,
+ MD5_Init (&t->chal_us.md5);
+ MD5_Update (&t->chal_us.md5, (void *) &attr, 2);
+ MD5_Update (&t->chal_us.md5, t->chal_us.secret,
strlen ((char *)t->chal_us.secret));
- MD5Update (&t->chal_us.md5, t->chal_us.vector, t->chal_us.vector_len);
- MD5Final (digest, &t->chal_us.md5);
+ MD5_Update (&t->chal_us.md5, t->chal_us.vector, t->chal_us.vector_len);
+ MD5_Final (digest, &t->chal_us.md5);
#ifdef DEBUG_HIDDEN
l2tp_log (LOG_DEBUG, "attribute is %d and challenge is: ", attr);
print_challenge (&t->chal_us);
@@ -474,11 +476,11 @@
{
if (cnt >= MD_SIG_SIZE)
{
- MD5Init (&t->chal_us.md5);
- MD5Update (&t->chal_us.md5, t->chal_us.secret,
+ MD5_Init (&t->chal_us.md5);
+ MD5_Update (&t->chal_us.md5, t->chal_us.secret,
strlen ((char *)t->chal_us.secret));
- MD5Update (&t->chal_us.md5, saved_segment, MD_SIG_SIZE);
- MD5Final (digest, &t->chal_us.md5);
+ MD5_Update (&t->chal_us.md5, saved_segment, MD_SIG_SIZE);
+ MD5_Final (digest, &t->chal_us.md5);
cnt = 0;
}
/* at the beginning of each segment, we save the current segment (16 octets or less) of cipher
diff -Naur xl2tpd-1.3.6-orig/aaa.h xl2tpd-1.3.6/aaa.h
--- xl2tpd-1.3.6-orig/aaa.h 2014-01-15 15:58:37.000000000 -0500
+++ xl2tpd-1.3.6/aaa.h 2014-05-12 15:02:39.262697808 -0400
@@ -15,7 +15,7 @@
#ifndef _AAA_H
#define _AAA_H
-#include "md5.h"
+#include <openssl/md5.h>
#define ADDR_HASH_SIZE 256
#define MD_SIG_SIZE 16
@@ -34,7 +34,7 @@
struct challenge
{
- struct MD5Context md5;
+ MD5_CTX md5;
unsigned char ss; /* State we're sending in */
unsigned char secret[MAXSTRLEN]; /* The shared secret */
unsigned char *challenge; /* The original challenge */
diff -Naur xl2tpd-1.3.6-orig/Makefile xl2tpd-1.3.6/Makefile
--- xl2tpd-1.3.6-orig/Makefile 2014-01-15 15:58:37.000000000 -0500
+++ xl2tpd-1.3.6/Makefile 2014-05-12 15:03:43.832223559 -0400
@@ -92,8 +92,8 @@
IPFLAGS?= -DIP_ALLOCATION
CFLAGS+= $(DFLAGS) -O2 -fno-builtin -Wall -DSANITY $(OSFLAGS) $(IPFLAGS)
-HDRS=l2tp.h avp.h misc.h control.h call.h scheduler.h file.h aaa.h md5.h
-OBJS=xl2tpd.o pty.o misc.o control.o avp.o call.o network.o avpsend.o scheduler.o file.o aaa.o md5.o
+HDRS=l2tp.h avp.h misc.h control.h call.h scheduler.h file.h aaa.h
+OBJS=xl2tpd.o pty.o misc.o control.o avp.o call.o network.o avpsend.o scheduler.o file.o aaa.o
SRCS=${OBJS:.o=.c} ${HDRS}
CONTROL_SRCS=xl2tpd-control.c
#LIBS= $(OSLIBS) # -lefence # efence for malloc checking
@@ -112,7 +112,7 @@
rm -f $(OBJS) $(EXEC) pfc.o pfc $(CONTROL_EXEC)
$(EXEC): $(OBJS) $(HDRS)
- $(CC) $(LDFLAGS) -o $@ $(OBJS) $(LDLIBS)
+ $(CC) $(LDFLAGS) -o $@ $(OBJS) -lcrypto $(LDLIBS)
$(CONTROL_EXEC): $(CONTROL_SRCS)
$(CC) $(CFLAGS) $(LDFLAGS) $(CONTROL_SRCS) -o $@
diff -Naur xl2tpd-1.3.6-orig/md5.c xl2tpd-1.3.6/md5.c
--- xl2tpd-1.3.6-orig/md5.c 2014-01-15 15:58:37.000000000 -0500
+++ xl2tpd-1.3.6/md5.c 1969-12-31 19:00:00.000000000 -0500
@@ -1,274 +0,0 @@
-#ifdef FREEBSD
-# include <machine/endian.h>
-#elif defined(OPENBSD)
-# define __BSD_VISIBLE 0
-# include <machine/endian.h>
-#elif defined(LINUX)
-# include <endian.h>
-#elif defined(SOLARIS)
-# include <sys/isa_defs.h>
-#endif
-#if __BYTE_ORDER == __BIG_ENDIAN
-#define HIGHFIRST 1
-#endif
-
-/*
- * This code implements the MD5 message-digest algorithm.
- * The algorithm is due to Ron Rivest. This code was
- * written by Colin Plumb in 1993, no copyright is claimed.
- * This code is in the public domain; do with it what you wish.
- *
- * Equivalent code is available from RSA Data Security, Inc.
- * This code has been tested against that, and is equivalent,
- * except that you don't need to include two pages of legalese
- * with every copy.
- *
- * To compute the message digest of a chunk of bytes, declare an
- * MD5Context structure, pass it to MD5Init, call MD5Update as
- * needed on buffers full of bytes, and then call MD5Final, which
- * will fill a supplied 16-byte array with the digest.
- */
-#include <string.h> /* for memcpy() */
-#include "md5.h"
-
-#ifndef HIGHFIRST
-#define byteReverse(buf, len) /* Nothing */
-#else
-void byteReverse (unsigned char *buf, unsigned longs);
-
-#ifndef ASM_MD5
-/*
- * Note: this code is harmless on little-endian machines.
- */
-void byteReverse (unsigned char *buf, unsigned longs)
-{
- uint32 t;
- do
- {
- t = (uint32) ((unsigned) buf[3] << 8 | buf[2]) << 16 |
- ((unsigned) buf[1] << 8 | buf[0]);
- *(uint32 *) buf = t;
- buf += 4;
- }
- while (--longs);
-}
-#endif
-#endif
-
-/*
- * Start MD5 accumulation. Set bit count to 0 and buffer to mysterious
- * initialization constants.
- */
-void MD5Init (struct MD5Context *ctx)
-{
- ctx->buf[0] = 0x67452301;
- ctx->buf[1] = 0xefcdab89;
- ctx->buf[2] = 0x98badcfe;
- ctx->buf[3] = 0x10325476;
-
- ctx->bits[0] = 0;
- ctx->bits[1] = 0;
-}
-
-/*
- * Update context to reflect the concatenation of another buffer full
- * of bytes.
- */
-void MD5Update (struct MD5Context *ctx, unsigned char const *buf,
- unsigned len)
-{
- uint32 t;
-
- /* Update bitcount */
-
- t = ctx->bits[0];
- if ((ctx->bits[0] = t + ((uint32) len << 3)) < t)
- ctx->bits[1]++; /* Carry from low to high */
- ctx->bits[1] += len >> 29;
-
- t = (t >> 3) & 0x3f; /* Bytes already in shsInfo->data */
-
- /* Handle any leading odd-sized chunks */
-
- if (t)
- {
- unsigned char *p = (unsigned char *) ctx->in + t;
-
- t = 64 - t;
- if (len < t)
- {
- memcpy (p, buf, len);
- return;
- }
- memcpy (p, buf, t);
- byteReverse (ctx->in, 16);
- MD5Transform (ctx->buf, (uint32 *) ctx->in);
- buf += t;
- len -= t;
- }
- /* Process data in 64-byte chunks */
-
- while (len >= 64)
- {
- memcpy (ctx->in, buf, 64);
- byteReverse (ctx->in, 16);
- MD5Transform (ctx->buf, (uint32 *) ctx->in);
- buf += 64;
- len -= 64;
- }
-
- /* Handle any remaining bytes of data. */
-
- memcpy (ctx->in, buf, len);
-}
-
-/*
- * Final wrapup - pad to 64-byte boundary with the bit pattern
- * 1 0* (64-bit count of bits processed, MSB-first)
- */
-void MD5Final (unsigned char digest[16], struct MD5Context *ctx)
-{
- unsigned count;
- unsigned char *p;
-
- /* Compute number of bytes mod 64 */
- count = (ctx->bits[0] >> 3) & 0x3F;
-
- /* Set the first char of padding to 0x80. This is safe since there is
- always at least one byte free */
- p = ctx->in + count;
- *p++ = 0x80;
-
- /* Bytes of padding needed to make 64 bytes */
- count = 64 - 1 - count;
-
- /* Pad out to 56 mod 64 */
- if (count < 8)
- {
- /* Two lots of padding: Pad the first block to 64 bytes */
- memset (p, 0, count);
- byteReverse (ctx->in, 16);
- MD5Transform (ctx->buf, (uint32 *) ctx->in);
-
- /* Now fill the next block with 56 bytes */
- memset (ctx->in, 0, 56);
- }
- else
- {
- /* Pad block to 56 bytes */
- memset (p, 0, count - 8);
- }
- byteReverse (ctx->in, 14);
-
- /* Append length in bits and transform */
- memcpy(ctx->in + 14 * sizeof(uint32), ctx->bits, sizeof(ctx->bits));
-
- MD5Transform (ctx->buf, (uint32 *) ctx->in);
- byteReverse ((unsigned char *) ctx->buf, 4);
- memcpy (digest, ctx->buf, 16);
- memset (ctx, 0, sizeof (ctx)); /* In case it's sensitive */
-}
-
-#ifndef ASM_MD5
-
-/* The four core functions - F1 is optimized somewhat */
-
-/* #define F1(x, y, z) (x & y | ~x & z) */
-#define F1(x, y, z) (z ^ (x & (y ^ z)))
-#define F2(x, y, z) F1(z, x, y)
-#define F3(x, y, z) (x ^ y ^ z)
-#define F4(x, y, z) (y ^ (x | ~z))
-
-/* This is the central step in the MD5 algorithm. */
-#define MD5STEP(f, w, x, y, z, data, s) \
- ( w += f(x, y, z) + data, w = w<<s | w>>(32-s), w += x )
-
-/*
- * The core of the MD5 algorithm, this alters an existing MD5 hash to
- * reflect the addition of 16 longwords of new data. MD5Update blocks
- * the data and converts bytes into longwords for this routine.
- */
-void MD5Transform (uint32 buf[4], uint32 const in[16])
-{
- register uint32 a, b, c, d;
-
- a = buf[0];
- b = buf[1];
- c = buf[2];
- d = buf[3];
-
- MD5STEP (F1, a, b, c, d, in[0] + 0xd76aa478, 7);
- MD5STEP (F1, d, a, b, c, in[1] + 0xe8c7b756, 12);
- MD5STEP (F1, c, d, a, b, in[2] + 0x242070db, 17);
- MD5STEP (F1, b, c, d, a, in[3] + 0xc1bdceee, 22);
- MD5STEP (F1, a, b, c, d, in[4] + 0xf57c0faf, 7);
- MD5STEP (F1, d, a, b, c, in[5] + 0x4787c62a, 12);
- MD5STEP (F1, c, d, a, b, in[6] + 0xa8304613, 17);
- MD5STEP (F1, b, c, d, a, in[7] + 0xfd469501, 22);
- MD5STEP (F1, a, b, c, d, in[8] + 0x698098d8, 7);
- MD5STEP (F1, d, a, b, c, in[9] + 0x8b44f7af, 12);
- MD5STEP (F1, c, d, a, b, in[10] + 0xffff5bb1, 17);
- MD5STEP (F1, b, c, d, a, in[11] + 0x895cd7be, 22);
- MD5STEP (F1, a, b, c, d, in[12] + 0x6b901122, 7);
- MD5STEP (F1, d, a, b, c, in[13] + 0xfd987193, 12);
- MD5STEP (F1, c, d, a, b, in[14] + 0xa679438e, 17);
- MD5STEP (F1, b, c, d, a, in[15] + 0x49b40821, 22);
-
- MD5STEP (F2, a, b, c, d, in[1] + 0xf61e2562, 5);
- MD5STEP (F2, d, a, b, c, in[6] + 0xc040b340, 9);
- MD5STEP (F2, c, d, a, b, in[11] + 0x265e5a51, 14);
- MD5STEP (F2, b, c, d, a, in[0] + 0xe9b6c7aa, 20);
- MD5STEP (F2, a, b, c, d, in[5] + 0xd62f105d, 5);
- MD5STEP (F2, d, a, b, c, in[10] + 0x02441453, 9);
- MD5STEP (F2, c, d, a, b, in[15] + 0xd8a1e681, 14);
- MD5STEP (F2, b, c, d, a, in[4] + 0xe7d3fbc8, 20);
- MD5STEP (F2, a, b, c, d, in[9] + 0x21e1cde6, 5);
- MD5STEP (F2, d, a, b, c, in[14] + 0xc33707d6, 9);
- MD5STEP (F2, c, d, a, b, in[3] + 0xf4d50d87, 14);
- MD5STEP (F2, b, c, d, a, in[8] + 0x455a14ed, 20);
- MD5STEP (F2, a, b, c, d, in[13] + 0xa9e3e905, 5);
- MD5STEP (F2, d, a, b, c, in[2] + 0xfcefa3f8, 9);
- MD5STEP (F2, c, d, a, b, in[7] + 0x676f02d9, 14);
- MD5STEP (F2, b, c, d, a, in[12] + 0x8d2a4c8a, 20);
-
- MD5STEP (F3, a, b, c, d, in[5] + 0xfffa3942, 4);
- MD5STEP (F3, d, a, b, c, in[8] + 0x8771f681, 11);
- MD5STEP (F3, c, d, a, b, in[11] + 0x6d9d6122, 16);
- MD5STEP (F3, b, c, d, a, in[14] + 0xfde5380c, 23);
- MD5STEP (F3, a, b, c, d, in[1] + 0xa4beea44, 4);
- MD5STEP (F3, d, a, b, c, in[4] + 0x4bdecfa9, 11);
- MD5STEP (F3, c, d, a, b, in[7] + 0xf6bb4b60, 16);
- MD5STEP (F3, b, c, d, a, in[10] + 0xbebfbc70, 23);
- MD5STEP (F3, a, b, c, d, in[13] + 0x289b7ec6, 4);
- MD5STEP (F3, d, a, b, c, in[0] + 0xeaa127fa, 11);
- MD5STEP (F3, c, d, a, b, in[3] + 0xd4ef3085, 16);
- MD5STEP (F3, b, c, d, a, in[6] + 0x04881d05, 23);
- MD5STEP (F3, a, b, c, d, in[9] + 0xd9d4d039, 4);
- MD5STEP (F3, d, a, b, c, in[12] + 0xe6db99e5, 11);
- MD5STEP (F3, c, d, a, b, in[15] + 0x1fa27cf8, 16);
- MD5STEP (F3, b, c, d, a, in[2] + 0xc4ac5665, 23);
-
- MD5STEP (F4, a, b, c, d, in[0] + 0xf4292244, 6);
- MD5STEP (F4, d, a, b, c, in[7] + 0x432aff97, 10);
- MD5STEP (F4, c, d, a, b, in[14] + 0xab9423a7, 15);
- MD5STEP (F4, b, c, d, a, in[5] + 0xfc93a039, 21);
- MD5STEP (F4, a, b, c, d, in[12] + 0x655b59c3, 6);
- MD5STEP (F4, d, a, b, c, in[3] + 0x8f0ccc92, 10);
- MD5STEP (F4, c, d, a, b, in[10] + 0xffeff47d, 15);
- MD5STEP (F4, b, c, d, a, in[1] + 0x85845dd1, 21);
- MD5STEP (F4, a, b, c, d, in[8] + 0x6fa87e4f, 6);
- MD5STEP (F4, d, a, b, c, in[15] + 0xfe2ce6e0, 10);
- MD5STEP (F4, c, d, a, b, in[6] + 0xa3014314, 15);
- MD5STEP (F4, b, c, d, a, in[13] + 0x4e0811a1, 21);
- MD5STEP (F4, a, b, c, d, in[4] + 0xf7537e82, 6);
- MD5STEP (F4, d, a, b, c, in[11] + 0xbd3af235, 10);
- MD5STEP (F4, c, d, a, b, in[2] + 0x2ad7d2bb, 15);
- MD5STEP (F4, b, c, d, a, in[9] + 0xeb86d391, 21);
-
- buf[0] += a;
- buf[1] += b;
- buf[2] += c;
- buf[3] += d;
-}
-
-#endif
diff -Naur xl2tpd-1.3.6-orig/md5.h xl2tpd-1.3.6/md5.h
--- xl2tpd-1.3.6-orig/md5.h 2014-01-15 15:58:37.000000000 -0500
+++ xl2tpd-1.3.6/md5.h 1969-12-31 19:00:00.000000000 -0500
@@ -1,28 +0,0 @@
-#ifndef MD5_H
-#define MD5_H
-
-#ifdef __alpha
-typedef unsigned int uint32;
-#else
-typedef unsigned long uint32;
-#endif
-
-struct MD5Context
-{
- uint32 buf[4];
- uint32 bits[2];
- unsigned char in[64];
-};
-
-void MD5Init (struct MD5Context *context);
-void MD5Update (struct MD5Context *context, unsigned char const *buf,
- unsigned len);
-void MD5Final (unsigned char digest[16], struct MD5Context *context);
-void MD5Transform (uint32 buf[4], uint32 const in[16]);
-
-/*
- * This is needed to make RSAREF happy on some MS-DOS compilers.
- */
-typedef struct MD5Context MD5_CTX;
-
-#endif /* !MD5_H */
diff -Naur xl2tpd-1.3.6-orig/xl2tpd.c xl2tpd-1.3.6/xl2tpd.c
--- xl2tpd-1.3.6-orig/xl2tpd.c 2014-01-15 15:58:37.000000000 -0500
+++ xl2tpd-1.3.6/xl2tpd.c 2014-05-12 14:58:58.903490392 -0400
@@ -1310,7 +1310,10 @@
void usage(void) {
- printf("\nxl2tpd version: %s\n", SERVER_VERSION);
+ printf("\nxl2tpd version: %s\n"
+"This product includes software developed by the OpenSSL Project for use\n"
+"in the OpenSSL Toolkit. (http://www.openssl.org/)\n"
+, SERVER_VERSION);
printf("Usage: xl2tpd [-c <config file>] [-s <secret file>] [-p <pid file>]\n"
" [-C <control file>] [-D]\n"
" [-v, --version]\n");

@ -0,0 +1,36 @@
diff -Naur xl2tpd-5619e1771048e74b729804e8602f409af0f3faea-orig/file.c xl2tpd-5619e1771048e74b729804e8602f409af0f3faea/file.c
--- xl2tpd-5619e1771048e74b729804e8602f409af0f3faea-orig/file.c 2014-01-15 15:58:37.000000000 -0500
+++ xl2tpd-5619e1771048e74b729804e8602f409af0f3faea/file.c 2014-06-14 12:34:06.422355636 -0400
@@ -42,6 +42,8 @@
gconfig.port = UDP_LISTEN_PORT;
gconfig.sarefnum = IP_IPSEC_REFINFO; /* default use the latest we know */
+ gconfig.ipsecsaref = 0; /* default off - requires patched KLIPS kernel module */
+ gconfig.forceuserspace = 0; /* default off - allow kernel decap of data packets */
gconfig.listenaddr = htonl(INADDR_ANY); /* Default is to bind (listen) to all interfaces */
gconfig.debug_avp = 0;
gconfig.debug_network = 0;
diff -Naur xl2tpd-5619e1771048e74b729804e8602f409af0f3faea-orig/network.c xl2tpd-5619e1771048e74b729804e8602f409af0f3faea/network.c
--- xl2tpd-5619e1771048e74b729804e8602f409af0f3faea-orig/network.c 2014-01-15 15:58:37.000000000 -0500
+++ xl2tpd-5619e1771048e74b729804e8602f409af0f3faea/network.c 2014-06-14 12:37:06.953574143 -0400
@@ -78,6 +78,12 @@
* For L2TP/IPsec with KLIPSng, set the socket to receive IPsec REFINFO
* values.
*/
+ if (!gconfig.ipsecsaref)
+ {
+ l2tp_log (LOG_INFO, "Not looking for kernel SAref support.\n");
+ }
+ else
+ {
arg=1;
if(setsockopt(server_socket, IPPROTO_IP, gconfig.sarefnum,
&arg, sizeof(arg)) != 0) {
@@ -85,6 +91,7 @@
gconfig.ipsecsaref=0;
}
+ }
arg=1;
if(setsockopt(server_socket, IPPROTO_IP, IP_PKTINFO, (char*)&arg, sizeof(arg)) != 0) {

@ -0,0 +1,26 @@
diff -Naur xl2tpd-1.3.8-orig/network.c xl2tpd-1.3.8/network.c
--- xl2tpd-1.3.8-orig/network.c 2016-08-24 11:56:13.438007170 -0400
+++ xl2tpd-1.3.8/network.c 2016-08-24 12:22:36.945960487 -0400
@@ -781,6 +781,9 @@
sax.pppol2tp.addr.sin_family = AF_INET;
sax.pppol2tp.s_tunnel = t->ourtid;
sax.pppol2tp.d_tunnel = t->tid;
+ sax.pppol2tp.s_session = 0;
+ sax.pppol2tp.d_session = 0;
+
if ((connect(fd2, (struct sockaddr *)&sax, sizeof(sax))) < 0) {
l2tp_log (LOG_WARNING, "%s: Unable to connect PPPoL2TP socket. %d %s\n",
__FUNCTION__, errno, strerror(errno));
diff -Naur xl2tpd-1.3.8-orig/xl2tpd.c xl2tpd-1.3.8/xl2tpd.c
--- xl2tpd-1.3.8-orig/xl2tpd.c 2016-08-24 11:56:13.436007180 -0400
+++ xl2tpd-1.3.8/xl2tpd.c 2016-08-24 12:07:47.057504872 -0400
@@ -274,9 +274,6 @@
* OK...pppd died, we can go ahead and close the pty for
* it
*/
-#ifdef USE_KERNEL
- if (!kernel_support)
-#endif
close (c->fd);
c->fd = -1;
/*

@ -0,0 +1,467 @@
diff -Naur xl2tpd-1.3.8-orig/aaa.c xl2tpd-1.3.8/aaa.c
--- xl2tpd-1.3.8-orig/aaa.c 2016-08-11 20:56:53.000000000 -0400
+++ xl2tpd-1.3.8/aaa.c 2016-08-24 11:40:46.784683160 -0400
@@ -21,6 +21,8 @@
#include <errno.h>
#include "l2tp.h"
+#include <openssl/md5.h>
+
extern void bufferDump (char *, int);
/* FIXME: Accounting? */
@@ -273,11 +275,11 @@
#endif
memset (chal->response, 0, MD_SIG_SIZE);
- MD5Init (&chal->md5);
- MD5Update (&chal->md5, &chal->ss, 1);
- MD5Update (&chal->md5, chal->secret, strlen ((char *)chal->secret));
- MD5Update (&chal->md5, chal->challenge, chal->chal_len);
- MD5Final (chal->response, &chal->md5);
+ MD5_Init (&chal->md5);
+ MD5_Update (&chal->md5, &chal->ss, 1);
+ MD5_Update (&chal->md5, chal->secret, strlen ((char *)chal->secret));
+ MD5_Update (&chal->md5, chal->challenge, chal->chal_len);
+ MD5_Final (chal->response, &chal->md5);
#ifdef DEBUG_AUTH
l2tp_log (LOG_DEBUG, "response is %X%X%X%X to '%s' and %X%X%X%X, %d\n",
*((int *) &chal->response[0]),
@@ -392,12 +394,12 @@
buf->len += length;
/* Back to the beginning of real data, including the original length AVP */
- MD5Init (&t->chal_them.md5);
- MD5Update (&t->chal_them.md5, (void *) &attr, 2);
- MD5Update (&t->chal_them.md5, t->chal_them.secret,
+ MD5_Init (&t->chal_them.md5);
+ MD5_Update (&t->chal_them.md5, (void *) &attr, 2);
+ MD5_Update (&t->chal_them.md5, t->chal_them.secret,
strlen ((char *)t->chal_them.secret));
- MD5Update (&t->chal_them.md5, t->chal_them.vector, VECTOR_SIZE);
- MD5Final (digest, &t->chal_them.md5);
+ MD5_Update (&t->chal_them.md5, t->chal_them.vector, VECTOR_SIZE);
+ MD5_Final (digest, &t->chal_them.md5);
/* Though not a "MUST" in the spec, our subformat length is always a multiple of 16 */
ptr = ((unsigned char *) new_hdr) + sizeof (struct avp_hdr);
@@ -421,11 +423,11 @@
#endif
if (ptr < end)
{
- MD5Init (&t->chal_them.md5);
- MD5Update (&t->chal_them.md5, t->chal_them.secret,
+ MD5_Init (&t->chal_them.md5);
+ MD5_Update (&t->chal_them.md5, t->chal_them.secret,
strlen ((char *)t->chal_them.secret));
- MD5Update (&t->chal_them.md5, previous_segment, MD_SIG_SIZE);
- MD5Final (digest, &t->chal_them.md5);
+ MD5_Update (&t->chal_them.md5, previous_segment, MD_SIG_SIZE);
+ MD5_Final (digest, &t->chal_them.md5);
}
previous_segment = ptr;
}
@@ -458,12 +460,12 @@
that it will be padded to a 16 byte boundary, so we
have to be more careful than when encrypting */
attr = ntohs (old_hdr->attr);
- MD5Init (&t->chal_us.md5);
- MD5Update (&t->chal_us.md5, (void *) &attr, 2);
- MD5Update (&t->chal_us.md5, t->chal_us.secret,
+ MD5_Init (&t->chal_us.md5);
+ MD5_Update (&t->chal_us.md5, (void *) &attr, 2);
+ MD5_Update (&t->chal_us.md5, t->chal_us.secret,
strlen ((char *)t->chal_us.secret));
- MD5Update (&t->chal_us.md5, t->chal_us.vector, t->chal_us.vector_len);
- MD5Final (digest, &t->chal_us.md5);
+ MD5_Update (&t->chal_us.md5, t->chal_us.vector, t->chal_us.vector_len);
+ MD5_Final (digest, &t->chal_us.md5);
#ifdef DEBUG_HIDDEN
l2tp_log (LOG_DEBUG, "attribute is %d and challenge is: ", attr);
print_challenge (&t->chal_us);
@@ -474,11 +476,11 @@
{
if (cnt >= MD_SIG_SIZE)
{
- MD5Init (&t->chal_us.md5);
- MD5Update (&t->chal_us.md5, t->chal_us.secret,
+ MD5_Init (&t->chal_us.md5);
+ MD5_Update (&t->chal_us.md5, t->chal_us.secret,
strlen ((char *)t->chal_us.secret));
- MD5Update (&t->chal_us.md5, saved_segment, MD_SIG_SIZE);
- MD5Final (digest, &t->chal_us.md5);
+ MD5_Update (&t->chal_us.md5, saved_segment, MD_SIG_SIZE);
+ MD5_Final (digest, &t->chal_us.md5);
cnt = 0;
}
/* at the beginning of each segment, we save the current segment (16 octets or less) of cipher
diff -Naur xl2tpd-1.3.8-orig/aaa.h xl2tpd-1.3.8/aaa.h
--- xl2tpd-1.3.8-orig/aaa.h 2016-08-11 20:56:53.000000000 -0400
+++ xl2tpd-1.3.8/aaa.h 2016-08-24 11:41:21.032506562 -0400
@@ -15,7 +15,7 @@
#ifndef _AAA_H
#define _AAA_H
-#include "md5.h"
+#include <openssl/md5.h>
#define ADDR_HASH_SIZE 256
#define MD_SIG_SIZE 16
@@ -34,7 +34,7 @@
struct challenge
{
- struct MD5Context md5;
+ MD5_CTX md5;
unsigned char ss; /* State we're sending in */
unsigned char secret[MAXSTRLEN]; /* The shared secret */
unsigned char *challenge; /* The original challenge */
diff -Naur xl2tpd-1.3.8-orig/Makefile xl2tpd-1.3.8/Makefile
--- xl2tpd-1.3.8-orig/Makefile 2016-08-11 20:56:53.000000000 -0400
+++ xl2tpd-1.3.8/Makefile 2016-08-24 11:42:18.389210804 -0400
@@ -98,8 +98,8 @@
IPFLAGS?= -DIP_ALLOCATION
CFLAGS+= $(DFLAGS) -Os -Wall -DSANITY $(OSFLAGS) $(IPFLAGS)
-HDRS=l2tp.h avp.h misc.h control.h call.h scheduler.h file.h aaa.h md5.h
-OBJS=xl2tpd.o pty.o misc.o control.o avp.o call.o network.o avpsend.o scheduler.o file.o aaa.o md5.o
+HDRS=l2tp.h avp.h misc.h control.h call.h scheduler.h file.h aaa.h
+OBJS=xl2tpd.o pty.o misc.o control.o avp.o call.o network.o avpsend.o scheduler.o file.o aaa.o
SRCS=${OBJS:.o=.c} ${HDRS}
CONTROL_SRCS=xl2tpd-control.c
#LIBS= $(OSLIBS) # -lefence # efence for malloc checking
@@ -119,7 +119,7 @@
rm -f $(OBJS) $(EXEC) pfc.o pfc $(CONTROL_EXEC)
$(EXEC): $(OBJS) $(HDRS)
- $(CC) $(LDFLAGS) -o $@ $(OBJS) $(LDLIBS)
+ $(CC) $(LDFLAGS) -o $@ $(OBJS) -lcrypto $(LDLIBS)
$(CONTROL_EXEC): $(CONTROL_SRCS)
$(CC) $(CFLAGS) $(LDFLAGS) $(CONTROL_SRCS) -o $@
diff -Naur xl2tpd-1.3.8-orig/md5.c xl2tpd-1.3.8/md5.c
--- xl2tpd-1.3.8-orig/md5.c 2016-08-11 20:56:53.000000000 -0400
+++ xl2tpd-1.3.8/md5.c 2016-08-24 11:42:47.940058425 -0400
@@ -1,274 +0,0 @@
-#ifdef FREEBSD
-# include <machine/endian.h>
-#elif defined(OPENBSD) || defined(NETBSD)
-# define __BSD_VISIBLE 0
-# include <machine/endian.h>
-#elif defined(LINUX)
-# include <endian.h>
-#elif defined(SOLARIS)
-# include <sys/isa_defs.h>
-#endif
-#if __BYTE_ORDER == __BIG_ENDIAN
-#define HIGHFIRST 1
-#endif
-
-/*
- * This code implements the MD5 message-digest algorithm.
- * The algorithm is due to Ron Rivest. This code was
- * written by Colin Plumb in 1993, no copyright is claimed.
- * This code is in the public domain; do with it what you wish.
- *
- * Equivalent code is available from RSA Data Security, Inc.
- * This code has been tested against that, and is equivalent,
- * except that you don't need to include two pages of legalese
- * with every copy.
- *
- * To compute the message digest of a chunk of bytes, declare an
- * MD5Context structure, pass it to MD5Init, call MD5Update as
- * needed on buffers full of bytes, and then call MD5Final, which
- * will fill a supplied 16-byte array with the digest.
- */
-#include <string.h> /* for memcpy() */
-#include "md5.h"
-
-#ifndef HIGHFIRST
-#define byteReverse(buf, len) /* Nothing */
-#else
-void byteReverse (unsigned char *buf, unsigned longs);
-
-#ifndef ASM_MD5
-/*
- * Note: this code is harmless on little-endian machines.
- */
-void byteReverse (unsigned char *buf, unsigned longs)
-{
- uint32 t;
- do
- {
- t = (uint32) ((unsigned) buf[3] << 8 | buf[2]) << 16 |
- ((unsigned) buf[1] << 8 | buf[0]);
- *(uint32 *) buf = t;
- buf += 4;
- }
- while (--longs);
-}
-#endif
-#endif
-
-/*
- * Start MD5 accumulation. Set bit count to 0 and buffer to mysterious
- * initialization constants.
- */
-void MD5Init (struct MD5Context *ctx)
-{
- ctx->buf[0] = 0x67452301;
- ctx->buf[1] = 0xefcdab89;
- ctx->buf[2] = 0x98badcfe;
- ctx->buf[3] = 0x10325476;
-
- ctx->bits[0] = 0;
- ctx->bits[1] = 0;
-}
-
-/*
- * Update context to reflect the concatenation of another buffer full
- * of bytes.
- */
-void MD5Update (struct MD5Context *ctx, unsigned char const *buf,
- unsigned len)
-{
- uint32 t;
-
- /* Update bitcount */
-
- t = ctx->bits[0];
- if ((ctx->bits[0] = t + ((uint32) len << 3)) < t)
- ctx->bits[1]++; /* Carry from low to high */
- ctx->bits[1] += len >> 29;
-
- t = (t >> 3) & 0x3f; /* Bytes already in shsInfo->data */
-
- /* Handle any leading odd-sized chunks */
-
- if (t)
- {
- unsigned char *p = (unsigned char *) ctx->in + t;
-
- t = 64 - t;
- if (len < t)
- {
- memcpy (p, buf, len);
- return;
- }
- memcpy (p, buf, t);
- byteReverse (ctx->in, 16);
- MD5Transform (ctx->buf, (uint32 *) ctx->in);
- buf += t;
- len -= t;
- }
- /* Process data in 64-byte chunks */
-
- while (len >= 64)
- {
- memcpy (ctx->in, buf, 64);
- byteReverse (ctx->in, 16);
- MD5Transform (ctx->buf, (uint32 *) ctx->in);
- buf += 64;
- len -= 64;
- }
-
- /* Handle any remaining bytes of data. */
-
- memcpy (ctx->in, buf, len);
-}
-
-/*
- * Final wrapup - pad to 64-byte boundary with the bit pattern
- * 1 0* (64-bit count of bits processed, MSB-first)
- */
-void MD5Final (unsigned char digest[16], struct MD5Context *ctx)
-{
- unsigned count;
- unsigned char *p;
-
- /* Compute number of bytes mod 64 */
- count = (ctx->bits[0] >> 3) & 0x3F;
-
- /* Set the first char of padding to 0x80. This is safe since there is
- always at least one byte free */
- p = ctx->in + count;
- *p++ = 0x80;
-
- /* Bytes of padding needed to make 64 bytes */
- count = 64 - 1 - count;
-
- /* Pad out to 56 mod 64 */
- if (count < 8)
- {
- /* Two lots of padding: Pad the first block to 64 bytes */
- memset (p, 0, count);
- byteReverse (ctx->in, 16);
- MD5Transform (ctx->buf, (uint32 *) ctx->in);
-
- /* Now fill the next block with 56 bytes */
- memset (ctx->in, 0, 56);
- }
- else
- {
- /* Pad block to 56 bytes */
- memset (p, 0, count - 8);
- }
- byteReverse (ctx->in, 14);
-
- /* Append length in bits and transform */
- memcpy(ctx->in + 14 * sizeof(uint32), ctx->bits, sizeof(ctx->bits));
-
- MD5Transform (ctx->buf, (uint32 *) ctx->in);
- byteReverse ((unsigned char *) ctx->buf, 4);
- memcpy (digest, ctx->buf, 16);
- memset (ctx, 0, sizeof (*ctx)); /* In case it's sensitive */
-}
-
-#ifndef ASM_MD5
-
-/* The four core functions - F1 is optimized somewhat */
-
-/* #define F1(x, y, z) (x & y | ~x & z) */
-#define F1(x, y, z) (z ^ (x & (y ^ z)))
-#define F2(x, y, z) F1(z, x, y)
-#define F3(x, y, z) (x ^ y ^ z)
-#define F4(x, y, z) (y ^ (x | ~z))
-
-/* This is the central step in the MD5 algorithm. */
-#define MD5STEP(f, w, x, y, z, data, s) \
- ( w += f(x, y, z) + data, w = w<<s | w>>(32-s), w += x )
-
-/*
- * The core of the MD5 algorithm, this alters an existing MD5 hash to
- * reflect the addition of 16 longwords of new data. MD5Update blocks
- * the data and converts bytes into longwords for this routine.
- */
-void MD5Transform (uint32 buf[4], uint32 const in[16])
-{
- register uint32 a, b, c, d;
-
- a = buf[0];
- b = buf[1];
- c = buf[2];
- d = buf[3];
-
- MD5STEP (F1, a, b, c, d, in[0] + 0xd76aa478, 7);
- MD5STEP (F1, d, a, b, c, in[1] + 0xe8c7b756, 12);
- MD5STEP (F1, c, d, a, b, in[2] + 0x242070db, 17);
- MD5STEP (F1, b, c, d, a, in[3] + 0xc1bdceee, 22);
- MD5STEP (F1, a, b, c, d, in[4] + 0xf57c0faf, 7);
- MD5STEP (F1, d, a, b, c, in[5] + 0x4787c62a, 12);
- MD5STEP (F1, c, d, a, b, in[6] + 0xa8304613, 17);
- MD5STEP (F1, b, c, d, a, in[7] + 0xfd469501, 22);
- MD5STEP (F1, a, b, c, d, in[8] + 0x698098d8, 7);
- MD5STEP (F1, d, a, b, c, in[9] + 0x8b44f7af, 12);
- MD5STEP (F1, c, d, a, b, in[10] + 0xffff5bb1, 17);
- MD5STEP (F1, b, c, d, a, in[11] + 0x895cd7be, 22);
- MD5STEP (F1, a, b, c, d, in[12] + 0x6b901122, 7);
- MD5STEP (F1, d, a, b, c, in[13] + 0xfd987193, 12);
- MD5STEP (F1, c, d, a, b, in[14] + 0xa679438e, 17);
- MD5STEP (F1, b, c, d, a, in[15] + 0x49b40821, 22);
-
- MD5STEP (F2, a, b, c, d, in[1] + 0xf61e2562, 5);
- MD5STEP (F2, d, a, b, c, in[6] + 0xc040b340, 9);
- MD5STEP (F2, c, d, a, b, in[11] + 0x265e5a51, 14);
- MD5STEP (F2, b, c, d, a, in[0] + 0xe9b6c7aa, 20);
- MD5STEP (F2, a, b, c, d, in[5] + 0xd62f105d, 5);
- MD5STEP (F2, d, a, b, c, in[10] + 0x02441453, 9);
- MD5STEP (F2, c, d, a, b, in[15] + 0xd8a1e681, 14);
- MD5STEP (F2, b, c, d, a, in[4] + 0xe7d3fbc8, 20);
- MD5STEP (F2, a, b, c, d, in[9] + 0x21e1cde6, 5);
- MD5STEP (F2, d, a, b, c, in[14] + 0xc33707d6, 9);
- MD5STEP (F2, c, d, a, b, in[3] + 0xf4d50d87, 14);
- MD5STEP (F2, b, c, d, a, in[8] + 0x455a14ed, 20);
- MD5STEP (F2, a, b, c, d, in[13] + 0xa9e3e905, 5);
- MD5STEP (F2, d, a, b, c, in[2] + 0xfcefa3f8, 9);
- MD5STEP (F2, c, d, a, b, in[7] + 0x676f02d9, 14);
- MD5STEP (F2, b, c, d, a, in[12] + 0x8d2a4c8a, 20);
-
- MD5STEP (F3, a, b, c, d, in[5] + 0xfffa3942, 4);
- MD5STEP (F3, d, a, b, c, in[8] + 0x8771f681, 11);
- MD5STEP (F3, c, d, a, b, in[11] + 0x6d9d6122, 16);
- MD5STEP (F3, b, c, d, a, in[14] + 0xfde5380c, 23);
- MD5STEP (F3, a, b, c, d, in[1] + 0xa4beea44, 4);
- MD5STEP (F3, d, a, b, c, in[4] + 0x4bdecfa9, 11);
- MD5STEP (F3, c, d, a, b, in[7] + 0xf6bb4b60, 16);
- MD5STEP (F3, b, c, d, a, in[10] + 0xbebfbc70, 23);
- MD5STEP (F3, a, b, c, d, in[13] + 0x289b7ec6, 4);
- MD5STEP (F3, d, a, b, c, in[0] + 0xeaa127fa, 11);
- MD5STEP (F3, c, d, a, b, in[3] + 0xd4ef3085, 16);
- MD5STEP (F3, b, c, d, a, in[6] + 0x04881d05, 23);
- MD5STEP (F3, a, b, c, d, in[9] + 0xd9d4d039, 4);
- MD5STEP (F3, d, a, b, c, in[12] + 0xe6db99e5, 11);
- MD5STEP (F3, c, d, a, b, in[15] + 0x1fa27cf8, 16);
- MD5STEP (F3, b, c, d, a, in[2] + 0xc4ac5665, 23);
-
- MD5STEP (F4, a, b, c, d, in[0] + 0xf4292244, 6);
- MD5STEP (F4, d, a, b, c, in[7] + 0x432aff97, 10);
- MD5STEP (F4, c, d, a, b, in[14] + 0xab9423a7, 15);
- MD5STEP (F4, b, c, d, a, in[5] + 0xfc93a039, 21);
- MD5STEP (F4, a, b, c, d, in[12] + 0x655b59c3, 6);
- MD5STEP (F4, d, a, b, c, in[3] + 0x8f0ccc92, 10);
- MD5STEP (F4, c, d, a, b, in[10] + 0xffeff47d, 15);
- MD5STEP (F4, b, c, d, a, in[1] + 0x85845dd1, 21);
- MD5STEP (F4, a, b, c, d, in[8] + 0x6fa87e4f, 6);
- MD5STEP (F4, d, a, b, c, in[15] + 0xfe2ce6e0, 10);
- MD5STEP (F4, c, d, a, b, in[6] + 0xa3014314, 15);
- MD5STEP (F4, b, c, d, a, in[13] + 0x4e0811a1, 21);
- MD5STEP (F4, a, b, c, d, in[4] + 0xf7537e82, 6);
- MD5STEP (F4, d, a, b, c, in[11] + 0xbd3af235, 10);
- MD5STEP (F4, c, d, a, b, in[2] + 0x2ad7d2bb, 15);
- MD5STEP (F4, b, c, d, a, in[9] + 0xeb86d391, 21);
-
- buf[0] += a;
- buf[1] += b;
- buf[2] += c;
- buf[3] += d;
-}
-
-#endif
diff -Naur xl2tpd-1.3.8-orig/md5.h xl2tpd-1.3.8/md5.h
--- xl2tpd-1.3.8-orig/md5.h 2016-08-11 20:56:53.000000000 -0400
+++ xl2tpd-1.3.8/md5.h 2016-08-24 11:42:51.182041708 -0400
@@ -1,29 +0,0 @@
-#ifndef MD5_H
-#define MD5_H
-
-#ifdef __alpha
-typedef unsigned int uint32;
-#else
-#include <stdint.h>
-typedef uint32_t uint32;
-#endif
-
-struct MD5Context
-{
- uint32 buf[4];
- uint32 bits[2];
- unsigned char in[64];
-};
-
-void MD5Init (struct MD5Context *context);
-void MD5Update (struct MD5Context *context, unsigned char const *buf,
- unsigned len);
-void MD5Final (unsigned char digest[16], struct MD5Context *context);
-void MD5Transform (uint32 buf[4], uint32 const in[16]);
-
-/*
- * This is needed to make RSAREF happy on some MS-DOS compilers.
- */
-typedef struct MD5Context MD5_CTX;
-
-#endif /* !MD5_H */
diff -Naur xl2tpd-1.3.8-orig/xl2tpd.c xl2tpd-1.3.8/xl2tpd.c
--- xl2tpd-1.3.8-orig/xl2tpd.c 2016-08-11 20:56:53.000000000 -0400
+++ xl2tpd-1.3.8/xl2tpd.c 2016-08-24 11:43:37.704807118 -0400
@@ -1630,7 +1630,10 @@
void usage(void) {
- printf("\nxl2tpd version: %s\n", SERVER_VERSION);
+ printf("\nxl2tpd version: %s\n"
+"This product includes software developed by the OpenSSL Project for use\n"
+"in the OpenSSL Toolkit. (http://www.openssl.org/)\n"
+, SERVER_VERSION);
printf("Usage: xl2tpd [-c <config file>] [-s <secret file>] [-p <pid file>]\n"
" [-C <control file>] [-D] [-l]\n"
" [-v, --version]\n");

@ -0,0 +1,59 @@
diff --git a/file.c b/file.c
index f61c221..a6362c0 100644
--- a/file.c
+++ b/file.c
@@ -42,6 +42,8 @@ int init_config ()
gconfig.port = UDP_LISTEN_PORT;
gconfig.sarefnum = IP_IPSEC_REFINFO; /* default use the latest we know */
+ gconfig.ipsecsaref = 0; /* default off - requires patched KLIPS kernel module */
+ gconfig.forceuserspace = 0; /* default off - allow kernel decap of data packets */
gconfig.listenaddr = htonl(INADDR_ANY); /* Default is to bind (listen) to all interfaces */
gconfig.debug_avp = 0;
gconfig.debug_network = 0;
diff --git a/network.c b/network.c
index 543d30e..c66d1e3 100644
--- a/network.c
+++ b/network.c
@@ -78,23 +78,27 @@ int init_network (void)
* For L2TP/IPsec with KLIPSng, set the socket to receive IPsec REFINFO
* values.
*/
- arg=1;
- if(setsockopt(server_socket, IPPROTO_IP, gconfig.sarefnum,
- &arg, sizeof(arg)) != 0) {
- l2tp_log(LOG_CRIT, "setsockopt recvref[%d]: %s\n", gconfig.sarefnum, strerror(errno));
-
- gconfig.ipsecsaref=0;
- }
-
- arg=1;
- if(setsockopt(server_socket, IPPROTO_IP, IP_PKTINFO, (char*)&arg, sizeof(arg)) != 0) {
- l2tp_log(LOG_CRIT, "setsockopt IP_PKTINFO: %s\n", strerror(errno));
+ if (!gconfig.ipsecsaref)
+ {
+ l2tp_log (LOG_INFO, "Not looking for kernel SAref support.\n");
}
-#else
+ else
{
- l2tp_log(LOG_INFO, "No attempt being made to use IPsec SAref's since we're not on a Linux machine.\n");
+ arg=1;
+ if(setsockopt(server_socket, IPPROTO_IP, gconfig.sarefnum, &arg, sizeof(arg)) != 0) {
+ l2tp_log(LOG_CRIT, "setsockopt recvref[%d]: %s\n", gconfig.sarefnum, strerror(errno));
+ gconfig.ipsecsaref=0;
+ }
+ else
+ {
+ arg=1;
+ if(setsockopt(server_socket, IPPROTO_IP, IP_PKTINFO, (char*)&arg, sizeof(arg)) != 0) {
+ l2tp_log(LOG_CRIT, "setsockopt IP_PKTINFO: %s\n", strerror(errno));
+ }
+ }
}
-
+#else
+ l2tp_log(LOG_INFO, "No attempt being made to use IPsec SAref's since we're not on a Linux machine.\n");
#endif
#ifdef USE_KERNEL

@ -0,0 +1,16 @@
[Unit]
Description=Level 2 Tunnel Protocol Daemon (L2TP)
After=network.target
After=ipsec.service
# Some ISPs in Russia use l2tp without IPsec, so don't insist anymore
#Wants=ipsec.service
[Service]
Type=simple
PIDFile=/var/run/xl2tpd/xl2tpd.pid
ExecStartPre=/sbin/modprobe -q l2tp_ppp
ExecStart=/usr/sbin/xl2tpd -D
Restart=on-abort
[Install]
WantedBy=multi-user.target

@ -0,0 +1,512 @@
%global commit 5619e1771048e74b729804e8602f409af0f3faea
Summary: Layer 2 Tunnelling Protocol Daemon (RFC 2661)
Name: xl2tpd
Version: 1.3.14
Release: 1%{?dist}
License: GPL+
Url: https://github.com/xelerance/xl2tpd/
# upstream isn't using proper names, we manually rename v-VERSION.tar.gz to xl2tpd-VERSION.tar.gz
Source0: https://github.com/xelerance/xl2tpd/archive/xl2tpd-%{version}.tar.gz
Source1: xl2tpd.service
Source2: tmpfiles-xl2tpd.conf
Patch1: xl2tpd-1.3.14-conf.patch
Patch2: xl2tpd-1.3.14-md5-fips.patch
Patch3: xl2tpd-1.3.14-kernelmode.patch
Requires: ppp >= 2.4.5-18, kmod(l2tp_ppp.ko)
# If you want to authenticate against a Microsoft PDC/Active Directory
# Requires: samba-winbind
BuildRequires: gcc
BuildRequires: libpcap-devel
BuildRequires: systemd-units
BuildRequires: openssl-devel
Requires(post): systemd
Requires(preun): systemd
Requires(postun): systemd
# dnf resolving prefers kernel-debug-modules-extra over kernel-modules-extra
Suggests: kernel-modules-extra
%description
xl2tpd is an implementation of the Layer 2 Tunnelling Protocol (RFC 2661).
L2TP allows you to tunnel PPP over UDP. Some ISPs use L2TP to tunnel user
sessions from dial-in servers (modem banks, ADSL DSLAMs) to back-end PPP
servers. Another important application is Virtual Private Networks where
the IPsec protocol is used to secure the L2TP connection (L2TP/IPsec,
RFC 3193). The L2TP/IPsec protocol is mainly used by Windows and
Mac OS X clients. On Linux, xl2tpd can be used in combination with IPsec
implementations such as Openswan.
Example configuration files for such a setup are included in this RPM.
xl2tpd works by opening a pseudo-tty for communicating with pppd.
It runs completely in userspace.
xl2tpd supports IPsec SA Reference tracking to enable overlapping internak
NAT'ed IP's by different clients (eg all clients connecting from their
linksys internal IP 192.168.1.101) as well as multiple clients behind
the same NAT router.
xl2tpd supports the pppol2tp kernel mode operations on 2.6.23 or higher,
or via a patch in contrib for 2.4.x kernels.
Xl2tpd is based on the 0.69 L2TP by Jeff McAdams <jeffm@iglou.com>
It was de-facto maintained by Jacco de Leeuw <jacco2@dds.nl> in 2002 and 2003.
%prep
%setup
%patch1 -p1
%patch2 -p1
%patch3 -p1
%build
export CFLAGS="$CFLAGS -fPIC -Wall -DTRUST_PPPD_TO_DIE"
export DFLAGS="$RPM_OPT_FLAGS -g "
export LDFLAGS="$LDFLAGS -pie -Wl,-z,relro -Wl,-z,now"
# if extra debugging is needed, use:
# %make_build DFLAGS="$RPM_OPT_FLAGS -g -DDEBUG_HELLO -DDEBUG_CLOSE -DDEBUG_FLOW -DDEBUG_PAYLOAD -DDEBUG_CONTROL -DDEBUG_CONTROL_XMIT -DDEBUG_FLOW_MORE -DDEBUG_MAGIC -DDEBUG_ENTROPY -DDEBUG_HIDDEN -DDEBUG_PPPD -DDEBUG_AAA -DDEBUG_FILE -DDEBUG_FLOW -DDEBUG_HELLO -DDEBUG_CLOSE -DDEBUG_ZLB -DDEBUG_AUTH"
%make_build
%install
make DESTDIR=%{buildroot} PREFIX=%{_prefix} install
install -d 0755 %{buildroot}%{_unitdir}
install -m 0644 %{SOURCE1} %{buildroot}%{_unitdir}/xl2tpd.service
mkdir -p %{buildroot}/%{_tmpfilesdir}
install -m 0644 %{SOURCE2} %{buildroot}/%{_tmpfilesdir}/%{name}.conf
install -p -D -m644 examples/xl2tpd.conf %{buildroot}%{_sysconfdir}/xl2tpd/xl2tpd.conf
install -p -D -m644 examples/ppp-options.xl2tpd %{buildroot}%{_sysconfdir}/ppp/options.xl2tpd
install -p -D -m600 doc/l2tp-secrets.sample %{buildroot}%{_sysconfdir}/xl2tpd/l2tp-secrets
install -p -D -m600 examples/chapsecrets.sample %{buildroot}%{_sysconfdir}/ppp/chap-secrets.sample
install -p -D -m755 -d %{buildroot}%{_rundir}/xl2tpd
%preun
%systemd_preun xl2tpd.service
%post
%systemd_post xl2tpd.service
%postun
%systemd_postun_with_restart xl2tpd.service
%triggerun -- xl2td < 1.3.1-3
# Save the current service runlevel info
# User must manually run systemd-sysv-convert --apply xl2tpd
# to migrate them to systemd targets
/usr/bin/systemd-sysv-convert --save xl2tpd >/dev/null 2>&1 ||:
# Run these because the SysV package being removed won't do them
/sbin/chkconfig --del xl2tpd >/dev/null 2>&1 || :
/bin/systemctl try-restart xl2tpd.service >/dev/null 2>&1 || :
%files
%doc BUGS CHANGES CREDITS README.* TODO
%license LICENSE
%doc doc/README.patents examples/chapsecrets.sample
%{_sbindir}/xl2tpd
%{_sbindir}/xl2tpd-control
%{_bindir}/pfc
%{_mandir}/*/*
%dir %{_sysconfdir}/xl2tpd
%config(noreplace) %{_sysconfdir}/xl2tpd/*
%config(noreplace) %{_sysconfdir}/ppp/*
%dir %{_rundir}/xl2tpd
%{_unitdir}/%{name}.service
%{_tmpfilesdir}/%{name}.conf
%ghost %attr(0600,root,root) %{_rundir}/xl2tpd/l2tp-control
%changelog
* Wed Sep 25 2019 Paul Wouters <pwouters@redhat.com> - 1.3.14-1
- Resolves: rhbz#1322190 Updated to 1.3.14
- Resolves: rhbz#1722121 Use proper /run directory
- Resolves: rhbz#1399648 Review Request: xl2tpd
* Sat Jul 27 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1.3.8-10
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
* Sun Feb 03 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1.3.8-9
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
* Sat Jul 14 2018 Fedora Release Engineering <releng@fedoraproject.org> - 1.3.8-8
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
* Sun Apr 01 2018 Paul Wouters <pwouters@redhat.com> - 1.3.8-7
- Resolves: rhbz#1562512 kernels 4.15 and 4.16 break xl2tpd
* Fri Feb 09 2018 Fedora Release Engineering <releng@fedoraproject.org> - 1.3.8-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
* Thu Aug 03 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.3.8-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
* Thu Jul 27 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.3.8-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
* Sat Feb 11 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.3.8-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
* Sun Jan 15 2017 Paul Wouters <pwouters@redhat.com> - 1.3.8-2
- Very reluctantly add a Suggests: tag to work around dnf/kernel bug
- Resolves: rhbz#1192189 Both kernel-debug-core and kernel-core are installed
* Wed Aug 24 2016 Paul Wouters <pwouters@redhat.com> - 1.3.8-1
- Upgraded to 1.3.8 and updated existing patches still required
- Fix kernel mode breaking the closing tunnels
* Fri Feb 05 2016 Fedora Release Engineering <releng@fedoraproject.org> - 1.3.6-10
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
* Fri Jun 19 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.3.6-9
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
* Tue Mar 31 2015 Paul Wouters <pwouters@redhat.com> - 1.3.6-8
- Bump EVR
* Tue Mar 31 2015 Paul Wouters <pwouters@redhat.com> - 1.3.6-7
- Rebuild with -DTRUST_PPPD_TO_DIE so pppd will execute its down script
* Thu Aug 21 2014 Kevin Fenzi <kevin@scrye.com> - 1.3.6-6
- Rebuild for rpm bug 1131960
* Mon Aug 18 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.3.6-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
* Sat Jun 14 2014 Paul Wouters <pwouters@redhat.com> - 1.3.6-4
- Resolves rhbz#1109470 l2tpd/ipsec breaks when "ipsec saref" not set
* Sun Jun 08 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.3.6-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
* Wed May 14 2014 Josh Boyer <jwboyer@fedoraproject.org>
- Switch to using Requires on individual kernel modules
- Resolves rhbz#1056192
* Tue May 13 2014 Paul Wouters <pwouters@redhat.com> - 1.3.6-1
- Updated to 1.3.6 - using github-only monstrosity packaging
- Resolves: rhbz#1051785 (new upstream version available)
- Resolves: rhbz#868391 xl2tpd sends response packets from wrong IP address
- Revert: rhbz#929447 Incorrect "ipparam" manipulation
- Resolves: rhbz#1055196 Don't order service after syslog.target
- Resolves: rhbz#984332 xl2tpd tmpfiles configuration file in wrong directory
- Removed patches merged in upstream.
- FIPS patch updated with advertising clause for openssl in xl2tpd -V
(although the GPL code was already basically taken from openssl)
* Sun Aug 04 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.3.1-14
- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
* Mon Apr 01 2013 Paul Wouters <pwouters@redhat.com> - 1.3.1-13
- rhbz#929447 - Fix ipparam so ipv6-up does not fail (Michal Bruncko)
- rhbz#850372 - Introduce new systemd-rpm macros in xl2tpd spec file
- Use relro,pie for compiling
- rhbz#947209 - Use openssl's MD5 function instead of private copy
(so FIPS restrictions work)
* Fri Feb 15 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.3.1-11
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
* Thu Jul 19 2012 Paul Wouters <pwouters@redhat.com> - 1.3.1-10
- Updated comments in config files on how to authenticate against
a Windows PDC / Active Directory
* Tue Jul 03 2012 Paul Wouters <pwouters@redhat.com> - 1.3.1-9
- Rename non-existing openswan.service to ipsec.service (rhbz#836783)
- Start after ipsec.service, but do not require it
* Tue Jun 26 2012 Paul Wouters <pwouters@redhat.com> - 1.3.1-8
- The l2tp_ppp kernel module is now in kernel-module-extra
(rhbz#832149)
- Don't insist on openswan, some ISPS use L2TP without IPsec
- Don't call grantpt(), it's not needed and triggers SElinux
block (rhbz#834861)
* Fri Jun 15 2012 Paul Wouters <pwouters@redhat.com> - 1.3.1-7
- Moved modprobe code from daemon to initscript/systemd
(SElinux does not allow a daemon to do this, see rhbz#832149)
* Tue Jun 12 2012 Paul Wouters <pwouters@redhat.com> - 1.3.1-6
- Added patch for xl2tpd.conf to improve interop settings
(no longer need to say "no encryption" on Windows)
- Improved patch, more doc fixed (esp. "force userspace" option)
- don't use old version of if_pppol2tp.h
* Wed Apr 18 2012 Paul Wouters <pwouters@redhat.com> - 1.3.1-5
- Added support for CONFIG_PPPOL2TP by sigwall <fionov@gmail.com>
- Require current ppp because some old versions lacked pppol2tp.so plugin
* Thu Apr 05 2012 Paul Wouters <pwouters@redhat.com> - 1.3.1-4
- Fix parse error on lines > 80 chars, rhbz#806963
* Tue Feb 28 2012 Paul Wouters <pwouters@redhat.com> - 1.3.1-3
- Converted to systemd
- Added -Wunused patch to fix two minor warnings
* Sat Jan 14 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.3.1-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild
* Thu Oct 06 2011 Paul Wouters <paul@xelerance.com> - 1.3.1-1
- Upgraded to 1.3.1
- Use ghost for /var/run files
* Sat Jul 23 2011 Paul Wouters <paul@xelerance.com> - 1.3.0-1
- Upgraded to 1.3.0 with better NetworkManager support
- Compiled without DEBUG per default to gain more performance
- Added xl2tpd-control
* Wed Feb 23 2011 Paul Wouters <paul@xelerance.com> - 1.2.8-1
- Updated to 1.2.8
- Add ghosting for l2tp pipe (bz#656725)
* Mon Feb 07 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.2.7-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
* Tue Nov 30 2010 Paul Wouters <paul@xelerance.com> - 1.2.7-2
- fix md5 of init script in sources
* Tue Nov 30 2010 Paul Wouters <paul@xelerance.com> - 1.2.7-1
- Updated to 1.2.7
- Added more DEBUG build options to the make command
- Minor cleanups
* Sat Jan 09 2010 Paul Wouters <paul@xelerance.com> - 1.2.5-2
- Bump for EVR
* Sat Jan 09 2010 Paul Wouters <paul@xelerance.com> - 1.2.5-1
- Upgraded to 1.2.5. (fixes interop with two Windows machines behind same NAT)
- Fix mix space/tab in spec file
- Added missing keyword Default-Stop
* Mon Jul 27 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.2.4-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild
* Sun Mar 08 2009 Paul Wouters <paul@xelerance.com> - 1.2.4-3
- Bump version for tagging mistake
* Sun Mar 08 2009 Paul Wouters <paul@xelerance.com> - 1.2.4-2
-Fix initscript for https://bugzilla.redhat.com/show_bug.cgi?id=247100
* Sun Mar 08 2009 Paul Wouters <paul@xelerance.com> - 1.2.4-1
- Upgraded to 1.2.4
- Merged spec file with upstream
* Thu Feb 26 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.2.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild
* Thu Oct 9 2008 Paul Wouters <paul@xelerance.com> - 1.2.0-1
- Updated to new upstream release
* Sat Sep 6 2008 Tom "spot" Callaway <tcallawa@redhat.com> 1.1.12-3
- fix license tag
* Tue Feb 19 2008 Fedora Release Engineering <rel-eng@fedoraproject.org> - 1.1.12-2
- Autorebuild for GCC 4.3
* Fri Oct 26 2007 Paul Wouters <paul@xelerance.com> 1.1.12-1
- Upgraded to new release upstream
- Removed l2tpd to xl2tpd migration in post
* Wed Aug 29 2007 Fedora Release Engineering <rel-eng at fedoraproject dot org> - 1.1.11-3
- Rebuild for selinux ppc32 issue.
* Sat Jul 28 2007 Paul Wouters <paul@xelerance.com> 1.1.11-2
- Upgraded to 1.1.11
- Include new split README.*
* Mon Mar 19 2007 Paul Wouters <paul@xelerance.com> 1.1.09-1
- Upgraded to 1.1.09
* Fri Feb 23 2007 Paul Wouters <paul@xelerance.com> 1.1.08-2
- Bump for EVR
* Fri Feb 23 2007 Paul Wouters <paul@xelerance.com> 1.1.08-1
- Upgraded to 1.1.08
- This works around the ppp-2.4.2-6.4 issue of not dying on SIGTERM
* Tue Feb 20 2007 Paul Wouters <paul@xelerance.com> 1.1.07-2
- Fixed version usage in source macro
* Tue Feb 20 2007 Paul Wouters <paul@xelerance.com> 1.1.07-1
- Upgraded to 1.1.07
- Added /var/run/xl2tpd to the spec file so this pacakge
owns /var/run/xl2tpd
* Thu Dec 7 2006 Paul Wouters <paul@xelerance.com> 1.1.06-5
- Changed space/tab replacing method
* Wed Dec 6 2006 Paul Wouters <paul@xelerance.com> 1.1.06-4
- Added -p to keep original timestamps
- Added temporary hack to change space/tab in init file.
- Added /sbin/service dependancy
* Tue Dec 5 2006 Paul Wouters <paul@xelerance.com> 1.1.06-3
- Added Requires(post) / Requires(preun)
- changed init file to create /var/run/xl2tpd fixed a tab/space
- changed control file to be within /var/run/xl2tpd/
* Tue Dec 5 2006 Paul Wouters <paul@xelerance.com> 1.1.06-2
- Changed Mr. Karlsen's name to not be a utf8 problem
- Fixed Obosoletes/Provides to be more specific wrt l2tpd.
- Added dist tag which accidentally got deleted.
* Mon Dec 4 2006 Paul Wouters <paul@xelerance.com> 1.1.06-1
- Rebased spec file on Fedora Extras copy, but using xl2tpd as package name
* Sun Nov 27 2005 Paul Wouters <paul@xelerance.com> 0.69.20051030
- Pulled up sourceforget.net CVS fixes.
- various debugging added, but debugging should not be on by default.
- async/sync conversion routines must be ready for possibility that the read
will block due to routing loops.
- refactor control socket handling.
- move all logic about pty usage to pty.c. Try ptmx first, if it fails try
legacy ptys
- rename log() to l2tp_log(), as "log" is a math function.
- if we aren't deamonized, then log to stderr.
- added install: and DESTDIR support.
* Thu Oct 20 2005 Paul Wouters <paul@xelerance.com> 0.69-13
- Removed suse/mandrake specifics. Comply for Fedora Extras guidelines
* Tue Jun 21 2005 Jacco de Leeuw <jacco2@dds.nl> 0.69-12jdl
- Added log() patch by Paul Wouters so that l2tpd compiles on FC4.
* Sat Jun 4 2005 Jacco de Leeuw <jacco2@dds.nl>
- l2tpd.org has been hijacked. Project moved back to SourceForge:
http://l2tpd.sourceforge.net
* Tue May 3 2005 Jacco de Leeuw <jacco2@dds.nl>
- Small Makefile fixes. Explicitly use gcc instead of cc.
Network services library was not linked on Solaris due to typo.
* Thu Mar 17 2005 Jacco de Leeuw <jacco2@dds.nl> 0.69-11jdl
- Choosing between SysV or BSD style ptys is now configurable through
a compile-time boolean "unix98pty".
* Fri Feb 4 2005 Jacco de Leeuw <jacco2@dds.nl>
- Added code from Roaring Penguin (rp-l2tp) to support SysV-style ptys.
Requires the N_HDLC kernel module.
* Fri Nov 26 2004 Jacco de Leeuw <jacco2@dds.nl>
- Updated the README.
* Wed Nov 10 2004 Jacco de Leeuw <jacco2@dds.nl> 0.69-10jdl
- Patch by Marald Klein and Roger Luethi. Fixes writing PID file.
(http://l2tpd.graffl.net/msg01790.html)
Long overdue. Rereleasing 10jdl.
* Tue Nov 9 2004 Jacco de Leeuw <jacco2@dds.nl> 0.69-10jdl
- [SECURITY FIX] Added fix from Debian because of a bss-based
buffer overflow.
(http://www.mail-archive.com/l2tpd-devel@l2tpd.org/msg01071.html)
- Mandrake's FreeS/WAN, Openswan and Strongswan RPMS use configuration
directories /etc/{freeswan,openswan,strongswan}. Install our
configuration files to /etc/ipsec.d and create symbolic links in
those directories.
* Wed Aug 18 2004 Jacco de Leeuw <jacco2@dds.nl>
- Removed 'leftnexthop=' lines. Not relevant for recent versions
of FreeS/WAN and derivates.
* Tue Jan 20 2004 Jacco de Leeuw <jacco2@dds.nl> 0.69-9jdl
- Added "noccp" because of too much MPPE/CCP messages sometimes.
* Wed Dec 31 2003 Jacco de Leeuw <jacco2@dds.nl>
- Added patch in order to prevent StopCCN messages.
* Sat Aug 23 2003 Jacco de Leeuw <jacco2@dds.nl>
- MTU/MRU 1410 seems to be the lowest possible for MSL2TP.
For Windows 2000/XP it doesn't seem to matter.
- Typo in l2tpd.conf (192.168.128/25).
* Fri Aug 8 2003 Jacco de Leeuw <jacco2@dds.nl> 0.69-8jdl
- Added MTU/MRU 1400 to options.l2tpd. I don't know the optimal
value but some apps had problems with the default value.
* Fri Aug 1 2003 Jacco de Leeuw <jacco2@dds.nl>
- Added workaround for the missing hostname bug in the MSL2TP client
('Specify your hostname', error 629: "You have been disconnected
from the computer you are dialing").
* Sun Jul 20 2003 Jacco de Leeuw <jacco2@dds.nl> 0.69-7jdl
- Added the "listen-addr" global parameter for l2tpd.conf. By
default, the daemon listens on *all* interfaces. Use
"listen-addr" if you want it to bind to one specific
IP address (interface), for security reasons. (See also:
http://www.jacco2.dds.nl/networking/freeswan-l2tp.html#Firewallwarning)
- Explained in l2tpd.conf that two different IP addresses should be
used for 'listen-addr' and 'local ip'.
- Modified init script. Upgrades should work better now. You
still need to start/chkconfig l2tpd manually.
- Renamed the example Openswan .conf files to better reflect
the situation. There are two variants using different portselectors.
Previously I thought Windows 2000/XP used portselector 17/0
and the rest used 17/1701. But with the release of an updated
IPsec client by Microsoft, it turns out that 17/0 must have
been a mistake: the updated client now also uses 17/1701.
* Thu Apr 10 2003 Jacco de Leeuw <jacco2@dds.nl> 0.69-6jdl
- Changed sample chap-secrets to be valid only for specific
IP addresses.
* Thu Mar 13 2003 Bernhard Thoni <tech-role@tronicplanet.de>
- Adjustments for SuSE8.x (thanks, Bernhard!)
- Added sample chap-secrets.
* Thu Mar 6 2003 Jacco de Leeuw <jacco2@dds.nl> 0.69-5jdl
- Replaced Dominique's patch by Damion de Soto's, which does not
depend on the N_HDLC kernel module.
* Wed Feb 26 2003 Jacco de Leeuw <jacco2@dds.nl> 0.69-4jdl
- Seperate example config files for Win9x (MSL2TP) and Win2K/XP
due to left/rightprotoport differences.
Fixing preun for Red Hat.
* Mon Feb 3 2003 Jacco de Leeuw <jacco2@dds.nl> 0.69-3jdl
- Mandrake uses /etc/freeswan/ instead of /etc/ipsec.d/
Error fixed: source6 was used for both PSK and CERT.
* Wed Jan 29 2003 Jacco de Leeuw <jacco2@dds.nl> 0.69-3jdl
- Added Dominique Cressatti's pty patch in another attempt to
prevent the Windows 2000 Professional "loopback detected" error.
Seems to work!
* Wed Dec 25 2002 Jacco de Leeuw <jacco2@dds.nl> 0.69-2jdl
- Added 'connect-delay' to PPP parameters in an attempt to
prevent the Windows 2000 Professional "loopback detected" error.
Didn't seem to work.
* Fri Dec 13 2002 Jacco de Leeuw <jacco2@dds.nl> 0.69-1jdl
- Did not build on Red Hat 8.0. Solved by adding comments(?!).
Bug detected in spec file: chkconfig --list l2tpd does not work
on Red Hat 8.0. Not important enough to look into yet.
* Sun Nov 17 2002 Jacco de Leeuw <jacco2@dds.nl> 0.69-1jdl
- Tested on Red Hat, required some changes. No gprintf. Used different
pty patch, otherwise wouldn't run. Added buildroot sanity check.
* Sun Nov 10 2002 Jacco de Leeuw <jacco2@dds.nl>
- Specfile adapted from Mandrake Cooker. The original RPM can be
retrieved through:
http://www.rpmfind.net/linux/rpm2html/search.php?query=l2tpd
- Config path changed from /etc/l2tp/ to /etc/l2tpd/
(Seems more logical and rp-l2tp already uses /etc/l2tp/).
- Do not run at boot or install. The original RPM uses a config file
which is completely commented out, but it still starts l2tpd on all
interfaces. Could be a security risk. This RPM does not start l2tpd,
the sysadmin has to edit the config file and start l2tpd explicitly.
- Renamed patches to start with l2tpd-
- Added dependencies for pppd, glibc-devel.
- Use %%{name} as much as possible.
- l2tp-secrets contains passwords, thus should not be world readable.
- Removed dependency on rpm-helper.
* Mon Oct 21 2002 Lenny Cartier <lenny@mandrakesoft.com> 0.69-3mdk
- from Per 0yvind Karlsen <peroyvind@delonic.no> :
- PreReq and Requires
- Fix preun_service
* Thu Oct 17 2002 Per 0yvind Karlsen <peroyvind@delonic.no> 0.69-2mdk
- Move l2tpd from /usr/bin to /usr/sbin
- Added SysV initscript
- Patch0
- Patch1
* Thu Oct 17 2002 Per 0yvind Karlsen <peroyvind@delonic.no> 0.69-1mdk
- Initial release
Loading…
Cancel
Save