#
-# 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
URL:=http://www.open-mesh.org/
MAINTAINER:=Marek Lindner <lindner_marek@yahoo.de>
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)
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
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
config 'mesh' 'bat0'
option 'interfaces' 'mesh'
option 'aggregated_ogms'
+ option 'ap_isolation'
option 'bonding'
option 'fragmentation'
option 'gw_bandwidth'
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() {
config_foreach stop_mesh mesh
fi
}
-
-
--- /dev/null
+#!/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
+}