Index: utils/tar/Makefile
===================================================================
--- utils/tar/Makefile	(revision 31224)
+++ utils/tar/Makefile	(working copy)
@@ -37,13 +37,15 @@
 if [ -e $${IPKG_INSTROOT}/bin/tar ]; then
   rm -r $${IPKG_INSTROOT}/bin/tar;
 fi
-ln -sf $${IPKG_INSTROOT}/usr/bin/tar $${IPKG_INSTROOT}/bin/tar
+#&&&ln -sf $${IPKG_INSTROOT}/usr/bin/tar $${IPKG_INSTROOT}/bin/tar
+(cd $${IPKG_INSTROOT}/bin; ln -sf ../usr/bin/tar ./tar)
 endef
 
 define Package/tar/postrm
 #!/bin/sh
 rm $${IPKG_INSTROOT}/bin/tar
-ln -s busybox $${IPKG_INSTROOT}/bin/tar
+#&&&ln -s busybox $${IPKG_INSTROOT}/bin/tar
+(cd $${IPKG_INSTROOT}/bin; ln -s busybox ./tar)
 $${IPKG_INSTROOT}/bin/tar 2>&1 | grep 'applet not found' > /dev/null 2>&1 && rm $${IPKG_INSTROOT}/bin/tar
 exit 0
 endef
Index: lang/php4/files/php.ini
===================================================================
--- lang/php4/files/php.ini	(revision 31224)
+++ lang/php4/files/php.ini	(working copy)
@@ -275,6 +275,7 @@
 ; turn it off here AT YOUR OWN RISK
 ; **You CAN safely turn this off for IIS, in fact, you MUST.**
 ; cgi.force_redirect = 1
+cgi.force_redirect = 0
 
 ; if cgi.nph is enabled it will force cgi to always sent Status: 200 with
 ; every request.
Index: net/net-snmp/files/snmpd.init
===================================================================
--- net/net-snmp/files/snmpd.init	(revision 31224)
+++ net/net-snmp/files/snmpd.init	(working copy)
@@ -117,6 +117,10 @@
 
 	config_load snmpd
 
+	#hb9xar: enable AgentX interface
+	mkdir -p /var/agentx/
+	echo "master agentx" >> $RUN_C
+
 	config_foreach snmpd_agent_add agent
 	config_foreach snmpd_system_add system
 	config_foreach snmpd_com2sec_add com2sec
Index: net/net-snmp/files/snmpd.conf
===================================================================
--- net/net-snmp/files/snmpd.conf	(revision 31224)
+++ net/net-snmp/files/snmpd.conf	(working copy)
@@ -67,11 +67,12 @@
 	option notify all
 
 config system
-	option sysLocation	'office'
+	option sysLocation	'Please put 10digit locator here'
 	option sysContact	'bofh@example.com'
 	option sysName		'HeartOfGold'
 #	option sysServices	72
 #	option sysDescr		'adult playground'
+	option sysDescr		'ALIX 4 HAMNET Node'
 #	option sysObjectID	'1.2.3.4'
 
 config exec
Index: net/net-snmp/Makefile
===================================================================
--- net/net-snmp/Makefile	(revision 31224)
+++ net/net-snmp/Makefile	(working copy)
@@ -9,7 +9,7 @@
 
 PKG_NAME:=net-snmp
 PKG_VERSION:=5.4.2.1
-PKG_RELEASE:=5
+PKG_RELEASE:=5xar
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=@SF/net-snmp
@@ -126,10 +126,10 @@
 	ucd-snmp/vmstat \
 	util_funcs \
 	utilities/execute \
+	agentx \
 
 SNMP_MIB_MODULES_EXCLUDED = \
 	agent_mibs \
-	agentx \
 	disman/event \
 	disman/schedule \
 	hardware \
@@ -145,9 +145,9 @@
 	udp-mib \
 	utilities \
 
-SNMP_TRANSPORTS_INCLUDED = Callback UDP
+SNMP_TRANSPORTS_INCLUDED = Callback UDP Unix
 
-SNMP_TRANSPORTS_EXCLUDED = TCP TCPIPv6 Unix
+SNMP_TRANSPORTS_EXCLUDED = TCP TCPIPv6
 
 TARGET_CFLAGS += $(FPIC)
 
@@ -157,7 +157,7 @@
 	--enable-static \
 	--with-endianness=little \
 	--with-logfile=/var/log/snmpd.log \
-	--with-persistent-directory=/usr/lib/snmp/ \
+	--with-persistent-directory=/var/lib/snmp/ \
 	--with-default-snmp-version=1 \
 	--with-sys-contact=root@localhost \
 	--with-sys-location=Unknown \
