From b994ad4fdc86e1d57a63cbf0c7d68a18d4ec38af Mon Sep 17 00:00:00 2001 From: Christof Schulze Date: Thu, 23 Feb 2017 15:49:32 +0100 Subject: [PATCH] gluon-l3roamd: add package containing basic l3roamd configuration (#1042) --- package/gluon-l3roamd/Makefile | 33 +++++++++++++++++++ .../files/etc/init.d/gluon-l3roamd | 27 +++++++++++++++ .../lib/gluon/upgrade/380-gluon-l3roamd-route | 20 +++++++++++ 3 files changed, 80 insertions(+) create mode 100644 package/gluon-l3roamd/Makefile create mode 100755 package/gluon-l3roamd/files/etc/init.d/gluon-l3roamd create mode 100755 package/gluon-l3roamd/luasrc/lib/gluon/upgrade/380-gluon-l3roamd-route diff --git a/package/gluon-l3roamd/Makefile b/package/gluon-l3roamd/Makefile new file mode 100644 index 00000000..6e5d5606 --- /dev/null +++ b/package/gluon-l3roamd/Makefile @@ -0,0 +1,33 @@ +include $(TOPDIR)/rules.mk + +PKG_NAME:=gluon-l3roamd +PKG_VERSION:=1 + +PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME) + +include ../gluon.mk + +define Package/gluon-l3roamd + SECTION:=gluon + CATEGORY:=Gluon + TITLE:=Configure l3roamd for babel + DEPENDS:=+gluon-core +gluon-mesh-babel +l3roamd +endef + +define Build/Prepare + mkdir -p $(PKG_BUILD_DIR) +endef + +define Build/Configure +endef + +define Build/Compile + $(call GluonSrcDiet,./luasrc,$(PKG_BUILD_DIR)/luadest/) +endef + +define Package/gluon-l3roamd/install + $(CP) ./files/* $(1)/ + $(CP) $(PKG_BUILD_DIR)/luadest/* $(1)/ +endef + +$(eval $(call BuildPackage,gluon-l3roamd)) diff --git a/package/gluon-l3roamd/files/etc/init.d/gluon-l3roamd b/package/gluon-l3roamd/files/etc/init.d/gluon-l3roamd new file mode 100755 index 00000000..a14e96ee --- /dev/null +++ b/package/gluon-l3roamd/files/etc/init.d/gluon-l3roamd @@ -0,0 +1,27 @@ +#!/bin/sh /etc/rc.common + +START=55 + +USE_PROCD=1 +PROG=/usr/sbin/l3roamd + +start_service () { + procd_open_instance + procd_set_param stdout 1 + procd_set_param stderr 1 + procd_set_param respawn ${respawn_threshold:-3660} ${respawn_timeout:-5} ${respawn_retry:-0} + interfaces=$(for dev in $( ubus call network.interface dump | jsonfilter -e "@.interface[@.proto='gluon_mesh' && @.up=true].device");do echo " -m $dev"; done; + [ "$(ifstatus client | jsonfilter -e "@.up")" = "true" ] && echo " -i local-node") + procd_set_param command "$PROG" -p $(lua -e 'print(require("gluon.site_config").prefix6)') $interfaces -t 11 -a $(uci get network.loopback.ip6addr | cut -d/ -f1) -4 0:0:0:0:0:ffff::/96 + procd_close_instance +} + +service_triggers() { + local script=$(readlink "$initscript") + local name=$(basename "${script:-$initscript}") + + procd_open_trigger + procd_add_raw_trigger "interface.*" 0 "/etc/init.d/$name" reload + procd_close_trigger +} + diff --git a/package/gluon-l3roamd/luasrc/lib/gluon/upgrade/380-gluon-l3roamd-route b/package/gluon-l3roamd/luasrc/lib/gluon/upgrade/380-gluon-l3roamd-route new file mode 100755 index 00000000..237280f1 --- /dev/null +++ b/package/gluon-l3roamd/luasrc/lib/gluon/upgrade/380-gluon-l3roamd-route @@ -0,0 +1,20 @@ +#!/usr/bin/lua + +local uci = require('simple-uci').cursor() +local site = require 'gluon.site_config' + +uci:delete('network', 'l3roam') +uci:section('network', 'interface', 'l3roam', { + ifname = 'l3roam0', + proto = 'none', +}) + +uci:delete('network', 'l3roamd_client') +uci:section('network', 'route6', 'l3roamd_client', { + interface = 'l3roam', + target = site.prefix6, + gateway = '::', + table = '10', +}) + +uci:save('network')