Browse Source

gluon-l3roamd: add package containing basic l3roamd configuration (#1042)

Christof Schulze 7 years ago
parent
commit
b994ad4fdc

+ 33 - 0
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))

+ 27 - 0
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
+}
+

+ 20 - 0
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')