mirror of https://github.com/openwrt/packages.git
Import xl2tpd
Use sources on github and add myself as maintainer. Signed-off-by: Daniel Golle <daniel@makrotopia.org>pull/19/head
parent
6fe800bddf
commit
4ce0354910
|
@ -0,0 +1,71 @@
|
|||
#
|
||||
# Copyright (C) 2006-2014 OpenWrt.org
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
# See /LICENSE for more information.
|
||||
#
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=xl2tpd
|
||||
PKG_VERSION:=1.3.6
|
||||
PKG_RELEASE:=1
|
||||
PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
|
||||
|
||||
PKG_RELEASE=$(PKG_SOURCE_VERSION)
|
||||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL:=https://github.com/xelerance/xl2tpd.git
|
||||
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
|
||||
PKG_SOURCE_VERSION:=5619e1771048e74b729804e8602f409af0f3faea
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||
|
||||
PKG_INSTALL:=1
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
define Package/xl2tpd
|
||||
SECTION:=net
|
||||
CATEGORY:=Network
|
||||
TITLE:=An L2TP (Layer 2 Tunneling Protocol) daemon
|
||||
URL:=http://www.xelerance.com/software/xl2tpd/
|
||||
SUBMENU:=VPN
|
||||
DEPENDS:=+ppp-mod-pppol2tp +ip +resolveip
|
||||
endef
|
||||
|
||||
define Package/xl2tpd/description
|
||||
l2tpd is the open source implementation of the L2TP tunneling protocol (RFC2661).
|
||||
It does implement both LAC and LNS role in a L2TP networking architecture. The
|
||||
main goal of this protocol is to tunnel PPP frame trough an IP network.
|
||||
endef
|
||||
|
||||
# XXX: CFLAGS are already set by Build/Compile/Default
|
||||
MAKE_FLAGS+= \
|
||||
OFLAGS=""
|
||||
|
||||
define Package/xl2tpd/conffiles
|
||||
/etc/xl2tpd/xl2tpd.conf
|
||||
/etc/xl2tpd/xl2tp-secrets
|
||||
/etc/ppp/options.xl2tpd
|
||||
endef
|
||||
|
||||
define Package/xl2tpd/install
|
||||
$(INSTALL_DIR) $(1)/usr/sbin
|
||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/local/sbin/xl2tpd $(1)/usr/sbin/
|
||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/local/sbin/xl2tpd-control $(1)/usr/sbin/
|
||||
|
||||
$(INSTALL_DIR) $(1)/etc/init.d
|
||||
$(INSTALL_BIN) ./files/xl2tpd.init $(1)/etc/init.d/xl2tpd
|
||||
|
||||
$(INSTALL_DIR) $(1)/etc/xl2tpd
|
||||
$(INSTALL_DATA) ./files/xl2tpd.conf $(1)/etc/xl2tpd/
|
||||
$(INSTALL_CONF) ./files/xl2tp-secrets $(1)/etc/xl2tpd/
|
||||
|
||||
$(INSTALL_DIR) $(1)/etc/ppp
|
||||
$(INSTALL_DATA) ./files/options.xl2tpd $(1)/etc/ppp/
|
||||
|
||||
$(INSTALL_DIR) $(1)/lib/netifd/proto
|
||||
$(INSTALL_BIN) ./files/l2tp.sh $(1)/lib/netifd/proto
|
||||
endef
|
||||
|
||||
$(eval $(call BuildPackage,xl2tpd))
|
|
@ -0,0 +1,23 @@
|
|||
OpenWRT Package for xl2tpd
|
||||
|
||||
xl2tpd is a development from the original l2tpd package originally written by
|
||||
Mark Spencer, subsequently forked by Scott Balmos and David Stipp, inherited
|
||||
by Jeff McAdams, modified substantially by Jacco de Leeuw and then forked
|
||||
again by Xelerance (after it was abandoned by l2tpd.org).
|
||||
|
||||
Rationale for inclusion in OpenWRT:
|
||||
|
||||
l2tpd has some serious alignment problems on RISC platforms. It also runs
|
||||
purely in userspace.
|
||||
|
||||
Some of the features added in this fork include:
|
||||
|
||||
1. IPSec SA reference tracking inconjunction with openswan's IPSec transport
|
||||
mode, which adds support for multiple clients behind the same NAT router
|
||||
and multiple clients on the same internal IP behind different NAT routers.
|
||||
|
||||
2. Support for the pppol2tp kernel mode L2TP.
|
||||
|
||||
3. Alignment and endian problems resolved.
|
||||
|
||||
hcg
|
|
@ -0,0 +1,107 @@
|
|||
#!/bin/sh
|
||||
|
||||
[ -x /usr/sbin/xl2tpd ] || exit 0
|
||||
|
||||
[ -n "$INCLUDE_ONLY" ] || {
|
||||
. /lib/functions.sh
|
||||
. ../netifd-proto.sh
|
||||
init_proto "$@"
|
||||
}
|
||||
|
||||
proto_l2tp_init_config() {
|
||||
proto_config_add_string "username"
|
||||
proto_config_add_string "password"
|
||||
proto_config_add_string "keepalive"
|
||||
proto_config_add_string "pppd_options"
|
||||
proto_config_add_boolean "ipv6"
|
||||
proto_config_add_int "mtu"
|
||||
proto_config_add_string "server"
|
||||
available=1
|
||||
no_device=1
|
||||
}
|
||||
|
||||
proto_l2tp_setup() {
|
||||
local config="$1"
|
||||
local iface="$2"
|
||||
local optfile="/tmp/l2tp/options.${config}"
|
||||
|
||||
local ip serv_addr server
|
||||
json_get_var server server && {
|
||||
for ip in $(resolveip -t 5 "$server"); do
|
||||
( proto_add_host_dependency "$config" "$ip" )
|
||||
serv_addr=1
|
||||
done
|
||||
}
|
||||
[ -n "$serv_addr" ] || {
|
||||
echo "Could not resolve server address"
|
||||
sleep 5
|
||||
proto_setup_failed "$config"
|
||||
exit 1
|
||||
}
|
||||
|
||||
if [ ! -p /var/run/xl2tpd/l2tp-control ]; then
|
||||
/etc/init.d/xl2tpd start
|
||||
fi
|
||||
|
||||
json_get_vars ipv6 demand keepalive username password pppd_options
|
||||
[ "$ipv6" = 1 ] || ipv6=""
|
||||
if [ "${demand:-0}" -gt 0 ]; then
|
||||
demand="precompiled-active-filter /etc/ppp/filter demand idle $demand"
|
||||
else
|
||||
demand="persist"
|
||||
fi
|
||||
|
||||
[ -n "$mtu" ] || json_get_var mtu mtu
|
||||
|
||||
local interval="${keepalive##*[, ]}"
|
||||
[ "$interval" != "$keepalive" ] || interval=5
|
||||
|
||||
mkdir -p /tmp/l2tp
|
||||
|
||||
echo "${keepalive:+lcp-echo-interval $interval lcp-echo-failure ${keepalive%%[, ]*}}" > "${optfile}"
|
||||
echo "usepeerdns" >> "${optfile}"
|
||||
echo "nodefaultroute" >> "${optfile}"
|
||||
echo "${username:+user \"$username\" password \"$password\"}" >> "${optfile}"
|
||||
echo "ipparam \"$config\"" >> "${optfile}"
|
||||
echo "ifname \"l2tp-$config\"" >> "${optfile}"
|
||||
echo "ip-up-script /lib/netifd/ppp-up" >> "${optfile}"
|
||||
echo "ipv6-up-script /lib/netifd/ppp-up" >> "${optfile}"
|
||||
echo "ip-down-script /lib/netifd/ppp-down" >> "${optfile}"
|
||||
echo "ipv6-down-script /lib/netifd/ppp-down" >> "${optfile}"
|
||||
# Don't wait for LCP term responses; exit immediately when killed.
|
||||
echo "lcp-max-terminate 0" >> "${optfile}"
|
||||
echo "${ipv6:++ipv6} ${pppd_options}" >> "${optfile}"
|
||||
echo "${mtu:+mtu $mtu mru $mtu}" >> "${optfile}"
|
||||
|
||||
xl2tpd-control add l2tp-${config} pppoptfile=${optfile} lns=${server} redial=yes redial timeout=20
|
||||
xl2tpd-control connect l2tp-${config}
|
||||
}
|
||||
|
||||
proto_l2tp_teardown() {
|
||||
local interface="$1"
|
||||
local optfile="/tmp/l2tp/options.${interface}"
|
||||
|
||||
case "$ERROR" in
|
||||
11|19)
|
||||
proto_notify_error "$interface" AUTH_FAILED
|
||||
proto_block_restart "$interface"
|
||||
;;
|
||||
2)
|
||||
proto_notify_error "$interface" INVALID_OPTIONS
|
||||
proto_block_restart "$interface"
|
||||
;;
|
||||
esac
|
||||
|
||||
xl2tpd-control disconnect l2tp-${interface}
|
||||
# Wait for interface to go down
|
||||
while [ -d /sys/class/net/l2tp-${interface} ]; do
|
||||
sleep 1
|
||||
done
|
||||
|
||||
xl2tpd-control remove l2tp-${interface}
|
||||
rm -f ${optfile}
|
||||
}
|
||||
|
||||
[ -n "$INCLUDE_ONLY" ] || {
|
||||
add_protocol l2tp
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
#
|
||||
|
||||
lock
|
||||
noauth
|
||||
debug
|
||||
dump
|
||||
logfd 2
|
||||
logfile /var/log/xl2tpd.log
|
||||
noccp
|
||||
novj
|
||||
novjccomp
|
||||
nopcomp
|
||||
noaccomp
|
|
@ -0,0 +1,5 @@
|
|||
# Secrets for authenticating l2tp tunnels
|
||||
# us them secret
|
||||
# * marko blah2
|
||||
# zeus marko blah
|
||||
# * * interop
|
|
@ -0,0 +1,23 @@
|
|||
[global]
|
||||
port = 1701
|
||||
auth file = /etc/xl2tpd/xl2tp-secrets
|
||||
access control = no
|
||||
|
||||
;[lns default]
|
||||
;exclusive = yes
|
||||
;ip range = 192.168.254.202-192.168.254.210
|
||||
;lac = 10.0.1.2
|
||||
;hidden bit = no
|
||||
;local ip = 192.168.254.200
|
||||
;length bit = yes
|
||||
;refuse authentication = yes
|
||||
;name = VersaLink
|
||||
;ppp debug = yes
|
||||
;pppoptfile = /etc/ppp/options.xl2tpd
|
||||
|
||||
;[lac left]
|
||||
;lns = 10.0.1.2
|
||||
;refuse authentication = yes
|
||||
;name = VersaLink
|
||||
;ppp debug = yes
|
||||
;pppoptfile = /etc/ppp/options.xl2tpd
|
|
@ -0,0 +1,73 @@
|
|||
;
|
||||
; Sample l2tpd configuration file
|
||||
;
|
||||
; This example file should give you some idea of how the options for l2tpd
|
||||
; should work. The best place to look for a list of all options is in
|
||||
; the source code itself, until I have the time to write better documetation :)
|
||||
; Specifically, the file "file.c" contains a list of commands at the end.
|
||||
;
|
||||
; You most definitely don't have to spell out everything as it is done here
|
||||
;
|
||||
; [global] ; Global parameters:
|
||||
; port = 1701 ; * Bind to port 1701
|
||||
; auth file = /etc/xl2tpd/xl2tp-secrets ; * Where our challenge secrets are
|
||||
; access control = yes ; * Refuse connections without IP match
|
||||
; rand source = dev ; Source for entropy for random
|
||||
; ; numbers, options are:
|
||||
; ; dev - reads of /dev/urandom
|
||||
; ; sys - uses rand()
|
||||
; ; egd - reads from egd socket
|
||||
; ; egd is not yet implemented
|
||||
;
|
||||
; [lns default] ; Our fallthrough LNS definition
|
||||
; exclusive = no ; * Only permit one tunnel per host
|
||||
; ip range = 192.168.0.1-192.168.0.20 ; * Allocate from this IP range
|
||||
; no ip range = 192.168.0.3-192.168.0.9 ; * Except these hosts
|
||||
; ip range = 192.168.0.5 ; * But this one is okay
|
||||
; ip range = lac1-lac2 ; * And anything from lac1 to lac2's IP
|
||||
; lac = 192.168.1.4 - 192.168.1.8 ; * These can connect as LAC's
|
||||
; no lac = untrusted.marko.net ; * This guy can't connect
|
||||
; hidden bit = no ; * Use hidden AVP's?
|
||||
; local ip = 192.168.1.2 ; * Our local IP to use
|
||||
; length bit = yes ; * Use length bit in payload?
|
||||
; require chap = yes ; * Require CHAP auth. by peer
|
||||
; refuse pap = yes ; * Refuse PAP authentication
|
||||
; refuse chap = no ; * Refuse CHAP authentication
|
||||
; refuse authentication = no ; * Refuse authentication altogether
|
||||
; require authentication = yes ; * Require peer to authenticate
|
||||
; unix authentication = no ; * Use /etc/passwd for auth.
|
||||
; name = myhostname ; * Report this as our hostname
|
||||
; ppp debug = no ; * Turn on PPP debugging
|
||||
; pppoptfile = /etc/ppp/options.xl2tpd.lns ; * ppp options file
|
||||
; call rws = 10 ; * RWS for call (-1 is valid)
|
||||
; tunnel rws = 4 ; * RWS for tunnel (must be > 0)
|
||||
; flow bit = yes ; * Include sequence numbers
|
||||
; challenge = yes ; * Challenge authenticate peer ;
|
||||
;
|
||||
; [lac marko] ; Example VPN LAC definition
|
||||
; lns = lns.marko.net ; * Who is our LNS?
|
||||
; lns = lns2.marko.net ; * A backup LNS (not yet used)
|
||||
; redial = yes ; * Redial if disconnected?
|
||||
; redial timeout = 15 ; * Wait n seconds between redials
|
||||
; max redials = 5 ; * Give up after n consecutive failures
|
||||
; hidden bit = yes ; * User hidden AVP's?
|
||||
; local ip = 192.168.1.1 ; * Force peer to use this IP for us
|
||||
; remote ip = 192.168.1.2 ; * Force peer to use this as their IP
|
||||
; length bit = no ; * Use length bit in payload?
|
||||
; require pap = no ; * Require PAP auth. by peer
|
||||
; require chap = yes ; * Require CHAP auth. by peer
|
||||
; refuse pap = yes ; * Refuse PAP authentication
|
||||
; refuse chap = no ; * Refuse CHAP authentication
|
||||
; refuse authentication = no ; * Refuse authentication altogether
|
||||
; require authentication = yes ; * Require peer to authenticate
|
||||
; name = marko ; * Report this as our hostname
|
||||
; ppp debug = no ; * Turn on PPP debugging
|
||||
; pppoptfile = /etc/ppp/options.xl2tpd.marko ; * ppp options file for this lac
|
||||
; call rws = 10 ; * RWS for call (-1 is valid)
|
||||
; tunnel rws = 4 ; * RWS for tunnel (must be > 0)
|
||||
; flow bit = yes ; * Include sequence numbers
|
||||
; challenge = yes ; * Challenge authenticate peer
|
||||
;
|
||||
; [lac cisco] ; Another quick LAC
|
||||
; lns = cisco.marko.net ; * Required, but can take from default
|
||||
; require authentication = yes
|
|
@ -0,0 +1,18 @@
|
|||
#!/bin/sh /etc/rc.common
|
||||
# Copyright (C) 2006-2010 OpenWrt.org
|
||||
|
||||
START=60
|
||||
BIN=xl2tpd
|
||||
DEFAULT=/etc/default/$BIN
|
||||
RUN_D=/var/run
|
||||
PID_F=$RUN_D/$BIN.pid
|
||||
|
||||
start() {
|
||||
mkdir -p $RUN_D/$BIN
|
||||
[ -f $DEFAULT ] && . $DEFAULT
|
||||
$BIN $OPTIONS
|
||||
}
|
||||
|
||||
stop() {
|
||||
[ -f $PID_F ] && kill $(cat $PID_F)
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -91,7 +91,8 @@ OSFLAGS+= -DUSE_KERNEL
|
||||
|
||||
IPFLAGS?= -DIP_ALLOCATION
|
||||
|
||||
-CFLAGS+= $(DFLAGS) -O2 -fno-builtin -Wall -DSANITY $(OSFLAGS) $(IPFLAGS)
|
||||
+OFLAGS=-O2
|
||||
+CFLAGS+= $(DFLAGS) $(OFLAGS) -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
|
||||
SRCS=${OBJS:.o=.c} ${HDRS}
|
|
@ -0,0 +1,43 @@
|
|||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -107,10 +107,10 @@ BINDIR?=$(DESTDIR)${PREFIX}/bin
|
||||
MANDIR?=$(DESTDIR)${PREFIX}/share/man
|
||||
|
||||
|
||||
-all: $(EXEC) pfc $(CONTROL_EXEC)
|
||||
+all: $(EXEC) $(CONTROL_EXEC)
|
||||
|
||||
clean:
|
||||
- rm -f $(OBJS) $(EXEC) pfc.o pfc $(CONTROL_EXEC)
|
||||
+ rm -f $(OBJS) $(EXEC) $(CONTROL_EXEC)
|
||||
|
||||
$(EXEC): $(OBJS) $(HDRS)
|
||||
$(CC) $(LDFLAGS) -o $@ $(OBJS) $(LDLIBS)
|
||||
@@ -118,14 +118,10 @@ $(EXEC): $(OBJS) $(HDRS)
|
||||
$(CONTROL_EXEC): $(CONTROL_SRCS)
|
||||
$(CC) $(CFLAGS) $(LDFLAGS) $(CONTROL_SRCS) -o $@
|
||||
|
||||
-pfc:
|
||||
- $(CC) $(CFLAGS) -c contrib/pfc.c
|
||||
- $(CC) $(LDFLAGS) -o pfc pfc.o -lpcap $(LDLIBS)
|
||||
-
|
||||
romfs:
|
||||
$(ROMFSINST) /bin/$(EXEC)
|
||||
|
||||
-install: ${EXEC} pfc ${CONTROL_EXEC}
|
||||
+install: ${EXEC} ${CONTROL_EXEC}
|
||||
install -d -m 0755 ${SBINDIR}
|
||||
install -m 0755 $(EXEC) ${SBINDIR}/$(EXEC)
|
||||
install -d -m 0755 ${MANDIR}/man5
|
||||
@@ -133,11 +129,6 @@ install: ${EXEC} pfc ${CONTROL_EXEC}
|
||||
install -m 0644 doc/xl2tpd.8 ${MANDIR}/man8/
|
||||
install -m 0644 doc/xl2tpd.conf.5 doc/l2tp-secrets.5 \
|
||||
${MANDIR}/man5/
|
||||
- # pfc
|
||||
- install -d -m 0755 ${BINDIR}
|
||||
- install -m 0755 pfc ${BINDIR}/pfc
|
||||
- install -d -m 0755 ${MANDIR}/man1
|
||||
- install -m 0644 contrib/pfc.1 ${MANDIR}/man1/
|
||||
# control exec
|
||||
install -d -m 0755 ${SBINDIR}
|
||||
install -m 0755 $(CONTROL_EXEC) ${SBINDIR}/$(CONTROL_EXEC)
|
Loading…
Reference in New Issue