ASR_BASE
Change-Id: Icf3719cc0afe3eeb3edc7fa80a2eb5199ca9dda1
diff --git a/external/routing/hnetd/files/hnet.config b/external/routing/hnetd/files/hnet.config
new file mode 100644
index 0000000..f2a7ab7
--- /dev/null
+++ b/external/routing/hnetd/files/hnet.config
@@ -0,0 +1,29 @@
+config security security
+# Simplest security mode:
+# option password foo
+# Trust consensus and CA-based share these options:
+# option certificate_file /etc/hnetd-cert.pem
+# option private_key_file /etc/hnetd-key.pem
+# Then to enable trust consensus:
+# option trust_store /etc/hnetd-trust.dat
+# Or CA-based authentication:
+# option trust_certificate_file /etc/ca-cert.pem
+
+config pa pa
+# option ip4prefix 10.0.0.0/8
+# option ip4mode ifuplink
+# option ulaprefix fd12:3456:789A::/48
+# option ulamode off
+ option persistent_store /etc/hnet-pa.store
+
+config sd sd
+# option router_name openwrt
+# option domain_name home.
+
+
+# Wifi allows for very basic wifi autoconfiguration
+# Warning: This feature is unstable
+config wifi wifi
+# option enable 0
+# option ssid ssidtest
+# option password test
diff --git a/external/routing/hnetd/files/hnetd.defaults b/external/routing/hnetd/files/hnetd.defaults
new file mode 100644
index 0000000..5ca7388
--- /dev/null
+++ b/external/routing/hnetd/files/hnetd.defaults
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+# Why we tune dnsmasq?
+# localservice=0 => other hnetd instances can query for local names
+# boguspriv=0 => allow reverse resolution of RFC1918 w/o local hosts entries
+
+uci batch <<EOF
+set dhcp.odhcpd.maindhcp=1
+set dhcp.@dnsmasq[0].localservice=0
+set dhcp.@dnsmasq[0].boguspriv=0
+commit dhcp
+EOF
diff --git a/external/routing/hnetd/files/hnetd.init b/external/routing/hnetd/files/hnetd.init
new file mode 100644
index 0000000..94cd6b8
--- /dev/null
+++ b/external/routing/hnetd/files/hnetd.init
@@ -0,0 +1,127 @@
+#!/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
+DDZ_SCRIPT=/usr/sbin/hnetd-ddz-script
+DDZ_BINARY=/usr/sbin/zonestitcher
+PCP_SCRIPT=/usr/sbin/hnetd-pcp-script
+PCP_BINARY=/usr/sbin/minimalist-pcproxy
+MULTICAST_SCRIPT=/usr/sbin/hnet-multicast
+WIFI_SCRIPT=/usr/sbin/autowifi
+
+start_service() {
+ . /lib/functions.sh
+ . /lib/functions/network.sh
+ config_load hnet
+
+ 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
+ if [ -f $DDZ_BINARY ]
+ then
+ procd_append_param command -z $DDZ_SCRIPT
+ fi
+ fi
+
+ # Enable multicast if present and installed
+ if [ -f "$MULTICAST_SCRIPT" ]
+ then
+ $MULTICAST_SCRIPT status && procd_append_param command -M "$MULTICAST_SCRIPT"
+ fi
+
+ config_get enableval wifi enable
+ if [ -f "$WIFI_SCRIPT" -a "$enableval" = "1" ]; then
+ wifiopt=$WIFI_SCRIPT
+ config_get ssidval wifi ssid
+ config_get passval wifi password
+ if [ -n "$ssidval" -a -n "$passval" ]; then
+ wifiopt=${wifiopt},${ssidval}:${passval}
+ fi
+ procd_append_param command -w "$wifiopt"
+ 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
+ config_get val pa persistent_store
+ procd_append_param command -s ${val:-/tmp/hnetd.pa_state}
+
+ # Routing script
+ procd_append_param command -r /usr/sbin/hnetd-routing
+
+ [ -x /usr/sbin/hnetd-tunnel ] && \
+ procd_append_param command -t /usr/sbin/hnetd-tunnel
+
+ # Prefix assignment (pa)
+ config_get val pa ip4prefix
+ [ -n "$val" ] && procd_append_param command --ip4prefix $val
+
+ config_get val pa ip4mode
+ [ -n "$val" ] && procd_append_param command --ip4mode $val
+
+ config_get val pa ulaprefix
+ [ -n "$val" ] && procd_append_param command --ulaprefix $val
+
+ config_get val pa ulamode
+ [ -n "$val" ] && procd_append_param command --ulamode $val
+
+ # Service discovery (sd)
+ config_get val sd router_name
+ [ -n "$val" ] && procd_append_param command -n $val
+
+ config_get val sd domain_name
+ [ -n "$val" ] && procd_append_param command -m $val
+
+ # Security (needs security-enabled build)
+ config_get val security password
+ [ -n "$val" ] && procd_append_param command --password $val
+
+ config_get val security certificate_file
+ [ -n "$val" ] && procd_append_param command --certificate $val
+
+ config_get val security private_key_file
+ [ -n "$val" ] && procd_append_param command --privatekey $val
+
+ config_get val security trust_store
+ [ -n "$val" ] && procd_append_param command --trust $val
+
+ config_get val security trust_certificate_file
+ [ -n "$val" ] && procd_append_param command --verify-path $val
+
+ # For more verbose logging, uncomment this:
+ #procd_append_param command --loglevel 7
+
+ procd_set_param respawn
+ procd_close_instance
+}
+
+service_triggers() {
+ procd_add_reload_trigger "hnet"
+}