hnetd: add hnetd package
authorSteven Barth <steven@midlink.org>
Fri, 28 Feb 2014 17:09:15 +0000 (18:09 +0100)
committerSteven Barth <steven@midlink.org>
Fri, 28 Feb 2014 17:09:32 +0000 (18:09 +0100)
hnetd/Makefile [new file with mode: 0644]
hnetd/files/hnetd.defaults [new file with mode: 0644]
hnetd/files/hnetd.init [new file with mode: 0644]
hnetd/files/ohp-script [new file with mode: 0644]

diff --git a/hnetd/Makefile b/hnetd/Makefile
new file mode 100644 (file)
index 0000000..0e89a25
--- /dev/null
@@ -0,0 +1,80 @@
+#
+# Copyright (C) 2012-2013 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:=hnetd
+PKG_SOURCE_VERSION:=f733b81679ac3d0fb8157a9056afe55854a1c956
+PKG_VERSION:=2014-02-28-$(PKG_SOURCE_VERSION)
+PKG_RELEASE:=1
+
+PKG_SOURCE_PROTO:=git
+PKG_SOURCE_URL:=git://github.com/sbyx/hnetd.git
+PKG_MAINTAINER:=Steven Barth <cyrus@openwrt.org>
+
+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
+
+# Spammy debug builds for now
+CMAKE_OPTIONS += -DL_LEVEL=7
+
+# OpenWRT target
+CMAKE_OPTIONS += -DBACKEND=openwrt
+
+define Package/hnetd
+  SECTION:=net
+  CATEGORY:=Network
+  TITLE:=HNCP Homenet daemon
+  URL:=https://github.com/sbyx/hnetd
+  DEPENDS:=+odhcpd +odhcp6c +netifd
+  DEPENDS+=+@IPV6
+endef
+
+define Package/hnet-full
+  SECTION:=net
+  CATEGORY:=Network
+  TITLE:=HNCP Homenet metapackage (hnetd + ohybridproxy + babels)
+  URL:=https://github.com/sbyx/hnetd
+  DEPENDS:=+odhcpd +odhcp6c +netifd +hnetd +ohybridproxy +babels
+  DEPENDS+=+@IPV6
+endef
+
+define Package/hnetd/description
+This package provides a daemon which implementats distributed prefix assignment
+and service discovery for a home network consisting of multiple routers
+connected to multiple service providers. It provides a netifd protocol "hnet"
+for use in /etc/config/network.
+endef
+
+define Package/hnetd/install
+       $(INSTALL_DIR) $(1)/usr/sbin/
+       $(INSTALL_BIN) $(PKG_BUILD_DIR)/hnetd $(1)/usr/sbin/
+       $(INSTALL_DIR) $(1)/lib/netifd/proto
+       $(INSTALL_BIN) $(PKG_BUILD_DIR)/openwrt/hnet.sh $(1)/lib/netifd/proto
+       ln -s hnetd $(1)/usr/sbin/hnet-call
+       $(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) $(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
+endef
+
+define Package/hnet-full/install
+       true
+endef
+
+define Package/hnetd/postinst
+#!/bin/sh
+[ -n "$${IPKG_INSTROOT}" ] || (. /etc/uci-defaults/x-hnetd.defaults) && rm -f /etc/uci-defaults/x-hnetd.defaults
+exit 0
+endef
+
+$(eval $(call BuildPackage,hnetd))
+$(eval $(call BuildPackage,hnet-full))
diff --git a/hnetd/files/hnetd.defaults b/hnetd/files/hnetd.defaults
new file mode 100644 (file)
index 0000000..85c8cb2
--- /dev/null
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+uci batch <<EOF
+set dhcp.odhcpd.maindhcp=1
+commit dhcp
+EOF
diff --git a/hnetd/files/hnetd.init b/hnetd/files/hnetd.init
new file mode 100644 (file)
index 0000000..70d0d70
--- /dev/null
@@ -0,0 +1,42 @@
+#!/bin/sh /etc/rc.common
+
+# XXX - is there something that should cause reload? or can we just
+# use info from netifd and let it handle dynamic changes? let's hope
+# so..
+
+START=90
+STOP=10
+USE_PROCD=1
+
+DNSMASQ_DIR=/tmp/dnsmasq.d
+DNSMASQ_SCRIPT=/etc/init.d/dnsmasq
+OHP_SCRIPT=/usr/sbin/hnetd-ohp-script
+OHP_BINARY=/usr/sbin/ohybridproxy
+
+start_service() {
+    mkdir -p $DNSMASQ_DIR
+    procd_open_instance
+    procd_set_param command /usr/sbin/hnetd
+
+    # SD parts are here (make configurable?)
+    if [ -f $OHP_BINARY -a -f $DNSMASQ_SCRIPT ]
+    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 -o $OHP_SCRIPT
+        HOSTNAME=`cat /proc/sys/kernel/hostname`
+        if [ -n "$HOSTNAME" ]
+        then
+            procd_append_param command -n "$HOSTNAME"
+        fi
+    fi
+    # State file
+    procd_append_param command -s /tmp/hnetd.pa_state
+
+    # Routing script
+    procd_append_param command -r /usr/sbin/hnetd-routing
+
+    procd_set_param respawn
+    procd_close_instance
+}
diff --git a/hnetd/files/ohp-script b/hnetd/files/ohp-script
new file mode 100644 (file)
index 0000000..aebaa1d
--- /dev/null
@@ -0,0 +1,48 @@
+#!/bin/sh 
+#-*-sh-*-
+#
+# $Id: ohp-script $
+#
+# Author: Markus Stenberg <mstenber@cisco.com>
+#
+# Copyright (c) 2014 cisco Systems, Inc.
+#
+# Created:       Fri Jan 17 11:46:30 2014 mstenber
+# Last modified: Mon Feb  3 14:39:15 2014 mstenber
+# Edit time:     15 min
+#
+
+# This is minimalist init.d-like start/stop script for
+# ohybridproxy. However, as ohybridproxy receives it's configuration
+# via command line, the 'start' command is also equivalent to
+# 'restart', and has bunch of extra arguments..
+
+OHP=ohybridproxy
+
+start() {
+    $OHP $* &
+}
+
+stop() {
+    killall -9 $OHP
+}
+
+
+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