summaryrefslogtreecommitdiff
path: root/package/vpnc
diff options
context:
space:
mode:
authorwbx <wbx@hydrogenium.(none)>2009-05-17 14:41:34 +0200
committerwbx <wbx@hydrogenium.(none)>2009-05-17 14:41:34 +0200
commit219a6dab8995aad9ac4860cc1a84d6f3509a03a4 (patch)
treeb9c0f3c43aebba2fcfef777592d0add39f2072f4 /package/vpnc
Initial import
Diffstat (limited to 'package/vpnc')
-rw-r--r--package/vpnc/Config.in9
-rw-r--r--package/vpnc/Makefile36
-rwxr-xr-xpackage/vpnc/files/vpnc-route30
-rwxr-xr-xpackage/vpnc/files/vpnc-script118
-rw-r--r--package/vpnc/files/vpnc.conf8
-rw-r--r--package/vpnc/ipkg/vpnc.conffiles4
-rwxr-xr-xpackage/vpnc/ipkg/vpnc.control6
-rw-r--r--package/vpnc/patches/patch-Makefile51
-rw-r--r--package/vpnc/patches/patch-config_c12
9 files changed, 274 insertions, 0 deletions
diff --git a/package/vpnc/Config.in b/package/vpnc/Config.in
new file mode 100644
index 000000000..25a0050c1
--- /dev/null
+++ b/package/vpnc/Config.in
@@ -0,0 +1,9 @@
+config ADK_PACKAGE_VPNC
+ prompt "vpnc.............................. VPN client for Cisco 3000"
+ tristate
+ default n
+ select ADK_KPACKAGE_KMOD_TUN
+ select ADK_PACKAGE_LIBGPG_ERROR
+ select ADK_PACKAGE_LIBGCRYPT
+ help
+ Client for cisco3000 VPN Concentrator.
diff --git a/package/vpnc/Makefile b/package/vpnc/Makefile
new file mode 100644
index 000000000..8936a9fe2
--- /dev/null
+++ b/package/vpnc/Makefile
@@ -0,0 +1,36 @@
+# $Id$
+#-
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+include ${TOPDIR}/rules.mk
+
+PKG_NAME:= vpnc
+PKG_VERSION:= 0.4.0
+PKG_RELEASE:= 2
+PKG_MD5SUM:= 604807e7dd90fce00a4e2344ee29c76d
+
+MASTER_SITES:= http://www.unix-ag.uni-kl.de/~massar/vpnc/
+
+PKG_DEPENDS:= libgcrypt libgpg-error kmod-tun
+
+include ${TOPDIR}/mk/package.mk
+
+$(eval $(call PKG_template,VPNC,${PKG_NAME},${PKG_VERSION}-${PKG_RELEASE},${ARCH}))
+
+BUILD_STYLE:= auto
+XAKE_FLAGS+= CC="${TARGET_CC}" \
+ OFLAGS="${TARGET_CFLAGS}" \
+ OS="Linux" \
+ STAGING_DIR=${STAGING_DIR} \
+ PREFIX=/usr
+INSTALL_STYLE:= auto
+
+post-install:
+ echo 'Depends: ${PKG_DEPENDS}' >>${IDIR_VPNC}/CONTROL/control
+ ${CP} ${WRKINST}/* ${IDIR_VPNC}/
+ ${CP} files/vpnc-route ${IDIR_VPNC}/etc/vpnc/
+ ${CP} files/vpnc-script ${IDIR_VPNC}/etc/vpnc/
+ ${CP} files/vpnc.conf ${IDIR_VPNC}/etc/vpnc/
+
+include ${TOPDIR}/mk/pkg-bottom.mk
diff --git a/package/vpnc/files/vpnc-route b/package/vpnc/files/vpnc-route
new file mode 100755
index 000000000..f39eb1355
--- /dev/null
+++ b/package/vpnc/files/vpnc-route
@@ -0,0 +1,30 @@
+#!/bin/sh
+
+#* VPNGATEWAY -- vpn gateway address (always present)
+#* TUNDEV -- tunnel device (always present)
+#* INTERNAL_IP4_ADDRESS -- address (always present)
+
+# define which traffic should be routed through the tunnel device
+# any traffic that is not bound to a local interface will be
+# mangled by the "main" routing table, so we add our rules to
+# the main routing table
+
+# the setup for remote traffic and already bound traffic is done by
+# the hotplug scripts.
+
+if [ "x$TUNDEV" == "x" ]; then
+ echo "No TUNDEV given. Script must be called from vpnc-script"
+ exit 1;
+fi
+case "$1" in
+ start)
+ # for each subnet that should be reached from this machine over the vpn tunnel,
+ # add a line like this:
+ # ip route add some.sub.net/msk dev $TUNDEV src $INTERNAL_IP4_ADDRESS
+ ;;
+ stop)
+ # remove the routing entries
+ ;;
+esac;
+exit 0;
+
diff --git a/package/vpnc/files/vpnc-script b/package/vpnc/files/vpnc-script
new file mode 100755
index 000000000..16f1111fa
--- /dev/null
+++ b/package/vpnc/files/vpnc-script
@@ -0,0 +1,118 @@
+#!/bin/sh
+#* reason -- why this script was called, one of: pre-init connect disconnect
+#* VPNGATEWAY -- vpn gateway address (always present)
+#* TUNDEV -- tunnel device (always present)
+#* INTERNAL_IP4_ADDRESS -- address (always present)
+#* INTERNAL_IP4_NETMASK -- netmask (often unset)
+#* INTERNAL_IP4_DNS -- list of dns serverss
+#* INTERNAL_IP4_NBNS -- list of wins servers
+#* CISCO_DEF_DOMAIN -- default domain name
+#* CISCO_BANNER -- banner from server
+#* CISCO_SPLIT_INC -- number of networks in split-network-list
+#* CISCO_SPLIT_INC_%d_ADDR -- network address
+#* CISCO_SPLIT_INC_%d_MASK -- subnet mask (for example: 255.255.255.0)
+#* CISCO_SPLIT_INC_%d_MASKLEN -- subnet masklen (for example: 24)
+#* CISCO_SPLIT_INC_%d_PROTOCOL -- protocol (often just 0)
+#* CISCO_SPLIT_INC_%d_SPORT -- source port (often just 0)
+#* CISCO_SPLIT_INC_%d_DPORT -- destination port (often just 0)
+
+do_pre_init() {
+ # bevore doing anything, make shure, the tun module is loaded and the
+ # tun device nodes exist.
+ if (exec 6<> /dev/net/tun) > /dev/null 2>&1 ; then
+ :
+ else # can't open /dev/net/tun
+ test -e /proc/sys/kernel/modprobe && `cat /proc/sys/kernel/modprobe` tun 2>/dev/null
+ # fix for broken devfs in kernel 2.6.x
+ if [ "`readlink /dev/net/tun`" = misc/net/tun \
+ -a ! -e /dev/net/misc/net/tun -a -e /dev/misc/net/tun ] ; then
+ ln -sf /dev/misc/net/tun /dev/net/tun
+ fi
+ # make sure tun device exists
+ if [ ! -e /dev/net/tun ]; then
+ mkdir -p /dev/net
+ mknod -m 0640 /dev/net/tun c 10 200
+ fi
+ fi
+ echo "pre-init successful."
+}
+
+do_connect() {
+ # after connection is established, we should update resolv.conf
+ # and the kernel routing table
+
+ # set up the interface
+ ifconfig $TUNDEV $INTERNAL_IP4_ADDRESS pointopoint $INTERNAL_IP4_ADDRESS mtu 1412 up
+
+ # set up the route to the remote side and remove any cached routes
+ ip route add `ip route get "$VPNGATEWAY"`
+ ip route flush cache
+
+ # set up the default routes via vpnc-route
+ echo "starting vpnc-route"
+ /etc/vpnc/vpnc-route start
+
+ if [ "x$INTERNAL_IP4_DNS" != "x" ]; then
+ # set up the dns servers (add to resolv.conf)
+ echo "setting up DNS server"
+ # simply add the given servers to the resolv.conf file
+ echo "" > /var/run/vpnc/resolv.conf
+ for dns in $INTERNAL_IP4_DNS; do
+ echo "nameserver $dns" >> /var/run/vpnc/resolv.conf
+ done;
+ cat /etc/resolv.conf >> /var/run/vpnc/resolv.conf
+ mv /var/run/vpnc/resolv.conf /etc/resolv.conf
+ # keep the DNS server IPs for shutdown
+ echo "$INTERNAL_IP4_DNS" > /var/run/vpnc/dnsserver
+ fi
+
+}
+
+do_disconnect() {
+ # remove the nameserver from resolv.conf
+ # and restore the old routing table
+
+ # remove route to gateway
+ ip route del $VPNGATEWAY
+
+ # remove default routes
+ /etc/vpnc/vpnc-route stop
+
+ # remove the dns servers from resolv.conf
+ if [ -f /var/run/vpnc/dnsserver ]; then
+ re_dns="";
+ for dns in `cat /var/run/vpnc/dnsserver`; do
+ echo "removing DNS server $dns";
+ if [ "x$re_dns" == "x" ]; then
+ re_dns=\($dns\);
+ else
+ re_dns=$re_dns\|\($dns\);
+ fi;
+ done;
+ echo "re_dns=$re_dns"
+ cat /etc/resolv.conf | grep -v -E "($re_dns)|(^\ *$)" > /var/run/vpnc/resolv.conf
+ mv /var/run/vpnc/resolv.conf /etc/resolv.conf
+ rm /var/run/vpnc/dnsserver
+ fi;
+
+ # deconfigure network interface
+ ifconfig $TUNDEV down
+}
+
+case "$reason" in
+ pre-init)
+ do_pre_init
+ ;;
+ connect)
+ do_connect
+ ;;
+ disconnect)
+ do_disconnect
+ ;;
+ *)
+ echo "unknown reason '$reason'. Maybe vpnc-script is out of date" 1>&2
+ exit 1
+ ;;
+esac
+
+exit 0
diff --git a/package/vpnc/files/vpnc.conf b/package/vpnc/files/vpnc.conf
new file mode 100644
index 000000000..3f515e08c
--- /dev/null
+++ b/package/vpnc/files/vpnc.conf
@@ -0,0 +1,8 @@
+IPSec gateway vpn-gateway.tld
+IPSec ID group_id
+IPSec secret group_password
+Xauth username your_username
+Xauth password your_password
+# DNSUpdate no
+
+
diff --git a/package/vpnc/ipkg/vpnc.conffiles b/package/vpnc/ipkg/vpnc.conffiles
new file mode 100644
index 000000000..a25d8a07c
--- /dev/null
+++ b/package/vpnc/ipkg/vpnc.conffiles
@@ -0,0 +1,4 @@
+/etc/vpnc/vpnc.conf
+/etc/vpnc/vpnc-script
+/etc/vpnc/vpnc-route
+
diff --git a/package/vpnc/ipkg/vpnc.control b/package/vpnc/ipkg/vpnc.control
new file mode 100755
index 000000000..d2db146ac
--- /dev/null
+++ b/package/vpnc/ipkg/vpnc.control
@@ -0,0 +1,6 @@
+Package: vpnc
+Section: net
+Architecture: mipsel
+Priority: optional
+Description: client for cisco3000 VPN Concentrator.
+Depends: libgpg-error, libgcrypt, kmod-tun
diff --git a/package/vpnc/patches/patch-Makefile b/package/vpnc/patches/patch-Makefile
new file mode 100644
index 000000000..bb3a255a3
--- /dev/null
+++ b/package/vpnc/patches/patch-Makefile
@@ -0,0 +1,51 @@
+$Id$
+--- vpnc-0.4.0.orig/Makefile 2007-02-19 21:51:12.000000000 +0100
++++ vpnc-0.4.0/Makefile 2007-04-21 18:39:46.000000000 +0200
+@@ -35,12 +35,11 @@ VERSION := $(shell sh mk-version)
+ RELEASE_VERSION := $(shell cat VERSION)
+
+ CC=gcc
+-CFLAGS += -W -Wall -O3 -Wmissing-declarations -Wwrite-strings -g
++CFLAGS += -W -Wall -O3 -Wmissing-declarations -Wwrite-strings -g -I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include $(OFLAGS)
+ CPPFLAGS = -DVERSION=\"$(VERSION)\"
+-LDFLAGS = -g $(shell libgcrypt-config --libs)
+-CFLAGS += $(shell libgcrypt-config --cflags)
++LDFLAGS = -g -L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib -lgcrypt -lgpg-error
+
+-ifeq ($(shell uname -s), SunOS)
++ifeq ($(OS), SunOS)
+ LDFLAGS += -lnsl -lresolv -lsocket
+ endif
+
+@@ -84,21 +83,21 @@ distclean : clean
+ -rm -f vpnc-debug.c vpnc-debug.h vpnc.ps .depend
+
+ install : all
+- install -d $(DESTDIR)$(ETCDIR) $(DESTDIR)$(BINDIR) $(DESTDIR)$(SBINDIR) $(DESTDIR)$(MANDIR)/man8
+- install vpnc-script $(DESTDIR)$(ETCDIR)
+- install -m 600 vpnc.conf $(DESTDIR)$(ETCDIR)/default.conf
++ install -d $(DESTDIR)$(ETCDIR) $(DESTDIR)$(SBINDIR)
++# install vpnc-script $(DESTDIR)$(ETCDIR)
++# install -m 600 vpnc.conf $(DESTDIR)$(ETCDIR)/default.conf
+ install vpnc vpnc-disconnect $(DESTDIR)$(SBINDIR)
+- install pcf2vpnc $(DESTDIR)$(BINDIR)
+- install vpnc.8 $(DESTDIR)$(MANDIR)/man8
++# install pcf2vpnc $(DESTDIR)$(BINDIR)
++# install vpnc.8 $(DESTDIR)$(MANDIR)/man8
+
+ install-strip : all
+- install -d $(DESTDIR)$(ETCDIR) $(DESTDIR)$(SBINDIR) $(DESTDIR)$(MANDIR)/man8
+- install vpnc-script $(DESTDIR)$(ETCDIR)
+- install -m 600 vpnc.conf $(DESTDIR)$(ETCDIR)/default.conf
+- install pcf2vpnc $(DESTDIR)$(BINDIR)
++ install -d $(DESTDIR)$(ETCDIR) $(DESTDIR)$(SBINDIR)
++# install vpnc-script $(DESTDIR)$(ETCDIR)
++# install -m 600 vpnc.conf $(DESTDIR)$(ETCDIR)/default.conf
++# install pcf2vpnc $(DESTDIR)$(BINDIR)
+ install -s vpnc $(DESTDIR)$(SBINDIR)
+ install vpnc-disconnect $(DESTDIR)$(SBINDIR)
+- install vpnc.8 $(DESTDIR)$(MANDIR)/man8
++# install vpnc.8 $(DESTDIR)$(MANDIR)/man8
+
+ uninstall :
+ rm -f $(DESTDIR)$(SBINDIR)/vpnc \
diff --git a/package/vpnc/patches/patch-config_c b/package/vpnc/patches/patch-config_c
new file mode 100644
index 000000000..ce5cb30e9
--- /dev/null
+++ b/package/vpnc/patches/patch-config_c
@@ -0,0 +1,12 @@
+$Id: update-patches 24 2008-08-31 14:56:13Z wbx $
+--- vpnc-0.4.0.orig/config.c 2007-02-16 18:22:06.000000000 +0100
++++ vpnc-0.4.0/config.c 2008-10-16 12:55:57.000000000 +0200
+@@ -485,7 +485,7 @@ static char *get_config_filename(const c
+ {
+ char *realname;
+
+- asprintf(&realname, "%s%s%s", index(name, '/') ? "" : "/etc/vpnc/", name, add_dot_conf ? ".conf" : "");
++ asprintf(&realname, "%s%s%s", strchr(name, '/') ? "" : "/etc/vpnc/", name, add_dot_conf ? ".conf" : "");
+ return realname;
+ }
+