Initial import of my hacked about batman-advanced.
authorMike Albon <malbon@openwrt.org>
Tue, 31 Jul 2007 21:14:30 +0000 (21:14 +0000)
committerMike Albon <malbon@openwrt.org>
Tue, 31 Jul 2007 21:14:30 +0000 (21:14 +0000)
SVN-Revision: 8288

net/batman-advanced/Makefile [new file with mode: 0644]
net/batman-advanced/Makefile.save [new file with mode: 0644]
net/batman-advanced/files/etc/config/batman-adv [new file with mode: 0644]
net/batman-advanced/files/etc/init.d/batman-adv [new file with mode: 0644]
net/batman-advanced/patches/100-makefile.patch [new file with mode: 0644]
net/batman-advanced/patches/200-list.h.patch [new file with mode: 0644]

diff --git a/net/batman-advanced/Makefile b/net/batman-advanced/Makefile
new file mode 100644 (file)
index 0000000..818b09e
--- /dev/null
@@ -0,0 +1,57 @@
+# 
+# Copyright (C) 2006 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:=batmand-adv
+PKG_VERSION:=0.1-alpha-rv466_sources
+PKG_RELEASE:=1
+
+PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)_$(PKG_VERSION)
+PKG_SOURCE:=$(PKG_NAME)_$(PKG_VERSION).tgz
+PKG_SOURCE_URL:=http://downloads.open-mesh.net/batman/development/sources/
+PKG_MD5SUM:=3ebc394a7b7b3fa5cecaf97f6a220a3f
+PKG_CAT:=zcat
+
+PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/batman-advanced
+  SECTION:=net
+  CATEGORY:=Network
+  DEPENDS:=+libpthread +kmod-tun
+  TITLE:=B.A.T.M.A.N. Better Approach To Mobile Ad-hoc Networking (L2 Version)
+  URL:=https://www.open-mesh.net/
+endef
+
+define Build/Configure
+endef
+
+define Build/Compile
+       rm -rf $(PKG_INSTALL_DIR)
+       mkdir -p $(PKG_INSTALL_DIR)
+       $(MAKE) -C "$(PKG_BUILD_DIR)" \
+               $(TARGET_CONFIGURE_OPTS) \
+               NODEBUG=1 \
+               OFLAGS="$(TARGET_CFLAGS)" \
+               UNAME="Linux" \
+               INSTALL_PREFIX="$(PKG_INSTALL_DIR)" \
+               STRIP="/bin/true" \
+               batmand-adv install
+endef
+
+define Package/batman-advanced/install
+       $(INSTALL_DIR) $(1)/usr/sbin
+       $(CP) $(PKG_INSTALL_DIR)/usr/sbin/batmand-adv $(1)/usr/sbin/
+       $(CP) -a ./files/* $(1)/
+       chmod -R 755 $(1)/etc/init.d/batman
+endef
+
+
+$(eval $(call BuildPackage,batman-advanced))
diff --git a/net/batman-advanced/Makefile.save b/net/batman-advanced/Makefile.save
new file mode 100644 (file)
index 0000000..53cb85c
--- /dev/null
@@ -0,0 +1,57 @@
+# 
+# Copyright (C) 2006 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-advanced-III
+PKG_VERSION:=r342
+PKG_RELEASE:=1
+
+PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
+PKG_SOURCE_URL:=http://downloads.open-mesh.net/batman
+PKG_MD5SUM:=59662fa2c7ac80f5d1235c8e4ae0a80b
+PKG_CAT:=bzcat
+
+PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/batman-advanced
+  SECTION:=net
+  CATEGORY:=Network
+  DEPENDS:=+libpthread +kmod-tun
+  TITLE:=B.A.T.M.A.N. Better Approach To Mobile Ad-hoc Networking (L2 Version)
+  URL:=https://www.open-mesh.net/
+endef
+
+define Build/Configure
+endef
+
+define Build/Compile
+       rm -rf $(PKG_INSTALL_DIR)
+       mkdir -p $(PKG_INSTALL_DIR)
+       $(MAKE) -C "$(PKG_BUILD_DIR)" \
+               $(TARGET_CONFIGURE_OPTS) \
+               NODEBUG=1 \
+               OFLAGS="$(TARGET_CFLAGS)" \
+               UNAME="Linux" \
+               INSTALL_PREFIX="$(PKG_INSTALL_DIR)" \
+               STRIP="/bin/true" \
+               batmand install
+endef
+
+define Package/batman-advanced/install
+       $(INSTALL_DIR) $(1)/usr/sbin
+       $(CP) $(PKG_INSTALL_DIR)/usr/sbin/batmand $(1)/usr/sbin/
+       $(CP) -a ./files/* $(1)/
+       chmod -R 755 $(1)/etc/init.d/batman
+endef
+
+
+$(eval $(call BuildPackage,batman-advanced))
diff --git a/net/batman-advanced/files/etc/config/batman-adv b/net/batman-advanced/files/etc/config/batman-adv
new file mode 100644 (file)
index 0000000..16fc281
--- /dev/null
@@ -0,0 +1,8 @@
+config batman-adv general
+       option interface                ath0
+       option announce                 
+       option gateway_class            
+       option originator_interval
+       option preferred_gateway        
+       option routing_class
+       option visualisation_srv        
diff --git a/net/batman-advanced/files/etc/init.d/batman-adv b/net/batman-advanced/files/etc/init.d/batman-adv
new file mode 100644 (file)
index 0000000..2603546
--- /dev/null
@@ -0,0 +1,55 @@
+#!/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
+}
diff --git a/net/batman-advanced/patches/100-makefile.patch b/net/batman-advanced/patches/100-makefile.patch
new file mode 100644 (file)
index 0000000..bc980b1
--- /dev/null
@@ -0,0 +1,23 @@
+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)
++
diff --git a/net/batman-advanced/patches/200-list.h.patch b/net/batman-advanced/patches/200-list.h.patch
new file mode 100644 (file)
index 0000000..271a692
--- /dev/null
@@ -0,0 +1,274 @@
+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