Skip to content
Snippets Groups Projects
Select Git revision
  • d4fc87ae25ce74bba48dbf0a220db3c0328df129
  • experimental default protected
  • v2023.2.5-ffs
  • nrb/ex400-remove-wps
  • nrb/airmax-test
  • v2023.2.4-ffs
  • nrb/ar9344-reset-sequence
  • autinerd/experimental-openwrt-24.10
  • v2023.2.3-ffs
  • v2023.2.2-ffs
  • v2023.2-ffs
  • v2023.1-ffs
  • v2022.1.4-ffs
  • feature/addMikrotikwAP
  • v2022.1.3-ffs
  • v2021.1.2-ffs
  • v2022.1.1-ffs
  • master protected
  • v2021.1.1-ffs
  • nrb/gluon-master-cpe510
  • v2021.1-ffs
  • experimental-2025-09-05
  • experimental-2025-09-05-base
  • experimental-2025-09-03
  • experimental-2025-09-03-base
  • experimental-2025-08-29
  • experimental-2025-08-29-base
  • experimental-2025-08-26
  • experimental-2025-08-26-base
  • experimental-2025-08-25
  • experimental-2025-08-25-base
  • experimental-2025-08-20
  • experimental-2025-08-20-base
  • experimental-2025-08-13
  • experimental-2025-08-13-base
  • experimental-2025-08-04
  • experimental-2025-08-04-base
  • experimental-2025-07-31
  • experimental-2025-07-31-base
  • experimental-2025-07-29
  • experimental-2025-07-29-base
41 results

mmfd

Blame
  • mmfd 1.54 KiB
    #!/bin/sh /etc/rc.common
    
    USE_PROCD=1
    START=50
    DAEMON=/usr/sbin/mmfd
    SOCKET=/var/run/mmfd.sock
    
    waitforsocket() {
    	while ! echo "get_neighbours" | uc $SOCKET
    	do
    		sleep 1
    		echo "waiting for successful socket connection for mmfd"
    	done
    }
    
    
    start_service() {
    	local interfaces
    	interfaces=$(for dev in $(gluon-list-mesh-interfaces); do echo " -i $dev"; done)
    
    	procd_open_instance
    	# shellcheck disable=SC2086
    	procd_set_param command "$DAEMON" -s "$SOCKET" $interfaces
    	procd_set_param respawn "${respawn_threshold:-60}" "${respawn_timeout:-1}" "${respawn_retry:-0}"
    	procd_set_param stderr 1
    	procd_set_param stdout 1
    	procd_close_instance
    }
    
    mmfd_get_interfaces() {
    	echo get_meshifs | uc $SOCKET | jsonfilter -e "@.mesh_interfaces[@]"
    }
    
    mmfd_has_interface() {
    	mmfd_get_interfaces | grep -qxF "$1"
    }
    
    addif() {
    	echo "add_meshif $1" | uc $SOCKET
    }
    
    delif() {
    	echo "del_meshif $1" | uc $SOCKET
    }
    
    reload_service() {
    	waitforsocket
    
    	for i in $(ubus call network.interface dump | jsonfilter -e "@.interface[@.proto='gluon_mesh' && @.up=true].device")
    	do
    		if ! mmfd_has_interface "$i"; then
    			addif "$i"
    		fi
    	done
    
    	for i in $(mmfd_get_interfaces)
    	do
    		if ! ubus call network.interface dump | jsonfilter -e "@.interface[@.proto='gluon_mesh' && @.up=true].device" | grep -qxF "$i"; then
    			delif "$i"
    		fi
    	done
    }
    
    service_triggers() {
    	local script name
    	# shellcheck disable=SC2154
    	script=$(readlink "$initscript")
    	name=$(basename "${script:-$initscript}")
    
    	procd_open_trigger
    	procd_add_raw_trigger "interface.*" 0 "/etc/init.d/$name" reload
    	procd_close_trigger
    }