diff options
Diffstat (limited to 'lib/rcscripts/net.modules.d/essidnet')
-rw-r--r-- | lib/rcscripts/net.modules.d/essidnet | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/lib/rcscripts/net.modules.d/essidnet b/lib/rcscripts/net.modules.d/essidnet new file mode 100644 index 0000000..967776b --- /dev/null +++ b/lib/rcscripts/net.modules.d/essidnet @@ -0,0 +1,79 @@ +#!/bin/bash +# Copyright (c) 2004-2005 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +# Contributed by Roy Marples (uberlord@gentoo.org) +# Many thanks to all the people in the Gentoo forums for their ideas and +# motivation for me to make this and keep on improving it + +# Load our config if it exists +[[ -f $(add_suffix "/etc/conf.d/wireless" ) ]] \ +&& source $(add_suffix "/etc/conf.d/wireless" ) + +# void essidnet_depend(void) +# +# Sets up the dependancies for the module +essidnet_depend() { + before interface + after wireless + installed wireless +} + +# bool essidnet_check_installed(void) +# +# Always returns 0 as we are "installed" by wireless in the depend function +essidnet_check_installed() { + return 0 +} + +# char* essidnet_provides(void) +# +# Returns a string to change module definition for starting up +essidnet_provides() { + echo "essidnet" +} + +# bool essidnet_check_depends(void) +# +# Checks to see if we have the needed functions +essidnet_check_depends() { + local f + + for f in wireless_check_extensions wireless_get_essid wireless_get_ap_mac_address; do + [[ $( type -t "${f}" ) == "function" ]] && continue + eerror "essidnet: missing required function ${f}\n" + return 1 + done + + return 0 +} + +# bool essidnet_start(char *iface) +# +# All interfaces and module scripts expose modulename_get_vars +# which returns a space seperated list of user configuration variables +# We can override each variable here from a given ESSID or the MAC +# of the AP connected to. MAC configuration takes precedence +# Always returns 0 +essidnet_pre_start() { + local iface="$1" + + wireless_check_extensions "${iface}" || return 0 + + local mac=$( wireless_get_ap_mac_address "${iface}" ) + local ESSID=$( wireless_get_essid "${iface}" ) + local essid=$( bash_variable ${ESSID} ) + mac="${mac//:/}" + + vebegin "Configuring ${iface} for ESSID \"${ESSID//\\\\/\\\\}\"" 2>/dev/null + configure_variables "${iface}" "${essid}" "${mac}" + + # Backwards compat for old gateway var + eval x=\"\$\{gateway_${essid}\}\" + [[ -n ${x} ]] && gateway="${iface}/${x}" + + veend 0 2>/dev/null + return 0 +} + +# vim:ts=4 |