From c1c672a5b759b6a5fea121ac2ee4cc5e694856c0 Mon Sep 17 00:00:00 2001 From: "Scott V. Kamp" Date: Wed, 1 Sep 2010 14:41:49 +0000 Subject: [PATCH] [patchteam] WING version bump / updates for HNA and fixes for some scripts SVN-Revision: 22868 --- net/wing/Config.in | 18 +-- net/wing/Makefile | 24 +-- net/wing/files/lib/network/wing.sh | 251 ++++++++++++++--------------- 3 files changed, 146 insertions(+), 147 deletions(-) diff --git a/net/wing/Config.in b/net/wing/Config.in index b95e31c2ce..a239c2dcff 100644 --- a/net/wing/Config.in +++ b/net/wing/Config.in @@ -1,17 +1,17 @@ # Wing configuration choice - prompt "Version" - depends on PACKAGE_wing - default WING_STABLE - help - This option allows you to select the version of Wing to be built. - + prompt "Version" + depends on PACKAGE_wing + default WING_STABLE + help + This option allows you to select the version of Wing to be built. + config WING_STABLE - bool "Use the stable version (multi-interface)" - + bool "Use the stable version (multi-interface)" + config WING_TESTING - bool "Use the unstable version (multi-interfaces w/ ITACA)" + bool "Use the unstable version (multi-interfaces w/ ITACA)" endchoice diff --git a/net/wing/Makefile b/net/wing/Makefile index 8d5981caff..133afc92f2 100644 --- a/net/wing/Makefile +++ b/net/wing/Makefile @@ -10,13 +10,13 @@ include $(TOPDIR)/rules.mk PKG_NAME:=wing ifneq ($(CONFIG_WING_STABLE),) - PKG_VERSION:=20100805 - PKG_RELEASE:=1 - PKG_REV:=21aae2ae5bea85426aded47b055b4fe62c2cea2e + PKG_VERSION:=20100827 + PKG_RELEASE:=2 + PKG_REV:=6f238baa6c4f357f1fe0e55f1b71db7816747b33 else - PKG_VERSION:=$(shell date +%Y%m%d) - PKG_RELEASE:=1 - PKG_REV:=HEAD + PKG_VERSION:=$(shell date +%Y%m%d) + PKG_RELEASE:=1 + PKG_REV:=HEAD endif PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 @@ -30,12 +30,12 @@ PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION) include $(INCLUDE_DIR)/package.mk define Package/wing - TITLE:=Wireless mesh networking toolkit - SECTION:=net - CATEGORY:=Network - MAINTAINER:=Roberto Riggio - DEPENDS:=+kmod-tun - URL:=http://www.wing-project.org/ + TITLE:=Wireless mesh networking toolkit + SECTION:=net + CATEGORY:=Network + MAINTAINER:=Roberto Riggio (roberto.riggio@create-net.org) + DEPENDS:=+kmod-tun + URL:=http://www.wing-project.org/ endef define Package/wing/Description diff --git a/net/wing/files/lib/network/wing.sh b/net/wing/files/lib/network/wing.sh index f1e1167a9a..d721d4ca46 100644 --- a/net/wing/files/lib/network/wing.sh +++ b/net/wing/files/lib/network/wing.sh @@ -1,145 +1,144 @@ scan_wing() { - config_set "$1" device "wing-$1" + config_set "$1" device "wing-$1" } coldplug_interface_wing() { - setup_interface_wing "wing-$1" "$1" + setup_interface_wing "wing-$1" "$1" } stop_interface_wing() { - local config="$1" - local iface="wing-$config" - env -i ACTION="ifdown" INTERFACE="$config" DEVICE="$iface" PROTO=wing /sbin/hotplug-call "iface"& - [ -f "/var/run/$iface.pid" ]&& { - kill -9 $(cat /var/run/$iface.pid) - rm /var/run/$iface.pid - } + local config="$1" + local iface="wing-$config" + env -i ACTION="ifdown" INTERFACE="$config" DEVICE="$iface" PROTO=wing /sbin/hotplug-call "iface" & + [ -f "/var/run/$iface.pid" ] && { + kill -9 $(cat /var/run/$iface.pid) + rm /var/run/$iface.pid + } } setup_interface_wing() { - local iface="$1" - local config="$2" - - local hwmodes="" - local freqs="" - local ifnames="" - local hwaddrs="" - - config_load wireless - config_foreach wing_list_interfaces wifi-iface - - # start click router - if [ "$hwmodes" = "" -o "$freqs" = "" -o "$ifnames" = "" -o "$hwaddrs" = "" ]; then - logger -t "$config" "No raw interfaces available. Exiting." - exit 1 - fi - - local profile rc ls prefix debug - - config_get profile $config profile "bulk" - config_get rc $config rc "static" - config_get ls $config ls "fcfs" - config_get metric $config metric "wcett" - config_get prefix $config prefix "6" - config_get period $config period "10000" - config_get tau $config tau "100000" - config_get_bool debug $config debug "False" - - local hwaddr=$(echo $hwaddrs | sed 's/ .*//'); - local ipaddr=$(printf "$prefix.%d.%d.%d" $(echo $hwaddr | awk -F: '{printf "0x%s 0x%s 0x%s",$4,$5,$6}')) - local netmask=255.0.0.0 - - if ! wing_template_available "profile" "$profile" "bulk"; then - logger -t "$config" "Unable to configure router. Exiting." - exit 1 - fi - - if ! wing_template_available "rc" "$rc" "static"; then - logger -t "$config" "Unable to configure rate control. Exiting." - exit 1 - fi - - if ! wing_template_available "ls" "$ls" "radiotap"; then - logger -t "$config" "Unable to configure link scheduler. Exiting." - exit 1 - fi - - if [ "$profile" = "" -o "$rc" = "" ]; then - logger -t "$config" "Unable to generate template. Exiting." - exit 1 - fi - - [ "$debug" == 0 ]&& dbg="" || dbg="-d" - - /usr/bin/click_config -p $profile -r $rc -s $ls -l $metric \ - -m "$hwmodes" -c "$freqs" -n "$ifnames" -a "$hwaddrs" $dbg \ - | sed -e "s/__XR_IFNAME__/$iface/g" \ - | sed -e "s/__XR_IP__/$ipaddr/g" \ - | sed -e "s/__XR_NM__/$netmask/g" \ - | sed -e "s/__XR_PERIOD__/$period/g" \ - | sed -e "s/__XR_TAU__/$tau/g"> /tmp/$iface.click - - /usr/bin/click-align /tmp/$iface.click> /tmp/$iface-aligned.click 2>/var/log/$iface.log - [ ! -c /dev/net/tun ]&& { - mkdir -p /dev/net/ - mknod /dev/net/tun c 10 200 - if [ ! -c /dev/net/tun ]; then - logger -t "$config" "Device not available (/dev/net/tun). Exiting." - exit 1 - fi - } - - # creating the tun interface below will trigger a net subsystem event - # prevent it from touching iface by disabling .auto here - uci_set_state network "$config" auto 0 - - (/usr/bin/click /tmp/$iface-aligned.click>> /var/log/$iface.log 2>&1&)& - sleep 2 - ps | grep /usr/bin/click | grep -q -v grep || { - logger -t "$config" "Unable to start click. Exiting." - exit 1 - } - - ps | grep /usr/bin/click | grep -v grep | awk '{print $1}'> /var/run/$iface.pid - - ifconfig "$iface" "$ipaddr" netmask "$netmask" - uci_set_state network $config ipaddr "$ipaddr" - uci_set_state network $config netmask "$netmask" - - env -i ACTION="ifup" INTERFACE="$config" DEVICE="$iface" PROTO=wing /sbin/hotplug-call "iface"& - -} + local iface="$1" + local config="$2" + + local hwmodes="" + local freqs="" + local ifnames="" + local hwaddrs="" + + config_load wireless + config_foreach wing_list_interfaces wifi-iface + + # start click router + if [ "$hwmodes" = "" -o "$freqs" = "" -o "$ifnames" = "" -o "$hwaddrs" = "" ]; then + logger -t "$config" "No raw interfaces available. Exiting." + exit 1 + fi + + local profile rc ls prefix debug + + config_get profile $config profile "bulk" + config_get rc $config rc "static" + config_get ls $config ls "fcfs" + config_get metric $config metric "wcett" + config_get prefix $config prefix "6" + config_get period $config period "10000" + config_get tau $config tau "100000" + config_get_bool debug $config debug "False" + + local hwaddr=$(echo $hwaddrs | sed 's/ .*//'); + local ipaddr=$(printf "$prefix.%d.%d.%d" $(echo $hwaddr | awk -F: '{printf "0x%s 0x%s 0x%s",$4,$5,$6}')) + local netmask=255.0.0.0 + + if ! wing_template_available "profile" "$profile" "bulk"; then + logger -t "$config" "Unable to configure router. Exiting." + exit 1 + fi + + if ! wing_template_available "rc" "$rc" "static"; then + logger -t "$config" "Unable to configure rate control. Exiting." + exit 1 + fi + + if ! wing_template_available "ls" "$ls" "radiotap"; then + logger -t "$config" "Unable to configure link scheduler. Exiting." + exit 1 + fi + + if [ "$profile" = "" -o "$rc" = "" ]; then + logger -t "$config" "Unable to generate template. Exiting." + exit 1 + fi + + [ "$debug" == 0 ] && dbg="" || dbg="-d" + + /usr/bin/click_config -p $profile -r $rc -s $ls -l $metric \ + -m "$hwmodes" -c "$freqs" -n "$ifnames" -a "$hwaddrs" $dbg \ + | sed -e "s/__XR_IFNAME__/$iface/g" \ + | sed -e "s/__XR_IP__/$ipaddr/g" \ + | sed -e "s/__XR_NM__/$netmask/g" \ + | sed -e "s/__XR_PERIOD__/$period/g" \ + | sed -e "s/__XR_TAU__/$tau/g" > /tmp/$iface.click + + /usr/bin/click-align /tmp/$iface.click > /tmp/$iface-aligned.click 2>/var/log/$iface.log + [ ! -c /dev/net/tun ] && { + mkdir -p /dev/net/ + mknod /dev/net/tun c 10 200 + if [ ! -c /dev/net/tun ]; then + logger -t "$config" "Device not available (/dev/net/tun). Exiting." + exit 1 + fi + } + + # creating the tun interface below will trigger a net subsystem event + # prevent it from touching iface by disabling .auto here + uci_set_state network "$config" auto 0 + + (/usr/bin/click /tmp/$iface-aligned.click >> /var/log/$iface.log 2>&1 &) & + sleep 2 + ps | grep /usr/bin/click | grep -q -v grep || { + logger -t "$config" "Unable to start click. Exiting." + exit 1 + } + + ps | grep /usr/bin/click | grep -v grep | awk '{print $1}' > /var/run/$iface.pid + + ifconfig "$iface" "$ipaddr" netmask "$netmask" + uci_set_state network $config ipaddr "$ipaddr" + uci_set_state network $config netmask "$netmask" + + env -i ACTION="ifup" INTERFACE="$config" DEVICE="$iface" PROTO=wing /sbin/hotplug-call "iface" & + +} wing_template_available() { # prefix, template, default - local template="/etc/wing/$1.$2.click" - [ ! -f $template ]&& { - template="/etc/wing/$1.$3.click" - [ ! -f $template ]&& { - return 1 - } - } - return 0 + local template="/etc/wing/$1.$2.click" + [ ! -f $template ] && { + template="/etc/wing/$1.$3.click" + [ ! -f $template ] && { + return 1 + } + } + return 0 } wing_list_interfaces() { - local channel freq hwmode hwaddr ifname mode - config_get ifname $1 ifname - config_get mode $1 mode - config_get device $1 device - config_get_bool up $1 up - [ "$up" = "1" -a "$mode" = "monitor" ] || return 0 - config_get hwmode $device hwmode "11b" - config_get channel $device channel "1" - freq=$(iwlist $ifname freq | sed -n "s/^.*Channel 0*$channel : \([0-9.]*\).*/\1/p" | awk '{print $1*1000}') - hwaddr=$(/sbin/ifconfig $ifname 2>&1 | sed -n 's/^.*HWaddr \([0-9A-Za-z\-]*\).*/\1/p' | sed -e 's/\-/:/g' | cut -c1-17) - freqs=${freqs:+"$freqs "}$freq - hwmodes=${hwmodes:+"$hwmodes "}$hwmode - hwaddrs=${hwaddrs:+"$hwaddrs "}$hwaddr - ifnames=${ifnames:+"$ifnames "}$ifname - /sbin/ifconfig $ifname mtu 1900 - /sbin/ifconfig $ifname txqueuelen 5 - /sbin/ifconfig $ifname up + local channel freq hwmode hwaddr ifname mode + config_get mode $1 mode + config_get_bool up $1 up + [ "$up" = "1" -a "$mode" = "monitor" ] || return 0 + config_get ifname $1 ifname + config_get device $1 device + config_get hwmode $device hwmode "11bg" + freq=$(iwlist $ifname freq | grep "Current Frequency" | sed -n "s/^.*Current Frequency:\([0-9.]*\) GHz (Channel \([0-9]*\))/\1/p" | awk '{print $1*1000}') + hwaddr=$(/sbin/ifconfig $ifname 2>&1 | sed -n 's/^.*HWaddr \([0-9A-Za-z\-]*\).*/\1/p' | sed -e 's/\-/:/g' | cut -c1-17) + freqs=${freqs:+"$freqs "}$freq + hwmodes=${hwmodes:+"$hwmodes "}$hwmode + hwaddrs=${hwaddrs:+"$hwaddrs "}$hwaddr + ifnames=${ifnames:+"$ifnames "}$ifname + /sbin/ifconfig $ifname mtu 1900 + /sbin/ifconfig $ifname txqueuelen 5 + /sbin/ifconfig $ifname up } -- 2.30.2