hnetd: add hnetd package
This commit is contained in:
parent
6beba22a4d
commit
4988cbc735
4 changed files with 176 additions and 0 deletions
80
hnetd/Makefile
Normal file
80
hnetd/Makefile
Normal 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))
|
6
hnetd/files/hnetd.defaults
Normal file
6
hnetd/files/hnetd.defaults
Normal 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
42
hnetd/files/hnetd.init
Normal 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
48
hnetd/files/ohp-script
Normal 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
|
Loading…
Reference in a new issue