From 15802754eca3f25ad43142ae4c5141b8a1704515 Mon Sep 17 00:00:00 2001 From: jow Date: Sun, 5 Feb 2012 18:35:43 +0000 Subject: [PATCH] [packages_10.03.2] batman-adv: backport 2012.0.0 version from trunk git-svn-id: svn://svn.openwrt.org/openwrt/branches/packages_10.03.2@30312 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- net/batman-adv/Makefile | 33 +++++---- net/batman-adv/files/etc/config/batman-adv | 1 + net/batman-adv/files/etc/init.d/batman-adv | 98 +----------------------- net/batman-adv/files/lib/batman-adv/config.sh | 103 ++++++++++++++++++++++++++ 4 files changed, 123 insertions(+), 112 deletions(-) create mode 100644 net/batman-adv/files/lib/batman-adv/config.sh diff --git a/net/batman-adv/Makefile b/net/batman-adv/Makefile index 53d724e..8547b31 100644 --- a/net/batman-adv/Makefile +++ b/net/batman-adv/Makefile @@ -1,24 +1,24 @@ # -# Copyright (C) 2010 OpenWrt.org +# Copyright (C) 2010-2012 OpenWrt.org # # This is free software, licensed under the GNU General Public License v2. # See /LICENSE for more information. # -# $Id: Makefile 5624 2006-11-23 00:29:07Z nbd $ include $(TOPDIR)/rules.mk PKG_NAME:=batman-adv -PKG_VERSION:=2011.2.0 -PKG_MD5SUM:=1ef45406201913cc08ac01e47ad2d034 -BATCTL_MD5SUM:=69e7fe915f2c1867b74e6efe7c627dd5 +PKG_VERSION:=2011.4.0 +BATCTL_VERSION:=2011.4.0 +PKG_MD5SUM:=3987d693bd26d8057506b542c3635910 +BATCTL_MD5SUM:=325b25dbb8261f7fa19c6e1d9bfba6e1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=http://downloads.open-mesh.org/batman/releases/batman-adv-$(PKG_VERSION) PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)/$(PKG_NAME)-$(PKG_VERSION) -PKG_TOOL_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)/batctl-$(PKG_VERSION) +PKG_BATCTL_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)/batctl-$(BATCTL_VERSION) include $(INCLUDE_DIR)/package.mk include $(INCLUDE_DIR)/kernel.mk @@ -27,7 +27,7 @@ define KernelPackage/batman-adv URL:=http://www.open-mesh.org/ MAINTAINER:=Marek Lindner SUBMENU:=Network Support - DEPENDS:=@!LINUX_2_4 + DEPENDS:=@!LINUX_2_4 +kmod-crc16 TITLE:=B.A.T.M.A.N. Adv FILES:=$(PKG_BUILD_DIR)/batman-adv.$(LINUX_KMOD_SUFFIX) AUTOLOAD:=$(call AutoLoad,50,batman-adv) @@ -61,27 +61,28 @@ MAKE_BATCTL_ARGS += \ CC="$(TARGET_CC)" \ NODEBUG=1 \ UNAME="Linux" \ - INSTALL_PREFIX="$(PKG_INSTALL_DIR)" \ + DESTDIR="$(PKG_INSTALL_DIR)" \ STRIP="/bin/true" \ batctl install ifneq ($(DEVELOPER)$(CONFIG_KMOD_BATMAN_ADV_BATCTL),) define Download/batctl - FILE:=batctl-$(PKG_VERSION).tar.gz + FILE:=batctl-$(BATCTL_VERSION).tar.gz URL:=$(PKG_SOURCE_URL) MD5SUM:=$(BATCTL_MD5SUM) endef $(eval $(call Download,batctl)) -EXTRACT_BATCTL = tar xzf "$(DL_DIR)/batctl-$(PKG_VERSION).tar.gz" -C "$(BUILD_DIR)/$(PKG_NAME)" +EXTRACT_BATCTL = tar xzf "$(DL_DIR)/batctl-$(BATCTL_VERSION).tar.gz" -C "$(BUILD_DIR)/$(PKG_NAME)" PATCH_BATCTL = $(call Build/DoPatch,"$(PKG_BATCTL_BUILD_DIR)","$(PATCH_DIR)","*batctl*") -BUILD_BATCTL = $(MAKE) -C $(PKG_TOOL_BUILD_DIR) $(MAKE_BATCTL_ARGS) +BUILD_BATCTL = $(MAKE) -C $(PKG_BATCTL_BUILD_DIR) $(MAKE_BATCTL_ARGS) endif +KPATCH ?= $(PATCH) define Build/DoPatch @if [ -d "$(2)" ]; then \ if [ "$$$$(ls $(2) | grep -Ec $(3))" -gt 0 ]; then \ - $(PATCH) "$(1)" "$(2)" "$(3)"; \ + $(KPATCH) "$(1)" "$(2)" "$(3)"; \ fi; \ fi endef @@ -104,16 +105,18 @@ endef ifneq ($(DEVELOPER)$(CONFIG_KMOD_BATMAN_ADV_BATCTL),) define KernelPackage/batman-adv/install - $(INSTALL_DIR) $(1)/etc/config $(1)/etc/init.d + $(INSTALL_DIR) $(1)/etc/config $(1)/etc/init.d $(1)/lib/batman-adv $(INSTALL_BIN) ./files/etc/init.d/batman-adv $(1)/etc/init.d + $(INSTALL_BIN) ./files/lib/batman-adv/config.sh $(1)/lib/batman-adv $(INSTALL_DATA) ./files/etc/config/batman-adv $(1)/etc/config $(INSTALL_DIR) $(1)/usr/sbin - $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/batctl $(1)/usr/sbin/ + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/local/sbin/batctl $(1)/usr/sbin/ endef else define KernelPackage/batman-adv/install - $(INSTALL_DIR) $(1)/etc/config $(1)/etc/init.d + $(INSTALL_DIR) $(1)/etc/config $(1)/etc/init.d $(1)/lib/batman-adv $(INSTALL_BIN) ./files/etc/init.d/batman-adv $(1)/etc/init.d + $(INSTALL_BIN) ./files/lib/batman-adv/config.sh $(1)/lib/batman-adv $(INSTALL_DATA) ./files/etc/config/batman-adv $(1)/etc/config endef endif diff --git a/net/batman-adv/files/etc/config/batman-adv b/net/batman-adv/files/etc/config/batman-adv index 31ef797..414b119 100644 --- a/net/batman-adv/files/etc/config/batman-adv +++ b/net/batman-adv/files/etc/config/batman-adv @@ -2,6 +2,7 @@ config 'mesh' 'bat0' option 'interfaces' 'mesh' option 'aggregated_ogms' + option 'ap_isolation' option 'bonding' option 'fragmentation' option 'gw_bandwidth' diff --git a/net/batman-adv/files/etc/init.d/batman-adv b/net/batman-adv/files/etc/init.d/batman-adv index a6a8500..f0f6789 100644 --- a/net/batman-adv/files/etc/init.d/batman-adv +++ b/net/batman-adv/files/etc/init.d/batman-adv @@ -3,101 +3,7 @@ START=90 -is_module_loaded() { - - if [ ! -d "/sys/module/batman_adv" ]; then - echo "batman-adv module directory not found - was the kernel module loaded ?" >&2 - return 0 - fi - - return 1 -} - -start_mesh () { - local meshif="$1" - local interfaces aggregated_ogms bonding fragmentation gw_bandwidth gw_mode gw_sel_class log_level orig_interval vis_mode - - is_module_loaded - [ $? -ne 1 ] && return - - config_get interfaces "$meshif" interfaces - config_get aggregated_ogms "$meshif" aggregated_ogms - config_get bonding "$meshif" bonding - config_get fragmentation "$meshif" fragmentation - config_get gw_bandwidth "$meshif" gw_bandwidth - config_get gw_mode "$meshif" gw_mode - config_get gw_sel_class "$meshif" gw_sel_class - config_get log_level "$meshif" log_level - config_get orig_interval "$meshif" orig_interval - config_get vis_mode "$meshif" vis_mode - - if [ "$interfaces" = "" ]; then - echo Error, you must specify at least a network interface - return - fi - - for interface in $interfaces - do - ifname=$(uci -P /var/state get network.$interface.ifname 2>&-) - [ ! -f "/sys/class/net/$ifname/batman_adv/mesh_iface" ] && { - ifname=${interface} - [ ! -f "/sys/class/net/$ifname/batman_adv/mesh_iface" ] && echo "Can't add interface $ifname - ignoring" && continue - } - - echo $meshif > /sys/class/net/$ifname/batman_adv/mesh_iface - done - - if [ $orig_interval ]; then - echo $orig_interval > /sys/class/net/$meshif/mesh/orig_interval - fi - - if [ $log_level ]; then - echo $log_level > /sys/class/net/$meshif/mesh/log_level 2>&- - fi - - if [ $aggregated_ogms ]; then - echo $aggregated_ogms > /sys/class/net/$meshif/mesh/aggregated_ogms - fi - - if [ $bonding ]; then - echo $bonding > /sys/class/net/$meshif/mesh/bonding - fi - - if [ $fragmentation ]; then - echo $fragmentation > /sys/class/net/$meshif/mesh/fragmentation - fi - - if [ $gw_bandwidth ]; then - echo $gw_bandwidth > /sys/class/net/$meshif/mesh/gw_bandwidth - fi - - if [ $gw_mode ]; then - echo $gw_mode > /sys/class/net/$meshif/mesh/gw_mode - fi - - if [ $gw_sel_class ]; then - echo $gw_sel_class > /sys/class/net/$meshif/mesh/gw_sel_class - fi - - if [ $vis_mode ]; then - echo $vis_mode > /sys/class/net/$meshif/mesh/vis_mode - fi -} - -stop_mesh() { - local meshif="$1" - - is_module_loaded - [ $? -ne 1 ] && return - - for iface in $(ls /sys/class/net/*) - do - [ ! -f "$iface/batman_adv/mesh_iface" ] && continue - [ "$(head -1 $iface/batman_adv/mesh_iface)" != "$meshif" ] && continue - - echo "none" > $iface/batman_adv/mesh_iface - done -} +. /lib/batman-adv/config.sh # can also be used with "batman-adv start bat0" start() { @@ -120,5 +26,3 @@ stop () { config_foreach stop_mesh mesh fi } - - diff --git a/net/batman-adv/files/lib/batman-adv/config.sh b/net/batman-adv/files/lib/batman-adv/config.sh new file mode 100644 index 0000000..58a01d2 --- /dev/null +++ b/net/batman-adv/files/lib/batman-adv/config.sh @@ -0,0 +1,103 @@ +#!/bin/sh +# Copyright (C) 2011 OpenWrt.org + +is_module_loaded() { + + if [ ! -d "/sys/module/batman_adv" ]; then + echo "batman-adv module directory not found - was the kernel module loaded ?" >&2 + return 0 + fi + + return 1 +} + +start_mesh () { + local meshif="$1" + local interfaces aggregated_ogms ap_isolation bonding fragmentation gw_bandwidth gw_mode gw_sel_class log_level orig_interval vis_mode + + is_module_loaded + [ $? -ne 1 ] && return + + config_get interfaces "$meshif" interfaces + config_get aggregated_ogms "$meshif" aggregated_ogms + config_get ap_isolation "$meshif" ap_isolation + config_get bonding "$meshif" bonding + config_get fragmentation "$meshif" fragmentation + config_get gw_bandwidth "$meshif" gw_bandwidth + config_get gw_mode "$meshif" gw_mode + config_get gw_sel_class "$meshif" gw_sel_class + config_get log_level "$meshif" log_level + config_get orig_interval "$meshif" orig_interval + config_get vis_mode "$meshif" vis_mode + + if [ "$interfaces" = "" ]; then + echo Error, you must specify at least a network interface + return + fi + + for interface in $interfaces + do + ifname=$(uci -P /var/state get network.$interface.ifname 2>&-) + [ ! -f "/sys/class/net/$ifname/batman_adv/mesh_iface" ] && { + ifname=${interface} + [ ! -f "/sys/class/net/$ifname/batman_adv/mesh_iface" ] && echo "Can't add interface $ifname - ignoring" && continue + } + + echo $meshif > /sys/class/net/$ifname/batman_adv/mesh_iface + done + + if [ $orig_interval ]; then + echo $orig_interval > /sys/class/net/$meshif/mesh/orig_interval + fi + + if [ $log_level ]; then + echo $log_level > /sys/class/net/$meshif/mesh/log_level 2>&- + fi + + if [ $aggregated_ogms ]; then + echo $aggregated_ogms > /sys/class/net/$meshif/mesh/aggregated_ogms + fi + + if [ $ap_isolation ]; then + echo $ap_isolation > /sys/class/net/$meshif/mesh/ap_isolation + fi + + if [ $bonding ]; then + echo $bonding > /sys/class/net/$meshif/mesh/bonding + fi + + if [ $fragmentation ]; then + echo $fragmentation > /sys/class/net/$meshif/mesh/fragmentation + fi + + if [ $gw_bandwidth ]; then + echo $gw_bandwidth > /sys/class/net/$meshif/mesh/gw_bandwidth + fi + + if [ $gw_mode ]; then + echo $gw_mode > /sys/class/net/$meshif/mesh/gw_mode + fi + + if [ $gw_sel_class ]; then + echo $gw_sel_class > /sys/class/net/$meshif/mesh/gw_sel_class + fi + + if [ $vis_mode ]; then + echo $vis_mode > /sys/class/net/$meshif/mesh/vis_mode + fi +} + +stop_mesh() { + local meshif="$1" + + is_module_loaded + [ $? -ne 1 ] && return + + for iface in $(ls /sys/class/net/*) + do + [ ! -f "$iface/batman_adv/mesh_iface" ] && continue + [ "$(head -1 $iface/batman_adv/mesh_iface)" != "$meshif" ] && continue + + echo "none" > $iface/batman_adv/mesh_iface + done +} -- 2.11.0