Index: net/quagga/patches/900-r9917-9918-revert-maxage_remove_delay.patch
===================================================================
--- net/quagga/patches/900-r9917-9918-revert-maxage_remove_delay.patch	(revision 0)
+++ net/quagga/patches/900-r9917-9918-revert-maxage_remove_delay.patch	(revision 0)
@@ -0,0 +1,11 @@
+--- quagga-0.99.18/ospfd/ospfd.h.orig	2013-05-30 07:16:21.000000000 +0200
++++ quagga-0.99.18/ospfd/ospfd.h	2013-05-30 07:19:43.000000000 +0200
+@@ -261,7 +261,7 @@
+   struct thread *t_opaque_lsa_self;	/* Type-11 Opaque-LSAs origin event. */
+ #endif /* HAVE_OPAQUE_LSA */
+ 
+-#define OSFP_LSA_MAXAGE_REMOVE_DELAY_DEFAULT	60
++#define OSFP_LSA_MAXAGE_REMOVE_DELAY_DEFAULT	2
+   unsigned int maxage_delay;		/* Delay on Maxage remover timer, sec */
+   struct thread *t_maxage;              /* MaxAge LSA remover timer. */
+ #define OSPF_LSA_MAXAGE_CHECK_INTERVAL		30
Index: net/quagga/patches-0.99.17/001-fix_ipctl_forwarding.patch
===================================================================
--- net/quagga/patches-0.99.17/001-fix_ipctl_forwarding.patch	(revision 0)
+++ net/quagga/patches-0.99.17/001-fix_ipctl_forwarding.patch	(revision 0)
@@ -0,0 +1,27 @@
+Add definitions for IPCTL_FORWARDING and IP6CTL_FORWARDING.
+
+Inspired from
+http://svn.gnumonks.org/trunk/grouter/build/src/quagga/quagga/quagga-0.99.1-forward_sysctl-2.6.14.patch
+
+Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+
+Index: quagga-0.99.16/zebra/ipforward_sysctl.c
+===================================================================
+--- quagga-0.99.16.orig/zebra/ipforward_sysctl.c 2010-06-20 23:40:45.000000000 +0200
++++ quagga-0.99.16/zebra/ipforward_sysctl.c 2010-06-20 23:41:37.000000000 +0200
+@@ -31,6 +31,15 @@
+
+ #define MIB_SIZ 4
+
++/* Fix for recent (2.6.14) kernel headers */
++#ifndef IPCTL_FORWARDING
++#define IPCTL_FORWARDING NET_IPV4_FORWARD
++#endif
++
++#ifndef IP6CTL_FORWARDING
++#define IP6CTL_FORWARDING NET_IPV6_FORWARDING
++#endif
++
+ extern struct zebra_privs_t zserv_privs;
+
+ /* IPv4 forwarding control MIB. */
Index: net/quagga/patches-0.99.17/140-holdtimer-set.patch
===================================================================
--- net/quagga/patches-0.99.17/140-holdtimer-set.patch	(revision 0)
+++ net/quagga/patches-0.99.17/140-holdtimer-set.patch	(revision 0)
@@ -0,0 +1,22 @@
+--- a/bgpd/bgp_network.c
++++ b/bgpd/bgp_network.c
+@@ -188,8 +188,7 @@ bgp_accept (struct thread *thread)
+     peer->fd = bgp_sock;
+     peer->status = Active;
+     peer->local_id = peer1->local_id;
+-    peer->v_holdtime = peer1->v_holdtime;
+-    peer->v_keepalive = peer1->v_keepalive;
++    peer->v_holdtime = BGP_LARGE_HOLDTIME;
+ 
+     /* Make peer's address string. */
+     sockunion2str (&su, buf, SU_ADDRSTRLEN);
+--- a/bgpd/bgpd.h
++++ b/bgpd/bgpd.h
+@@ -709,6 +709,7 @@ struct bgp_nlri
+ /* BGP timers default value.  */
+ #define BGP_INIT_START_TIMER                     5
+ #define BGP_ERROR_START_TIMER                   30
++#define BGP_LARGE_HOLDTIME                     240
+ #define BGP_DEFAULT_HOLDTIME                   180
+ #define BGP_DEFAULT_KEEPALIVE                   60 
+ #define BGP_DEFAULT_ASORIGINATE                 15
Index: net/quagga/patches-0.99.17/010-fix_cpp.patch
===================================================================
--- net/quagga/patches-0.99.17/010-fix_cpp.patch	(revision 0)
+++ net/quagga/patches-0.99.17/010-fix_cpp.patch	(revision 0)
@@ -0,0 +1,11 @@
+--- a/vtysh/extract.pl.in
++++ b/vtysh/extract.pl.in
+@@ -62,7 +62,7 @@ $ignore{'"show history"'} = "ignore";
+ foreach (@ARGV) {
+     $file = $_;
+ 
+-    open (FH, "cpp -DHAVE_CONFIG_H -DVTYSH_EXTRACT_PL -DHAVE_IPV6 -I@top_builddir@ -I@srcdir@/ -I@srcdir@/.. -I@top_srcdir@/lib -I@top_srcdir@/isisd/topology @SNMP_INCLUDES@ $file |");
++    open (FH, "@CPP@ @CPPFLAGS@ -DHAVE_CONFIG_H -DVTYSH_EXTRACT_PL -DHAVE_IPV6 -I@top_builddir@ -I@srcdir@/ -I@srcdir@/.. -I@top_srcdir@/lib -I@top_srcdir@/isisd/topology @SNMP_INCLUDES@ $file |");
+     local $/; undef $/;
+     $line = <FH>;
+     close (FH);
Index: net/quagga/patches-0.99.17/150-no-cross-fs-link.patch
===================================================================
--- net/quagga/patches-0.99.17/150-no-cross-fs-link.patch	(revision 0)
+++ net/quagga/patches-0.99.17/150-no-cross-fs-link.patch	(revision 0)
@@ -0,0 +1,40 @@
+--- a/lib/command.c
++++ b/lib/command.c
+@@ -2601,6 +2601,13 @@ DEFUN (config_write_file,
+ 		 VTY_NEWLINE);
+         goto finished;
+       }
++
++#if 0
++  /* This code fails on UNION MOUNTs and similar filesystems if the
++   * config file is still on the RO layer. Hardlinks across layers
++   * will not work and cause quagga to fail saving the configuration...
++   * should use rename() to move files around...
++   */
+   if (link (config_file, config_file_sav) != 0)
+     {
+       vty_out (vty, "Can't backup old configuration file %s.%s", config_file_sav,
+@@ -2614,7 +2621,23 @@ DEFUN (config_write_file,
+ 	        VTY_NEWLINE);
+       goto finished;
+     }
++#else
++  /* And this is the code that hopefully does work */
++  if (rename (config_file, config_file_sav) != 0)
++    {
++      vty_out (vty, "Can't backup old configuration file %s.%s", config_file_sav,
++	        VTY_NEWLINE);
++      goto finished;
++    }
++  sync ();
++#endif
++
++#if 0
++  /* same here. Please no cross-filesystem hardlinks... */
+   if (link (config_file_tmp, config_file) != 0)
++#else
++  if (rename (config_file_tmp, config_file) != 0)
++#endif
+     {
+       vty_out (vty, "Can't save configuration file %s.%s", config_file,
+ 	       VTY_NEWLINE);
Index: net/quagga/patches-0.99.17/002-quagga_manet.patch
===================================================================
--- net/quagga/patches-0.99.17/002-quagga_manet.patch	(revision 0)
+++ net/quagga/patches-0.99.17/002-quagga_manet.patch	(revision 0)
@@ -0,0 +1,845 @@
+--- a/bgpd/bgp_vty.c
++++ b/bgpd/bgp_vty.c
+@@ -8228,8 +8228,14 @@ bgp_str2route_type (int afi, const char
+ 	return ZEBRA_ROUTE_STATIC;
+       else if (strncmp (str, "r", 1) == 0)
+ 	return ZEBRA_ROUTE_RIP;
+-      else if (strncmp (str, "o", 1) == 0)
++      else if (strncmp (str, "os", 2) == 0)
+ 	return ZEBRA_ROUTE_OSPF;
++      else if (strncmp (str, "h", 1) == 0)
++	return ZEBRA_ROUTE_HSLS;
++      else if (strncmp (str, "ol", 2) == 0)
++	return ZEBRA_ROUTE_OLSR;
++      else if (strncmp (str, "b", 1) == 0)
++	return ZEBRA_ROUTE_BATMAN;
+     }
+   if (afi == AFI_IP6)
+     {
+@@ -8241,21 +8247,30 @@ bgp_str2route_type (int afi, const char
+ 	return ZEBRA_ROUTE_STATIC;
+       else if (strncmp (str, "r", 1) == 0)
+ 	return ZEBRA_ROUTE_RIPNG;
+-      else if (strncmp (str, "o", 1) == 0)
++      else if (strncmp (str, "os", 2) == 0)
+ 	return ZEBRA_ROUTE_OSPF6;
++      else if (strncmp (str, "h", 1) == 0)
++	return ZEBRA_ROUTE_HSLS;
++      else if (strncmp (str, "ol", 2) == 0)
++	return ZEBRA_ROUTE_OLSR;
++      else if (strncmp (str, "b", 1) == 0)
++	return ZEBRA_ROUTE_BATMAN;
+     }
+   return 0;
+ }
+ 
+ DEFUN (bgp_redistribute_ipv4,
+        bgp_redistribute_ipv4_cmd,
+-       "redistribute (connected|kernel|ospf|rip|static)",
++       "redistribute (connected|kernel|ospf|rip|static|hsls|olsr|batman)",
+        "Redistribute information from another routing protocol\n"
+        "Connected\n"
+        "Kernel routes\n"
+        "Open Shurtest Path First (OSPF)\n"
+        "Routing Information Protocol (RIP)\n"
+-       "Static routes\n")
++       "Static routes\n"
++       "Hazy-Sighted Link State Protocol (HSLS)\n"
++       "Optimized Link State Routing (OLSR)\n"
++       "Better Approach to Mobile Ad-Hoc Networking (BATMAN)\n")
+ {
+   int type;
+ 
+@@ -8270,13 +8285,16 @@ DEFUN (bgp_redistribute_ipv4,
+ 
+ DEFUN (bgp_redistribute_ipv4_rmap,
+        bgp_redistribute_ipv4_rmap_cmd,
+-       "redistribute (connected|kernel|ospf|rip|static) route-map WORD",
++       "redistribute (connected|kernel|ospf|rip|static|hsls|olsr|batman) route-map WORD",
+        "Redistribute information from another routing protocol\n"
+        "Connected\n"
+        "Kernel routes\n"
+        "Open Shurtest Path First (OSPF)\n"
+        "Routing Information Protocol (RIP)\n"
+        "Static routes\n"
++       "Hazy-Sighted Link State Protocol (HSLS)\n"
++       "Optimized Link State Routing (OLSR)\n"
++       "Better Approach to Mobile Ad-Hoc Networking (BATMAN)\n"
+        "Route map reference\n"
+        "Pointer to route-map entries\n")
+ {
+@@ -8295,13 +8313,16 @@ DEFUN (bgp_redistribute_ipv4_rmap,
+ 
+ DEFUN (bgp_redistribute_ipv4_metric,
+        bgp_redistribute_ipv4_metric_cmd,
+-       "redistribute (connected|kernel|ospf|rip|static) metric <0-4294967295>",
++       "redistribute (connected|kernel|ospf|rip|static|hsls|olsr|batman) metric <0-4294967295>",
+        "Redistribute information from another routing protocol\n"
+        "Connected\n"
+        "Kernel routes\n"
+        "Open Shurtest Path First (OSPF)\n"
+        "Routing Information Protocol (RIP)\n"
+        "Static routes\n"
++       "Hazy-Sighted Link State Protocol (HSLS)\n"
++       "Optimized Link State Routing (OLSR)\n"
++       "Better Approach to Mobile Ad-Hoc Networking (BATMAN)\n"
+        "Metric for redistributed routes\n"
+        "Default metric\n")
+ {
+@@ -8322,13 +8343,16 @@ DEFUN (bgp_redistribute_ipv4_metric,
+ 
+ DEFUN (bgp_redistribute_ipv4_rmap_metric,
+        bgp_redistribute_ipv4_rmap_metric_cmd,
+-       "redistribute (connected|kernel|ospf|rip|static) route-map WORD metric <0-4294967295>",
++       "redistribute (connected|kernel|ospf|rip|static|hsls|olsr|batman) route-map WORD metric <0-4294967295>",
+        "Redistribute information from another routing protocol\n"
+        "Connected\n"
+        "Kernel routes\n"
+        "Open Shurtest Path First (OSPF)\n"
+        "Routing Information Protocol (RIP)\n"
+        "Static routes\n"
++       "Hazy-Sighted Link State Protocol (HSLS)\n"
++       "Optimized Link State Routing (OLSR)\n"
++       "Better Approach to Mobile Ad-Hoc Networking (BATMAN)\n"
+        "Route map reference\n"
+        "Pointer to route-map entries\n"
+        "Metric for redistributed routes\n"
+@@ -8352,13 +8376,16 @@ DEFUN (bgp_redistribute_ipv4_rmap_metric
+ 
+ DEFUN (bgp_redistribute_ipv4_metric_rmap,
+        bgp_redistribute_ipv4_metric_rmap_cmd,
+-       "redistribute (connected|kernel|ospf|rip|static) metric <0-4294967295> route-map WORD",
++       "redistribute (connected|kernel|ospf|rip|static|hsls|olsr|batman) metric <0-4294967295> route-map WORD",
+        "Redistribute information from another routing protocol\n"
+        "Connected\n"
+        "Kernel routes\n"
+        "Open Shurtest Path First (OSPF)\n"
+        "Routing Information Protocol (RIP)\n"
+        "Static routes\n"
++       "Hazy-Sighted Link State Protocol (HSLS)\n"
++       "Optimized Link State Routing (OLSR)\n"
++       "Better Approach to Mobile Ad-Hoc Networking (BATMAN)\n"
+        "Metric for redistributed routes\n"
+        "Default metric\n"
+        "Route map reference\n"
+@@ -8382,14 +8409,17 @@ DEFUN (bgp_redistribute_ipv4_metric_rmap
+ 
+ DEFUN (no_bgp_redistribute_ipv4,
+        no_bgp_redistribute_ipv4_cmd,
+-       "no redistribute (connected|kernel|ospf|rip|static)",
++       "no redistribute (connected|kernel|ospf|rip|static|hsls|olsr|batman)",
+        NO_STR
+        "Redistribute information from another routing protocol\n"
+        "Connected\n"
+        "Kernel routes\n"
+        "Open Shurtest Path First (OSPF)\n"
+        "Routing Information Protocol (RIP)\n"
+-       "Static routes\n")
++       "Static routes\n"
++       "Hazy-Sighted Link State Protocol (HSLS)\n"
++       "Optimized Link State Routing (OLSR)\n"
++       "Better Approach to Mobile Ad-Hoc Networking (BATMAN)\n")
+ {
+   int type;
+ 
+@@ -8405,7 +8435,7 @@ DEFUN (no_bgp_redistribute_ipv4,
+ 
+ DEFUN (no_bgp_redistribute_ipv4_rmap,
+        no_bgp_redistribute_ipv4_rmap_cmd,
+-       "no redistribute (connected|kernel|ospf|rip|static) route-map WORD",
++       "no redistribute (connected|kernel|ospf|rip|static|hsls|olsr|batman) route-map WORD",
+        NO_STR
+        "Redistribute information from another routing protocol\n"
+        "Connected\n"
+@@ -8413,6 +8443,9 @@ DEFUN (no_bgp_redistribute_ipv4_rmap,
+        "Open Shurtest Path First (OSPF)\n"
+        "Routing Information Protocol (RIP)\n"
+        "Static routes\n"
++       "Hazy-Sighted Link State Protocol (HSLS)\n"
++       "Optimized Link State Routing (OLSR)\n"
++       "Better Approach to Mobile Ad-Hoc Networking (BATMAN)\n"
+        "Route map reference\n"
+        "Pointer to route-map entries\n")
+ {
+@@ -8431,7 +8464,7 @@ DEFUN (no_bgp_redistribute_ipv4_rmap,
+ 
+ DEFUN (no_bgp_redistribute_ipv4_metric,
+        no_bgp_redistribute_ipv4_metric_cmd,
+-       "no redistribute (connected|kernel|ospf|rip|static) metric <0-4294967295>",
++       "no redistribute (connected|kernel|ospf|rip|static|hsls|olsr|batman) metric <0-4294967295>",
+        NO_STR
+        "Redistribute information from another routing protocol\n"
+        "Connected\n"
+@@ -8439,6 +8472,9 @@ DEFUN (no_bgp_redistribute_ipv4_metric,
+        "Open Shurtest Path First (OSPF)\n"
+        "Routing Information Protocol (RIP)\n"
+        "Static routes\n"
++       "Hazy-Sighted Link State Protocol (HSLS)\n"
++       "Optimized Link State Routing (OLSR)\n"
++       "Better Approach to Mobile Ad-Hoc Networking (BATMAN)\n"
+        "Metric for redistributed routes\n"
+        "Default metric\n")
+ {
+@@ -8457,7 +8493,7 @@ DEFUN (no_bgp_redistribute_ipv4_metric,
+ 
+ DEFUN (no_bgp_redistribute_ipv4_rmap_metric,
+        no_bgp_redistribute_ipv4_rmap_metric_cmd,
+-       "no redistribute (connected|kernel|ospf|rip|static) route-map WORD metric <0-4294967295>",
++       "no redistribute (connected|kernel|ospf|rip|static|hsls|olsr|batman) route-map WORD metric <0-4294967295>",
+        NO_STR
+        "Redistribute information from another routing protocol\n"
+        "Connected\n"
+@@ -8465,6 +8501,9 @@ DEFUN (no_bgp_redistribute_ipv4_rmap_met
+        "Open Shurtest Path First (OSPF)\n"
+        "Routing Information Protocol (RIP)\n"
+        "Static routes\n"
++       "Hazy-Sighted Link State Protocol (HSLS)\n"
++       "Optimized Link State Routing (OLSR)\n"
++       "Better Approach to Mobile Ad-Hoc Networking (BATMAN)\n"
+        "Route map reference\n"
+        "Pointer to route-map entries\n"
+        "Metric for redistributed routes\n"
+@@ -8486,7 +8525,7 @@ DEFUN (no_bgp_redistribute_ipv4_rmap_met
+ 
+ ALIAS (no_bgp_redistribute_ipv4_rmap_metric,
+        no_bgp_redistribute_ipv4_metric_rmap_cmd,
+-       "no redistribute (connected|kernel|ospf|rip|static) metric <0-4294967295> route-map WORD",
++       "no redistribute (connected|kernel|ospf|rip|static|hsls|olsr|batman) metric <0-4294967295> route-map WORD",
+        NO_STR
+        "Redistribute information from another routing protocol\n"
+        "Connected\n"
+@@ -8494,6 +8533,9 @@ ALIAS (no_bgp_redistribute_ipv4_rmap_met
+        "Open Shurtest Path First (OSPF)\n"
+        "Routing Information Protocol (RIP)\n"
+        "Static routes\n"
++       "Hazy-Sighted Link State Protocol (HSLS)\n"
++       "Optimized Link State Routing (OLSR)\n"
++       "Better Approach to Mobile Ad-Hoc Networking (BATMAN)\n"
+        "Metric for redistributed routes\n"
+        "Default metric\n"
+        "Route map reference\n"
+@@ -8502,13 +8544,16 @@ ALIAS (no_bgp_redistribute_ipv4_rmap_met
+ #ifdef HAVE_IPV6
+ DEFUN (bgp_redistribute_ipv6,
+        bgp_redistribute_ipv6_cmd,
+-       "redistribute (connected|kernel|ospf6|ripng|static)",
++       "redistribute (connected|kernel|ospf6|ripng|static|hsls|olsr|batman)",
+        "Redistribute information from another routing protocol\n"
+        "Connected\n"
+        "Kernel routes\n"
+        "Open Shurtest Path First (OSPFv3)\n"
+        "Routing Information Protocol (RIPng)\n"
+-       "Static routes\n")
++       "Static routes\n"
++       "Hazy-Sighted Link State Protocol (HSLS)\n"
++       "Optimized Link State Routing (OLSR)\n"
++       "Better Approach to Mobile Ad-Hoc Networking (BATMAN)\n")
+ {
+   int type;
+ 
+@@ -8524,13 +8569,16 @@ DEFUN (bgp_redistribute_ipv6,
+ 
+ DEFUN (bgp_redistribute_ipv6_rmap,
+        bgp_redistribute_ipv6_rmap_cmd,
+-       "redistribute (connected|kernel|ospf6|ripng|static) route-map WORD",
++       "redistribute (connected|kernel|ospf6|ripng|static|hsls|olsr|batman) route-map WORD",
+        "Redistribute information from another routing protocol\n"
+        "Connected\n"
+        "Kernel routes\n"
+        "Open Shurtest Path First (OSPFv3)\n"
+        "Routing Information Protocol (RIPng)\n"
+        "Static routes\n"
++       "Hazy-Sighted Link State Protocol (HSLS)\n"
++       "Optimized Link State Routing (OLSR)\n"
++       "Better Approach to Mobile Ad-Hoc Networking (BATMAN)\n"
+        "Route map reference\n"
+        "Pointer to route-map entries\n")
+ {
+@@ -8549,13 +8597,16 @@ DEFUN (bgp_redistribute_ipv6_rmap,
+ 
+ DEFUN (bgp_redistribute_ipv6_metric,
+        bgp_redistribute_ipv6_metric_cmd,
+-       "redistribute (connected|kernel|ospf6|ripng|static) metric <0-4294967295>",
++       "redistribute (connected|kernel|ospf6|ripng|static|hsls|olsr|batman) metric <0-4294967295>",
+        "Redistribute information from another routing protocol\n"
+        "Connected\n"
+        "Kernel routes\n"
+        "Open Shurtest Path First (OSPFv3)\n"
+        "Routing Information Protocol (RIPng)\n"
+        "Static routes\n"
++       "Hazy-Sighted Link State Protocol (HSLS)\n"
++       "Optimized Link State Routing (OLSR)\n"
++       "Better Approach to Mobile Ad-Hoc Networking (BATMAN)\n"
+        "Metric for redistributed routes\n"
+        "Default metric\n")
+ {
+@@ -8576,13 +8627,16 @@ DEFUN (bgp_redistribute_ipv6_metric,
+ 
+ DEFUN (bgp_redistribute_ipv6_rmap_metric,
+        bgp_redistribute_ipv6_rmap_metric_cmd,
+-       "redistribute (connected|kernel|ospf6|ripng|static) route-map WORD metric <0-4294967295>",
++       "redistribute (connected|kernel|ospf6|ripng|static|hsls|olsr|batman) route-map WORD metric <0-4294967295>",
+        "Redistribute information from another routing protocol\n"
+        "Connected\n"
+        "Kernel routes\n"
+        "Open Shurtest Path First (OSPFv3)\n"
+        "Routing Information Protocol (RIPng)\n"
+        "Static routes\n"
++       "Hazy-Sighted Link State Protocol (HSLS)\n"
++       "Optimized Link State Routing (OLSR)\n"
++       "Better Approach to Mobile Ad-Hoc Networking (BATMAN)\n"
+        "Route map reference\n"
+        "Pointer to route-map entries\n"
+        "Metric for redistributed routes\n"
+@@ -8606,13 +8660,16 @@ DEFUN (bgp_redistribute_ipv6_rmap_metric
+ 
+ DEFUN (bgp_redistribute_ipv6_metric_rmap,
+        bgp_redistribute_ipv6_metric_rmap_cmd,
+-       "redistribute (connected|kernel|ospf6|ripng|static) metric <0-4294967295> route-map WORD",
++       "redistribute (connected|kernel|ospf6|ripng|static|hsls|olsr|batman) metric <0-4294967295> route-map WORD",
+        "Redistribute information from another routing protocol\n"
+        "Connected\n"
+        "Kernel routes\n"
+        "Open Shurtest Path First (OSPFv3)\n"
+        "Routing Information Protocol (RIPng)\n"
+        "Static routes\n"
++       "Hazy-Sighted Link State Protocol (HSLS)\n"
++       "Optimized Link State Routing (OLSR)\n"
++       "Better Approach to Mobile Ad-Hoc Networking (BATMAN)\n"
+        "Metric for redistributed routes\n"
+        "Default metric\n"
+        "Route map reference\n"
+@@ -8636,14 +8693,17 @@ DEFUN (bgp_redistribute_ipv6_metric_rmap
+ 
+ DEFUN (no_bgp_redistribute_ipv6,
+        no_bgp_redistribute_ipv6_cmd,
+-       "no redistribute (connected|kernel|ospf6|ripng|static)",
++       "no redistribute (connected|kernel|ospf6|ripng|static|hsls|olsr|batman)",
+        NO_STR
+        "Redistribute information from another routing protocol\n"
+        "Connected\n"
+        "Kernel routes\n"
+        "Open Shurtest Path First (OSPFv3)\n"
+        "Routing Information Protocol (RIPng)\n"
+-       "Static routes\n")
++       "Static routes\n"
++       "Hazy-Sighted Link State Protocol (HSLS)\n"
++       "Optimized Link State Routing (OLSR)\n"
++       "Better Approach to Mobile Ad-Hoc Networking (BATMAN)\n")
+ {
+   int type;
+ 
+@@ -8659,7 +8719,7 @@ DEFUN (no_bgp_redistribute_ipv6,
+ 
+ DEFUN (no_bgp_redistribute_ipv6_rmap,
+        no_bgp_redistribute_ipv6_rmap_cmd,
+-       "no redistribute (connected|kernel|ospf6|ripng|static) route-map WORD",
++       "no redistribute (connected|kernel|ospf6|ripng|static|hsls|olsr|batman) route-map WORD",
+        NO_STR
+        "Redistribute information from another routing protocol\n"
+        "Connected\n"
+@@ -8667,6 +8727,9 @@ DEFUN (no_bgp_redistribute_ipv6_rmap,
+        "Open Shurtest Path First (OSPFv3)\n"
+        "Routing Information Protocol (RIPng)\n"
+        "Static routes\n"
++       "Hazy-Sighted Link State Protocol (HSLS)\n"
++       "Optimized Link State Routing (OLSR)\n"
++       "Better Approach to Mobile Ad-Hoc Networking (BATMAN)\n"
+        "Route map reference\n"
+        "Pointer to route-map entries\n")
+ {
+@@ -8685,7 +8748,7 @@ DEFUN (no_bgp_redistribute_ipv6_rmap,
+ 
+ DEFUN (no_bgp_redistribute_ipv6_metric,
+        no_bgp_redistribute_ipv6_metric_cmd,
+-       "no redistribute (connected|kernel|ospf6|ripng|static) metric <0-4294967295>",
++       "no redistribute (connected|kernel|ospf6|ripng|static|hsls|olsr|batman) metric <0-4294967295>",
+        NO_STR
+        "Redistribute information from another routing protocol\n"
+        "Connected\n"
+@@ -8693,6 +8756,9 @@ DEFUN (no_bgp_redistribute_ipv6_metric,
+        "Open Shurtest Path First (OSPFv3)\n"
+        "Routing Information Protocol (RIPng)\n"
+        "Static routes\n"
++       "Hazy-Sighted Link State Protocol (HSLS)\n"
++       "Optimized Link State Routing (OLSR)\n"
++       "Better Approach to Mobile Ad-Hoc Networking (BATMAN)\n"
+        "Metric for redistributed routes\n"
+        "Default metric\n")
+ {
+@@ -8711,7 +8777,7 @@ DEFUN (no_bgp_redistribute_ipv6_metric,
+ 
+ DEFUN (no_bgp_redistribute_ipv6_rmap_metric,
+        no_bgp_redistribute_ipv6_rmap_metric_cmd,
+-       "no redistribute (connected|kernel|ospf6|ripng|static) route-map WORD metric <0-4294967295>",
++       "no redistribute (connected|kernel|ospf6|ripng|static|hsls|olsr|batman) route-map WORD metric <0-4294967295>",
+        NO_STR
+        "Redistribute information from another routing protocol\n"
+        "Connected\n"
+@@ -8719,6 +8785,9 @@ DEFUN (no_bgp_redistribute_ipv6_rmap_met
+        "Open Shurtest Path First (OSPFv3)\n"
+        "Routing Information Protocol (RIPng)\n"
+        "Static routes\n"
++       "Hazy-Sighted Link State Protocol (HSLS)\n"
++       "Optimized Link State Routing (OLSR)\n"
++       "Better Approach to Mobile Ad-Hoc Networking (BATMAN)\n"
+        "Route map reference\n"
+        "Pointer to route-map entries\n"
+        "Metric for redistributed routes\n"
+@@ -8740,7 +8809,7 @@ DEFUN (no_bgp_redistribute_ipv6_rmap_met
+ 
+ ALIAS (no_bgp_redistribute_ipv6_rmap_metric,
+        no_bgp_redistribute_ipv6_metric_rmap_cmd,
+-       "no redistribute (connected|kernel|ospf6|ripng|static) metric <0-4294967295> route-map WORD",
++       "no redistribute (connected|kernel|ospf6|ripng|static|hsls|olsr|batman) metric <0-4294967295> route-map WORD",
+        NO_STR
+        "Redistribute information from another routing protocol\n"
+        "Connected\n"
+@@ -8748,6 +8817,9 @@ ALIAS (no_bgp_redistribute_ipv6_rmap_met
+        "Open Shurtest Path First (OSPFv3)\n"
+        "Routing Information Protocol (RIPng)\n"
+        "Static routes\n"
++       "Hazy-Sighted Link State Protocol (HSLS)\n"
++       "Optimized Link State Routing (OLSR)\n"
++       "Better Approach to Mobile Ad-Hoc Networking (BATMAN)\n"
+        "Metric for redistributed routes\n"
+        "Default metric\n"
+        "Route map reference\n"
+--- a/lib/log.c
++++ b/lib/log.c
+@@ -835,6 +835,8 @@ static const struct zebra_desc_table rou
+   DESC_ENTRY	(ZEBRA_ROUTE_ISIS,	"isis",		'I' ),
+   DESC_ENTRY	(ZEBRA_ROUTE_BGP,	"bgp",		'B' ),
+   DESC_ENTRY	(ZEBRA_ROUTE_HSLS,	"hsls",		'H' ),
++  DESC_ENTRY	(ZEBRA_ROUTE_OLSR,	"olsr",		'o' ),
++  DESC_ENTRY	(ZEBRA_ROUTE_BATMAN,	"batman",	'b' ),
+ };
+ #undef DESC_ENTRY
+ 
+--- a/lib/route_types.txt
++++ b/lib/route_types.txt
+@@ -51,13 +51,9 @@ ZEBRA_ROUTE_OSPF,       ospf,      ospfd
+ ZEBRA_ROUTE_OSPF6,      ospf6,     ospf6d, 'O', 0, 1, "OSPF"
+ ZEBRA_ROUTE_ISIS,       isis,      isisd,  'I', 1, 1, "IS-IS"
+ ZEBRA_ROUTE_BGP,        bgp,       bgpd,   'B', 1, 1, "BGP"
+-# HSLS and OLSR both are AFI independent (so: 1, 1), however
+-# we want to disable for them for general Quagga distribution.
+-# This at least makes it trivial for users of these protocols
+-# to 'switch on' redist support (direct numeric entry remaining
+-# possible).
+-ZEBRA_ROUTE_HSLS,       hsls,      hslsd,  'H', 0, 0, "HSLS"
+-ZEBRA_ROUTE_OLSR,       olsr,      oslrd,  'o', 0, 0, "OLSR"
++ZEBRA_ROUTE_HSLS,       hsls,      hslsd,  'H', 1, 1, "HSLS"
++ZEBRA_ROUTE_OLSR,       olsr,      olsrd,  'o', 1, 1, "OLSR"
++ZEBRA_ROUTE_BATMAN,     batman,    batmand,'b', 1, 1, "BATMAN"
+ 
+ ## help strings
+ ZEBRA_ROUTE_SYSTEM, "Reserved route type, for internal use only"
+@@ -71,4 +67,5 @@ ZEBRA_ROUTE_OSPF6,  "Open Shortest Path
+ ZEBRA_ROUTE_ISIS,   "Intermediate System to Intermediate System (IS-IS)"
+ ZEBRA_ROUTE_BGP,    "Border Gateway Protocol (BGP)"
+ ZEBRA_ROUTE_HSLS,   "Hazy-Sighted Link State Protocol (HSLS)"
+-ZEBRA_ROUTE_OLSR,   "Optimised Link State Routing (OLSR)"
++ZEBRA_ROUTE_OLSR,   "Optimized Link State Routing (OLSR)"
++ZEBRA_ROUTE_BATMAN, "Better Approach to Mobile Ad-Hoc Networking (BATMAN)"
+--- a/lib/zebra.h
++++ b/lib/zebra.h
+@@ -441,7 +441,9 @@ struct in_pktinfo
+ #define ZEBRA_ROUTE_ISIS                 8
+ #define ZEBRA_ROUTE_BGP                  9
+ #define ZEBRA_ROUTE_HSLS		 10
+-#define ZEBRA_ROUTE_MAX                  11
++#define ZEBRA_ROUTE_OLSR		 11
++#define ZEBRA_ROUTE_BATMAN		 12
++#define ZEBRA_ROUTE_MAX                  13
+ 
+ /* Note: whenever a new route-type or zserv-command is added the
+  * corresponding {command,route}_types[] table in lib/log.c MUST be
+--- a/ospf6d/ospf6_asbr.c
++++ b/ospf6d/ospf6_asbr.c
+@@ -616,13 +616,16 @@ ospf6_asbr_redistribute_remove (int type
+ 
+ DEFUN (ospf6_redistribute,
+        ospf6_redistribute_cmd,
+-       "redistribute (static|kernel|connected|ripng|bgp)",
++       "redistribute (static|kernel|connected|ripng|bgp|hsls|olsr|batman)",
+        "Redistribute\n"
+        "Static route\n"
+        "Kernel route\n"
+        "Connected route\n"
+        "RIPng route\n"
+        "BGP route\n"
++       "HSLS route\n"
++       "OLSR route\n"
++       "BATMAN route\n"
+       )
+ {
+   int type = 0;
+@@ -637,6 +640,12 @@ DEFUN (ospf6_redistribute,
+     type = ZEBRA_ROUTE_RIPNG;
+   else if (strncmp (argv[0], "bgp", 3) == 0)
+     type = ZEBRA_ROUTE_BGP;
++  else if (strncmp (argv[0], "h", 1) == 0)
++    type = ZEBRA_ROUTE_HSLS;
++  else if (strncmp (argv[0], "o", 1) == 0)
++    type = ZEBRA_ROUTE_OLSR;
++  else if (strncmp (argv[0], "ba", 2) == 0)
++    type = ZEBRA_ROUTE_BATMAN;
+ 
+   ospf6_asbr_redistribute_unset (type);
+   ospf6_asbr_routemap_unset (type);
+@@ -646,13 +655,16 @@ DEFUN (ospf6_redistribute,
+ 
+ DEFUN (ospf6_redistribute_routemap,
+        ospf6_redistribute_routemap_cmd,
+-       "redistribute (static|kernel|connected|ripng|bgp) route-map WORD",
++       "redistribute (static|kernel|connected|ripng|bgp|hsls|olsr|batman) route-map WORD",
+        "Redistribute\n"
+        "Static routes\n"
+        "Kernel route\n"
+        "Connected route\n"
+        "RIPng route\n"
+        "BGP route\n"
++       "HSLS route\n"
++       "OLSR route\n"
++       "BATMAN route\n"
+        "Route map reference\n"
+        "Route map name\n"
+       )
+@@ -669,6 +681,12 @@ DEFUN (ospf6_redistribute_routemap,
+     type = ZEBRA_ROUTE_RIPNG;
+   else if (strncmp (argv[0], "bgp", 3) == 0)
+     type = ZEBRA_ROUTE_BGP;
++  else if (strncmp (argv[0], "h", 1) == 0)
++    type = ZEBRA_ROUTE_HSLS;
++  else if (strncmp (argv[0], "o", 1) == 0)
++    type = ZEBRA_ROUTE_OLSR;
++  else if (strncmp (argv[0], "ba", 2) == 0)
++    type = ZEBRA_ROUTE_BATMAN;
+ 
+   ospf6_asbr_redistribute_unset (type);
+   ospf6_asbr_routemap_set (type, argv[1]);
+@@ -678,7 +696,7 @@ DEFUN (ospf6_redistribute_routemap,
+ 
+ DEFUN (no_ospf6_redistribute,
+        no_ospf6_redistribute_cmd,
+-       "no redistribute (static|kernel|connected|ripng|bgp)",
++       "no redistribute (static|kernel|connected|ripng|bgp|hsls|olsr|batman)",
+        NO_STR
+        "Redistribute\n"
+        "Static route\n"
+@@ -686,6 +704,9 @@ DEFUN (no_ospf6_redistribute,
+        "Connected route\n"
+        "RIPng route\n"
+        "BGP route\n"
++       "HSLS route\n"
++       "OLSR route\n"
++       "BATMAN route\n"
+       )
+ {
+   int type = 0;
+@@ -700,6 +721,12 @@ DEFUN (no_ospf6_redistribute,
+     type = ZEBRA_ROUTE_RIPNG;
+   else if (strncmp (argv[0], "bgp", 3) == 0)
+     type = ZEBRA_ROUTE_BGP;
++  else if (strncmp (argv[0], "h", 1) == 0)
++    type = ZEBRA_ROUTE_HSLS;
++  else if (strncmp (argv[0], "o", 1) == 0)
++    type = ZEBRA_ROUTE_OLSR;
++  else if (strncmp (argv[0], "ba", 2) == 0)
++    type = ZEBRA_ROUTE_BATMAN;
+ 
+   ospf6_asbr_redistribute_unset (type);
+   ospf6_asbr_routemap_unset (type);
+--- a/ospfd/ospf_vty.c
++++ b/ospfd/ospf_vty.c
+@@ -107,8 +107,14 @@ str2distribute_source (const char *str,
+     *source = ZEBRA_ROUTE_STATIC;
+   else if (strncmp (str, "r", 1) == 0)
+     *source = ZEBRA_ROUTE_RIP;
+-  else if (strncmp (str, "b", 1) == 0)
++  else if (strncmp (str, "bg", 2) == 0)
+     *source = ZEBRA_ROUTE_BGP;
++  else if (strncmp (str, "h", 1) == 0)
++    *source = ZEBRA_ROUTE_HSLS;
++  else if (strncmp (str, "o", 1) == 0)
++    *source = ZEBRA_ROUTE_OLSR;
++  else if (strncmp (str, "ba", 2) == 0)
++    *source = ZEBRA_ROUTE_BATMAN;
+   else
+     return 0;
+ 
+--- a/ripd/rip_zebra.c
++++ b/ripd/rip_zebra.c
+@@ -204,8 +204,11 @@ static struct {
+   {ZEBRA_ROUTE_KERNEL,  1, "kernel"},
+   {ZEBRA_ROUTE_CONNECT, 1, "connected"},
+   {ZEBRA_ROUTE_STATIC,  1, "static"},
+-  {ZEBRA_ROUTE_OSPF,    1, "ospf"},
+-  {ZEBRA_ROUTE_BGP,     1, "bgp"},
++  {ZEBRA_ROUTE_OSPF,    2, "ospf"},
++  {ZEBRA_ROUTE_BGP,     2, "bgp"},
++  {ZEBRA_ROUTE_HSLS,    1, "hsls"},
++  {ZEBRA_ROUTE_OLSR,    2, "olsr"},
++  {ZEBRA_ROUTE_BATMAN,  2, "batman"},
+   {0, 0, NULL}
+ };
+ 
+--- a/ripngd/ripng_zebra.c
++++ b/ripngd/ripng_zebra.c
+@@ -214,8 +214,11 @@ static struct {
+   {ZEBRA_ROUTE_KERNEL,  1, "kernel"},
+   {ZEBRA_ROUTE_CONNECT, 1, "connected"},
+   {ZEBRA_ROUTE_STATIC,  1, "static"},
+-  {ZEBRA_ROUTE_OSPF6,   1, "ospf6"},
+-  {ZEBRA_ROUTE_BGP,     1, "bgp"},
++  {ZEBRA_ROUTE_OSPF6,   2, "ospf6"},
++  {ZEBRA_ROUTE_BGP,     2, "bgp"},
++  {ZEBRA_ROUTE_HSLS,    1, "hsls"},
++  {ZEBRA_ROUTE_OLSR,    2, "olsr"},
++  {ZEBRA_ROUTE_BATMAN,  2, "batman"},
+   {0, 0, NULL}
+ };
+ 
+--- a/zebra/redistribute.c
++++ b/zebra/redistribute.c
+@@ -255,6 +255,9 @@ zebra_redistribute_add (int command, str
+     case ZEBRA_ROUTE_OSPF:
+     case ZEBRA_ROUTE_OSPF6:
+     case ZEBRA_ROUTE_BGP:
++    case ZEBRA_ROUTE_HSLS:
++    case ZEBRA_ROUTE_OLSR:
++    case ZEBRA_ROUTE_BATMAN:
+       if (! client->redist[type])
+ 	{
+ 	  client->redist[type] = 1;
+@@ -283,6 +286,9 @@ zebra_redistribute_delete (int command,
+     case ZEBRA_ROUTE_OSPF:
+     case ZEBRA_ROUTE_OSPF6:
+     case ZEBRA_ROUTE_BGP:
++    case ZEBRA_ROUTE_HSLS:
++    case ZEBRA_ROUTE_OLSR:
++    case ZEBRA_ROUTE_BATMAN:
+       client->redist[type] = 0;
+       break;
+     default:
+--- a/zebra/zebra_rib.c
++++ b/zebra/zebra_rib.c
+@@ -66,7 +66,10 @@ static const struct
+   {ZEBRA_ROUTE_OSPF,    110},
+   {ZEBRA_ROUTE_OSPF6,   110},
+   {ZEBRA_ROUTE_ISIS,    115},
+-  {ZEBRA_ROUTE_BGP,      20  /* IBGP is 200. */}
++  {ZEBRA_ROUTE_BGP,      20  /* IBGP is 200. */},
++  {ZEBRA_ROUTE_HSLS,      0}, 
++  {ZEBRA_ROUTE_OLSR,      0}, 
++  {ZEBRA_ROUTE_BATMAN,    0}
+ };
+ 
+ /* Vector for routing table.  */
+@@ -1229,6 +1232,8 @@ static const u_char meta_queue_map[ZEBRA
+   [ZEBRA_ROUTE_ISIS]    = 2,
+   [ZEBRA_ROUTE_BGP]     = 3,
+   [ZEBRA_ROUTE_HSLS]    = 4,
++  [ZEBRA_ROUTE_OLSR]    = 4,
++  [ZEBRA_ROUTE_BATMAN]  = 4,
+ };
+ 
+ /* Look into the RN and queue it into one or more priority queues,
+--- a/zebra/zebra_snmp.c
++++ b/zebra/zebra_snmp.c
+@@ -251,6 +251,12 @@ proto_trans(int type)
+       return 1; /* shouldn't happen */
+     case ZEBRA_ROUTE_BGP:
+       return 14; /* bgp */
++    case ZEBRA_ROUTE_HSLS:
++      return 1; /* other */
++    case ZEBRA_ROUTE_OLSR:
++      return 1; /* other */
++    case ZEBRA_ROUTE_BATMAN:
++      return 1; /* other */
+     default:
+       return 1; /* other */
+     }
+--- a/zebra/zebra_vty.c
++++ b/zebra/zebra_vty.c
+@@ -557,7 +557,10 @@ vty_show_ip_route_detail (struct vty *vt
+       if (rib->type == ZEBRA_ROUTE_RIP
+ 	  || rib->type == ZEBRA_ROUTE_OSPF
+ 	  || rib->type == ZEBRA_ROUTE_ISIS
+-	  || rib->type == ZEBRA_ROUTE_BGP)
++	  || rib->type == ZEBRA_ROUTE_BGP
++	  || rib->type == ZEBRA_ROUTE_HSLS
++	  || rib->type == ZEBRA_ROUTE_OLSR
++	  || rib->type == ZEBRA_ROUTE_BATMAN)
+ 	{
+ 	  time_t uptime;
+ 	  struct tm *tm;
+@@ -775,7 +778,10 @@ vty_show_ip_route (struct vty *vty, stru
+       if (rib->type == ZEBRA_ROUTE_RIP
+ 	  || rib->type == ZEBRA_ROUTE_OSPF
+ 	  || rib->type == ZEBRA_ROUTE_ISIS
+-	  || rib->type == ZEBRA_ROUTE_BGP)
++	  || rib->type == ZEBRA_ROUTE_BGP
++	  || rib->type == ZEBRA_ROUTE_HSLS
++	  || rib->type == ZEBRA_ROUTE_OLSR
++	  || rib->type == ZEBRA_ROUTE_BATMAN)
+ 	{
+ 	  time_t uptime;
+ 	  struct tm *tm;
+@@ -803,8 +809,8 @@ vty_show_ip_route (struct vty *vty, stru
+ }
+ 
+ #define SHOW_ROUTE_V4_HEADER "Codes: K - kernel route, C - connected, " \
+-  "S - static, R - RIP, O - OSPF,%s       I - ISIS, B - BGP, " \
+-  "> - selected route, * - FIB route%s%s"
++  "S - static, R - RIP, O - OSPF,%s       I - ISIS, B - BGP, H - HSLS, " \
++  "o - OLSR, b - BATMAN,%s       > - selected route, * - FIB route%s%s"
+ 
+ DEFUN (show_ip_route,
+        show_ip_route_cmd,
+@@ -829,7 +835,7 @@ DEFUN (show_ip_route,
+ 	if (first)
+ 	  {
+ 	    vty_out (vty, SHOW_ROUTE_V4_HEADER, VTY_NEWLINE, VTY_NEWLINE,
+-		     VTY_NEWLINE);
++		     VTY_NEWLINE, VTY_NEWLINE);
+ 	    first = 0;
+ 	  }
+ 	vty_show_ip_route (vty, rn, rib);
+@@ -872,7 +878,7 @@ DEFUN (show_ip_route_prefix_longer,
+ 	  if (first)
+ 	    {
+ 	      vty_out (vty, SHOW_ROUTE_V4_HEADER, VTY_NEWLINE,
+-		       VTY_NEWLINE, VTY_NEWLINE);
++		       VTY_NEWLINE, VTY_NEWLINE, VTY_NEWLINE);
+ 	      first = 0;
+ 	    }
+ 	  vty_show_ip_route (vty, rn, rib);
+@@ -911,7 +917,7 @@ DEFUN (show_ip_route_supernets,
+ 	    if (first)
+ 	      {
+ 		vty_out (vty, SHOW_ROUTE_V4_HEADER, VTY_NEWLINE,
+-			 VTY_NEWLINE, VTY_NEWLINE);
++			 VTY_NEWLINE, VTY_NEWLINE, VTY_NEWLINE);
+ 		first = 0;
+ 	      }
+ 	    vty_show_ip_route (vty, rn, rib);
+@@ -922,7 +928,7 @@ DEFUN (show_ip_route_supernets,
+ 
+ DEFUN (show_ip_route_protocol,
+        show_ip_route_protocol_cmd,
+-       "show ip route (bgp|connected|isis|kernel|ospf|rip|static)",
++       "show ip route (bgp|connected|isis|kernel|ospf|rip|static|hsls|olsr|batman)",
+        SHOW_STR
+        IP_STR
+        "IP routing table\n"
+@@ -940,13 +946,13 @@ DEFUN (show_ip_route_protocol,
+   struct rib *rib;
+   int first = 1;
+ 
+-  if (strncmp (argv[0], "b", 1) == 0)
++  if (strncmp (argv[0], "bg", 2) == 0)
+     type = ZEBRA_ROUTE_BGP;
+   else if (strncmp (argv[0], "c", 1) == 0)
+     type = ZEBRA_ROUTE_CONNECT;
+   else if (strncmp (argv[0], "k", 1) ==0)
+     type = ZEBRA_ROUTE_KERNEL;
+-  else if (strncmp (argv[0], "o", 1) == 0)
++  else if (strncmp (argv[0], "os", 2) == 0)
+     type = ZEBRA_ROUTE_OSPF;
+   else if (strncmp (argv[0], "i", 1) == 0)
+     type = ZEBRA_ROUTE_ISIS;
+@@ -954,6 +960,12 @@ DEFUN (show_ip_route_protocol,
+     type = ZEBRA_ROUTE_RIP;
+   else if (strncmp (argv[0], "s", 1) == 0)
+     type = ZEBRA_ROUTE_STATIC;
++  else if (strncmp (argv[0], "h", 1) == 0)
++    type = ZEBRA_ROUTE_HSLS;
++  else if (strncmp (argv[0], "ol", 2) == 0)
++    type = ZEBRA_ROUTE_OLSR;
++  else if (strncmp (argv[0], "ba", 2) == 0)
++    type = ZEBRA_ROUTE_BATMAN;
+   else 
+     {
+       vty_out (vty, "Unknown route type%s", VTY_NEWLINE);
+@@ -971,7 +983,7 @@ DEFUN (show_ip_route_protocol,
+ 	{
+ 	  if (first)
+ 	    {
+-	      vty_out (vty, SHOW_ROUTE_V4_HEADER,
++	      vty_out (vty, SHOW_ROUTE_V4_HEADER, VTY_NEWLINE,
+ 		       VTY_NEWLINE, VTY_NEWLINE, VTY_NEWLINE);
+ 	      first = 0;
+ 	    }
+@@ -1560,7 +1572,10 @@ vty_show_ipv6_route_detail (struct vty *
+       if (rib->type == ZEBRA_ROUTE_RIPNG
+ 	  || rib->type == ZEBRA_ROUTE_OSPF6
+ 	  || rib->type == ZEBRA_ROUTE_ISIS
+-	  || rib->type == ZEBRA_ROUTE_BGP)
++	  || rib->type == ZEBRA_ROUTE_BGP
++	  || rib->type == ZEBRA_ROUTE_HSLS
++	  || rib->type == ZEBRA_ROUTE_OLSR
++	  || rib->type == ZEBRA_ROUTE_BATMAN)
+ 	{
+ 	  time_t uptime;
+ 	  struct tm *tm;
+@@ -1739,7 +1754,10 @@ vty_show_ipv6_route (struct vty *vty, st
+       if (rib->type == ZEBRA_ROUTE_RIPNG
+ 	  || rib->type == ZEBRA_ROUTE_OSPF6
+ 	  || rib->type == ZEBRA_ROUTE_ISIS
+-	  || rib->type == ZEBRA_ROUTE_BGP)
++	  || rib->type == ZEBRA_ROUTE_BGP
++	  || rib->type == ZEBRA_ROUTE_HSLS
++	  || rib->type == ZEBRA_ROUTE_OLSR
++	  || rib->type == ZEBRA_ROUTE_BATMAN)
+ 	{
+ 	  time_t uptime;
+ 	  struct tm *tm;
+@@ -1766,7 +1784,7 @@ vty_show_ipv6_route (struct vty *vty, st
+     }
+ }
+ 
+-#define SHOW_ROUTE_V6_HEADER "Codes: K - kernel route, C - connected, S - static, R - RIPng, O - OSPFv3,%s       I - ISIS, B - BGP, * - FIB route.%s%s"
++#define SHOW_ROUTE_V6_HEADER "Codes: K - kernel route, C - connected, S - static, R - RIPng, O - OSPFv3,%s       I - ISIS, B - BGP, H - HSLS, o - OLSR, b - BATMAN, * - FIB route.%s%s"
+ 
+ DEFUN (show_ipv6_route,
+        show_ipv6_route_cmd,
+@@ -1842,7 +1860,7 @@ DEFUN (show_ipv6_route_prefix_longer,
+ 
+ DEFUN (show_ipv6_route_protocol,
+        show_ipv6_route_protocol_cmd,
+-       "show ipv6 route (bgp|connected|isis|kernel|ospf6|ripng|static)",
++       "show ipv6 route (bgp|connected|isis|kernel|ospf6|ripng|static|hsls|olsr|batman)",
+        SHOW_STR
+        IP_STR
+        "IP routing table\n"
+@@ -1860,13 +1878,13 @@ DEFUN (show_ipv6_route_protocol,
+   struct rib *rib;
+   int first = 1;
+ 
+-  if (strncmp (argv[0], "b", 1) == 0)
++  if (strncmp (argv[0], "bg", 2) == 0)
+     type = ZEBRA_ROUTE_BGP;
+   else if (strncmp (argv[0], "c", 1) == 0)
+     type = ZEBRA_ROUTE_CONNECT;
+   else if (strncmp (argv[0], "k", 1) ==0)
+     type = ZEBRA_ROUTE_KERNEL;
+-  else if (strncmp (argv[0], "o", 1) == 0)
++  else if (strncmp (argv[0], "os", 2) == 0)
+     type = ZEBRA_ROUTE_OSPF6;
+   else if (strncmp (argv[0], "i", 1) == 0)
+     type = ZEBRA_ROUTE_ISIS;
+@@ -1874,6 +1892,12 @@ DEFUN (show_ipv6_route_protocol,
+     type = ZEBRA_ROUTE_RIPNG;
+   else if (strncmp (argv[0], "s", 1) == 0)
+     type = ZEBRA_ROUTE_STATIC;
++  else if (strncmp (argv[0], "h", 1) == 0)
++    type = ZEBRA_ROUTE_HSLS;
++  else if (strncmp (argv[0], "ol", 2) == 0)
++    type = ZEBRA_ROUTE_OLSR;
++  else if (strncmp (argv[0], "ba", 2) == 0)
++    type = ZEBRA_ROUTE_BATMAN;
+   else 
+     {
+       vty_out (vty, "Unknown route type%s", VTY_NEWLINE);
Index: net/quagga/patches-0.99.17/000-upstream-clock_fix.patch
===================================================================
--- net/quagga/patches-0.99.17/000-upstream-clock_fix.patch	(revision 0)
+++ net/quagga/patches-0.99.17/000-upstream-clock_fix.patch	(revision 0)
@@ -0,0 +1,29 @@
+From 213b6cd9fb24381563d6d44c7ddc4700abfae676 Mon Sep 17 00:00:00 2001
+From: Vladimir L Ivanov <wawa@yandex-team.ru>
+Date: Thu, 21 Oct 2010 14:59:54 +0400
+Subject: [PATCH] bgpd: fix printed value of last-update timestamp
+
+* bgp_route.c: (route_vty_out_detail) calculate time value
+    in a way, which works regardless of monotonic clock
+    being used or not
+---
+ bgpd/bgp_route.c |    3 ++-
+ 1 files changed, 2 insertions(+), 1 deletions(-)
+
+diff --git a/bgpd/bgp_route.c b/bgpd/bgp_route.c
+index 2391f74..1cfc451 100644
+--- a/bgpd/bgp_route.c
++++ b/bgpd/bgp_route.c
+@@ -6145,7 +6145,8 @@ route_vty_out_detail (struct vty *vty, struct bgp *bgp, struct prefix *p,
+ 	bgp_damp_info_vty (vty, binfo);
+ 
+       /* Line 7 display Uptime */
+-      vty_out (vty, "      Last update: %s", ctime (&binfo->uptime));
++      time_t tbuf = time(NULL) - (bgp_clock() - binfo->uptime);
++      vty_out (vty, "      Last update: %s", ctime(&tbuf));
+     }
+   vty_out (vty, "%s", VTY_NEWLINE);
+ }  
+-- 
+1.7.2.3
+
Index: net/quagga/patches-0.99.17/000-upstream-bogus_cond.patch
===================================================================
--- net/quagga/patches-0.99.17/000-upstream-bogus_cond.patch	(revision 0)
+++ net/quagga/patches-0.99.17/000-upstream-bogus_cond.patch	(revision 0)
@@ -0,0 +1,11 @@
+--- a/zebra/zserv.c
++++ b/zebra/zserv.c
+@@ -451,7 +451,7 @@ zsend_route_multipath (int cmd, struct zserv *client, struct prefix *p,
+     }
+ 
+   /* Metric */
+-  if (cmd == ZEBRA_IPV4_ROUTE_ADD || ZEBRA_IPV6_ROUTE_ADD)
++  if (cmd == ZEBRA_IPV4_ROUTE_ADD || cmd == ZEBRA_IPV6_ROUTE_ADD)
+     {
+       SET_FLAG (zapi_flags, ZAPI_MESSAGE_DISTANCE);
+       stream_putc (s, rib->distance);
Index: net/quagga/patches-0.99.17/000-upstream-miss_str.patch
===================================================================
--- net/quagga/patches-0.99.17/000-upstream-miss_str.patch	(revision 0)
+++ net/quagga/patches-0.99.17/000-upstream-miss_str.patch	(revision 0)
@@ -0,0 +1,11 @@
+--- a/lib/vty.c
++++ b/lib/vty.c
+@@ -250,7 +250,7 @@ vty_hello (struct vty *vty)
+ 	vty_out (vty, "MOTD file not found%s", VTY_NEWLINE);
+     }
+   else if (host.motd)
+-    vty_out (vty, host.motd);
++    vty_out (vty, "%s", host.motd);
+ }
+ 
+ /* Put out prompt and wait input from user. */
Index: net/quagga/patches-0.99.17/000-upstream-set_null.patch
===================================================================
--- net/quagga/patches-0.99.17/000-upstream-set_null.patch	(revision 0)
+++ net/quagga/patches-0.99.17/000-upstream-set_null.patch	(revision 0)
@@ -0,0 +1,16 @@
+--- a/bgpd/bgp_packet.c
++++ b/bgpd/bgp_packet.c
+@@ -177,10 +177,11 @@ bgp_update_packet (struct peer *peer, afi_t afi, safi_t safi)
+ 	  
+ 	  if (rn->prn)
+ 	    prd = (struct prefix_rd *) &rn->prn->p;
+-          if (binfo && binfo->extra)
++          if (binfo)
+             {
+-              tag = binfo->extra->tag;
+               from = binfo->peer;
++              if (binfo->extra)
++                tag = binfo->extra->tag;
+             }
+           
+ 	  bgp_packet_set_marker (s, BGP_MSG_UPDATE);
Index: net/quagga/Makefile
===================================================================
--- net/quagga/Makefile	(revision 31224)
+++ net/quagga/Makefile	(working copy)
@@ -14,9 +14,14 @@
   PKG_MD5SUM:=b0d4132039953a0214256873b7d23d68
   PATCH_DIR:=./patches-old
 else
-  PKG_VERSION:=0.99.18
+#&&&
+#  PKG_VERSION:=0.99.18
+#  PKG_RELEASE:=3
+#  PKG_MD5SUM:=59e306e93a4a1ce16760f20e9075d473
+  PKG_VERSION:=0.99.17
   PKG_RELEASE:=2
-  PKG_MD5SUM:=59e306e93a4a1ce16760f20e9075d473
+  PKG_MD5SUM:=37b9022adca04b03863d2d79787e643f
+  PATCH_DIR:=./patches-0.99.17
 endif
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
Index: net/gpsd/Makefile
===================================================================
--- net/gpsd/Makefile	(revision 31224)
+++ net/gpsd/Makefile	(working copy)
@@ -9,7 +9,7 @@
 
 PKG_NAME:=gpsd
 PKG_VERSION:=2.94
-PKG_RELEASE:=2
+PKG_RELEASE:=2xar
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=http://download.berlios.de/gpsd/
@@ -46,6 +46,9 @@
         --disable-ntrip \
 	--disable-libgpsmm \
         --without-x \
+        --disable-garmin \
+        --enable-ntpshm \
+        --enable-pps
 
 EXTRA_CFLAGS:=-I$(STAGING_DIR)/usr/include/libusb-1.0
 
