--- /dev/null
+# _______ ________ __
+# | |.-----.-----.-----.| | | |.----.| |_
+# | - || _ | -__| || | | || _|| _|
+# |_______|| __|_____|__|__||________||__| |____|
+# |__| W I R E L E S S F R E E D O M
+#
+# People listed here are managing the OpenWrt routing feed,
+# use alphabetical order when updating the list.
+
+Axel "axn" Neumann <neumann@cgws.de>
+Bastian Bittorf <bittorf@bluebottle.com>
+Corinna "Elektra" Aichele <onelektra@gmx.net>
+Gabriel Kerneis <gabriel@kerneis.info>
+Gui Iribarren <gui@altermundi.net>
+Jo-Philipp Wich <jow@openwrt.org>
+Luka Perkov <luka@openwrt.org>
+Marek Lindner <mareklindner@neomailbox.ch>
+Moritz Warning <moritzwarning@web.de>
+Nicolás Echániz <nicoechaniz@altermundi.net>
+Pau Escrich <pau@dabax.net>
+Saverio Proto <zioproto@gmail.com>
+Simon Wunderlich <simon.wunderlich@s2003.tu-chemnitz.de>
+Vasilis "acinonyx" Tsiligiannis <acinonyx@openwrt.gr>
--- /dev/null
+#
+# Copyright (C) 2007-2011 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=ahcpd
+PKG_VERSION:=0.53
+PKG_RELEASE:=2
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=http://www.pps.univ-paris-diderot.fr/~jch/software/files/
+PKG_MD5SUM:=a1a610bf20965aa522cd766bf3d5829a
+
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/ahcpd
+ SECTION:=net
+ CATEGORY:=Network
+ TITLE:=Ad-Hoc Configuration Protocol daemon
+ URL:=http://www.pps.univ-paris-diderot.fr/~jch/software/ahcp/
+ MAINTAINER:=Gabriel Kerneis <gabriel@kerneis.info>
+ DEPENDS:=+kmod-ipv6 +ip +librt
+endef
+
+define Package/ahcpd/description
+ Ahcpd is a daemon for configuring an IPv6 network using the Ad-Hoc
+ Configuration Protocol (AHCP). AHCP is designed for wireless mesh
+ networks, where IPv6 autoconfiguration and DHCPv6 do not work, but may
+ also be used on wired networks.
+endef
+
+define Package/ahcpd/conffiles
+/etc/config/ahcpd
+endef
+
+define Package/ahcpd/install
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(INSTALL_DIR) $(1)/etc/ahcp
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/ahcp-config.sh $(1)/etc/ahcp/
+ $(INSTALL_DIR) $(1)/usr/sbin
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/ahcpd $(1)/usr/sbin/
+ $(INSTALL_DIR) $(1)/etc/config
+ $(INSTALL_CONF) ./files/ahcpd.config $(1)/etc/config/ahcpd
+ $(INSTALL_DIR) $(1)/etc/init.d
+ $(INSTALL_BIN) ./files/ahcpd.init $(1)/etc/init.d/ahcpd
+endef
+
+$(eval $(call BuildPackage,ahcpd))
--- /dev/null
+package ahcpd
+
+config ahcpd
+ # Choose ahcp mode: client (default), server or forwarder
+ ## option 'mode' 'client'
+ # Uncomment the following lines to enable ahcpd on the desired
+ # interfaces.
+ ## list 'interface' 'lan'
+ ## list 'interface' 'wlan'
+
+ # The following only makes sense in 'server' mode.
+ # Tweak to suit your needs.
+ ## list 'prefix' 'fde6:20f5:c9ac:358::/64'
+ ## list 'prefix' '192.168.4.128/25'
+ ## list 'name_server' 'fde6:20f5:c9ac:358::1'
+ ## list 'name_server' '192.168.4.1'
+ ## list 'ntp_server' '192.168.4.2'
+ ## option 'lease_dir' '/var/lib/leases'
+
+ # option 'id_file' '/var/lib/ahcp-unique-id'
+ # option 'log_file' '/var/log/ahcpd.log'
+ # The configuration file is not necessary since you can configure
+ # everything from this file. But still, you might prefer using it.
+ ## option 'conf_file' '/etc/ahcp/ahcp.conf'
+
+ # option 'multicast_address' 'ff02::cca6:c0f9:e182:5359'
+ # option 'port' '5359'
+ # option 'ipv4_only' 'false'
+ # option 'ipv6_only' 'false'
+ # option 'lease_time' '3666'
+ # option 'debug' '1'
+
--- /dev/null
+#!/bin/sh /etc/rc.common
+# Copyright (C) 2007-2011 OpenWrt.org
+
+START=71
+
+SERVICE_USE_PID=1
+
+EXTRA_COMMANDS="status"
+EXTRA_HELP=" status Print ahcpd's status to the log file."
+
+append_bool() {
+ local section="$1"
+ local option="$2"
+ local value="$3"
+ local _loctmp
+ config_get_bool _loctmp "$section" "$option" 0
+ [ "$_loctmp" -gt 0 ] && append args "$value"
+}
+
+append_parm() {
+ local section="$1"
+ local option="$2"
+ local switch="$3"
+ local _loctmp
+ config_get _loctmp "$section" "$option"
+ [ -z "$_loctmp" ] && return 0
+ append args "$switch $_loctmp"
+}
+
+append_stmt() {
+ local name="$1"
+ local switch="$2"
+ append args "-C '$switch $name'"
+}
+
+append_opt_stmt() {
+ local section="$1"
+ local option="$2"
+ local switch="$3"
+ local _loctmp
+ config_get _loctmp "$section" "$option"
+ [ -z "$_loctmp" ] && return 0
+ append args "-C '$switch $_loctmp'"
+}
+
+ahcp_addif() {
+ local ifname=$(uci_get_state network "$1" ifname "$1")
+ append interfaces "$ifname"
+}
+
+ahcp_server() {
+ local cfg="$1"
+
+ append_opt_stmt "$cfg" 'mode' 'mode'
+ append_opt_stmt "$cfg" 'lease_dir' 'lease-dir'
+ config_list_foreach "$cfg" 'prefix' append_stmt 'prefix'
+ config_list_foreach "$cfg" 'name_server' append_stmt 'name-server'
+ config_list_foreach "$cfg" 'ntp_server' append_stmt 'ntp-server'
+
+ append_parm "$cfg" 'id_file' '-i'
+ append_parm "$cfg" 'log_file' '-L'
+}
+
+ahcp_config() {
+ local cfg="$1"
+ local interface
+ local _loctmp
+
+ config_list_foreach "$cfg" 'interface' ahcp_addif
+
+ # Add interfaces with "option proto ahcp" in /etc/config/network
+ # (only for client mode)
+ config_get _loctmp "$cfg" "mode"
+ if [ -z "$_loctmp" -o "$_loctmp" = "client" ]; then
+ for interface in $(uci -P /var/state show network|grep proto=ahcp|cut -d. -f2); do
+ ahcp_addif $interface
+ done
+ fi
+
+ append_bool "$cfg" 'ipv4_only' '-4'
+ append_bool "$cfg" 'ipv6_only' '-6'
+ append_bool "$cfg" 'no_dns' '-N'
+
+ append_parm "$cfg" 'multicast_address' '-m'
+ append_parm "$cfg" 'port' '-p'
+ append_parm "$cfg" 'lease_time' '-t'
+ append_parm "$cfg" 'debug' '-d'
+ append_parm "$cfg" 'conf_file' '-c'
+ append_parm "$cfg" 'script' '-s'
+}
+
+start() {
+ mkdir -p /var/lib
+ config_load ahcpd
+ unset args
+ unset interfaces
+ config_foreach ahcp_config ahcpd
+ config_foreach ahcp_server ahcpd
+ [ -z "$interfaces" ] && return 0
+ eval "service_start /usr/sbin/ahcpd -D $args $interfaces"
+}
+
+stop() {
+ service_stop /usr/sbin/ahcpd
+}
+
+status() {
+ SERVICE_SIG="USR1" service_signal /usr/sbin/ahcpd
+}
+config ALFRED_NEEDS_lua
+ bool
+
+config ALFRED_NEEDS_libgps
+ bool
config PACKAGE_ALFRED_VIS
bool "enable vis server for alfred"
depends on PACKAGE_alfred
default y
+config PACKAGE_ALFRED_BATHOSTS
+ bool "enable autogeneration of /etc/bat-hosts"
+ depends on PACKAGE_alfred
+ select ALFRED_NEEDS_lua
+ default n
+config PACKAGE_ALFRED_GPSD
+ bool "enable gpsd service for alfred"
+ depends on PACKAGE_alfred
+ select ALFRED_NEEDS_libgps
+ default n
# The latest alfred git hash in PKG_REV can be obtained from http://git.open-mesh.org/alfred.git
#
PKG_NAME:=alfred
-PKG_VERSION:=2013.3.0
-PKG_RELEASE:=0
-PKG_MD5SUM:=018ef6262cdd11e900af31d71a864b13
+PKG_VERSION:=2013.4.0
+PKG_RELEASE:=1
+PKG_MD5SUM:=3891697e127b1037cfc9349fd96e9993
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://downloads.open-mesh.org/batman/releases/batman-adv-$(PKG_VERSION)
SECTION:=net
CATEGORY:=Network
TITLE:=A.L.F.R.E.D. - Almighty Lightweight Fact Remote Exchange Daemon
- DEPENDS:= +libc +IPV6:kmod-ipv6 +librt
+ DEPENDS:= +libc +IPV6:kmod-ipv6 +librt \
+ +ALFRED_NEEDS_lua:lua \
+ +ALFRED_NEEDS_libgps:libgps
endef
define Package/alfred/description
endef
MAKE_ALFRED_FLAGS=\
- CONFIG_ALFRED_VIS=$(if $(CONFIG_PACKAGE_ALFRED_VIS),y,n)
+ CONFIG_ALFRED_VIS=$(if $(CONFIG_PACKAGE_ALFRED_VIS),y,n) \
+ CONFIG_ALFRED_GPSD=$(if $(CONFIG_PACKAGE_ALFRED_GPSD),y,n)
TARGET_CFLAGS += -ffunction-sections -fdata-sections -flto
TARGET_LDFLAGS += -Wl,--gc-sections -fuse-linker-plugin
define Package/alfred/install
$(INSTALL_DIR) $(1)/usr/sbin
cp -fpR $(PKG_BUILD_DIR)/alfred $(1)/usr/sbin/
- [ "x$(CONFIG_PACKAGE_ALFRED_VIS)" == "xy" ] && cp -fpR $(PKG_BUILD_DIR)/vis/vis $(1)/usr/sbin/ ; true
+ [ "x$(CONFIG_PACKAGE_ALFRED_VIS)" == "xy" ] && cp -fpR $(PKG_BUILD_DIR)/vis/batadv-vis $(1)/usr/sbin/ ; true
+ [ "x$(CONFIG_PACKAGE_ALFRED_GPSD)" == "xy" ] && cp -fpR $(PKG_BUILD_DIR)/vis/alfred-gpsd $(1)/usr/sbin/ ; true
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) ./files/alfred.init $(1)/etc/init.d/alfred
$(INSTALL_DIR) $(1)/etc/config
$(INSTALL_DATA) ./files/alfred.config $(1)/etc/config/alfred
+ $(INSTALL_DIR) $(1)/etc/alfred
+ [ "x$(CONFIG_PACKAGE_ALFRED_BATHOSTS)" == "xy" ] && $(INSTALL_BIN) ./files/bat-hosts.lua $(1)/etc/alfred/bat-hosts.lua ; true
endef
$(eval $(call BuildPackage,alfred))
option mode 'master'
option batmanif 'bat0'
option start_vis '1'
+ option run_facters '1'
# REMOVE THIS LINE TO ENABLE ALFRED
option disabled '1'
STOP=99
alfred_args=""
vis_args=""
+facters_dir="/etc/alfred"
pid_file_alfred="/var/run/alfred.pid"
pid_file_vis="/var/run/vis.pid"
enable=0
append vis_args "-i $batmanif -s"
fi
+ config_get_bool run_facters "$section" run_facters 0
+
return 0
}
SERVICE_PID_FILE="$pid_file_alfred"
service_start /usr/sbin/alfred ${alfred_args}
- if [ "$vis_enable" = "0" ]; then
- exit 0
- fi
- echo "${initscript}: starting vis"
- SERVICE_PID_FILE="$pid_file_vis"
- service_start /usr/sbin/vis ${vis_args}
+ if [ "$vis_enable" = "1" ]; then
+ echo "${initscript}: starting vis"
+ SERVICE_PID_FILE="$pid_file_vis"
+ service_start /usr/sbin/vis ${vis_args}
+ fi
+
+ if [ "$run_facters" = "1" ]; then
+ ( for file in $facters_dir/* ; do [ -x $file ] && $file ; done )
+ if ! ( grep -q "for file in $facters_dir/\* ; do " /etc/crontabs/root 2>/dev/null ) ; then
+ echo "*/5 * * * * ( for file in $facters_dir/* ; do [ -x \$file ] && \$file ; done )" >> /etc/crontabs/root
+ /etc/init.d/cron enable
+ /etc/init.d/cron restart
+ fi
+ fi
}
stop()
service_stop /usr/sbin/alfred
SERVICE_PID_FILE="$pid_file_vis"
[ -x /usr/sbin/vis ] && service_stop /usr/sbin/vis
-
+ sed "\|for file in $facters_dir/\* ; do |d" -i /etc/crontabs/root
+ /etc/init.d/cron restart
}
--- /dev/null
+#!/usr/bin/lua
+
+local type_id = 64 -- bat-hosts
+
+function get_hostname()
+ local hostfile = io.open("/proc/sys/kernel/hostname", "r")
+ local ret_string = hostfile:read()
+ hostfile:close()
+ return ret_string
+end
+
+function get_interfaces_names()
+ local ret = {}
+
+ for name in io.popen("ls -1 /sys/class/net/"):lines() do
+ table.insert(ret, name)
+ end
+
+ return ret
+end
+
+function get_interface_address(name)
+ local addressfile = io.open("/sys/class/net/"..name.."/address", "r")
+ local ret_string = addressfile:read()
+ addressfile:close()
+ return ret_string
+end
+
+
+local function generate_bat_hosts()
+-- get hostname and interface macs/names
+-- then return a table containing valid bat-hosts lines
+ local n, i
+ local ifaces, ret = {}, {}
+
+ local hostname = get_hostname()
+
+ for n, i in ipairs(get_interfaces_names()) do
+ local address = get_interface_address(i)
+ if not ifaces[address] then ifaces[address] = i end
+ end
+
+ for mac, iname in pairs(ifaces) do
+ if mac:match("^%x%x:%x%x:%x%x:%x%x:%x%x:%x%x$") and not mac:match("00:00:00:00:00:00") then
+ table.insert(ret, mac.." "..hostname.."_"..iname.."\n")
+ end
+ end
+
+ return ret
+end
+
+local function publish_bat_hosts()
+-- pass a raw chunk of data to alfred
+ local fd = io.popen("alfred -s " .. type_id, "w")
+ if fd then
+ local ret = generate_bat_hosts()
+ if ret then
+ fd:write(table.concat(ret))
+ end
+ fd:close()
+ end
+end
+
+local function write_bat_hosts(rows)
+ local content = { "### /tmp/bat-hosts generated by alfred-bat-hosts\n",
+ "### /!\\ This file is overwritten every 5 minutes /!\\\n",
+ "### (To keep manual changes, replace /etc/bat-hosts symlink with a static file)\n" }
+
+ -- merge the chunks from all nodes, de-escaping newlines
+ for _, row in ipairs(rows) do
+ local node, value = unpack(row)
+ table.insert(content, "# Node ".. node .. "\n")
+ table.insert(content, value:gsub("\x0a", "\n") .. "\n")
+ end
+
+ -- write parsed content down to disk
+ local fd = io.open("/tmp/bat-hosts", "w")
+ if fd then
+ fd:write(table.concat(content))
+ fd:close()
+ end
+
+ -- try to make a symlink in /etc pointing to /tmp,
+ -- if it exists, ln will do nothing.
+ os.execute("ln -ns /tmp/bat-hosts /etc/bat-hosts 2>/dev/null")
+end
+
+local function receive_bat_hosts()
+-- read raw chunks from alfred, convert them to a nested table and call write_bat_hosts
+ local fd = io.popen("alfred -r " .. type_id)
+ --[[ this command returns something like
+ { "54:e6:fc:b9:cb:37", "00:11:22:33:44:55 ham_wlan0\x0a00:22:33:22:33:22 ham_eth0\x0a" },
+ { "90:f6:52:bb:ec:57", "00:22:33:22:33:23 spam\x0a" },
+ ]]--
+
+ if fd then
+ local output = fd:read("*a")
+ if output then
+ assert(loadstring("rows = {" .. output .. "}"))()
+ write_bat_hosts(rows)
+ end
+ fd:close()
+ end
+end
+
+publish_bat_hosts()
+receive_bat_hosts()
--- /dev/null
+From dbaaf2b294af120e42a0e95644640b128044a568 Mon Sep 17 00:00:00 2001
+From: Simon Wunderlich <sw@simonwunderlich.de>
+Date: Wed, 23 Oct 2013 01:17:36 +0200
+Subject: [PATCH] alfred-gpsd: add -lm to linker flags for libgps
+
+Appearently applications using libgps must link -lm themselves. A patch
+was submitted [1] to change this unusual behaviour upstream, but was
+never applied. Therefore link to -lm to alfred-gpsd too as this should
+not hurt anyway.
+
+[1] https://lists.berlios.de/pipermail/gpsd-dev/2011-August/009451.html
+
+Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
+---
+ gpsd/Makefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/gpsd/Makefile b/gpsd/Makefile
+index 9b21652..92e690f 100644
+--- a/gpsd/Makefile
++++ b/gpsd/Makefile
+@@ -49,7 +49,7 @@ ifeq ($(origin LIBGPS_CFLAGS) $(origin LIBGPS_LDLIBS), undefined undefined)
+ $(error No $(LIBGPS_NAME) development libraries found!)
+ endif
+ LIBGPS_CFLAGS += $(shell $(PKG_CONFIG) --cflags $(LIBGPS_NAME))
+- LIBGPS_LDLIBS += $(shell $(PKG_CONFIG) --libs $(LIBGPS_NAME))
++ LIBGPS_LDLIBS += $(shell $(PKG_CONFIG) --libs $(LIBGPS_NAME)) -lm
+ endif
+ CFLAGS += $(LIBGPS_CFLAGS)
+ LDLIBS += $(LIBGPS_LDLIBS)
+--
+1.7.10.4
+
--- /dev/null
+#
+# Copyright (C) 2007-2009 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=babeld
+PKG_VERSION:=1.4.2
+PKG_RELEASE:=2
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=http://www.pps.univ-paris-diderot.fr/~jch/software/files/
+PKG_MD5SUM:=a48e8129f221f66640ae1ccf73190991
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/babeld
+ SECTION:=net
+ CATEGORY:=Network
+ SUBMENU:=Routing and Redirection
+ TITLE:=A loop-free distance-vector routing protocol
+ URL:=http://www.pps.univ-paris-diderot.fr/~jch/software/babel/
+ MAINTAINER:=Gabriel Kerneis <gabriel@kerneis.info>
+ DEPENDS:=+kmod-ipv6 +librt
+endef
+
+define Package/babeld/description
+ Babel is a loop-avoiding distance-vector routing protocol roughly based
+ on DSDV and AODV, but with provisions for link cost estimation and
+ redistribution of routes from other routing protocols.
+ While it is optimised for wireless mesh networks, Babel will also work
+ efficiently on wired networks. It will generate between 1.2 and 2.4 times
+ the amount of routing traffic that RIPng would generate, while
+ never counting to infinity.
+endef
+
+define Package/babeld/conffiles
+/etc/babeld.conf
+/etc/config/babeld
+endef
+
+MAKE_FLAGS+= \
+ CFLAGS="$(TARGET_CFLAGS)" \
+
+define Package/babeld/install
+ $(INSTALL_DIR) $(1)/usr/sbin
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/babeld $(1)/usr/sbin/
+ $(INSTALL_DIR) $(1)/etc
+ $(INSTALL_CONF) ./files/babeld.conf $(1)/etc/
+ $(INSTALL_DIR) $(1)/etc/config
+ $(INSTALL_CONF) ./files/babeld.config $(1)/etc/config/babeld
+ $(INSTALL_DIR) $(1)/etc/init.d
+ $(INSTALL_BIN) ./files/babeld.init $(1)/etc/init.d/babeld
+endef
+
+$(eval $(call BuildPackage,babeld))
--- /dev/null
+# babel config file
+#
+# This config file simply documents sample entries.
+# "redistribute" means: redistribute routes from other routing protocols
+# into babel. "local" means addresses assigned to local interfaces.
+#
+# You do not need to edit this file: you can use /etc/config/babeld
+# instead (sections "interface" and "filter"). Both files can be used
+# simultaneously (the rules of this file are executed first).
+
+# the default rules are:
+#
+## redistribute local
+## redistribute deny
+#
+# this says, redistribute local addresses but no other routes
+
+
+# redistribute IPv4 default route into babel
+## redistribute local ip 0.0.0.0/0 le 0 metric 128
+
+# same but for IPv6
+## redistribute local ip ::/0 le 0 metric 128
+
+
+# don't redistribute all local addresses, only selected ones
+# after the first line, the "deny" rules kicks in. After the "deny"
+# no redistribute local rules are going to match
+## redistribute local ip 192.160.4.0/24
+## redistribute local deny
+
+
+# Babel refuses to redistribute routes with a protocol number of "boot";
+# this is standard practice, and means that you cannot easily
+# redistribute the default route installed by dhcp. It is however
+# possible to redistribute such route by explicitly specifying "proto 3"
+# on the redistribute line.
+## redistribute ip 0.0.0.0/0 le 0 proto 3 metric 128
--- /dev/null
+package babeld
+
+config general
+ # option 'multicast_address' 'ff02:0:0:0:0:0:1:6'
+ # option 'port' '6696'
+ # option 'state_file' '/var/lib/babel-state'
+ # option 'hello_interval' '4'
+ # option 'wired_hello_interval' '20'
+ # option 'diversity' '0,128'
+ # option 'smoothing_half_time' '4'
+ # option 'kernel_priority' '0'
+ # Do not use this option unless you know what you are doing, as it can
+ # cause persistent route flapping.
+ ## option 'duplication_priority' '0'
+ # option 'carrier_sense' 'false'
+ # option 'assume_wireless' 'false'
+ # option 'no_split_horizon' 'false'
+ # option 'debug' '0'
+ # Listen for connections from a front-end, e.g. on port 33123.
+ ## option 'local_server' '33123'
+ # option 'random_router_id' 'false'
+ # Keep unfeasible routes
+ ## option 'keep_unfeasible' 'false'
+ # Use the given kernel routing table for routes inserted by babeld.
+ ## option 'export_table' '0'
+ # Export routes from the given kernel routing tables.
+ ## list 'import_table' '0'
+ ## list 'import_table' '42'
+ # The configuration file is not necessary since you can do everything
+ # from this file.
+ # option 'conf_file' '/etc/babeld.conf'
+ # option 'log_file' '/var/log/babeld.log'
+
+# You can use aliases (like lan, wlan) or real names (like eth0.0).
+# If you use an alias, it must be already defined when babeld starts.
+# Otherwise, the name is taken literally and the interface can be
+# brought up later (useful for tunnels for instance).
+config interface wlan
+ # Remove this line to enable babeld on this interface
+ option 'ignore' 'true'
+ # option 'wired' 'auto'
+ # option 'link_quality' 'auto'
+ # option 'split_horizon' 'auto'
+ # The default is 96 for wired interfaces, and 256 for wireless ones
+ ## option 'rxcost' '256'
+ # The default is specified with the -h and -H command-line flags.
+ ## option 'hello_interval' '4'
+ # This can be set to a fairly large value, unless significant
+ # packet loss is expected. The default is four times the hello
+ # interval.
+ ## option 'update_interval' '16'
+
+config interface lan
+ option 'ignore' 'true'
+
+# A filter consists in a type ('in', 'out' or 'redistribute'), an action
+# ('allow', 'deny' or 'metric xxx') and a set of selectors ('ip', 'eq',
+# etc.). See /etc/babeld.conf for more details.
+# Here is a sample filter wich redistributes the default route if its
+# protocol number is "boot", e.g. when it installed by dhcp. It is
+# disabled by default.
+config filter
+ option 'ignore' 'true'
+ # Type
+ option 'type' 'redistribute'
+ # Selectors: ip, eq, le, ge, neigh, id, proto, local, if
+ option 'ip' '0.0.0.0/0'
+ option 'le' '0'
+ option 'proto' '3'
+ # Action
+ option 'action' 'metric 128'
+
--- /dev/null
+#!/bin/sh /etc/rc.common
+
+START=70
+
+pidfile='/var/run/babeld.pid'
+EXTRA_COMMANDS="status"
+EXTRA_HELP=" status Dump Babel's table to the log file."
+
+listen_ifname() {
+ local ifname=$(uci_get_state network "$1" ifname "$1")
+ local switch="$2"
+ append args "$switch $ifname"
+ append interfaces "$ifname"
+}
+
+append_ifname() {
+ local section="$1"
+ local option="$2"
+ local switch="$3"
+ local _name
+ config_get _name "$section" "$option"
+ [ -z "$_name" ] && return 0
+ local ifname=$(uci_get_state network "$_name" ifname "$_name")
+ append args "$switch $ifname"
+}
+
+append_bool() {
+ local section="$1"
+ local option="$2"
+ local value="$3"
+ local _loctmp
+ config_get_bool _loctmp "$section" "$option" 0
+ [ "$_loctmp" -gt 0 ] && append args "$value"
+}
+
+append_switch() {
+ local value="$1"
+ local switch="$2"
+ append args "$switch $value"
+}
+
+append_parm() {
+ local section="$1"
+ local option="$2"
+ local switch="$3"
+ local _loctmp
+ config_get _loctmp "$section" "$option"
+ [ -z "$_loctmp" ] && return 0
+ append args "$switch $_loctmp"
+}
+
+babel_filter() {
+ local cfg="$1"
+ local _loctmp
+
+ local _ignored
+ config_get_bool _ignored "$cfg" 'ignore' 0
+ [ "$_ignored" -eq 1 ] && return 0
+
+ append args "-C '"
+
+ append_parm "$cfg" 'type' ''
+
+ append_bool "$cfg" 'local' 'local'
+
+ append_parm "$cfg" 'ip' 'ip'
+ append_parm "$cfg" 'eq' 'eq'
+ append_parm "$cfg" 'le' 'le'
+ append_parm "$cfg" 'ge' 'ge'
+ append_parm "$cfg" 'neigh' 'neigh'
+ append_parm "$cfg" 'id' 'id'
+ append_parm "$cfg" 'proto' 'proto'
+
+ append_ifname "$cfg" 'if' 'if'
+
+ append_parm "$cfg" 'action' ''
+
+ append args ' ' "'"
+}
+
+babel_addif() {
+ local cfg="$1"
+
+ local _ignored
+ config_get_bool _ignored "$cfg" 'ignore' 0
+ [ "$_ignored" -eq 1 ] && return 0
+
+ listen_ifname "$cfg" "-C 'interface"
+
+ append_parm "$cfg" 'wired' 'wired'
+ append_parm "$cfg" 'link_quality' 'link-quality'
+ append_parm "$cfg" 'split_horizon' 'split-horizon'
+ append_parm "$cfg" 'rxcost' 'rxcost'
+ append_parm "$cfg" 'hello_interval' 'hello-interval'
+ append_parm "$cfg" 'update_interval' 'update-interval'
+
+ append args ' ' "'"
+}
+
+babel_config() {
+ local cfg="$1"
+
+ append_bool "$cfg" 'carrier_sense' '-l'
+ append_bool "$cfg" 'assume_wireless' '-w'
+ append_bool "$cfg" 'no_split_horizon' '-s'
+ append_bool "$cfg" 'keep_unfeasible' '-u'
+ append_bool "$cfg" 'random_router_id' '-r'
+
+ append_parm "$cfg" 'multicast_address' '-m'
+ append_parm "$cfg" 'port' '-p'
+ append_parm "$cfg" 'state_file' '-S'
+ append_parm "$cfg" 'hello_interval' '-h'
+ append_parm "$cfg" 'wired_hello_interval' '-H'
+ append_parm "$cfg" 'diversity' '-z'
+ append_parm "$cfg" 'smoothing_half_time' '-M'
+ append_parm "$cfg" 'kernel_priority' '-k'
+ append_parm "$cfg" 'duplication_priority' '-A'
+ append_parm "$cfg" 'debug' '-d'
+ append_parm "$cfg" 'local_server' '-g'
+ append_parm "$cfg" 'export_table' '-t'
+ config_list_foreach "$cfg" 'import_table' append_switch '-T'
+ append_parm "$cfg" 'conf_file' '-c'
+ append_parm "$cfg" 'log_file' '-L'
+}
+
+start() {
+ mkdir -p /var/lib
+ config_load babeld
+ unset args
+ unset interfaces
+ config_foreach babel_config general
+ config_foreach babel_addif interface
+ config_foreach babel_filter filter
+ [ -z "$interfaces" ] && return 0
+ eval "/usr/sbin/babeld -D -I $pidfile $args $interfaces"
+}
+
+stop() {
+ [ -f "$pidfile" ] && kill $(cat $pidfile)
+ # avoid race-condition on restart: wait for
+ # babeld to die for real.
+ [ -f "$pidfile" ] && sleep 1
+ [ -f "$pidfile" ] && sleep 1
+ [ -f "$pidfile" ] && sleep 1
+ [ -f "$pidfile" ] && exit 42
+}
+
+status() {
+ [ -f "$pidfile" ] && kill -USR1 $(cat $pidfile)
+}
PKG_NAME:=batman-adv
-PKG_VERSION:=2013.3.0
-BATCTL_VERSION:=2013.3.0
-PKG_RELEASE:=5
-PKG_MD5SUM:=d070c0879cd8fe8125315a4566fabd2d
-BATCTL_MD5SUM:=747535b0296f0013a6f99373a51d41fc
+PKG_VERSION:=2013.4.0
+BATCTL_VERSION:=2013.4.0
+PKG_RELEASE:=1
+PKG_MD5SUM:=6590caa324709289e3cb142273a5ff57
+BATCTL_MD5SUM:=42e269cc710bbc9a8fd17628201d4258
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://downloads.open-mesh.org/batman/releases/batman-adv-$(PKG_VERSION)
$(BATCTL_PATCH)
endef
+define Build/Prepare
+ $(call Build/Prepare/Default)
+ $(SED) '/#define _NET_BATMAN_ADV_MAIN_H_/a\#undef CONFIG_MODULE_STRIPPED' \
+ $(PKG_BUILD_DIR)/main.h
+endef
+
+
define Build/Compile
$(MAKE) -C "$(PKG_BUILD_DIR)" $(MAKE_BATMAN_ADV_ARGS)
$(BATCTL_BUILD)
+++ /dev/null
-Date: Fri, 6 Sep 2013 15:14:41 +0200
-From: Antonio Quartulli <ordex@autistici.org>
-To: b.a.t.m.a.n@lists.open-mesh.org
-Cc: Antonio Quartulli <ordex@autistici.org>
-Subject: [B.A.T.M.A.N.] [PATCH openwrt-feed only] batman-adv: fix metadata stripping
-
-a new optimisation in openwrt is stripping some metadata information, invluding
-the module version which is used by batctl to tell the user which version
-batman-adv the node is currently running.
-
-Un-define this constant to prevent the metadata from being stripped
-
-Signed-off-by: Antonio Quartulli <ordex@autistici.org>
----
- main.h | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/main.h b/main.h
-index 834b1a0..b329e79 100644
---- a/main.h
-+++ b/main.h
-@@ -20,6 +20,8 @@
- #ifndef _NET_BATMAN_ADV_MAIN_H_
- #define _NET_BATMAN_ADV_MAIN_H_
-
-+#undef CONFIG_MODULE_STRIPPED
-+
- #define BATADV_DRIVER_AUTHOR "Marek Lindner <lindner_marek@yahoo.de>, " \
- "Simon Wunderlich <siwu@hrz.tu-chemnitz.de>"
- #define BATADV_DRIVER_DESC "B.A.T.M.A.N. advanced"
---
-1.8.1.5
-
+++ /dev/null
-From c98c3e521913b8dd5fee4d3b90dc9ed7a47e5bee Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Linus=20L=C3=BCssing?= <linus.luessing@web.de>
-Date: Tue, 6 Aug 2013 20:21:15 +0200
-Subject: [PATCH] batman-adv: fix potential kernel paging errors for unicast
- transmissions
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-There are several functions which might reallocate skb data. Currently
-some places keep reusing their old ethhdr pointer regardless of whether
-they became invalid after such a reallocation or not. This potentially
-leads to kernel paging errors.
-
-This patch fixes these by refetching the ethdr pointer after the
-potential reallocations.
-
-Signed-off-by: Linus Lüssing <linus.luessing@web.de>
-Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
----
- bridge_loop_avoidance.c | 2 ++
- gateway_client.c | 13 ++++++++++++-
- gateway_client.h | 3 +--
- soft-interface.c | 9 ++++++++-
- unicast.c | 13 ++++++++++---
- 5 files changed, 33 insertions(+), 7 deletions(-)
-
-diff --git a/bridge_loop_avoidance.c b/bridge_loop_avoidance.c
-index e14531f..264de88 100644
---- a/bridge_loop_avoidance.c
-+++ b/bridge_loop_avoidance.c
-@@ -1529,6 +1529,8 @@ out:
- * in these cases, the skb is further handled by this function and
- * returns 1, otherwise it returns 0 and the caller shall further
- * process the skb.
-+ *
-+ * This call might reallocate skb data.
- */
- int batadv_bla_tx(struct batadv_priv *bat_priv, struct sk_buff *skb,
- unsigned short vid)
-diff --git a/gateway_client.c b/gateway_client.c
-index f105219..7614af3 100644
---- a/gateway_client.c
-+++ b/gateway_client.c
-@@ -508,6 +508,7 @@ out:
- return 0;
- }
-
-+/* this call might reallocate skb data */
- static bool batadv_is_type_dhcprequest(struct sk_buff *skb, int header_len)
- {
- int ret = false;
-@@ -568,6 +569,7 @@ out:
- return ret;
- }
-
-+/* this call might reallocate skb data */
- bool batadv_gw_is_dhcp_target(struct sk_buff *skb, unsigned int *header_len)
- {
- struct ethhdr *ethhdr;
-@@ -619,6 +621,12 @@ bool batadv_gw_is_dhcp_target(struct sk_buff *skb, unsigned int *header_len)
-
- if (!pskb_may_pull(skb, *header_len + sizeof(*udphdr)))
- return false;
-+
-+ /* skb->data might have been reallocated by pskb_may_pull() */
-+ ethhdr = (struct ethhdr *)skb->data;
-+ if (ntohs(ethhdr->h_proto) == ETH_P_8021Q)
-+ ethhdr = (struct ethhdr *)(skb->data + VLAN_HLEN);
-+
- udphdr = (struct udphdr *)(skb->data + *header_len);
- *header_len += sizeof(*udphdr);
-
-@@ -634,12 +642,14 @@ bool batadv_gw_is_dhcp_target(struct sk_buff *skb, unsigned int *header_len)
- return true;
- }
-
-+/* this call might reallocate skb data */
- bool batadv_gw_out_of_range(struct batadv_priv *bat_priv,
-- struct sk_buff *skb, struct ethhdr *ethhdr)
-+ struct sk_buff *skb)
- {
- struct batadv_neigh_node *neigh_curr = NULL, *neigh_old = NULL;
- struct batadv_orig_node *orig_dst_node = NULL;
- struct batadv_gw_node *curr_gw = NULL;
-+ struct ethhdr *ethhdr;
- bool ret, out_of_range = false;
- unsigned int header_len = 0;
- uint8_t curr_tq_avg;
-@@ -648,6 +658,7 @@ bool batadv_gw_out_of_range(struct batadv_priv *bat_priv,
- if (!ret)
- goto out;
-
-+ ethhdr = (struct ethhdr *)skb->data;
- orig_dst_node = batadv_transtable_search(bat_priv, ethhdr->h_source,
- ethhdr->h_dest);
- if (!orig_dst_node)
-diff --git a/gateway_client.h b/gateway_client.h
-index 039902d..1037d75 100644
---- a/gateway_client.h
-+++ b/gateway_client.h
-@@ -34,7 +34,6 @@ void batadv_gw_node_delete(struct batadv_priv *bat_priv,
- void batadv_gw_node_purge(struct batadv_priv *bat_priv);
- int batadv_gw_client_seq_print_text(struct seq_file *seq, void *offset);
- bool batadv_gw_is_dhcp_target(struct sk_buff *skb, unsigned int *header_len);
--bool batadv_gw_out_of_range(struct batadv_priv *bat_priv,
-- struct sk_buff *skb, struct ethhdr *ethhdr);
-+bool batadv_gw_out_of_range(struct batadv_priv *bat_priv, struct sk_buff *skb);
-
- #endif /* _NET_BATMAN_ADV_GATEWAY_CLIENT_H_ */
-diff --git a/soft-interface.c b/soft-interface.c
-index 700d0b4..0f04e1c 100644
---- a/soft-interface.c
-+++ b/soft-interface.c
-@@ -180,6 +180,9 @@ static int batadv_interface_tx(struct sk_buff *skb,
- if (batadv_bla_tx(bat_priv, skb, vid))
- goto dropped;
-
-+ /* skb->data might have been reallocated by batadv_bla_tx() */
-+ ethhdr = (struct ethhdr *)skb->data;
-+
- /* Register the client MAC in the transtable */
- if (!is_multicast_ether_addr(ethhdr->h_source))
- batadv_tt_local_add(soft_iface, ethhdr->h_source, skb->skb_iif);
-@@ -220,6 +223,10 @@ static int batadv_interface_tx(struct sk_buff *skb,
- default:
- break;
- }
-+
-+ /* reminder: ethhdr might have become unusable from here on
-+ * (batadv_gw_is_dhcp_target() might have reallocated skb data)
-+ */
- }
-
- /* ethernet packet should be broadcasted */
-@@ -266,7 +273,7 @@ static int batadv_interface_tx(struct sk_buff *skb,
- /* unicast packet */
- } else {
- if (atomic_read(&bat_priv->gw_mode) != BATADV_GW_MODE_OFF) {
-- ret = batadv_gw_out_of_range(bat_priv, skb, ethhdr);
-+ ret = batadv_gw_out_of_range(bat_priv, skb);
- if (ret)
- goto dropped;
- }
-diff --git a/unicast.c b/unicast.c
-index dc8b5d4..688a041 100644
---- a/unicast.c
-+++ b/unicast.c
-@@ -326,7 +326,9 @@ static bool batadv_unicast_push_and_fill_skb(struct sk_buff *skb, int hdr_size,
- * @skb: the skb containing the payload to encapsulate
- * @orig_node: the destination node
- *
-- * Returns false if the payload could not be encapsulated or true otherwise
-+ * Returns false if the payload could not be encapsulated or true otherwise.
-+ *
-+ * This call might reallocate skb data.
- */
- static bool batadv_unicast_prepare_skb(struct sk_buff *skb,
- struct batadv_orig_node *orig_node)
-@@ -343,7 +345,9 @@ static bool batadv_unicast_prepare_skb(struct sk_buff *skb,
- * @orig_node: the destination node
- * @packet_subtype: the batman 4addr packet subtype to use
- *
-- * Returns false if the payload could not be encapsulated or true otherwise
-+ * Returns false if the payload could not be encapsulated or true otherwise.
-+ *
-+ * This call might reallocate skb data.
- */
- bool batadv_unicast_4addr_prepare_skb(struct batadv_priv *bat_priv,
- struct sk_buff *skb,
-@@ -401,7 +405,7 @@ int batadv_unicast_generic_send_skb(struct batadv_priv *bat_priv,
- struct batadv_neigh_node *neigh_node;
- int data_len = skb->len;
- int ret = NET_RX_DROP;
-- unsigned int dev_mtu;
-+ unsigned int dev_mtu, header_len;
-
- /* get routing information */
- if (is_multicast_ether_addr(ethhdr->h_dest)) {
-@@ -429,10 +433,12 @@ find_router:
- switch (packet_type) {
- case BATADV_UNICAST:
- batadv_unicast_prepare_skb(skb, orig_node);
-+ header_len = sizeof(struct batadv_unicast_packet);
- break;
- case BATADV_UNICAST_4ADDR:
- batadv_unicast_4addr_prepare_skb(bat_priv, skb, orig_node,
- packet_subtype);
-+ header_len = sizeof(struct batadv_unicast_4addr_packet);
- break;
- default:
- /* this function supports UNICAST and UNICAST_4ADDR only. It
-@@ -441,6 +447,7 @@ find_router:
- goto out;
- }
-
-+ ethhdr = (struct ethhdr *)(skb->data + header_len);
- unicast_packet = (struct batadv_unicast_packet *)skb->data;
-
- /* inform the destination node that we are still missing a correct route
---
-1.7.10.4
-
--- /dev/null
+#
+# Copyright (C) 2009-2012 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=bird
+PKG_VERSION:=1.3.11
+PKG_RELEASE:=1
+
+PKG_SOURCE:=bird-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=ftp://bird.network.cz/pub/bird
+PKG_MD5SUM:=8ad2eb997fb8251bc5b24cf32619571b
+PKG_BUILD_DEPENDS:=libncurses libreadline
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/bird/Default
+ TITLE:=The BIRD Internet Routing Daemon
+ URL:=http://bird.network.cz/
+ DEPENDS:=
+endef
+
+define Package/birdc/Default
+ TITLE:=The BIRD command-line client
+ URL:=http://bird.network.cz/
+ DEPENDS:= +libreadline +libncurses
+endef
+
+define Package/bird/Default/description1
+BIRD is an internet routing daemon which manages TCP/IP routing tables
+with support of modern routing protocols, easy to use configuration
+interface and powerful route filtering language. It is lightweight and
+efficient and therefore appropriate for small embedded routers.
+
+endef
+
+define Package/bird/Default/description2
+In BGP, BIRD supports communities, multiprotocol extensions, MD5
+authentication, 32bit AS numbers and could act as a route server or a
+route reflector. BIRD also supports multiple RIBs, multiple kernel
+routing tables and redistribution between the protocols with a powerful
+configuration syntax.
+
+endef
+
+define Package/bird/Default/description3
+This is a BIRD command-line client. It is used to send commands to BIRD,
+commands can perform simple actions such as enabling/disabling of
+protocols, telling BIRD to show various information, telling it to show
+a routing table filtered by a filter, or asking BIRD to reconfigure.
+
+Unless you can't afford dependency on ncurses and readline, you
+should install BIRD command-line client together with BIRD.
+
+endef
+
+define Package/bird4
+$(call Package/bird/Default)
+ SECTION:=net
+ CATEGORY:=Network
+ SUBMENU:=Routing and Redirection
+ TITLE+= (IPv4)
+endef
+
+define Package/birdc4
+$(call Package/birdc/Default)
+ SECTION:=net
+ CATEGORY:=Network
+ SUBMENU:=Routing and Redirection
+ TITLE+= (IPv4)
+ DEPENDS+= +bird4
+endef
+
+define Package/bird6
+$(call Package/bird/Default)
+ SECTION:=net
+ CATEGORY:=Network
+ TITLE+= (IPv6)
+endef
+
+define Package/birdc6
+$(call Package/birdc/Default)
+ SECTION:=net
+ CATEGORY:=Network
+ TITLE+= (IPv6)
+ DEPENDS+= +bird6
+endef
+
+define Package/bird4/description
+$(call Package/bird/Default/description1)
+This is IPv4 version of BIRD, it supports OSPFv2, RIPv2 and BGP
+protocols.
+
+$(call Package/bird/Default/description2)
+endef
+
+define Package/birdc4/description
+$(call Package/bird/Default/description1)
+$(call Package/bird/Default/description3)
+endef
+
+define Package/bird6/description
+$(call Package/bird/Default/description1)
+This is IPv6 version of BIRD, it supports OSPFv3, RIPng and BGP
+protocols.
+
+$(call Package/bird/Default/description2)
+endef
+
+define Package/birdc6/description
+$(call Package/bird/Default/description1)
+$(call Package/bird/Default/description3)
+endef
+
+CONFIGURE_ARGS += --with-linux-headers="$(LINUX_DIR)"
+
+define Build/Template
+
+$(STAMP_BUILT)-$(2): $(STAMP_PREPARED)
+ $(call Build/Configure/Default,$(3))
+ $(call Build/Compile/Default,)
+ ( cd $(PKG_BUILD_DIR); mv -f bird bird$(2); mv -f birdc birdc$(2) )
+ -$(MAKE) -C $(PKG_BUILD_DIR) clean
+ touch $$@
+
+$(STAMP_BUILT): $(STAMP_BUILT)-$(2)
+
+define Package/bird$(2)/install
+ $(INSTALL_DIR) $$(1)/usr/sbin
+ $(INSTALL_BIN) $$(PKG_BUILD_DIR)/bird$(2) $$(1)/usr/sbin/
+ $(INSTALL_BIN) ./files/bird$(2)loop $$(1)/usr/sbin/
+ $(INSTALL_DIR) $$(1)/etc
+ $(INSTALL_DATA) ./files/bird$(2).conf $$(1)/etc/
+ $(INSTALL_DIR) $$(1)/etc/init.d
+ $(INSTALL_BIN) ./files/bird$(2).init $$(1)/etc/init.d/bird$(2)
+
+endef
+
+define Package/bird$(2)/conffiles
+/etc/bird$(2).conf
+endef
+
+define Package/birdc$(2)/install
+ $(INSTALL_DIR) $$(1)/usr/sbin
+ $(INSTALL_BIN) $$(PKG_BUILD_DIR)/birdc$(2) $$(1)/usr/sbin/
+endef
+
+endef
+
+
+$(eval $(call Build/Template,bird4,4, --disable-ipv6))
+$(eval $(call Build/Template,bird6,6, --enable-ipv6))
+
+$(eval $(call BuildPackage,bird4))
+$(eval $(call BuildPackage,birdc4))
+$(eval $(call BuildPackage,bird6))
+$(eval $(call BuildPackage,birdc6))
--- /dev/null
+
+# THIS CONFIG FILE IS NOT A COMPLETE DOCUMENTATION
+# PLEASE LOOK IN THE BIRD DOCUMENTATION FOR MORE INFO
+
+# However, most of options used here are just for example
+# and will be removed in real-life configs.
+
+log syslog all;
+
+# Override router ID
+#router id 192.168.0.1;
+
+# Turn on global debugging of all protocols
+#debug protocols all;
+
+
+# Define a route filter...
+# filter test_filter {
+# if net ~ 10.0.0.0/16 then accept;
+# else reject;
+# }
+
+# The direct protocol automatically generates device routes to all network
+# interfaces. Can exist in as many instances as you wish if you want to
+# populate multiple routing tables with device routes. Because device routes
+# are handled by Linux kernel, this protocol is usually not needed.
+# protocol direct {
+# interface "*"; # Restrict network interfaces it works with
+# }
+
+# This pseudo-protocol performs synchronization between BIRD's routing
+# tables and the kernel. You can run multiple instances of the kernel
+# protocol and synchronize different kernel tables with different BIRD tables.
+protocol kernel {
+# learn; # Learn all alien routes from the kernel
+# persist; # Don't remove routes on bird shutdown
+ scan time 20; # Scan kernel routing table every 20 seconds
+# import none; # Default is import all
+# export all; # Default is export none
+}
+
+# This pseudo-protocol watches all interface up/down events.
+protocol device {
+ scan time 10; # Scan interfaces every 10 seconds
+}
+
+# Static routes (again, there can be multiple instances, so that you
+# can disable/enable various groups of static routes on the fly).
+protocol static {
+# export all; # Default is export none
+# route 0.0.0.0/0 via 62.168.0.13;
+# route 10.0.0.0/8 reject;
+# route 192.168.0.0/16 reject;
+}
+
+
+#protocol rip {
+# disabled;
+# import all;
+# export all;
+# export filter test_filter;
+
+# port 1520;
+# period 7;
+# infinity 16;
+# garbage time 60;
+# interface "*" { mode broadcast; };
+# honor neighbor;
+# honor always;
+# honor never;
+# authentication none;
+#}
+
+
+#protocol ospf {
+# disabled;
+# import all;
+# export all;
+# export where source = RTS_STATIC;
+
+# area 0 {
+# interface "eth*" {
+# cost 10;
+# hello 3;
+# retransmit 2;
+# wait 5;
+# dead 20;
+# type broadcast;
+# authentication simple;
+# password "pass";
+# };
+# };
+#}
+
+
+#protocol bgp {
+# disabled;
+# import all;
+# export all;
+# export where source = RTS_STATIC;
+
+# local as 65000;
+# neighbor 192.168.1.1 as 65001;
+# multihop 20 via 192.168.2.1;
+
+# hold time 240;
+# startup hold time 240;
+# connect retry time 120;
+# keepalive time 80; # defaults to hold time / 3
+# start delay time 5; # How long do we wait before initial connect
+# error wait time 60, 300;# Minimum and maximum time we wait after an error (when consecutive
+# # errors occur, we increase the delay exponentially ...
+# error forget time 300; # ... until this timeout expires)
+# disable after error; # Disable the protocol automatically when an error occurs
+# next hop self; # Disable next hop processing and always advertise our local address as nexthop
+# source address 62.168.0.14; # What local address we use for the TCP connection
+# password "secret" # Password used for MD5 authentication
+# rr client; # I am a route reflector and the neighor is my client
+# rr cluster id 1.0.0.1 # Use this value for cluster id instead of my router id
+# };
+#}
--- /dev/null
+#!/bin/sh /etc/rc.common
+# Copyright (C) 2010-2011 OpenWrt.org
+
+START=99
+STOP=10
+
+SERVICE_DAEMONIZE=1
+SERVICE_WRITE_PID=1
+
+BIRD="/usr/sbin/bird4 -c /etc/bird4.conf"
+
+start() {
+ service_start $BIRD -d
+# ( SERVICE_MATCH_NAME=1 service_start /usr/sbin/bird4loop )
+}
+
+stop() {
+# ( SERVICE_MATCH_NAME=1 service_stop /usr/sbin/bird4loop )
+ service_stop $BIRD
+}
+
+reload() {
+ service_reload $BIRD
+}
--- /dev/null
+#!/bin/sh
+
+BIRD="/usr/sbin/bird4 -c /etc/bird4.conf"
+
+$BIRD -p || return 1
+
+. /lib/functions.sh
+. /lib/functions/service.sh
+
+SERVICE_DAEMONIZE=1
+SERVICE_WRITE_PID=1
+
+sig_handler() {
+ running=0
+ service_stop $BIRD
+}
+
+running=1
+trap sig_handler INT
+trap sig_handler TERM
+while [ $running -gt 0 ]; do
+ service_check $BIRD || service_start $BIRD -d "$@"
+ sleep 3
+done
--- /dev/null
+
+# THIS CONFIG FILE IS NOT A COMPLETE DOCUMENTATION
+# PLEASE LOOK IN THE BIRD DOCUMENTATION FOR MORE INFO
+
+# However, most of options used here are just for example
+# and will be removed in real-life configs.
+
+log syslog all;
+
+# Override router ID
+#router id 192.168.0.1;
+
+# Turn on global debugging of all protocols
+#debug protocols all;
+
+
+# Define a route filter...
+# filter test_filter {
+# if net ~ 10.0.0.0/16 then accept;
+# else reject;
+# }
+
+# The direct protocol automatically generates device routes to all network
+# interfaces. Can exist in as many instances as you wish if you want to
+# populate multiple routing tables with device routes. Because device routes
+# are handled by Linux kernel, this protocol is usually not needed.
+# protocol direct {
+# interface "*"; # Restrict network interfaces it works with
+# }
+
+# This pseudo-protocol performs synchronization between BIRD's routing
+# tables and the kernel. You can run multiple instances of the kernel
+# protocol and synchronize different kernel tables with different BIRD tables.
+protocol kernel {
+# learn; # Learn all alien routes from the kernel
+# persist; # Don't remove routes on bird shutdown
+ scan time 20; # Scan kernel routing table every 20 seconds
+# import none; # Default is import all
+# export all; # Default is export none
+}
+
+# This pseudo-protocol watches all interface up/down events.
+protocol device {
+ scan time 10; # Scan interfaces every 10 seconds
+}
+
+# Static routes (again, there can be multiple instances, so that you
+# can disable/enable various groups of static routes on the fly).
+protocol static {
+# export all; # Default is export none
+# route 0.0.0.0/0 via 62.168.0.13;
+# route 10.0.0.0/8 reject;
+# route 192.168.0.0/16 reject;
+}
+
+
+#protocol rip {
+# disabled;
+# import all;
+# export all;
+# export filter test_filter;
+
+# port 1520;
+# period 7;
+# infinity 16;
+# garbage time 60;
+# interface "*" { mode broadcast; };
+# honor neighbor;
+# honor always;
+# honor never;
+# authentication none;
+#}
+
+
+#protocol ospf {
+# disabled;
+# import all;
+# export all;
+# export where source = RTS_STATIC;
+
+# area 0 {
+# interface "eth*" {
+# cost 10;
+# hello 3;
+# retransmit 2;
+# wait 5;
+# dead 20;
+# type broadcast;
+# authentication simple;
+# password "pass";
+# };
+# };
+#}
+
+
+#protocol bgp {
+# disabled;
+# import all;
+# export all;
+# export where source = RTS_STATIC;
+
+# local as 65000;
+# neighbor 192.168.1.1 as 65001;
+# multihop 20 via 192.168.2.1;
+
+# hold time 240;
+# startup hold time 240;
+# connect retry time 120;
+# keepalive time 80; # defaults to hold time / 3
+# start delay time 5; # How long do we wait before initial connect
+# error wait time 60, 300;# Minimum and maximum time we wait after an error (when consecutive
+# # errors occur, we increase the delay exponentially ...
+# error forget time 300; # ... until this timeout expires)
+# disable after error; # Disable the protocol automatically when an error occurs
+# next hop self; # Disable next hop processing and always advertise our local address as nexthop
+# source address 62.168.0.14; # What local address we use for the TCP connection
+# password "secret" # Password used for MD5 authentication
+# rr client; # I am a route reflector and the neighor is my client
+# rr cluster id 1.0.0.1 # Use this value for cluster id instead of my router id
+# };
+#}
--- /dev/null
+#!/bin/sh /etc/rc.common
+# Copyright (C) 2010-2011 OpenWrt.org
+
+START=99
+STOP=10
+
+SERVICE_DAEMONIZE=1
+SERVICE_WRITE_PID=1
+
+BIRD="/usr/sbin/bird6 -c /etc/bird6.conf"
+
+start() {
+ service_start $BIRD -d
+# ( SERVICE_MATCH_NAME=1 service_start /usr/sbin/bird6loop )
+}
+
+stop() {
+# ( SERVICE_MATCH_NAME=1 service_stop /usr/sbin/bird6loop )
+ service_stop $BIRD
+}
+
+reload() {
+ service_reload $BIRD
+}
--- /dev/null
+#!/bin/sh
+
+BIRD="/usr/sbin/bird6 -c /etc/bird6.conf"
+
+$BIRD -p || return 1
+
+. /lib/functions.sh
+. /lib/functions/service.sh
+
+SERVICE_DAEMONIZE=1
+SERVICE_WRITE_PID=1
+
+sig_handler() {
+ running=0
+ service_stop $BIRD
+}
+
+running=1
+trap sig_handler INT
+trap sig_handler TERM
+while [ $running -gt 0 ]; do
+ service_check $BIRD || service_start $BIRD -d "$@"
+ sleep 3
+done
hna6 = extensions[e].HNA6_EXTENSION;
if ( extensions[e].TUN4IN6_NET_EXTENSION )
tun4in6 = extensions[e].TUN4IN6_NET_EXTENSION;
+ tun6in6 = extensions[e].TUN6IN6_NET_EXTENSION;
}
// Gateways
else
gateways += "<li>"+tun4in6[t].network+'/'+tun4in6[t].networklen + ' | ' + tun4in6[t].bandwidth+'</li>';
}
+
+ for ( var t = 0; t < tun6in6.length; t++)
+ {
+ if ( tun6in6[t].networklen == "128" )
+ gateways += '<li><a href="http://' + tun6in6[t].network + '">' + tun6in6[t].network + '</a></li>';
+ else
+ gateways += "<li>"+tun6in6[t].network+'/'+tun6in6[t].networklen + ' | ' + tun6in6[t].bandwidth+'</li>';
+ }
+
gateways += '</ul>';
//Adding HNAs with prefix=128 as main address
include $(TOPDIR)/rules.mk
PKG_NAME:=ndppd
-PKG_VERSION:=0.2.2
-PKG_RELEASE:=2
+PKG_VERSION:=0.2.3
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
# Latest release
PKG_SOURCE_URL:=http://www.priv.nu/projects/ndppd/files/
-PKG_MD5SUM:=d90c4b65777a62274c1837dba341e5a8
+PKG_MD5SUM:=d6f3243bb7fc04c8085371c9acddc50e
# Development snapshot
#PKG_SOURCE_URL=git://github.com/Tuhox/ndppd.git
CATEGORY:=Network
TITLE:=NDP Proxy Daemon
URL:=http://www.priv.nu/projects/ndppd/
- MAINTAINER:=Gabriel Kerneis <kerneis@pps.jussieu.fr>
+ MAINTAINER:=Gabriel Kerneis <gabriel@kerneis.info>
DEPENDS:=+kmod-ipv6 $(CXX_DEPENDS)
endef
--- /dev/null
+From 00da8bf7bab88a3827af4110fb27df9cde542e32 Mon Sep 17 00:00:00 2001
+From: Daniel Adolfsson <daniel@priv.nu>
+Date: Tue, 12 Feb 2013 13:25:22 +0100
+Subject: [PATCH] =?UTF-8?q?Fix=20issue=20#2=20-=20ndppd=20d=C3=A6monizes=20t?=
+ =?UTF-8?q?oo=20early?=
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+---
+ src/ndppd.cc | 18 ++++++++----------
+ 1 file changed, 8 insertions(+), 10 deletions(-)
+
+diff --git a/src/ndppd.cc b/src/ndppd.cc
+index 6ac19e8..20ced6f 100644
+--- a/src/ndppd.cc
++++ b/src/ndppd.cc
+@@ -201,15 +201,6 @@ int main(int argc, char* argv[], char* env[])
+ }
+ }
+
+- if (daemon) {
+- logger::syslog(true);
+-
+- if (daemonize() < 0) {
+- logger::error() << "Failed to daemonize process";
+- return 1;
+- }
+- }
+-
+ if (!pidfile.empty()) {
+ std::ofstream pf;
+ pf.open(pidfile.c_str(), std::ios::out | std::ios::trunc);
+@@ -225,8 +216,15 @@ int main(int argc, char* argv[], char* env[])
+
+ if (!configure(config_path))
+ return -1;
++
++ if (daemon) {
++ logger::syslog(true);
+
+- //route::load("/proc/net/ipv6_route");
++ if (daemonize() < 0) {
++ logger::error() << "Failed to daemonize process";
++ return 1;
++ }
++ }
+
+ // Time stuff.
+
+--
+1.7.10.4
+
PKG_NAME:=olsrd
PKG_VERSION:=0.6.6
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=http://www.olsr.org/releases/0.6
$(INSTALL_BIN) $(PKG_BUILD_DIR)/olsrd $(1)/usr/sbin/
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) ./files/olsrd.init $(1)/etc/init.d/olsrd
+ $(INSTALL_DIR) $(1)/etc/hotplug.d/iface
+ $(INSTALL_BIN) ./files/olsrd.hotplug.sh $(1)/etc/hotplug.d/iface/50-olsrd
endef
define Package/olsrd-mod-arprefresh/install
--- /dev/null
+#!/bin/sh
+
+olsrd_list_configured_interfaces()
+{
+ local i=0
+ local interface
+
+ while interface="$( uci -q get olsrd.@Interface[$i].interface )"; do {
+ case "$( uci -q get olsrd.@Interface[$i].ignore )" in
+ 1|on|true|enabled|yes)
+ # is disabled
+ ;;
+ *)
+ echo "$interface"
+ ;;
+ esac
+
+ i=$(( $i + 1 ))
+ } done
+}
+
+olsrd_interface_needs_adding()
+{
+ local interface="$1" # e.g. wlanadhocRADIO1
+ local device="$2" # e.g. wlan1-1
+ local myif
+ local config="/var/etc/olsrd.conf"
+
+ for myif in $(olsrd_list_configured_interfaces); do {
+ [ "$myif" = "$interface" ] && {
+ if grep -s ^'Interface ' "$config" | grep -q "\"$device\""; then
+ logger -t olsrd_hotplug -p daemon.debug "[OK] already_active: $INTERFACE => $DEVICE"
+ return 1
+ else
+ logger -t olsrd_hotplug -p daemon.info "[OK] ifup: $INTERFACE => $DEVICE"
+ return 0
+ fi
+ }
+ } done
+
+ logger -t olsrd_hotplug -p daemon.debug "[OK] interface $INTERFACE not used for olsrd"
+ return 1
+}
+
+case "$ACTION" in
+ ifup)
+ # only work after the first normal startup
+ # also: no need to test, if enabled
+ [ -e '/var/etc/olsrd.conf' ] && {
+ olsrd_interface_needs_adding "$INTERFACE" "$DEVICE" && {
+ . /etc/rc.common /etc/init.d/olsrd restart
+ }
+ }
+ ;;
+esac
OLSRD_OLSRD_SCHEMA='ignore:internal config_file:internal DebugLevel=0 AllowNoInt=yes'
OLSRD_IPCCONNECT_SCHEMA='ignore:internal Host:list Net:list2'
OLSRD_LOADPLUGIN_SCHEMA='ignore:internal library:internal Host4:list Net4:list2 Host:list Net:list2 Host6:list Net6:list2 Ping:list redistribute:list NonOlsrIf:list name:list lat lon latlon_infile HNA:list2 hosts:list2'
-OLSRD_INTERFACE_SCHEMA='ignore:internal interface:internal AutoDetectChanges:bool'
+OLSRD_INTERFACE_SCHEMA='ignore:internal interface:internal AutoDetectChanges:bool LinkQualityMult:list2'
OLSRD_INTERFACE_DEFAULTS_SCHEMA='AutoDetectChanges:bool'
T=' '