hnetd: add hnetd package

This commit is contained in:
Steven Barth 2014-02-28 18:09:15 +01:00
parent 6beba22a4d
commit 4988cbc735
4 changed files with 176 additions and 0 deletions

80
hnetd/Makefile Normal file
View File

@ -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))

View File

@ -0,0 +1,6 @@
#!/bin/sh
uci batch <<EOF
set dhcp.odhcpd.maindhcp=1
commit dhcp
EOF

42
hnetd/files/hnetd.init Normal file
View File

@ -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
}

48
hnetd/files/ohp-script Normal file
View File

@ -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