-#
+#
# Copyright (C) 2006 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
include $(TOPDIR)/rules.mk
PKG_NAME:=batmand-adv
-PKG_VERSION:=0.1-alpha-rv466
+PKG_REV:=963
+PKG_VERSION:=r$(PKG_REV)
PKG_RELEASE:=1
+PKG_BRANCH:=batman-adv-userspace
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)_$(PKG_VERSION)_sources
-PKG_SOURCE:=$(PKG_NAME)_$(PKG_VERSION)_sources.tgz
-PKG_SOURCE_URL:=http://downloads.open-mesh.net/batman/development/sources/ \
- http://downloads.open-mesh.net/batman/development/sources/old/
-PKG_MD5SUM:=3ebc394a7b7b3fa5cecaf97f6a220a3f
-
+PKG_SOURCE_PROTO:=svn
+PKG_SOURCE_VERSION:=$(PKG_REV)
+PKG_SOURCE_SUBDIR:=batman-adv-$(PKG_VERSION)
+PKG_SOURCE_URL:=http://downloads.open-mesh.net/svn/batman/trunk/
+PKG_SOURCE:=$(PKG_SOURCE_SUBDIR).tar.gz
+PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_SOURCE_SUBDIR)
PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
+PKG_KMOD_BUILD_DIR:=$(PKG_BUILD_DIR)/batman-adv-kernelland/batman-core
+
+PKG_TOOL_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-battool-install
+PKG_TOOL_BUILD_DIR:=$(PKG_BUILD_DIR)/battool
+
include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/kernel.mk
-define Package/batman-advanced
+define Package/batman-adv/Default
SECTION:=net
CATEGORY:=Network
- DEPENDS:=+libpthread +kmod-tun
- TITLE:=B.A.T.M.A.N. Advanced (Layer2 Version)
URL:=https://www.open-mesh.net/
+ MAINTAINER:=Marek Lindner <lindner_marek@yahoo.de>
endef
-define Build/Configure
+define Package/batmand-adv
+$(call Package/batman-adv/Default)
+ DEPENDS:=+libpthread +kmod-tun
+ TITLE:=B.A.T.M.A.N. layer 2 routing daemon
+endef
+
+define Package/batmand-adv/description
+B.A.T.M.A.N. layer 2 routing daemon
endef
-MAKE_FLAGS += \
+define Package/battool
+$(call Package/batman-adv/Default)
+ TITLE:=B.A.T.M.A.N. layer 2 debug tools
+endef
+
+define Package/battool/description
+B.A.T.M.A.N. layer 2 debug tools
+endef
+
+define KernelPackage/batman-adv-core
+$(call Package/batman-adv/Default)
+ DEPENDS:=@LINUX_2_6
+ TITLE:=Kernel routing module for B.A.T.M.A.N. layer 2
+ FILES:=$(PKG_KMOD_BUILD_DIR)/batman-adv-core.$(LINUX_KMOD_SUFFIX)
+ AUTOLOAD:=$(call AutoLoad,50,batman-adv-core)
+endef
+
+
+define KernelPackage/batman-adv-core/description
+Kernel routing module for B.A.T.M.A.N. layer 2
+endef
+
+MAKE_ARGS += \
CFLAGS="$(TARGET_CFLAGS)" \
CCFLAGS="$(TARGET_CFLAGS)" \
OFLAGS="$(TARGET_CFLAGS)" \
+ REVISION="$(PKG_REV)" \
+ CC="$(TARGET_CC)" \
NODEBUG=1 \
UNAME="Linux" \
INSTALL_PREFIX="$(PKG_INSTALL_DIR)" \
STRIP="/bin/true" \
batmand-adv install
-define Package/batman-advanced/install
+MAKE_TOOL_ARGS += \
+ CFLAGS="$(TARGET_CFLAGS)" \
+ CCFLAGS="$(TARGET_CFLAGS)" \
+ OFLAGS="$(TARGET_CFLAGS)" \
+ REVISION="$(PKG_REV)" \
+ CC="$(TARGET_CC)" \
+ NODEBUG=1 \
+ UNAME="Linux" \
+ INSTALL_PREFIX="$(PKG_INSTALL_DIR)" \
+ STRIP="/bin/true" \
+ battool install
+
+define Build/Configure
+endef
+
+define Build/Compile
+ $(MAKE) -C $(PKG_BUILD_DIR)/batman-adv-userspace $(MAKE_ARGS)
+ $(MAKE) -C $(PKG_TOOL_BUILD_DIR) $(MAKE_TOOL_ARGS)
+ cp $(PKG_KMOD_BUILD_DIR)/Makefile.kbuild $(PKG_KMOD_BUILD_DIR)/Makefile
+ $(MAKE) -C "$(LINUX_DIR)" \
+ CROSS_COMPILE="$(TARGET_CROSS)" \
+ ARCH="$(LINUX_KARCH)" \
+ PATH="$(TARGET_PATH)" \
+ SUBDIRS="$(PKG_KMOD_BUILD_DIR)" \
+ LINUX_VERSION="$(LINUX_VERSION)" \
+ REVISION="$(PKG_REV)" modules
+endef
+
+define Package/batmand-adv/install
$(INSTALL_DIR) $(1)/usr/sbin $(1)/etc/config $(1)/etc/init.d
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/batmand-adv $(1)/usr/sbin/
- $(INSTALL_BIN) ./files/etc/init.d/batman-adv $(1)/etc/init.d
- $(INSTALL_DATA) ./files/etc/config/batman-adv $(1)/etc/config
+ $(INSTALL_BIN) ./files/etc/init.d/batmand-adv $(1)/etc/init.d
+ $(INSTALL_DATA) ./files/etc/config/batmand-adv $(1)/etc/config
+endef
+
+define Package/battool/install
+ $(INSTALL_DIR) $(1)/usr/sbin
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/battool $(1)/usr/sbin/
endef
-$(eval $(call BuildPackage,batman-advanced))
+$(eval $(call BuildPackage,batmand-adv))
+$(eval $(call BuildPackage,battool))
+$(eval $(call KernelPackage,batman-adv-core))
+++ /dev/null
-config batman-adv general
- option interface ath0
- option announce
- option gateway_class
- option originator_interval
- option preferred_gateway
- option routing_class
- option visualisation_srv
--- /dev/null
+config batman-adv general
+ option interface ath0
+ option announce
+ option gateway_class
+ option originator_interval
+ option preferred_gateway
+ option routing_class
+ option visualisation_srv
+++ /dev/null
-#!/bin/sh /etc/rc.common
-START=100
-. /lib/config/uci.sh
-uci_load batman-adv
-start () {
- interface=$(uci get batman-adv.general.interface)
- if [ "$interface" = "" ]; then
- echo $1 Error, you must specify at least a network interface
- exit
- fi
- announce=$(uci get batman-adv.general.announce)
- gateway_class=$(uci get batman-adv.general.gateway_class)
- originator_interval=$(uci get batman-adv.general.originator_interval)
- preferred_gateway=$(uci get batman-adv.general.preferred_gateway)
- routing_class=$(uci get batman-adv.general.routing_class)
- visualisation_srv=$(uci get batman-adv.general.visualisation_srv)
- batman_args=""
-
- if [ $announce ]; then
- batman_args=${batman_args}'-a '$announce' '
- fi
-
- if [ $gateway_class ]; then
- batman_args=${batman_args}'-g '$gateway_class' '
- fi
-
- if [ $originator_interval ]; then
- batman_args=${batman_args}'-o '$originator_interval' '
- fi
-
- if [ $preferred_gateway ]; then
- batman_args=${batman_args}'-p '$preferred_gateway' '
- fi
-
- if [ $routing_class ]; then
- batman_args=${batman_args}'-r '$routing_class' '
- fi
-
- if [ $visualisation_srv ]; then
- batman_args=${batman_args}'-s '$visualisation_srv' '
- fi
-
- batman_args=${batman_args}$interface
- batmand-adv $batman_args >/dev/null 2>&1
-}
-
-restart () {
- $0 stop
- sleep 3
- $0 start
-}
-
-stop () {
- killall batmand-adv
-}
--- /dev/null
+#!/bin/sh /etc/rc.common
+START=100
+. /lib/config/uci.sh
+uci_load batman-adv
+start () {
+ interface=$(uci get batman-adv.general.interface)
+ if [ "$interface" = "" ]; then
+ echo $1 Error, you must specify at least a network interface
+ exit
+ fi
+ announce=$(uci get batman-adv.general.announce)
+ gateway_class=$(uci get batman-adv.general.gateway_class)
+ originator_interval=$(uci get batman-adv.general.originator_interval)
+ preferred_gateway=$(uci get batman-adv.general.preferred_gateway)
+ routing_class=$(uci get batman-adv.general.routing_class)
+ visualisation_srv=$(uci get batman-adv.general.visualisation_srv)
+ batman_args=""
+
+ if [ $announce ]; then
+ batman_args=${batman_args}'-a '$announce' '
+ fi
+
+ if [ $gateway_class ]; then
+ batman_args=${batman_args}'-g '$gateway_class' '
+ fi
+
+ if [ $originator_interval ]; then
+ batman_args=${batman_args}'-o '$originator_interval' '
+ fi
+
+ if [ $preferred_gateway ]; then
+ batman_args=${batman_args}'-p '$preferred_gateway' '
+ fi
+
+ if [ $routing_class ]; then
+ batman_args=${batman_args}'-r '$routing_class' '
+ fi
+
+ if [ $visualisation_srv ]; then
+ batman_args=${batman_args}'-s '$visualisation_srv' '
+ fi
+
+ batman_args=${batman_args}$interface
+ batmand-adv $batman_args >/dev/null 2>&1
+}
+
+restart () {
+ $0 stop
+ sleep 3
+ $0 start
+}
+
+stop () {
+ killall batmand-adv
+}
+++ /dev/null
-diff -urN batmand-adv_0.1-alpha-rv466_sources.orig/Makefile batmand-adv_0.1-alpha-rv466_sources/Makefile
---- batmand-adv_0.1-alpha-rv466_sources.orig/Makefile 2007-07-31 22:03:22.433434504 +0100
-+++ batmand-adv_0.1-alpha-rv466_sources/Makefile 2007-07-31 22:05:07.553434504 +0100
-@@ -21,6 +21,7 @@
- CFLAGS = -Wall -O1 -g3
- STRIP= strip
- LDFLAGS = -lpthread
-+SBINDIR= $(INSTALL_PREFIX)/usr/sbin
-
- CFLAGS_MIPS = -Wall -O1 -g3
- LDFLAGS_MIPS = -lpthread
-@@ -253,4 +254,9 @@
- rm -f batmand-adv batmand-mips* *.o *~
-
- clean-long:
-- rm -rf batmand-adv_*
-\ No newline at end of file
-+ rm -rf batmand-adv_*
-+
-+install:
-+ mkdir -p $(SBINDIR)
-+ install -m 755 batmand-adv $(SBINDIR)
-+
+++ /dev/null
-diff -urN batmand-adv_0.1-alpha-rv466_sources.orig/list.h batmand-adv_0.1-alpha-rv466_sources/list.h
---- batmand-adv_0.1-alpha-rv466_sources.orig/list.h 1970-01-01 01:00:00.000000000 +0100
-+++ batmand-adv_0.1-alpha-rv466_sources/list.h 2007-07-31 21:56:31.633434504 +0100
-@@ -0,0 +1,270 @@
-+#ifndef _LINUX_LIST_H
-+#define _LINUX_LIST_H
-+
-+/*
-+ * XXX: Resolve conflict between this file and <sys/queue.h> on BSD systems.
-+ */
-+#ifdef LIST_HEAD
-+#undef LIST_HEAD
-+#endif
-+
-+/*
-+ * Simple doubly linked list implementation.
-+ *
-+ * Some of the internal functions ("__xxx") are useful when
-+ * manipulating whole lists rather than single entries, as
-+ * sometimes we already know the next/prev entries and we can
-+ * generate better code by using them directly rather than
-+ * using the generic single-entry routines.
-+ */
-+
-+struct list_head {
-+ struct list_head *next, *prev;
-+};
-+
-+#define LIST_HEAD_INIT(name) { &(name), &(name) }
-+
-+#define LIST_HEAD(name) \
-+ struct list_head name = LIST_HEAD_INIT(name)
-+
-+#define INIT_LIST_HEAD(ptr) do { \
-+ (ptr)->next = (ptr); (ptr)->prev = (ptr); \
-+} while (0)
-+
-+/*
-+ * Insert a new entry between two known consecutive entries.
-+ *
-+ * This is only for internal list manipulation where we know
-+ * the prev/next entries already!
-+ */
-+static inline void __list_add(struct list_head *new,
-+ struct list_head *prev,
-+ struct list_head *next)
-+{
-+ next->prev = new;
-+ new->next = next;
-+ new->prev = prev;
-+ prev->next = new;
-+}
-+
-+/**
-+ * list_add - add a new entry
-+ * @new: new entry to be added
-+ * @head: list head to add it after
-+ *
-+ * Insert a new entry after the specified head.
-+ * This is good for implementing stacks.
-+ */
-+static inline void list_add(struct list_head *new, struct list_head *head)
-+{
-+ __list_add(new, head, head->next);
-+}
-+
-+/**
-+ * list_add_tail - add a new entry
-+ * @new: new entry to be added
-+ * @head: list head to add it before
-+ *
-+ * Insert a new entry before the specified head.
-+ * This is useful for implementing queues.
-+ */
-+static inline void list_add_tail(struct list_head *new, struct list_head *head)
-+{
-+ __list_add(new, head->prev, head);
-+}
-+
-+/*
-+ * Delete a list entry by making the prev/next entries
-+ * point to each other.
-+ *
-+ * This is only for internal list manipulation where we know
-+ * the prev/next entries already!
-+ */
-+static inline void __list_del(struct list_head *prev, struct list_head *next)
-+{
-+ next->prev = prev;
-+ prev->next = next;
-+}
-+
-+/**
-+ * list_del - deletes entry from list.
-+ * @entry: the element to delete from the list.
-+ * Note: list_empty on entry does not return true after this, the entry is in an undefined state.
-+ */
-+static inline void list_del(struct list_head *entry)
-+{
-+ __list_del(entry->prev, entry->next);
-+ entry->next = (void *) 0;
-+ entry->prev = (void *) 0;
-+}
-+
-+static inline void list_add_before( struct list_head *list, struct list_head *pos_node, struct list_head *new_node ) {
-+
-+ if ( pos_node->prev != NULL )
-+ pos_node->prev->next = new_node;
-+ else
-+ list->next = new_node;
-+
-+ new_node->prev = pos_node->prev;
-+ new_node->next = pos_node;
-+
-+ pos_node->prev = new_node;
-+
-+}
-+
-+/**
-+ * list_del_init - deletes entry from list and reinitialize it.
-+ * @entry: the element to delete from the list.
-+ */
-+static inline void list_del_init(struct list_head *entry)
-+{
-+ __list_del(entry->prev, entry->next);
-+ INIT_LIST_HEAD(entry);
-+}
-+
-+/**
-+ * list_move - delete from one list and add as another's head
-+ * @list: the entry to move
-+ * @head: the head that will precede our entry
-+ */
-+static inline void list_move(struct list_head *list, struct list_head *head)
-+{
-+ __list_del(list->prev, list->next);
-+ list_add(list, head);
-+}
-+
-+/**
-+ * list_move_tail - delete from one list and add as another's tail
-+ * @list: the entry to move
-+ * @head: the head that will follow our entry
-+ */
-+static inline void list_move_tail(struct list_head *list,
-+ struct list_head *head)
-+{
-+ __list_del(list->prev, list->next);
-+ list_add_tail(list, head);
-+}
-+
-+/**
-+ * list_empty - tests whether a list is empty
-+ * @head: the list to test.
-+ */
-+static inline int list_empty(struct list_head *head)
-+{
-+ return head->next == head;
-+}
-+
-+static inline void __list_splice(struct list_head *list,
-+ struct list_head *head)
-+{
-+ struct list_head *first = list->next;
-+ struct list_head *last = list->prev;
-+ struct list_head *at = head->next;
-+
-+ first->prev = head;
-+ head->next = first;
-+
-+ last->next = at;
-+ at->prev = last;
-+}
-+
-+/**
-+ * list_splice - join two lists
-+ * @list: the new list to add.
-+ * @head: the place to add it in the first list.
-+ */
-+static inline void list_splice(struct list_head *list, struct list_head *head)
-+{
-+ if (!list_empty(list))
-+ __list_splice(list, head);
-+}
-+
-+/**
-+ * list_splice_init - join two lists and reinitialise the emptied list.
-+ * @list: the new list to add.
-+ * @head: the place to add it in the first list.
-+ *
-+ * The list at @list is reinitialised
-+ */
-+static inline void list_splice_init(struct list_head *list,
-+ struct list_head *head)
-+{
-+ if (!list_empty(list)) {
-+ __list_splice(list, head);
-+ INIT_LIST_HEAD(list);
-+ }
-+}
-+
-+/**
-+ * list_entry - get the struct for this entry
-+ * @ptr: the &struct list_head pointer.
-+ * @type: the type of the struct this is embedded in.
-+ * @member: the name of the list_struct within the struct.
-+ */
-+#define list_entry(ptr, type, member) \
-+ ((type *)((char *)(ptr)-(unsigned long)(&((type *)0)->member)))
-+
-+/**
-+ * list_for_each - iterate over a list
-+ * @pos: the &struct list_head to use as a loop counter.
-+ * @head: the head for your list.
-+ */
-+#define list_for_each(pos, head) \
-+ for (pos = (head)->next; pos != (head); \
-+ pos = pos->next)
-+/**
-+ * list_for_each_prev - iterate over a list backwards
-+ * @pos: the &struct list_head to use as a loop counter.
-+ * @head: the head for your list.
-+ */
-+#define list_for_each_prev(pos, head) \
-+ for (pos = (head)->prev; pos != (head); \
-+ pos = pos->prev)
-+
-+/**
-+ * list_for_each_safe - iterate over a list safe against removal of list entry
-+ * @pos: the &struct list_head to use as a loop counter.
-+ * @n: another &struct list_head to use as temporary storage
-+ * @head: the head for your list.
-+ */
-+#define list_for_each_safe(pos, n, head) \
-+ for (pos = (head)->next, n = pos->next; pos != (head); \
-+ pos = n, n = pos->next)
-+
-+/**
-+ * list_for_each_entry - iterate over list of given type
-+ * @pos: the type * to use as a loop counter.
-+ * @head: the head for your list.
-+ * @member: the name of the list_struct within the struct.
-+ */
-+#define list_for_each_entry(pos, head, member) \
-+ for (pos = list_entry((head)->next, typeof(*pos), member); \
-+ &pos->member != (head); \
-+ pos = list_entry(pos->member.next, typeof(*pos), member))
-+
-+/**
-+ * list_for_each_entry_safe - iterate over list of given type safe against removal of list entry
-+ * @pos: the type * to use as a loop counter.
-+ * @n: another type * to use as temporary storage
-+ * @head: the head for your list.
-+ * @member: the name of the list_struct within the struct.
-+ */
-+#define list_for_each_entry_safe(pos, n, head, member) \
-+ for (pos = list_entry((head)->next, typeof(*pos), member), \
-+ n = list_entry(pos->member.next, typeof(*pos), member); \
-+ &pos->member != (head); \
-+ pos = n, n = list_entry(n->member.next, typeof(*n), member))
-+
-+/**
-+ * list_for_each_entry_continue - iterate over list of given type
-+ * continuing after existing point
-+ * @pos: the type * to use as a loop counter.
-+ * @head: the head for your list.
-+ * @member: the name of the list_struct within the struct.
-+ */
-+#define list_for_each_entry_continue(pos, head, member) \
-+ for (pos = list_entry(pos->member.next, typeof(*pos), member); \
-+ &pos->member != (head); \
-+ pos = list_entry(pos->member.next, typeof(*pos), member))
-+
-+#endif
-#
+#
# Copyright (C) 2006 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
include $(TOPDIR)/rules.mk
PKG_NAME:=batmand
-PKG_REV:=949
+PKG_REV:=963
PKG_VERSION:=r$(PKG_REV)
PKG_RELEASE:=1
PKG_BRANCH:=batman
PKG_SOURCE_PROTO:=svn
PKG_SOURCE_VERSION:=$(PKG_REV)
PKG_SOURCE_SUBDIR:=$(PKG_BRANCH)d-$(PKG_VERSION)
-PKG_SOURCE_URL:=https://dev.open-mesh.net/svn/batman/trunk/$(PKG_BRANCH)
+PKG_SOURCE_URL:=http://downloads.open-mesh.net/svn/batman/trunk/$(PKG_BRANCH)
PKG_SOURCE:=$(PKG_SOURCE_SUBDIR).tar.gz
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_SOURCE_SUBDIR)
PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
define Package/batmand
$(call Package/batmand/Default)
DEPENDS:=+libpthread +kmod-tun
- TITLE:=B.A.T.M.A.N. Better Approach To Mobile Ad-hoc Networking
+ TITLE:=B.A.T.M.A.N. layer 3 routing daemon
endef
define Package/batmand/description
B.A.T.M.A.N. layer 3 routing daemon
endef
-define Package/batgat
+define KernelPackage/batgat
$(call Package/batmand/Default)
DEPENDS:=batmand
TITLE:=B.A.T.M.A.N. gateway module
FILES:=$(PKG_KMOD_BUILD_DIR)/batgat.$(LINUX_KMOD_SUFFIX)
+ AUTOLOAD:=$(call AutoLoad,50,batgat)
endef
-define Package/batgat/description
+
+define KernelPackage/batgat/description
Kernel gateway module for B.A.T.M.A.N.
endef
CFLAGS="$(TARGET_CFLAGS)" \
CCFLAGS="$(TARGET_CFLAGS)" \
OFLAGS="$(TARGET_CFLAGS)" \
+ REVISION="$(PKG_REV)" \
CC="$(TARGET_CC)" \
NODEBUG=1 \
UNAME="Linux" \
define Build/Compile
$(MAKE) -C $(PKG_BUILD_DIR) $(MAKE_ARGS)
- $(shell [ -e $(PKG_KMOD_BUILD_DIR)/Makefile.kbuild ] && mv $(PKG_KMOD_BUILD_DIR)/Makefile.kbuild $(PKG_KMOD_BUILD_DIR)/Makefile)
+ cp $(PKG_KMOD_BUILD_DIR)/Makefile.kbuild $(PKG_KMOD_BUILD_DIR)/Makefile
$(MAKE) -C "$(LINUX_DIR)" \
CROSS_COMPILE="$(TARGET_CROSS)" \
ARCH="$(LINUX_KARCH)" \
endef
$(eval $(call BuildPackage,batmand))
-$(eval $(call BuildPackage,batgat))
+$(eval $(call KernelPackage,batgat))