xl2tpd: fix by backporting the version from master branch
Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>
This commit is contained in:
parent
5fd21e2305
commit
77e4444a27
6 changed files with 110 additions and 71 deletions
|
@ -1,5 +1,5 @@
|
|||
#
|
||||
# Copyright (C) 2006-2014 OpenWrt.org
|
||||
# Copyright (C) 2006-2015 OpenWrt.org
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
# See /LICENSE for more information.
|
||||
|
@ -8,18 +8,16 @@
|
|||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=xl2tpd
|
||||
PKG_VERSION:=1.3.6
|
||||
PKG_VERSION:=devel-20150812
|
||||
PKG_RELEASE:=1
|
||||
PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
|
||||
PKG_MAINTAINER:=Yousong Zhou <yszhou4tech@gmail.com>
|
||||
PKG_LICENSE:=GPL-2.0
|
||||
PKG_LICENSE_FILES:=LICENSE
|
||||
|
||||
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_VERSION:=5674a5835e9b89b7438917a380f3a6d68528fa3e
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||
|
||||
PKG_INSTALL:=1
|
||||
|
@ -32,7 +30,7 @@ define Package/xl2tpd
|
|||
TITLE:=An L2TP (Layer 2 Tunneling Protocol) daemon
|
||||
URL:=http://www.xelerance.com/software/xl2tpd/
|
||||
SUBMENU:=VPN
|
||||
DEPENDS:=+ppp-mod-pppol2tp +ip +resolveip
|
||||
DEPENDS:=+ppp-mod-pppol2tp +resolveip
|
||||
endef
|
||||
|
||||
define Package/xl2tpd/description
|
||||
|
@ -41,9 +39,28 @@ 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=""
|
||||
# Use optimization options from OpenWrt build system
|
||||
MAKE_FLAGS += OFLAGS=""
|
||||
|
||||
ifneq (0,0)
|
||||
# debugging options from Makefile of xl2tpd package
|
||||
EXTRA_CFLAGS += \
|
||||
-DDEBUG_ZLB \
|
||||
-DDEBUG_HELLO \
|
||||
-DDEBUG_CLOSE \
|
||||
-DDEBUG_FLOW \
|
||||
-DDEBUG_FILE \
|
||||
-DDEBUG_AAA \
|
||||
-DDEBUG_PAYLOAD \
|
||||
-DDEBUG_CONTROL \
|
||||
-DDEBUG_PPPD \
|
||||
-DDEBUG_HIDDEN \
|
||||
-DDEBUG_ENTROPY \
|
||||
-DDEBUG_CONTROL_XMIT \
|
||||
-DDEBUG_MAGIC \
|
||||
-DDEBUG_FLOW_MORE \
|
||||
-DDEBUG_AUTH
|
||||
endif
|
||||
|
||||
define Package/xl2tpd/conffiles
|
||||
/etc/xl2tpd/xl2tpd.conf
|
||||
|
|
|
@ -15,35 +15,49 @@ proto_l2tp_init_config() {
|
|||
proto_config_add_string "pppd_options"
|
||||
proto_config_add_boolean "ipv6"
|
||||
proto_config_add_int "mtu"
|
||||
proto_config_add_int "checkup_interval"
|
||||
proto_config_add_string "server"
|
||||
available=1
|
||||
no_device=1
|
||||
no_proto_task=1
|
||||
}
|
||||
|
||||
proto_l2tp_setup() {
|
||||
local config="$1"
|
||||
local iface="$2"
|
||||
local optfile="/tmp/l2tp/options.${config}"
|
||||
local interface="$1"
|
||||
local optfile="/tmp/l2tp/options.${interface}"
|
||||
|
||||
local ip serv_addr server
|
||||
json_get_var server server && {
|
||||
for ip in $(resolveip -t 5 "$server"); do
|
||||
( proto_add_host_dependency "$config" "$ip" )
|
||||
( proto_add_host_dependency "$interface" "$ip" )
|
||||
serv_addr=1
|
||||
done
|
||||
}
|
||||
[ -n "$serv_addr" ] || {
|
||||
echo "Could not resolve server address"
|
||||
echo "Could not resolve server address" >&2
|
||||
sleep 5
|
||||
proto_setup_failed "$config"
|
||||
proto_setup_failed "$interface"
|
||||
exit 1
|
||||
}
|
||||
|
||||
if [ ! -p /var/run/xl2tpd/l2tp-control ]; then
|
||||
/etc/init.d/xl2tpd start
|
||||
# Start and wait for xl2tpd
|
||||
if [ ! -p /var/run/xl2tpd/l2tp-control -o -z "$(pidof xl2tpd)" ]; then
|
||||
/etc/init.d/xl2tpd restart
|
||||
|
||||
local wait_timeout=0
|
||||
while [ ! -p /var/run/xl2tpd/l2tp-control ]; do
|
||||
wait_timeout=$(($wait_timeout + 1))
|
||||
[ "$wait_timeout" -gt 5 ] && {
|
||||
echo "Cannot find xl2tpd control file." >&2
|
||||
proto_setup_failed "$interface"
|
||||
exit 1
|
||||
}
|
||||
sleep 1
|
||||
done
|
||||
fi
|
||||
|
||||
json_get_vars ipv6 demand keepalive username password pppd_options
|
||||
local ipv6 demand keepalive username password pppd_options mtu
|
||||
json_get_vars ipv6 demand keepalive username password pppd_options mtu
|
||||
[ "$ipv6" = 1 ] || ipv6=""
|
||||
if [ "${demand:-0}" -gt 0 ]; then
|
||||
demand="precompiled-active-filter /etc/ppp/filter demand idle $demand"
|
||||
|
@ -51,55 +65,59 @@ proto_l2tp_setup() {
|
|||
demand="persist"
|
||||
fi
|
||||
|
||||
[ -n "$mtu" ] || json_get_var mtu mtu
|
||||
|
||||
local interval="${keepalive##*[, ]}"
|
||||
[ "$interval" != "$keepalive" ] || interval=5
|
||||
|
||||
keepalive="${keepalive:+lcp-echo-interval $interval lcp-echo-failure ${keepalive%%[, ]*}}"
|
||||
username="${username:+user \"$username\" password \"$password\"}"
|
||||
ipv6="${ipv6:++ipv6}"
|
||||
mtu="${mtu:+mtu $mtu mru $mtu}"
|
||||
|
||||
mkdir -p /tmp/l2tp
|
||||
cat <<EOF >"$optfile"
|
||||
usepeerdns
|
||||
nodefaultroute
|
||||
ipparam "$interface"
|
||||
ifname "l2tp-$interface"
|
||||
ip-up-script /lib/netifd/ppp-up
|
||||
ipv6-up-script /lib/netifd/ppp-up
|
||||
ip-down-script /lib/netifd/ppp-down
|
||||
ipv6-down-script /lib/netifd/ppp-down
|
||||
# Don't wait for LCP term responses; exit immediately when killed.
|
||||
lcp-max-terminate 0
|
||||
$keepalive
|
||||
$username
|
||||
$ipv6
|
||||
$mtu
|
||||
$pppd_options
|
||||
EOF
|
||||
|
||||
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}
|
||||
xl2tpd-control add l2tp-${interface} pppoptfile=${optfile} lns=${server} || {
|
||||
echo "xl2tpd-control: Add l2tp-$interface failed" >&2
|
||||
proto_setup_failed "$interface"
|
||||
exit 1
|
||||
}
|
||||
xl2tpd-control connect l2tp-${interface} || {
|
||||
echo "xl2tpd-control: Connect l2tp-$interface failed" >&2
|
||||
proto_setup_failed "$interface"
|
||||
exit 1
|
||||
}
|
||||
}
|
||||
|
||||
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}
|
||||
rm -f ${optfile}
|
||||
if [ -p /var/run/xl2tpd/l2tp-control ]; then
|
||||
xl2tpd-control remove l2tp-${interface} || {
|
||||
echo "xl2tpd-control: Remove l2tp-$interface failed" >&2
|
||||
}
|
||||
fi
|
||||
# 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" ] || {
|
||||
|
|
|
@ -1,18 +1,24 @@
|
|||
#!/bin/sh /etc/rc.common
|
||||
# Copyright (C) 2006-2010 OpenWrt.org
|
||||
# Copyright (C) 2006-2015 OpenWrt.org
|
||||
|
||||
START=60
|
||||
USE_PROCD=1
|
||||
|
||||
BIN=xl2tpd
|
||||
DEFAULT=/etc/default/$BIN
|
||||
RUN_D=/var/run
|
||||
PID_F=$RUN_D/$BIN.pid
|
||||
RUN_D="/var/run/xl2tpd"
|
||||
PID_F="/var/run/xl2tpd.pid"
|
||||
|
||||
start() {
|
||||
mkdir -p $RUN_D/$BIN
|
||||
[ -f $DEFAULT ] && . $DEFAULT
|
||||
$BIN $OPTIONS
|
||||
start_service() {
|
||||
rm -rf "$RUN_D"
|
||||
mkdir -p "$RUN_D"
|
||||
|
||||
procd_open_instance
|
||||
procd_set_param command $BIN -D -l -p "$PID_F"
|
||||
procd_set_param respawn
|
||||
procd_close_instance
|
||||
}
|
||||
|
||||
stop() {
|
||||
[ -f $PID_F ] && kill $(cat $PID_F)
|
||||
stop_service() {
|
||||
rm -rf "$RUN_D"
|
||||
rm -rf "$PID_F"
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -91,7 +91,8 @@ OSFLAGS+= -DUSE_KERNEL
|
||||
@@ -97,7 +97,8 @@ OSFLAGS+= -DUSE_KERNEL
|
||||
|
||||
IPFLAGS?= -DIP_ALLOCATION
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -107,10 +107,10 @@ BINDIR?=$(DESTDIR)${PREFIX}/bin
|
||||
@@ -113,10 +113,10 @@ BINDIR?=$(DESTDIR)${PREFIX}/bin
|
||||
MANDIR?=$(DESTDIR)${PREFIX}/share/man
|
||||
|
||||
|
||||
|
@ -13,7 +13,7 @@
|
|||
|
||||
$(EXEC): $(OBJS) $(HDRS)
|
||||
$(CC) $(LDFLAGS) -o $@ $(OBJS) $(LDLIBS)
|
||||
@@ -118,14 +118,10 @@ $(EXEC): $(OBJS) $(HDRS)
|
||||
@@ -124,14 +124,10 @@ $(EXEC): $(OBJS) $(HDRS)
|
||||
$(CONTROL_EXEC): $(CONTROL_SRCS)
|
||||
$(CC) $(CFLAGS) $(LDFLAGS) $(CONTROL_SRCS) -o $@
|
||||
|
||||
|
@ -29,7 +29,7 @@
|
|||
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}
|
||||
@@ -139,11 +135,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/
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
Index: xl2tpd-1.3.6/xl2tpd.c
|
||||
===================================================================
|
||||
--- xl2tpd-1.3.6.orig/xl2tpd.c
|
||||
+++ xl2tpd-1.3.6/xl2tpd.c
|
||||
--- a/xl2tpd.c
|
||||
+++ b/xl2tpd.c
|
||||
@@ -30,7 +30,7 @@
|
||||
#include <errno.h>
|
||||
#include <unistd.h>
|
||||
|
|
Loading…
Reference in a new issue