batmand-adv-userspace updated
authorMarek Lindner <lindner_marek@yahoo.de>
Mon, 21 Jan 2008 00:56:34 +0000 (00:56 +0000)
committerMarek Lindner <lindner_marek@yahoo.de>
Mon, 21 Jan 2008 00:56:34 +0000 (00:56 +0000)
batman-adv kernel modul added
battools added
changed to http svn

SVN-Revision: 10227

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

index 496613d..de581c4 100644 (file)
@@ -1,4 +1,4 @@
-# 
+#
 # 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))
diff --git a/net/batman-advanced/files/etc/config/batman-adv b/net/batman-advanced/files/etc/config/batman-adv
deleted file mode 100644 (file)
index 16fc281..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-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/config/batmand-adv b/net/batman-advanced/files/etc/config/batmand-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
deleted file mode 100644 (file)
index 2603546..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-#!/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/files/etc/init.d/batmand-adv b/net/batman-advanced/files/etc/init.d/batmand-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
deleted file mode 100644 (file)
index bc980b1..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-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
deleted file mode 100644 (file)
index 271a692..0000000
+++ /dev/null
@@ -1,274 +0,0 @@
-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
index f5b4580..e25d0db 100644 (file)
@@ -1,4 +1,4 @@
-# 
+#
 # Copyright (C) 2006 OpenWrt.org
 #
 # This is free software, licensed under the GNU General Public License v2.
@@ -9,7 +9,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=batmand
-PKG_REV:=949
+PKG_REV:=963
 PKG_VERSION:=r$(PKG_REV)
 PKG_RELEASE:=1
 PKG_BRANCH:=batman
@@ -17,7 +17,7 @@ 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
@@ -37,21 +37,23 @@ endef
 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
 
@@ -59,6 +61,7 @@ MAKE_ARGS += \
        CFLAGS="$(TARGET_CFLAGS)" \
        CCFLAGS="$(TARGET_CFLAGS)" \
        OFLAGS="$(TARGET_CFLAGS)" \
+       REVISION="$(PKG_REV)" \
        CC="$(TARGET_CC)" \
        NODEBUG=1 \
        UNAME="Linux" \
@@ -71,7 +74,7 @@ endef
 
 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)" \
@@ -89,4 +92,4 @@ define Package/batmand/install
 endef
 
 $(eval $(call BuildPackage,batmand))
-$(eval $(call BuildPackage,batgat))
+$(eval $(call KernelPackage,batgat))