diff options
author | Chris Larson <clarson@kergoth.com> | 2004-11-14 18:35:59 +0000 |
---|---|---|
committer | Chris Larson <clarson@kergoth.com> | 2004-11-14 18:35:59 +0000 |
commit | 224fec9f2068778b77300bafba7a4c0369072abf (patch) | |
tree | a61dfd349f780ecf7e299eec6d93af2f7e4b8d79 | |
parent | cc7c74627cedef4b1ffc97d9af6b80f5cf3514d7 (diff) |
Fix the wlan-ng if-pre-up script to only act on devices which we know are managed by wlan-ng.
BKrev: 4197a58fiytlALC1VH2o-d_mUeLwNw
-rw-r--r-- | wlan-ng/files/pre-up | 226 | ||||
-rw-r--r-- | wlan-ng/wlan-ng-modules_0.2.1pre22.oe | 2 |
2 files changed, 227 insertions, 1 deletions
diff --git a/wlan-ng/files/pre-up b/wlan-ng/files/pre-up index e69de29bb2..002ab37511 100644 --- a/wlan-ng/files/pre-up +++ b/wlan-ng/files/pre-up @@ -0,0 +1,226 @@ +#!/bin/sh +# +# This script takes care of bringing up wlan-ng device. +# It is run by ifup, and gets information from the +# /etc/network/interfaces file. It is derived from the +# init.d/wlan script in the wlan-ng distribution + +WLANCTL=/sbin/wlanctl-ng +PRIV_GENERATOR=/sbin/nwepgen + +if [ ! -x $WLANCTL ] ; then + exit 0 +fi + +# Detect and act only on linux-wlan-ng interfaces +if [ -x /sbin/wlancfg ]; then + if ! /sbin/wlancfg show $IFACE >/dev/null 2>&1; then + exit 0 + fi +fi + +# Create a lock file; remove on script exit. This is a fairly crummy lock, +# but all it needs to do is prevent hotplug from calling this script, +# which may happen when the module is loaded below. Since it should only +# happen when the module is loaded, I don't need a proper lock. +if [ -e /var/lock/wlan-$IFACE.lock ]; then + exit 0 +fi +touch /var/lock/wlan-$IFACE.lock +cleanup () { + rm -f /var/lock/wlan-$IFACE.lock +} +trap cleanup 0 + +if [ -z "$IF_WIRELESS_MODE" ]; then + IF_WIRELESS_MODE="ad_hoc" +fi + +if [ -z "$IF_WLAN_NG_HOSTWEP" ]; then + IF_WLAN_NG_HOSTWEP=false +fi + +if [ -z "$IF_WLAN_NG_DEFAULT_KEY_ID" ]; then + IF_WLAN_NG_DEFAULT_KEY_ID=0 +fi + +if [ -z "$IF_WLAN_NG_EXCLUDE_UNENCRYPTED" ]; then + IF_WLAN_NG_EXCLUDE_UNENCRYPTED=true +fi + +if [ -z "$IF_WLAN_NG_PRIV_KEY128" ]; then + IF_WLAN_NG_PRIV_KEY128=false +fi + +if [ -z "$IF_WLAN_NG_BCINT" ]; then + IF_WLAN_NG_BCINT=100 +fi + +if [ -z "$IF_WLAN_NG_BASICRATES" ]; then + IF_WLAN_NG_BASICRATES="2 4" +fi + +if [ -z "$IF_WLAN_NG_OPRATES" ]; then + IF_WLAN_NG_OPRATES="2 4 11 22" +fi + +if [ -z "$IF_WLAN_NG_AUTHTYPE" ]; then + IF_WLAN_NG_AUTHTYPE="opensystem" +fi + +if [ -z "$IF_WIRELESS_CHANNEL" ]; then + IF_WIRELESS_CHANNEL=1 +fi + +if ! modprobe p80211; then + echo "Failed to load p80211.o." >&2 + exit 1 +fi + +# NOTE: We don't explicitly insmod the card driver here. The +# best thing to do is to specify an alias in /etc/modules.conf. +# Then, the first time we call wlanctl with the named device, +# the kernel module autoload stuff will take over. +# But, if you prefer, you could modprobe it here. + + +# Bring the card up into an operable state. +result=`$WLANCTL $IFACE lnxreq_ifstate ifstate=enable` +if [ $? = 0 ] ; then + eval $result + if [ $resultcode != "success" ]; then + echo "Failed to enable the device, resultcode=" $resultcode "." >&2 + exit 1 + fi +else + echo "Failed to enable the device, exitcode=" $? "." >&2 + exit 1 +fi + +# Set user-specified MIB items. +for i in $IF_WLAN_NG_USER_MIBS; do + result=`$WLANCTL $IFACE dot11req_mibset "mibattribute=$i"` + + if [ $? = 0 ] ; then + eval $result + if [ $resultcode != "success" ] ; then + echo "Failed to set user MIB $i." >&2 + exit 1 + fi + else + echo "Failed to set user MIB $i." >&2 + exit 1 + fi +done + +if [ "$IF_WIRELESS_ENC" = "on" ]; then + # Set up WEP. + result=`$WLANCTL $IFACE dot11req_mibget mibattribute=dot11PrivacyOptionImplemented` + if [ $? = 0 ] ; then + eval $result + eval $mibattribute + else + echo "mibget failed." >&2 + exit 1 + fi + + if [ "$dot11PrivacyOptionImplemented" != "true" ]; then + echo "Cannot enable privacy, dot11PrivacyOptionImplemented=$dot11PrivacyOptionImplemented." >&2 + exit 1 + fi + + $WLANCTL $IFACE lnxreq_hostwep decrypt=$IF_WLAN_NG_HOSTWEP encrypt=$IF_WLAN_NG_HOSTWEP >/dev/null + + $WLANCTL $IFACE dot11req_mibset \ + mibattribute=dot11WEPDefaultKeyID=$IF_WLAN_NG_DEFAULT_KEY_ID \ + >/dev/null + + $WLANCTL $IFACE dot11req_mibset \ + mibattribute=dot11ExcludeUnencrypted=$IF_WLAN_NG_EXCLUDE_UNENCRYPTED \ + >/dev/null + + $WLANCTL $IFACE dot11req_mibset \ + mibattribute=dot11PrivacyInvoked=true >/dev/null + + if [ -e "$IF_WLAN_NG_KEYFILE" ]; then + IF_WLAN_NG_PRIV_GENSTR=`cat $IF_WLAN_NG_KEYFILE` + fi + if [ ! -z "$IF_WLAN_NG_PRIV_GENSTR" ]; then + if [ "$IF_WLAN_NG_PRIV_KEY128" = "false" ]; then + keys=`$PRIV_GENERATOR "$IF_WLAN_NG_PRIV_GENSTR" 5` + else + keys=`$PRIV_GENERATOR "$IF_WLAN_NG_PRIV_GENSTR" 13` + fi + + knum=0 + for i in $keys; do + $WLANCTL $IFACE dot11req_mibset \ + mibattribute=dot11WEPDefaultKey$knum=$i \ + >/dev/null + knum=$(expr $knum + 1) + done + else + $WLANCTL $IFACE dot11req_mibset \ + mibattribute=dot11WEPDefaultKey0=$IF_WLAN_NG_KEY0 \ + >/dev/null + $WLANCTL $IFACE dot11req_mibset \ + mibattribute=dot11WEPDefaultKey1=$IF_WLAN_NG_KEY1 \ + >/dev/null + $WLANCTL $IFACE dot11req_mibset \ + mibattribute=dot11WEPDefaultKey2=$IF_WLAN_NG_KEY2 \ + >/dev/null + $WLANCTL $IFACE dot11req_mibset \ + mibattribute=dot11WEPDefaultKey3=$IF_WLAN_NG_KEY3 \ + >/dev/null + fi +fi + +# MAC startup +if [ "$IF_WIRELESS_MODE" = "ad_hoc" ] || + [ "$IF_WIRELESS_MODE" = "ad-hoc" ]; then + startcmd="$WLANCTL $IFACE dot11req_start " + startcmd="$startcmd ssid=$IF_WIRELESS_ESSID" + startcmd="$startcmd bsstype=independent" + startcmd="$startcmd beaconperiod=$IF_WLAN_NG_BCINT" + startcmd="$startcmd dtimperiod=3" + startcmd="$startcmd cfpollable=false" + startcmd="$startcmd cfpollreq=false" + startcmd="$startcmd cfpperiod=3" + startcmd="$startcmd cfpmaxduration=100" + startcmd="$startcmd probedelay=100" + startcmd="$startcmd dschannel=$IF_WIRELESS_CHANNEL" + j=1 + for i in $IF_WLAN_NG_BASICRATES; do + startcmd="$startcmd basicrate$j=$i" + j=$(expr $j + 1) + done + j=1 + for i in $IF_WLAN_NG_OPRATES; do + startcmd="$startcmd operationalrate$j=$i" + j=$(expr $j + 1) + done + + results=`$startcmd` + if [ $? = 0 ]; then + eval $results + if [ $resultcode != "success" ] ; then + echo "IBSS not started, resultcode=$resultcode" >&2 + exit 1 + fi + else + echo FAILED: $startcmd >&2 + exit 1 + fi +else + # Infrastructure mode. + results=`$WLANCTL $IFACE lnxreq_autojoin \ + "ssid=$IF_WIRELESS_ESSID" \ + authtype=$IF_WLAN_NG_AUTHTYPE | sed 's/\([^=]*\)=\(.*\)/\1="\2"/'` + if [ $? = 0 ]; then + eval $results + if [ ${resultcode:-"failure"} != "success" ]; then + echo 'error: Autojoin indicated failure!' >&2 + exit 1 + fi + fi +fi diff --git a/wlan-ng/wlan-ng-modules_0.2.1pre22.oe b/wlan-ng/wlan-ng-modules_0.2.1pre22.oe index 00577d5566..d52e795cfe 100644 --- a/wlan-ng/wlan-ng-modules_0.2.1pre22.oe +++ b/wlan-ng/wlan-ng-modules_0.2.1pre22.oe @@ -4,7 +4,7 @@ DEPENDS = "virtual/kernel" RRECOMMENDS = "wlan-ng-utils" MAINTAINER = "Bruno Randolf <bruno.randolf@4g-systems.biz>" LICENSE = "GPL" -PR = "r6a" +PR = "r7" SRC_URI = "ftp://ftp.linux-wlan.org/pub/linux-wlan-ng/linux-wlan-ng-${PV}.tar.bz2 \ file://no-compat.patch;patch=1 \ |