diff -uprN packages-/net/bird/Makefile packages/net/bird/Makefile --- packages-/net/bird/Makefile 1970-01-01 01:00:00.000000000 +0100 +++ packages/net/bird/Makefile 2009-11-14 13:05:35.000000000 +0100 @@ -0,0 +1,148 @@ +# +# Copyright (C) 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:=bird +PKG_VERSION:=1.1.5 +PKG_RELEASE:=1 + +PKG_SOURCE:=bird-$(PKG_VERSION).tar.gz +PKG_SOURCE_URL:=ftp://bird.network.cz/pub/bird +PKG_MD5SUM:=87e005d258198d9ee4e4481164bf8c18 +PKG_BUILD_DEPENDS:=libncurses libreadline + +include $(INCLUDE_DIR)/package.mk + +define Package/bird/Default + SECTION:=net + CATEGORY:=Network + TITLE:=The BIRD Internet Routing Daemon + URL:=http://bird.network.cz/ +endef + +define Package/birdc/Default + SECTION:=net + CATEGORY:=Network + 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. + +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 +routing table filtered by 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) + TITLE+= (IPv4) +endef + +define Package/birdc4 +$(call Package/birdc/Default) + TITLE+= (IPv4) + DEPENDS+= +bird4 +endef + +define Package/bird6 +$(call Package/bird/Default) + TITLE+= (IPv6) +endef + +define Package/birdc6 +$(call Package/birdc/Default) + 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 RIPng and BGP protocols. +Sorry, OSPFv3 is not yet supported. + +$(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/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)) diff -uprN packages-/net/bird/files/bird4.conf packages/net/bird/files/bird4.conf --- packages-/net/bird/files/bird4.conf 1970-01-01 01:00:00.000000000 +0100 +++ packages/net/bird/files/bird4.conf 2009-11-14 12:55:39.000000000 +0100 @@ -0,0 +1,120 @@ + +# 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. +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 +# }; +#} diff -uprN packages-/net/bird/files/bird4.init packages/net/bird/files/bird4.init --- packages-/net/bird/files/bird4.init 1970-01-01 01:00:00.000000000 +0100 +++ packages/net/bird/files/bird4.init 2009-11-14 11:50:24.000000000 +0100 @@ -0,0 +1,22 @@ +#!/bin/sh /etc/rc.common + +START=50 + +# Birdloop is used to restart BIRD if it crashed. Unfortunately, it also +# hides and handles in the same manner start-time errors (like parse error +# in config file). Therefore, it is not used by default. If you want to +# use it, comment the first line and uncomment the second line in start(). + +start() { + /usr/sbin/bird4 +# /usr/sbin/bird4loop +} + +stop() { + killall bird4 + sleep 1 +} + +reload() { + killall -HUP bird4 +} diff -uprN packages-/net/bird/files/bird4loop packages/net/bird/files/bird4loop --- packages-/net/bird/files/bird4loop 1970-01-01 01:00:00.000000000 +0100 +++ packages/net/bird/files/bird4loop 2009-11-14 12:17:05.000000000 +0100 @@ -0,0 +1,10 @@ +#!/bin/sh + +BIRD=/usr/sbin/bird4 + +( until $BIRD -d "$@" +do + logger error BIRD4 died! + sleep 2 +done; ) /dev/null 2> /dev/null & + diff -uprN packages-/net/bird/files/bird6.conf packages/net/bird/files/bird6.conf --- packages-/net/bird/files/bird6.conf 1970-01-01 01:00:00.000000000 +0100 +++ packages/net/bird/files/bird6.conf 2009-11-14 12:55:33.000000000 +0100 @@ -0,0 +1,99 @@ + +# 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. +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 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 +# }; +#} diff -uprN packages-/net/bird/files/bird6.init packages/net/bird/files/bird6.init --- packages-/net/bird/files/bird6.init 1970-01-01 01:00:00.000000000 +0100 +++ packages/net/bird/files/bird6.init 2009-11-14 12:16:48.000000000 +0100 @@ -0,0 +1,22 @@ +#!/bin/sh /etc/rc.common + +START=50 + +# Birdloop is used to restart BIRD if it crashed. Unfortunately, it also +# hides and handles in the same manner start-time errors (like parse error +# in config file). Therefore, it is not used by default. If you want to +# use it, comment the first line and uncomment the second line in start(). + +start() { + /usr/sbin/bird6 +# /usr/sbin/bird6loop +} + +stop() { + killall bird6 + sleep 1 +} + +reload() { + killall -HUP bird6 +} diff -uprN packages-/net/bird/files/bird6loop packages/net/bird/files/bird6loop --- packages-/net/bird/files/bird6loop 1970-01-01 01:00:00.000000000 +0100 +++ packages/net/bird/files/bird6loop 2009-11-14 12:17:13.000000000 +0100 @@ -0,0 +1,10 @@ +#!/bin/sh + +BIRD=/usr/sbin/bird6 + +( until $BIRD -d "$@" +do + logger error BIRD6 died! + sleep 2 +done; ) /dev/null 2> /dev/null & + diff -uprN packages-/net/bird/patches/0001-change_config_name.patch packages/net/bird/patches/0001-change_config_name.patch --- packages-/net/bird/patches/0001-change_config_name.patch 1970-01-01 01:00:00.000000000 +0100 +++ packages/net/bird/patches/0001-change_config_name.patch 2009-11-14 13:22:43.000000000 +0100 @@ -0,0 +1,20 @@ +diff --git a/sysdep/config.h b/sysdep/config.h +index 03399bd..bc5eb77 100644 +--- a/sysdep/config.h ++++ b/sysdep/config.h +@@ -46,11 +46,11 @@ typedef u16 word; + # endif + #else + # ifdef DEBUGGING +-# define PATH_CONFIG "bird.conf" +-# define PATH_CONTROL_SOCKET "bird.ctl" ++# define PATH_CONFIG "bird4.conf" ++# define PATH_CONTROL_SOCKET "bird4.ctl" + # else +-# define PATH_CONFIG PATH_CONFIG_DIR "/bird.conf" +-# define PATH_CONTROL_SOCKET PATH_CONTROL_SOCKET_DIR "/bird.ctl" ++# define PATH_CONFIG PATH_CONFIG_DIR "/bird4.conf" ++# define PATH_CONTROL_SOCKET PATH_CONTROL_SOCKET_DIR "/bird4.ctl" + # endif + #endif + diff -uprN packages-/net/bird/patches/0002-fix_unlink.patch packages/net/bird/patches/0002-fix_unlink.patch --- packages-/net/bird/patches/0002-fix_unlink.patch 1970-01-01 01:00:00.000000000 +0100 +++ packages/net/bird/patches/0002-fix_unlink.patch 2009-11-14 13:22:43.000000000 +0100 @@ -0,0 +1,13 @@ +diff --git a/sysdep/unix/main.c b/sysdep/unix/main.c +index 17845d2..75944c5 100644 +--- a/sysdep/unix/main.c ++++ b/sysdep/unix/main.c +@@ -313,7 +313,7 @@ async_shutdown(void) + void + sysdep_shutdown_done(void) + { +- unlink(PATH_CONTROL_SOCKET); ++ unlink(path_control_socket); + die("System shutdown completed"); + } + diff -uprN packages-/net/bird/patches/0003-fix_exit_code.patch packages/net/bird/patches/0003-fix_exit_code.patch --- packages-/net/bird/patches/0003-fix_exit_code.patch 1970-01-01 01:00:00.000000000 +0100 +++ packages/net/bird/patches/0003-fix_exit_code.patch 2009-11-14 13:22:43.000000000 +0100 @@ -0,0 +1,14 @@ +diff --git a/sysdep/unix/main.c b/sysdep/unix/main.c +index 75944c5..5e4aa97 100644 +--- a/sysdep/unix/main.c ++++ b/sysdep/unix/main.c +@@ -314,7 +314,8 @@ void + sysdep_shutdown_done(void) + { + unlink(path_control_socket); +- die("System shutdown completed"); ++ log_msg(L_FATAL "System shutdown completed"); ++ exit(0); + } + + /*