summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'lib/rcscripts/net.modules.d/essidnet')
-rw-r--r--lib/rcscripts/net.modules.d/essidnet79
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