mirror of
				https://github.com/Telecominfraproject/wlan-ap.git
				synced 2025-11-03 20:07:59 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			172 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			172 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
#!/bin/sh /etc/rc.common
 | 
						|
# Copyright (c) 2021 OpenWrt.org
 | 
						|
 | 
						|
START=19
 | 
						|
 | 
						|
USE_PROCD=1
 | 
						|
PROG=/usr/sbin/qosify
 | 
						|
 | 
						|
add_option() {
 | 
						|
	local type="$1"
 | 
						|
	local name="$2"
 | 
						|
 | 
						|
	config_get val "$cfg" "$name"
 | 
						|
 | 
						|
	[ -n "$val" ] && json_add_$type "$name" "$val"
 | 
						|
}
 | 
						|
 | 
						|
add_flow_config() {
 | 
						|
	local cfg="$1"
 | 
						|
 | 
						|
	add_option string dscp_prio
 | 
						|
	add_option string dscp_bulk
 | 
						|
	add_option int bulk_trigger_timeout
 | 
						|
	add_option int bulk_trigger_pps
 | 
						|
	add_option int prio_max_avg_pkt_len
 | 
						|
}
 | 
						|
 | 
						|
add_defaults() {
 | 
						|
	cfg="$1"
 | 
						|
 | 
						|
	json_add_boolean reset 1
 | 
						|
 | 
						|
	config_get files "$cfg" defaults
 | 
						|
	json_add_array files
 | 
						|
	for i in $files; do
 | 
						|
		json_add_string "" "$i"
 | 
						|
	done
 | 
						|
	json_close_array
 | 
						|
 | 
						|
	add_flow_config "$cfg"
 | 
						|
	add_option int timeout
 | 
						|
	add_option string dscp_icmp
 | 
						|
	add_option string dscp_default_udp
 | 
						|
	add_option string dscp_default_tcp
 | 
						|
}
 | 
						|
 | 
						|
add_interface() {
 | 
						|
	local cfg="$1"
 | 
						|
 | 
						|
	config_get_bool disabled "$cfg" disabled 0
 | 
						|
	[ "$disabled" -gt 0 ] && return
 | 
						|
 | 
						|
	config_get name "$cfg" name
 | 
						|
	json_add_object "$name"
 | 
						|
 | 
						|
	config_get bw "$cfg" bandwidth
 | 
						|
 | 
						|
	config_get bw_up "$cfg" bandwidth_up
 | 
						|
	bw_up="${bw_up:-$bw}"
 | 
						|
	[ -n "$bw_up" ] && json_add_string bandwidth_up "$bw_up"
 | 
						|
 | 
						|
	config_get bw_down "$cfg" bandwidth_down
 | 
						|
	bw_down="${bw_down:-$bw}"
 | 
						|
	[ -n "$bw_down" ] && json_add_string bandwidth_down "$bw_down"
 | 
						|
 | 
						|
	add_option string bandwidth
 | 
						|
	add_option boolean ingress
 | 
						|
	add_option boolean egress
 | 
						|
	add_option string mode
 | 
						|
	add_option boolean nat
 | 
						|
	add_option boolean host_isolate
 | 
						|
	add_option boolean autorate_ingress
 | 
						|
	add_option string ingress_options
 | 
						|
	add_option string egress_options
 | 
						|
 | 
						|
	config_get user_options "$cfg" options
 | 
						|
 | 
						|
	config_get otype "$cfg" overhead_type
 | 
						|
	options=
 | 
						|
	case "$otype" in
 | 
						|
		none);;
 | 
						|
		manual)
 | 
						|
			config_get overhead "$cfg" overhead
 | 
						|
			[ -n "$overhead" ] && append options "overhead $overhead"
 | 
						|
 | 
						|
			config_get encap "$cfg" overhead_encap
 | 
						|
			[ -n "$encap" ] && append options "$encap"
 | 
						|
		;;
 | 
						|
		conservative|\
 | 
						|
		pppoa-vcmux|\
 | 
						|
		pppoa-llc|\
 | 
						|
		pppoe-vcmux|\
 | 
						|
		pppoe-llcsnap|\
 | 
						|
		bridged-vcmux|\
 | 
						|
		bridged-llcsnap|\
 | 
						|
		ipoa-vcmux|\
 | 
						|
		ipoa-llcsnap|\
 | 
						|
		pppoe-ptm|\
 | 
						|
		bridged-ptm|\
 | 
						|
		docsis|\
 | 
						|
		ethernet)
 | 
						|
			append options "$otype"
 | 
						|
		;;
 | 
						|
	esac
 | 
						|
 | 
						|
	config_get mpu "$cfg" overhead_mpu
 | 
						|
	[ -n "$mpu" ] && append options "mpu $mpu"
 | 
						|
 | 
						|
	config_get ovlan "$cfg" overhead_vlan
 | 
						|
	[ "${ovlan:-0}" -ge 2 ] && append options "ether-vlan"
 | 
						|
	[ "${ovlan:-0}" -ge 1 ] && append options "ether-vlan"
 | 
						|
 | 
						|
	[ -n "$user_options" ] && append options "$user_options"
 | 
						|
	[ -n "$options" ] && json_add_string options "$options"
 | 
						|
 | 
						|
	json_close_object
 | 
						|
}
 | 
						|
 | 
						|
add_class() {
 | 
						|
	local cfg="$1"
 | 
						|
 | 
						|
	config_get value "$cfg" value
 | 
						|
	config_get ingress "$cfg" ingress
 | 
						|
	config_get egress "$cfg" egress
 | 
						|
 | 
						|
	json_add_object "$cfg"
 | 
						|
	json_add_string ingress "${ingress:-$value}"
 | 
						|
	json_add_string egress "${egress:-$value}"
 | 
						|
	add_flow_config "$cfg"
 | 
						|
	json_close_object
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
reload_service() {
 | 
						|
	json_init
 | 
						|
 | 
						|
	config_load qosify
 | 
						|
 | 
						|
	config_foreach add_defaults defaults
 | 
						|
 | 
						|
	json_add_object interfaces
 | 
						|
	config_foreach add_interface interface
 | 
						|
	json_close_object
 | 
						|
 | 
						|
	json_add_object classes
 | 
						|
	config_foreach add_class class
 | 
						|
	config_foreach add_class alias
 | 
						|
	json_close_object
 | 
						|
 | 
						|
	json_add_object devices
 | 
						|
	config_foreach add_interface device
 | 
						|
	json_close_object
 | 
						|
 | 
						|
	ubus call qosify config "$(json_dump)"
 | 
						|
}
 | 
						|
 | 
						|
service_triggers() {
 | 
						|
	procd_add_reload_trigger qosify
 | 
						|
}
 | 
						|
 | 
						|
start_service() {
 | 
						|
	procd_open_instance
 | 
						|
	procd_set_param command "$PROG"
 | 
						|
	procd_set_param respawn
 | 
						|
	procd_close_instance
 | 
						|
}
 | 
						|
 | 
						|
service_started() {
 | 
						|
	ubus -t 10 wait_for qosify
 | 
						|
	[ $? = 0 ] && reload_service
 | 
						|
}
 |