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 >/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 >/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);
+ }
+ 
+ /*
