add init.d scripts to a) write temporary config file and b) start babel
This commit is contained in:
		
							parent
							
								
									b43f9663c0
								
							
						
					
					
						commit
						6a38400ae1
					
				
							
								
								
									
										28
									
								
								package/gluon-mesh-babel/files/etc/init.d/gluon-mesh-babeld-0
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										28
									
								
								package/gluon-mesh-babel/files/etc/init.d/gluon-mesh-babeld-0
									
									
									
									
									
										Executable file
									
								
							@ -0,0 +1,28 @@
 | 
			
		||||
#!/usr/bin/lua
 | 
			
		||||
 | 
			
		||||
local site = require 'gluon.site_config'
 | 
			
		||||
local gmesh = require 'gluon.mesh'
 | 
			
		||||
 | 
			
		||||
--local interfaces='/lib/gluon/core/mesh_interfaces' 
 | 
			
		||||
local babelconf='/var/etc/gluon-babel.conf'
 | 
			
		||||
 | 
			
		||||
file = io.open(babelconf, "w")
 | 
			
		||||
file:write("ipv6-subtrees true\n")
 | 
			
		||||
file:write("export-table 10\n")
 | 
			
		||||
file:write("import-table 255\n")
 | 
			
		||||
file:write("import-table 11\n")
 | 
			
		||||
 | 
			
		||||
for interface in gmesh.interfaces() do 
 | 
			
		||||
	file:write("interface " .. interface .. "\n")
 | 
			
		||||
end
 | 
			
		||||
if site.mesh_on_wan then
 | 
			
		||||
	file:write("interface  br-wan\n")
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
file:write(" redistribute ip " .. site.prefix6 .. " eq 128  allow\n")
 | 
			
		||||
file:write(" redistribute ip " .. site.babel_mesh.prefix .. " eq 128  allow\n")
 | 
			
		||||
file:write(" redistribute local  deny\n")
 | 
			
		||||
file:write(" redistribute ip ::/0 eq 0  allow\n")
 | 
			
		||||
file:close()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										37
									
								
								package/gluon-mesh-babel/files/etc/init.d/gluon-mesh-babeld-1
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										37
									
								
								package/gluon-mesh-babel/files/etc/init.d/gluon-mesh-babeld-1
									
									
									
									
									
										Executable file
									
								
							@ -0,0 +1,37 @@
 | 
			
		||||
#!/bin/sh /etc/rc.common
 | 
			
		||||
 | 
			
		||||
. $IPKG_INSTROOT/lib/functions/network.sh
 | 
			
		||||
 | 
			
		||||
START=70
 | 
			
		||||
 | 
			
		||||
pidfile='/var/run/babeld.pid'
 | 
			
		||||
CONFIGFILE='/var/etc/gluon-babel.conf'
 | 
			
		||||
EXTRA_COMMANDS="status"
 | 
			
		||||
EXTRA_HELP="        status Dump Babel's table to the log file."
 | 
			
		||||
 | 
			
		||||
start() {
 | 
			
		||||
	mkdir -p /var/lib
 | 
			
		||||
	mkdir -p /var/etc
 | 
			
		||||
 | 
			
		||||
	/usr/sbin/babeld -D -I "$pidfile" -c "$CONFIGFILE"
 | 
			
		||||
	# Wait for the pidfile to appear
 | 
			
		||||
	for i in 1 2
 | 
			
		||||
	do
 | 
			
		||||
		[ -f "$pidfile" ] || sleep 1
 | 
			
		||||
	done
 | 
			
		||||
	[ -f "$pidfile" ] || (echo "Failed to start babeld"; exit 42)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
stop() {
 | 
			
		||||
	[ -f "$pidfile" ] && kill $(cat $pidfile)
 | 
			
		||||
  # avoid race-condition on restart: wait for
 | 
			
		||||
  # babeld to die for real.
 | 
			
		||||
  [ -f "$pidfile" ] && sleep 1
 | 
			
		||||
  [ -f "$pidfile" ] && sleep 1
 | 
			
		||||
  [ -f "$pidfile" ] && sleep 1
 | 
			
		||||
  [ -f "$pidfile" ] && exit 42
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
status() {
 | 
			
		||||
	[ -f "$pidfile" ] && kill -USR1 $(cat $pidfile)
 | 
			
		||||
}
 | 
			
		||||
@ -2,39 +2,12 @@
 | 
			
		||||
 | 
			
		||||
local uci = require('luci.model.uci').cursor()
 | 
			
		||||
local site = require 'gluon.site_config'
 | 
			
		||||
local interfaces='/lib/gluon/core/mesh_interfaces' 
 | 
			
		||||
local babelconf='/var/etc/gluon-babel.conf'
 | 
			
		||||
--local gmesh = require 'gluon.mesh'
 | 
			
		||||
 | 
			
		||||
-- TODO: do we need settings for more interfaces in the firewall?
 | 
			
		||||
if site.mesh_on_wan then
 | 
			
		||||
  uci:section('babeld', 'interface', 'mesh_wan',
 | 
			
		||||
    {
 | 
			
		||||
      ifname = 'br-wan',
 | 
			
		||||
    }
 | 
			
		||||
  )
 | 
			
		||||
 | 
			
		||||
  uci:add_to_set('firewall', 'mesh_babel', 'network', 'wan')
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
file = io.open(babelconf, "w")
 | 
			
		||||
file:write("ipv6-subtrees true\n")
 | 
			
		||||
file:write("export-table 10\n")
 | 
			
		||||
file:write("import-table 255\n")
 | 
			
		||||
file:write("import-table 11\n")
 | 
			
		||||
 | 
			
		||||
pcall( function() 
 | 
			
		||||
  for interface in io.lines(interfaces) do 
 | 
			
		||||
    local section = interface:gsub('[^%w_]','_')
 | 
			
		||||
    file:write("interface " .. interface .. "\n")
 | 
			
		||||
  end
 | 
			
		||||
end)
 | 
			
		||||
 | 
			
		||||
file:write(" redistribute ip " .. site.prefix6 .. " eq 128  allow\n")
 | 
			
		||||
file:write(" redistribute ip " .. site.babel_mesh.prefix .. " eq 128  allow\n")
 | 
			
		||||
file:write(" redistribute local  deny\n")
 | 
			
		||||
file:write(" redistribute ip ::/0 eq 0  allow\n")
 | 
			
		||||
file:close()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
uci:add_to_set('firewall', 'mesh_babel', 'network', 'client')
 | 
			
		||||
uci:add_to_set('firewall', 'mesh_babel', 'network', 'local_node4')
 | 
			
		||||
uci:add_to_set('firewall', 'mesh_babel', 'network', 'local_node6')
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user