Initial import of my hacked about batman-advanced.

git-svn-id: svn://svn.openwrt.org/openwrt/packages@8288 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
malbon 2007-07-31 21:14:30 +00:00
parent a4cd432c30
commit 0c514f8f31
6 changed files with 474 additions and 0 deletions

View File

@ -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))

View File

@ -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))

View File

@ -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

View File

@ -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
}

View File

@ -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)
+

View File

@ -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