summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarkus Stenberg2014-05-26 14:19:42 +0000
committerMarkus Stenberg2014-06-02 21:48:28 +0000
commit9d6f368724e98b8031819e30cbbb1131a0c0aec3 (patch)
treefc9bcee2a9f2a4e815623b642713bf9ef74351cc
parente58c0555a1fbc37273c89a504ba7a1363089b671 (diff)
downloadrouting-9d6f368724e98b8031819e30cbbb1131a0c0aec3.tar.gz
minimalist-pcproxy: Added.
hnetd: Added use of minimalist-pcproxy(/miniupnpd) for PCP, if present.
-rw-r--r--hnetd/Makefile16
-rw-r--r--hnetd/files/hnetd.init11
-rw-r--r--hnetd/files/pcp-script46
-rw-r--r--minimalist-pcproxy/Makefile56
-rw-r--r--minimalist-pcproxy/files/minimalist-pcproxy.defaults15
5 files changed, 138 insertions, 6 deletions
diff --git a/hnetd/Makefile b/hnetd/Makefile
index fe7ccb4..99cc221 100644
--- a/hnetd/Makefile
+++ b/hnetd/Makefile
@@ -7,8 +7,8 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=hnetd
-PKG_SOURCE_VERSION:=a7fb081a9b98a150f2fda913886c6c0ef0725048
-PKG_VERSION:=2014-05-04-$(PKG_SOURCE_VERSION)
+PKG_SOURCE_VERSION:=c6da40c19d0e550cd1e2dd1a459ef6cab9b15cae
+PKG_VERSION:=2014-06-02-$(PKG_SOURCE_VERSION)
PKG_RELEASE:=1
PKG_SOURCE_PROTO:=git
@@ -39,10 +39,15 @@ endef
define Package/hnet-full
SECTION:=net
CATEGORY:=Network
- TITLE:=HNCP Homenet metapackage (hnetd + ohybridproxy + babels)
+ TITLE:=HNCP Homenet metapackage
URL:=https://github.com/sbyx/hnetd
- DEPENDS:=+odhcpd +odhcp6c +netifd +hnetd +ohybridproxy +babels
- DEPENDS+=+@IPV6
+ DEPENDS:=+hnetd
+ # Routing
+ DEPENDS+=+babels
+ # Service discovery
+ DEPENDS+=+ohybridproxy
+ # Distributed PCP support
+ DEPENDS+=+miniupnpd +minimalist-pcproxy
endef
define Package/hnetd/description
@@ -61,6 +66,7 @@ define Package/hnetd/install
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) ./files/hnetd.init $(1)/etc/init.d/hnetd
$(INSTALL_BIN) ./files/ohp-script $(1)/usr/sbin/hnetd-ohp-script
+ $(INSTALL_BIN) ./files/pcp-script $(1)/usr/sbin/hnetd-pcp-script
$(INSTALL_BIN) $(PKG_BUILD_DIR)/generic/hnetd-routing $(1)/usr/sbin/hnetd-routing
$(INSTALL_DIR) $(1)/etc/uci-defaults
$(INSTALL_BIN) ./files/hnetd.defaults $(1)/etc/uci-defaults/x-hnetd.defaults
diff --git a/hnetd/files/hnetd.init b/hnetd/files/hnetd.init
index 70d0d70..6cdb4be 100644
--- a/hnetd/files/hnetd.init
+++ b/hnetd/files/hnetd.init
@@ -12,6 +12,8 @@ DNSMASQ_DIR=/tmp/dnsmasq.d
DNSMASQ_SCRIPT=/etc/init.d/dnsmasq
OHP_SCRIPT=/usr/sbin/hnetd-ohp-script
OHP_BINARY=/usr/sbin/ohybridproxy
+PCP_SCRIPT=/usr/sbin/hnetd-pcp-script
+PCP_BINARY=/usr/sbin/minimalist-pcproxy
start_service() {
mkdir -p $DNSMASQ_DIR
@@ -23,7 +25,7 @@ start_service() {
then
mkdir -p $DNSMASQ_DIR
procd_append_param command -d $DNSMASQ_SCRIPT
- procd_append_param command -f $DNSMASQ_DIR/hnet.conf
+ procd_append_param command -f $DNSMASQ_DIR/hnet.conf
procd_append_param command -o $OHP_SCRIPT
HOSTNAME=`cat /proc/sys/kernel/hostname`
if [ -n "$HOSTNAME" ]
@@ -31,6 +33,13 @@ start_service() {
procd_append_param command -n "$HOSTNAME"
fi
fi
+
+ # Enable PCP, if it's present
+ if [ -f $PCP_BINARY -a -f $PCP_SCRIPT ]
+ then
+ procd_append_param command -c $PCP_SCRIPT
+ fi
+
# State file
procd_append_param command -s /tmp/hnetd.pa_state
diff --git a/hnetd/files/pcp-script b/hnetd/files/pcp-script
new file mode 100644
index 0000000..88648d2
--- /dev/null
+++ b/hnetd/files/pcp-script
@@ -0,0 +1,46 @@
+#!/bin/sh
+#-*-sh-*-
+#
+# $Id: pcp-script $
+#
+# Author: Markus Stenberg <mstenber@cisco.com>
+#
+# Copyright (c) 2014 cisco Systems, Inc.
+#
+# Created: Fri Jan 17 11:46:30 2014 mstenber
+# Last modified: Fri May 30 13:27:57 2014 mstenber
+# Edit time: 16 min
+#
+
+# Copied from ohp-script.. Same idea. Just prod minimalist-pcproxy as
+# needed, hoping the miniupnpd is taken care of by the system.
+
+PCP=minimalist-pcproxy
+
+start() {
+ $PCP $* &
+}
+
+stop() {
+ killall -9 $PCP
+}
+
+
+CMD=$1
+# For debugging purposes
+LOGNAME=`basename $0`
+echo "$*" | logger -t "$LOGNAME"
+case $CMD in
+ start)
+ shift
+ stop
+ start $*
+ ;;
+ stop)
+ stop
+ ;;
+ *)
+ echo "Only start [config]/stop supported"
+ exit 1
+ ;;
+esac
diff --git a/minimalist-pcproxy/Makefile b/minimalist-pcproxy/Makefile
new file mode 100644
index 0000000..1a4f16d
--- /dev/null
+++ b/minimalist-pcproxy/Makefile
@@ -0,0 +1,56 @@
+#
+# Copyright (C) 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:=minimalist-pcproxy
+PKG_SOURCE_VERSION:=c8d47ff42c4354f502830faeae13bd8f269401af
+PKG_VERSION:=2014-06-02-$(PKG_SOURCE_VERSION)
+PKG_RELEASE:=1
+
+PKG_SOURCE_PROTO:=git
+PKG_SOURCE_URL:=git://github.com/fingon/minimalist-pcproxy.git
+PKG_MAINTAINER:=Markus Stenberg <fingon@iki.fi>
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
+PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
+
+include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/cmake.mk
+
+define Package/minimalist-pcproxy
+ SECTION:=net
+ CATEGORY:=Network
+ TITLE:=Lightweight PCP proxy
+ URL:=https://github.com/fingon/minimalist-pcproxy
+ DEPENDS:=+libubox +@IPV6
+endef
+
+define Package/minimalist-pcproxy/description
+This package contains a daemon which can be used to forward
+PCP (Port Control Protocol - RFC6887) requests requests to PCP remote servers.
+
+In and of itself, it is not very useful, but combined with hnetd+miniupnpd
+it allows for control of NAT forwarding and firewall pinholes from multiple
+hops away.
+endef
+
+define Package/minimalist-pcproxy/install
+ $(INSTALL_DIR) $(1)/usr/sbin/
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/minimalist-pcproxy $(1)/usr/sbin/
+ $(INSTALL_DIR) $(1)/etc/uci-defaults
+ $(INSTALL_BIN) ./files/minimalist-pcproxy.defaults $(1)/etc/uci-defaults/x-minimalist-pcproxy.defaults
+endef
+
+define Package/minimalist-pcproxy/postinst
+!/bin/sh
+[ -n "$${IPKG_INSTROOT}" ] || {
+ (. /etc/uci-defaults/x-minimalist-pcproxy.defaults) && rm -f /etc/uci-defaults/x-minimalist-pcproxy.defaults
+}
+exit 0
+endef
+
+$(eval $(call BuildPackage,minimalist-pcproxy))
diff --git a/minimalist-pcproxy/files/minimalist-pcproxy.defaults b/minimalist-pcproxy/files/minimalist-pcproxy.defaults
new file mode 100644
index 0000000..4e041e5
--- /dev/null
+++ b/minimalist-pcproxy/files/minimalist-pcproxy.defaults
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+if [ `uci get -q upnpd.config._pcproxy_configured` = "1" ]
+then
+ exit
+fi
+
+uci batch <<EOF
+set upnpd.config.enable_upnp=0
+set upnpd.config.pcp_allow_thirdparty=1
+set upnpd.config.internal_iface=loopback
+set upnpd.config.ipv6_listening_ip=::1
+set upnpd.config._pcproxy_configured=1
+commit upnpd
+EOF