You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

785 lines
21 KiB
Bash

#!/bin/sh /etc/rc.common
#
# @@-COPYRIGHT-START-@@
#
# Copyright (c) 2013, 2015-2018 Qualcomm Technologies, Inc.
#
# All Rights Reserved.
# Confidential and Proprietary - Qualcomm Technologies, Inc.
#
# 2013, 2015-2016 Qualcomm Atheros, Inc.
#
# All Rights Reserved.
# Qualcomm Atheros Confidential and Proprietary.
#
# @@-COPYRIGHT-END-@@
#
# shellcheck disable=SC2034
START=52
# shellcheck disable=SC2034
USE_PROCD=1
RESPAWN_THRESHOLD=120
RESPAWN_TIMEOUT=5
RESPAWN_RETRIES=10
SERVICE_PATH="/usr/sbin/wsplcd"
WSPLCD_CONFIG_FILE="/tmp/wsplcd.conf"
WSPLCD_CONFIG_FILE_PREFIX="/tmp/wsplcd"
WSPLCD_RUN_FILE="/var/run/.wsplcd"
NON_PBC_IFACES=
# This restart_* command is only intended to be used after a config change
#
EXTRA_COMMANDS="restart_after_config_change"
EXTRA_HELP=<<EOF
restart_after_config_change Restart triggered due to change in wireless configuration
EOF
#check wsplcd config to enable/disable cfg80211
config_load 'wsplcd'
config_get_bool wsplcd_cfg config 'cfg80211_enable' '0'
if [ "$wsplcd_cfg" == "1" ]; then
WSPLCD_CFG80211=-cfg80211
else
WSPLCD_CFG80211=
fi
. /lib/functions/hyfi-debug.sh
. /lib/functions/hyfi-iface.sh
. /lib/functions/hyfi-network.sh
atf_ssidcmd_idx=1 atf_stacmd_idx=1 atf_groupcmd_idx=1 atf_radioparams_idx=1 cfg_changed=0
wsplcd_cfg_append() {
local configfile=$2
echo "$1" >> "$configfile"
}
wsplcd_cfg_add_str() {
local cfg="$1"
local key="$2"
local def="$3"
local configfile="$4"
local val
config_get val config "$key" "$def"
[ -n "$val" ] && wsplcd_cfg_append "$cfg=$val" "$configfile"
}
wsplcd_cfg_add_bool() {
local cfg="$1"
local key="$2"
local def="$3"
local configfile="$4"
local val
config_get_bool val config "$key" "$def"
[ -n "$val" ] && wsplcd_cfg_append "$cfg=$val" "$configfile"
}
wsplcd_cfg_add_debuglevel() {
local cfg="$1"
local key="$2"
local def="$3"
local configfile="$4"
local val
config_get val config "$key" "$def"
case "$val" in
DUMP)
val='0'
;;
DEBUG)
val='1'
;;
INFO)
val='2'
;;
ERROR)
val='3'
;;
esac
[ -n "$val" ] && wsplcd_cfg_append "$cfg=$val" "$configfile"
}
__wsplcd_get_default_mode() {
local wan_iface
config_load network
config_get wan_iface wan ifname
if [ -n "$wan_iface" ]; then
eval "$1='REGISTRAR'"
else
eval "$1='ENROLLEE'"
fi
}
wsplcd_cfg_add_role() {
local cfg="$1"
local key="$2"
local configfile="$3"
local default_mode
local val
__wsplcd_get_default_mode default_mode
config_get val config "$key"
case "$val" in
REGISTRAR)
val='0'
;;
ENROLLEE)
val='1'
;;
NONE)
val='2'
;;
*)
if [ "$default_mode" = "REGISTRAR" ]; then
val='0'
else
val='1'
fi
uci_set wsplcd config "$key" "$default_mode"
;;
esac
[ -n "$val" ] && wsplcd_cfg_append "$cfg=$val" "$configfile"
}
wsplcd_cfg_add_wpsmethod() {
local cfg="$1"
local key="$2"
local def="$3"
local configfile="$4"
local val
config_get val config "$key" "$def"
case "$val" in
WPS_M2)
val='M2'
;;
WPS_M8)
val='M8'
;;
esac
[ -n "$val" ] && wsplcd_cfg_append "$cfg=$val" "$configfile"
}
wsplcd_cfg_add_wpstxmode() {
local cfg="$1"
local key="$2"
local def="$3"
local configfile="$4"
local val
config_get val config "$key" "$def"
case "$val" in
WPS_TX_ENCRYPTED)
val='encrypted'
;;
WPS_TX_NONE)
val='none'
;;
esac
[ -n "$val" ] && wsplcd_cfg_append "$cfg=$val" "$configfile"
}
wsplcd_cfg_add_wpsrxmode() {
local cfg="$1"
local key="$2"
local def="$3"
local configfile="$4"
local val
config_get val config "$key" "$def"
case "$val" in
WPS_RX_ENCRYPTED)
val='encrypted'
;;
WPS_RX_EITHER)
val='either'
;;
esac
[ -n "$val" ] && wsplcd_cfg_append "$cfg=$val" "$configfile"
}
wsplcd_cfg_add_configsta() {
local cfg="$1"
local key="$2"
local def="$3"
local configfile="$4"
local val
config_get val config "$key" "$def"
case "$val" in
1)
val='yes'
;;
0)
val='no'
;;
esac
[ -n "$val" ] && wsplcd_cfg_append "$cfg=$val" "$configfile"
}
wsplcd_cfg_add_wpatype() {
local cfg="$1"
local key="$2"
local def="$3"
local configfile="$4"
local val
config_get val config "$key" "$def"
case "$val" in
LONG)
val='0'
;;
SHORT)
val='1'
;;
esac
[ -n "$val" ] && wsplcd_cfg_append "$cfg=$val" "$configfile"
}
wsplcd_cfg_add_buttonmode() {
local cfg="$1"
local key="$2"
local def="$3"
local configfile="$4"
local val
config_get val config "$key" "$def"
case "$val" in
ONEBUTTON)
val='1'
;;
TWOBUTTON)
val='2'
;;
esac
[ -n "$val" ] && wsplcd_cfg_append "$cfg=$val" "$configfile"
}
__wsplcd_iterate_wlan_ifaces_nonpbc() {
local config="$1"
local iface network mode wps_pbc
config_get iface "$config" ifname
config_get network "$config" network
config_get mode "$config" mode
config_get_bool wps_pbc "$config" wps_pbc 0
if [ "$2" = "$network" ] && [ "$wps_pbc" -eq "0" ]; then
NON_PBC_IFACES="${NON_PBC_IFACES}${NON_PBC_IFACES:+","}${iface}"
fi
}
wsplcd_cfg_add_nonpbc() {
local configfile="$1"
NON_PBC_IFACES=
config_load wireless
config_foreach __wsplcd_iterate_wlan_ifaces_nonpbc wifi-iface "$ieee1905managed_bridge"
if [ -n "$NON_PBC_IFACES" ]; then
wsplcd_cfg_append 'NonPBCInterfaces='$NON_PBC_IFACES "$configfile"
fi
}
wsplcd_cfg_add_interface() {
local br_name=$1
local configfile="$2"
local wlan_ifaces wlan_included_ifaces ether_ifaces plc_iface non_wlan_ifaces
local wlan_vlan_ifaces
wsplcd_cfg_append 'bridge=br-'"$br_name" "$configfile"
# Get all WLAN interfaces bound to the managed bridge
hyfi_get_wlan_ifaces "$br_name" wlan_ifaces wlan_included_ifaces
wsplcd_cfg_append '1905InterfacesWlan='"$wlan_ifaces" "$configfile"
# Get all WLAN VLAN interfaces bound to the managed bridge
hyfi_get_wlan_vlan_ifaces "$br_name" wlan_vlan_ifaces
# Get all Ethernet interfaces and PLC interface
hyfi_get_ether_ifaces "$br_name" ether_ifaces
hyfi_get_plc_iface "$br_name" plc_iface
if [ -n "${plc_iface}" ] ; then
non_wlan_ifaces=${ether_ifaces}${ether_ifaces:+","}${plc_iface}
else
non_wlan_ifaces=${ether_ifaces}
fi
if [ -n "${wlan_vlan_ifaces}" ] ; then
non_wlan_ifaces=${non_wlan_ifaces}${non_wlan_ifaces:+","}${wlan_vlan_ifaces}
fi
non_wlan_ifaces=$(echo "$non_wlan_ifaces" | sed 's/ESWITCH/ETHER/g')
wsplcd_cfg_append '1905InterfacesElse='"$non_wlan_ifaces" "$configfile"
wsplcd_cfg_add_nonpbc "$configfile"
}
wsplcd_atf_re_mac_cfg() {
local configfile="$3"
local cfg
local val
cfg="REmac"
config_get val "$1" "$cfg"
[ -n "$val" ] && wsplcd_cfg_append "${2}${cfg}_entry=$val" "$configfile"
}
wsplcd_getlist_atf_grpssid() {
local val="$1"
local configfile="$2"
wsplcd_cfg_append "${2}group_ssid_${atf_groupcmd_idx}=$val" "$configfile"
numssid=$((numssid + 1))
}
wsplcd_atf_group_cfg() {
local cfg
local grpname
local cmd
local dev
local val
local numssid
local status
local cmdidx=$atf_groupcmd_idx
local config=$1
local prefix=$2
local configfile="$3"
while :; do
cfg="group_wifidev"
config_get dev "$1" "$cfg"
[ -n "$dev" ] || break
wsplcd_cfg_append "${2}group_wifidev_${cmdidx}=$dev" "$configfile"
cfg="group_enable"
config_get status "$1" "$cfg"
if [ -n "$status" ]; then
wsplcd_cfg_append "${2}group_enable_${cmdidx}=$status" "$configfile"
fi
cfg="group"
config_get grpname "$1" "$cfg"
[ -n "$grpname" ] || break
cfg="group_cmd"
config_get cmd "$1" "$cfg"
[ -n "$cmd" ] || break
cfg="group_val"
config_get val "$1" "$cfg"
echo "group_val $val"
if [ -z "$val" ] && [ "$cmd" == "addgroup" ]; then
break
fi
cfg="group_ssid"
numssid=0
config_list_foreach "$config" "group_ssid" wsplcd_getlist_atf_grpssid "$prefix"
if [ $numssid -eq 0 ] && [ "$cmd" == "addgroup" ]; then
break
fi
wsplcd_cfg_append "${2}group_entry_${cmdidx}=$grpname" "$configfile"
wsplcd_cfg_append "${2}group_cmd_${cmdidx}=$cmd" "$configfile"
if [ -n "$val" ]; then
wsplcd_cfg_append "${2}group_val_${cmdidx}=$val" "$configfile"
fi
cmdidx=$((cmdidx + 1))
break
done
atf_groupcmd_idx=$cmdidx
}
wsplcd_atf_ssid_cfg() {
local cfg
local ssid
local cmd
local dev
local val
local cmdidx=$atf_ssidcmd_idx
local configfile=$3
while :; do
cfg="ssid"
config_get ssid "$1" "$cfg"
[ -n "$ssid" ] || break
cfg="ssid_cmd"
config_get cmd "$1" "$cfg"
[ -n "$cmd" ] || break
cfg="ssid_wifidev"
config_get dev "$1" "$cfg"
[ -n "$dev" ] || break
cfg="ssid_val"
config_get val "$1" "$cfg"
if [ -z "$val" ] && [ "$cmd" == "addssid" ]; then
break
fi
wsplcd_cfg_append "${2}ssid_entry_${cmdidx}=$ssid" "$configfile"
wsplcd_cfg_append "${2}ssid_cmd_${cmdidx}=$cmd" "$configfile"
wsplcd_cfg_append "${2}ssid_wifidev_${cmdidx}=$dev" "$configfile"
wsplcd_cfg_append "${2}ssid_val_${cmdidx}=$val" "$configfile"
cmdidx=$((cmdidx + 1))
break
done
atf_ssidcmd_idx=$cmdidx
}
wsplcd_atf_sta_cfg() {
local cfg
local stamac
local cmd
local dev
local val
local ssid
local cmdidx=$atf_stacmd_idx
local configfile=$3
while :; do
cfg="sta"
config_get stamac "$1" "$cfg"
[ -n "$stamac" ] || break
cfg="sta_cmd"
config_get cmd "$1" "$cfg"
[ -n "$cmd" ] || break
cfg="sta_wifidev"
config_get dev "$1" "$cfg"
[ -n "$dev" ] || break
cfg="sta_val"
config_get val "$1" "$cfg"
if [ -z "$val" ] && [ "$cmd" == "addsta" ]; then
break
fi
cfg="sta_ssid"
config_get ssid "$1" "$cfg"
wsplcd_cfg_append "${2}sta_entry_${cmdidx}=$stamac" "$configfile"
wsplcd_cfg_append "${2}sta_cmd_${cmdidx}=$cmd" "$configfile"
wsplcd_cfg_append "${2}sta_wifidev_${cmdidx}=$dev" "$configfile"
wsplcd_cfg_append "${2}sta_val_${cmdidx}=$val" "$configfile"
wsplcd_cfg_append "${2}sta_ssid_${cmdidx}=$ssid" "$configfile"
cmdidx=$((cmdidx + 1))
break
done
atf_stacmd_idx=$cmdidx
}
wsplcd_parse_re_atf_config() {
local cfg
local val
local config=$1
local configfile=$4
cfg="REname"
config_get val "$1" "$cfg"
if [ -n "$val" ] && [ "$val" == "$2" ] ; then
#Get ATF SSID Config
wsplcd_atf_ssid_cfg "$config" "$3" "$configfile"
#Get ATF STA Config
wsplcd_atf_sta_cfg "$config" "$3" "$configfile"
#Get ATF Group Config
wsplcd_atf_group_cfg "$config" "$3" "$configfile"
fi
}
wsplcd_parse_radioparams_atfconfig() {
local cfg
local val
local config=$1
local configfile=$4
cfg="REname"
config_get val "$1" "$cfg"
if [ -n "$val" ] && [ "$val" == "$2" ] ; then
#Get Radio name
cfg="radio_name"
config_get val "$1" "$cfg"
if [ -n "$val" ] ; then
wsplcd_cfg_append "${3}radio_name_${atf_radioparams_idx}=$val" "$configfile"
fi
#Get ATF scheduling policy
cfg="sched_policy"
config_get val "$1" "$cfg"
if [ -n "$val" ] ; then
wsplcd_cfg_append "${3}radio_sched_${atf_radioparams_idx}=$val" "$configfile"
fi
#Get ATF OBSS scheduling (0/1)
cfg="sched_obss_enable"
config_get val "$1" "$cfg"
if [ -n "$val" ] ; then
wsplcd_cfg_append "${3}radio_obss_${atf_radioparams_idx}=$val" "$configfile"
fi
#Get ATF Inter group policy
cfg="sched_group_policy"
config_get val "$1" "$cfg"
if [ -n "$val" ] ; then
wsplcd_cfg_append "${3}radio_grouppolicy_${atf_radioparams_idx}=$val" "$configfile"
fi
atf_radioparams_idx=$((atf_radioparams_idx + 1))
fi
}
wsplcd_parse_atf_config() {
local cfg
local prefix
local rename
local config=$1
local configfile=$2
repeater_id=$((repeater_id + 1))
prefix="ATF.RE${repeater_id}_"
cfg="REname"
config_get rename "$1" "$cfg"
#Get RE MAC
wsplcd_atf_re_mac_cfg "$config" $prefix "$configfile"
#reset command indexes for each repeater entry
atf_ssidcmd_idx=1
atf_stacmd_idx=1
atf_groupcmd_idx=1
atf_radioparams_idx=1
#Parse re-config section & get atf configuration
config_load wsplcd
config_foreach wsplcd_parse_re_atf_config atf-re-config "$rename" $prefix "$configfile"
config_foreach wsplcd_parse_radioparams_atfconfig atf-re-radioparams-config "$rename" $prefix "$configfile"
}
wsplcd_cfg_add_atf() {
local cfg="$1"
local key="$2"
local def="$3"
local val
local repeater_id=0
local configfile=$4
config_get_bool val config "$key" "$def"
[ -n "$val" ] && wsplcd_cfg_append "$cfg=$val" "$configfile"
#Read ATF Params if ATF config is enabled
if [ -n "$val" ] && [ "$val" == 1 ] ; then
config_load wsplcd
config_foreach wsplcd_parse_atf_config atf-config "$configfile"
fi
}
wsplcd_create_config() {
lock /var/run/wsplcd.lock
local br_name=$1
local configfile=$2
echo "# Config file for wsplcd, automatically created by script" > "$configfile"
wsplcd_cfg_add_debuglevel debug_level DebugLevel 'ERROR' "$configfile"
wsplcd_cfg_add_interface "$br_name" "$configfile"
wsplcd_cfg_add_role role RunMode "$configfile"
wsplcd_cfg_add_bool designated_pb_ap DesignatedPBAP '0' "$configfile"
wsplcd_cfg_add_wpsmethod WPS_method WPSMethod 'WPS_M2' "$configfile"
wsplcd_cfg_add_wpstxmode WPS_tx_mode TXMode 'WPS_TX_ENCRYPTED' "$configfile"
wsplcd_cfg_add_wpsrxmode WPS_rx_mode RXMode 'WPS_RX_ENCRYPTED' "$configfile"
wsplcd_cfg_add_configsta config_station ConfigSta '1' "$configfile"
wsplcd_cfg_add_str ssid_suffix SSIDSuffix '' "$configfile"
wsplcd_cfg_add_str search_timeout SearchTimeout '60' "$configfile"
wsplcd_cfg_add_str WPS_session_timeout WPSSessionTimeout '120' "$configfile"
wsplcd_cfg_add_str WPS_retransmission_timeout WPSRetransmitTimeout '5' "$configfile"
wsplcd_cfg_add_str WPS_per_message_timeout WPSPerMessageTimeout '15' "$configfile"
wsplcd_cfg_add_bool band_sel_enable BandSel '1' "$configfile"
wsplcd_cfg_add_bool band_choice BandChoice '5G' "$configfile"
wsplcd_cfg_add_str rm_collect_timeout RMCollectTimeout '10' "$configfile"
wsplcd_cfg_add_bool deep_clone_enable DeepClone '1' "$configfile"
wsplcd_cfg_add_bool deep_clone_no_bssid DeepCloneNoBSSID '0' "$configfile"
wsplcd_cfg_add_bool manage_vap_ind ManageVAPInd '1' "$configfile"
wsplcd_cfg_add_str 1905Nwkey NetworkKey1905 '' "$configfile"
wsplcd_cfg_add_str ucpk_salt UCPKSalt '' "$configfile"
wsplcd_cfg_add_wpatype wpa_passphrase_type WPAPassphraseType 'LONG' "$configfile"
wsplcd_cfg_append 'config_methods=push_button virtual_push_button physical_push_button' "$configfile"
wsplcd_cfg_append 'manufacturer=Qualcomm Atheros' "$configfile"
wsplcd_cfg_append 'model_name=ModelNameHere' "$configfile"
wsplcd_cfg_append 'model_number=ModelNumberHere' "$configfile"
wsplcd_cfg_append 'serial_number=SerialNumberHere' "$configfile"
wsplcd_cfg_append 'device_type=6-0050f204-1' "$configfile"
wsplcd_cfg_append 'device_name=ExampleWpa' "$configfile"
wsplcd_cfg_append 'os_version=01020300' "$configfile"
wsplcd_cfg_append '#AP Cloning 1.0 parameters' "$configfile"
wsplcd_cfg_add_bool APCloning APCloning '0' "$configfile"
wsplcd_cfg_add_bool MapEnable MapEnable '0' "$configfile"
wsplcd_cfg_add_bool MapPFCompliant MapPFCompliant '0' "$configfile"
wsplcd_cfg_add_str MapMaxBss MapMaxBss '0' "$configfile"
wsplcd_cfg_add_buttonmode button_mode ButtonMode 'TWOBUTTON' "$configfile"
wsplcd_cfg_add_str clone_timeout CloneTimeout '180' "$configfile"
wsplcd_cfg_add_str walk_timeout WalkTimeout '120' "$configfile"
wsplcd_cfg_add_str repeat_timeout RepeatTimeout '1' "$configfile"
wsplcd_cfg_add_str internal_timeout InternalTimeout '15' "$configfile"
wsplcd_cfg_add_str wait_wifi_config_secs_other WaitOtherBandsSecs '20' "$configfile"
wsplcd_cfg_add_str wait_wifi_config_secs_first WaitFirstBandSecs '30' "$configfile"
wsplcd_cfg_add_atf atf_config_en atfConfigEnable '0' "$configfile"
wsplcd_cfg_append "cfg_changed=$cfg_changed" "$configfile"
local cfg_restart_long_timeout
local cfg_restart_short_timeout
local cfg_apply_timeout
config_get cfg_restart_long_timeout config "ConfigRestartLongTimeout" "20"
config_get cfg_restart_short_timeout config "ConfigRestartShortTimeout" "5"
config_get cfg_apply_timeout config "ConfigApplyTimeout" "10"
wsplcd_cfg_append "cfg_restart_long_timeout=$cfg_restart_long_timeout" "$configfile"
wsplcd_cfg_append "cfg_restart_short_timeout=$cfg_restart_short_timeout" "$configfile"
wsplcd_cfg_append "cfg_apply_timeout=$cfg_apply_timeout" "$configfile"
[ -x "/sbin/uci2cfg.sh" ] && {
/sbin/uci2cfg.sh "$br_name" >> "$configfile"
/sbin/uci2cfg.sh wifisec "$br_name" > "/tmp/.wsplc.wifisec"
}
lock -u /var/run/wsplcd.lock
return 0
}
__wsplcd_wlanif_ready() {
local vif vifs
local vifstat
local configfile=$1
vifs=$(grep '^1905InterfacesWlan' "$configfile" | sed -e 's/1905InterfacesWlan=//' -e 's/@[a-zA-Z0-9]*//g' -e 's/,/ /g' -e 's/:WLAN//g')
if [ -z "$vifs" ]; then
echo "[wsplcd]WLAN interface is not ready" > /dev/console
return 0
fi
for vif in $vifs; do
vifstat=$(ifconfig "$vif" 2>/dev/null)
if [ -z "$vifstat" ]; then
echo "[wsplcd]WLAN interface $vif is not ready" > /dev/console
return 0
fi
done
return 1
}
start_service() {
local enabled
local ieee1905managed_bridge
local ieee1905managed_bridge2
local log_mode
local map_enable
local map_mode=''
local map_policy_file=''
local allow_zero_ap_interfaces
config_load 'wsplcd'
config_get_bool enabled config 'HyFiSecurity' '0'
[ "$enabled" -gt 0 ] || {
return 1
}
config_get log_mode config "WriteDebugLogToFile" "NONE"
case "$log_mode" in
NONE)
log_mode=''
;;
APPEND)
log_mode='-a'
;;
TRUNCATE)
log_mode='-w'
;;
esac
config_get_bool map_enable config 'MapEnable' '0'
if [ "$map_enable" -gt 0 ]; then
config_get map_policy_file config 'MapGenericPolicyFile'
if [ -n "$map_policy_file" ]; then
map_mode='-M'
else
config_get map_policy_file config 'MapPolicyFile' '/etc/config/map.conf'
map_mode='-m'
fi
fi
# Get the IEEE1905.1 managed bridge name
hyfi_get_ieee1905_managed_iface ieee1905managed_bridge ieee1905managed_bridge2
if [ "$map_enable" -gt 0 ] && [ -n "$ieee1905managed_bridge2" ]; then
hyfi_echo wsplcd "MAP mode only supports a single bridge"
return 1
fi
wsplcd_create_config "$ieee1905managed_bridge" "${WSPLCD_CONFIG_FILE_PREFIX}-${ieee1905managed_bridge}.conf" || return 1
if [ -n "$ieee1905managed_bridge2" ]
then
wsplcd_create_config "$ieee1905managed_bridge2" "${WSPLCD_CONFIG_FILE_PREFIX}-${ieee1905managed_bridge2}.conf" || return 1
fi
config_get allow_zero_ap_interfaces config 'AllowZeroAPInterfaces' '0'
__wsplcd_wlanif_ready "${WSPLCD_CONFIG_FILE_PREFIX}-${ieee1905managed_bridge}.conf"
if [ $? -eq 1 ] || [ "$allow_zero_ap_interfaces" -gt 0 ]; then
hyfi_echo wsplcd "starting daemon"
procd_open_instance
procd_set_param command ${SERVICE_PATH} -c "${WSPLCD_CONFIG_FILE_PREFIX}-${ieee1905managed_bridge}.conf" "$log_mode" "$map_mode" "$map_policy_file" $WSPLCD_CFG80211
procd_set_param respawn ${RESPAWN_THRESHOLD} ${RESPAWN_TIMEOUT} ${RESPAWN_RETRIES}
procd_add_reload_trigger "hyd" "lbd"
procd_close_instance
if [ -n "$ieee1905managed_bridge2" ]
then
procd_open_instance
procd_set_param command ${SERVICE_PATH} -c "${WSPLCD_CONFIG_FILE_PREFIX}-${ieee1905managed_bridge2}.conf" "$log_mode" $WSPLCD_CFG80211
procd_set_param respawn ${RESPAWN_THRESHOLD} ${RESPAWN_TIMEOUT} ${RESPAWN_RETRIES}
procd_add_reload_trigger "hyd" "lbd"
procd_close_instance
fi
fi
touch $WSPLCD_RUN_FILE
}
stop_service() {
# Save aside the old config file just for debugging purposes.
[ -f "$WSPLCD_CONFIG_FILE" ] &&
mv ${WSPLCD_CONFIG_FILE} ${WSPLCD_CONFIG_FILE}.bak &&
rm ${WSPLCD_CONFIG_FILE_PREFIX}-*.conf
}
restart_after_config_change() {
[ -f "$WSPLCD_RUN_FILE" ] || return
hyfi_lock
# No longer have an explicit stop function since we are now using
# procd, so do an explicit stop via the init script.
/etc/init.d/wsplcd stop
cfg_changed=1
start
hyfi_unlock
}