[-]
[+]
|
Added |
bird.changes
|
|
[-]
[+]
|
Changed |
bird.spec
^
|
|
[-]
[+]
|
Changed |
bird-1.3.4.tar.bz2/ChangeLog
^
|
@@ -1,3 +1,71 @@
+commit 00a124e3fc218aa39c634bbda244789f2ea0cd3d
+Author: Ondrej Zajicek <santiago@crfreenet.org>
+Date: Mon Oct 10 02:33:11 2011 +0200
+
+ NEWS and version update.
+
+commit 9b7fdfc84a516ede415cd1941e5ff1d6312e83ff
+Author: Ondrej Zajicek <santiago@crfreenet.org>
+Date: Mon Oct 10 01:01:58 2011 +0200
+
+ Fixes for include.
+
+commit 1cb97af419ee5bff45049f4d3a85acadbb5b1cb9
+Author: Ondrej Zajicek <santiago@crfreenet.org>
+Date: Sun Oct 9 17:01:01 2011 +0200
+
+ Extend the error message.
+
+commit 9491f9f593c1195039cecd1bb2a502363b58c66d
+Author: Ondrej Zajicek <santiago@crfreenet.org>
+Date: Thu Oct 6 23:01:23 2011 +0200
+
+ Use reserved address blocks for documentation (RFC 5737).
+
+commit 32f95476a8d60508ca9d24fe20b09899b72de9d7
+Author: Ondrej Zajicek <santiago@crfreenet.org>
+Date: Thu Oct 6 22:48:49 2011 +0200
+
+ Signal problems with route installation to kernel tables.
+
+commit 35c875f0d1eb7c72e0b0ab8a90eb32cbcbfdac02
+Author: Ondrej Zajicek <santiago@crfreenet.org>
+Date: Sat Oct 1 09:57:49 2011 +0200
+
+ Fixes some error messages and the NSSA gw lookup.
+
+ Thanks to Alexander V. Chernikov for the patch.
+
+commit 736fd7303cb05e910507edaa9310178a23dbcf1e
+Author: Ondrej Zajicek <santiago@crfreenet.org>
+Date: Tue Sep 27 13:49:32 2011 +0200
+
+ Fixes a bug with multiple function arguments.
+
+commit bf6d91dc4edf3d08f0de41f71503159b1713fc9a
+Author: Ondrej Zajicek <santiago@crfreenet.org>
+Date: Sat Sep 24 11:06:42 2011 +0200
+
+ Use undefined scope for undefined IPv6 addresses.
+
+commit 4116db182d8d80d26902a8b33f82664bb5770066
+Author: Ondrej Zajicek <santiago@crfreenet.org>
+Date: Sat Sep 24 02:21:52 2011 +0200
+
+ Implements static recursive routes.
+
+commit 4271f2b77ed3862a2356475dc18b0cf5c1086364
+Author: Ondrej Filip <feela@network.cz>
+Date: Sun Sep 18 13:52:50 2011 +0200
+
+ Fixed problem during 'configure' with EC
+
+commit 55b58d8c1f51942c487cc268bd9e2ca214913377
+Author: Ondrej Filip <feela@network.cz>
+Date: Mon Sep 12 12:13:53 2011 +0200
+
+ Removed some completed jobs.
+
commit 1e69379e70da3486a601cab7a41ccf7a5825101d
Author: Ondrej Filip <feela@network.cz>
Date: Sun Sep 11 21:43:24 2011 +0200
@@ -233,7 +301,7 @@
linux capabilities CAP_NET_* are kept.
commit 46bb7e0d176a4dc0a47bb406988f92fb29cceaf4
-Merge: b8cc390... b7c4898...
+Merge: b8cc390 b7c4898
Author: Ondrej Zajicek <santiago@crfreenet.org>
Date: Fri May 6 22:09:44 2011 +0200
@@ -270,7 +338,7 @@
There may be more IP address records with the same IP.
commit 5964569c23829ec93fcf671a2582be01c8aebecf
-Merge: acc93ef... d600909...
+Merge: acc93ef d600909
Author: Ondrej Zajicek <santiago@crfreenet.org>
Date: Fri Apr 29 19:03:19 2011 +0200
@@ -319,7 +387,7 @@
Minor fixes.
commit bf27abd6d4a20448f5b4c80e9aa9258dc8670f62
-Merge: 4ef0950... a5b84ab...
+Merge: 4ef0950 a5b84ab
Author: Ondrej Zajicek <santiago@crfreenet.org>
Date: Fri Apr 1 13:56:42 2011 +0200
@@ -1009,7 +1077,7 @@
A fix in OSPFv3 next_hop calculation.
commit 96599c957baa9c82bde91d610ce4f519aead05e9
-Merge: ba13017... 9d1ee13...
+Merge: ba13017 9d1ee13
Author: Ondrej Filip <feela@majklik.network.cz>
Date: Tue Apr 27 11:28:44 2010 +0200
@@ -1053,7 +1121,7 @@
OSPFv2 and OSPFv3 (previously it displayed stubnets in OSPFv2).
commit 1d44ddf20f3ecef864d4bd20355251839fcd10ee
-Merge: 3b89a23... 6bc414d...
+Merge: 3b89a23 6bc414d
Author: Ondrej Zajicek <santiago@crfreenet.org>
Date: Wed Apr 21 21:52:10 2010 +0200
@@ -1220,7 +1288,7 @@
- Documentation updates.
commit eb0f129fcedcecbee85403095abad8f59b82683c
-Merge: b1c030b... 48cff37...
+Merge: b1c030b 48cff37
Author: Ondrej Zajicek <santiago@crfreenet.org>
Date: Fri Mar 26 18:53:31 2010 +0100
@@ -1296,7 +1364,7 @@
- Fixes socket name path check and other error handling in CLI init.
commit 4e3bfd9006ba3033a814a392f9bf4bbca060c8a9
-Merge: e8da1bd... cda2dfb...
+Merge: e8da1bd cda2dfb
Author: Ondrej Zajicek <santiago@crfreenet.org>
Date: Mon Mar 15 00:39:45 2010 +0100
@@ -1315,7 +1383,7 @@
Temporary OSPF commit - sockets.
commit 54305181f6ee3af57dd3d15d53ea2e851b36ed23
-Merge: e7b76b9... afa9f66...
+Merge: e7b76b9 afa9f66
Author: Ondrej Zajicek <santiago@crfreenet.org>
Date: Thu Mar 11 18:55:59 2010 +0100
@@ -1384,7 +1452,7 @@
Fix configure to enable warnings and fix most of them.
commit 9e43ccf07b96597ef098955a07383d826938cd2d
-Merge: e285bd2... 89534cd...
+Merge: e285bd2 89534cd
Author: Ondrej Zajicek <santiago@crfreenet.org>
Date: Sun Feb 21 10:15:49 2010 +0100
@@ -1506,7 +1574,7 @@
NEWS and version update.
commit fae9be7782a161bdf93c83884d62941a34cbe518
-Merge: 7d19666... 0efd646...
+Merge: 7d19666 0efd646
Author: Ondrej Zajicek <santiago@crfreenet.org>
Date: Wed Feb 10 14:59:26 2010 +0100
@@ -1584,7 +1652,7 @@
Because we don't want to have a limit on a function/filter length.
commit 1a7a4e59a22f903a0be791f229e86ab881593851
-Merge: 4167702... 1960d20...
+Merge: 4167702 1960d20
Author: Ondrej Zajicek <santiago@crfreenet.org>
Date: Thu Jan 28 16:00:16 2010 +0100
@@ -1626,7 +1694,7 @@
Comment update.
commit 974363c172e026b00be5f78ec585dda1e402b6f6
-Merge: 99f5fc1... 844e0f6...
+Merge: 99f5fc1 844e0f6
Author: Ondrej Zajicek <santiago@crfreenet.org>
Date: Fri Jan 8 22:20:09 2010 +0100
@@ -1639,7 +1707,7 @@
A partial vlink fix.
commit 844e0f65dbab98f71f2a5631277a720613d4d7a5
-Merge: 3242ab4... fc33143...
+Merge: 3242ab4 fc33143
Author: Ondrej Filip <feela@majklik.network.cz>
Date: Fri Jan 8 21:19:03 2010 +0100
@@ -1742,7 +1810,7 @@
Show command cleanups.
commit 0ad19261bf551ef49a1565e21e384ec749ec16d4
-Merge: c4ae538... 67b24e7...
+Merge: c4ae538 67b24e7
Author: Ondrej Zajicek <santiago@crfreenet.org>
Date: Tue Dec 22 01:34:01 2009 +0100
@@ -1769,14 +1837,14 @@
Change default LOCAL_PREF attribute to 100 (suggested value by RFC 4277).
commit ba9a122142a3d42137c129fabaef097702d44801
-Merge: 0225ea4... c4199e3...
+Merge: 0225ea4 c4199e3
Author: Ondrej Zajicek <santiago@crfreenet.org>
Date: Sun Dec 20 22:57:44 2009 +0100
Merge branch 'ospf3' into new
commit c4199e30313c88c0911060a5b5f3cc181ceedb37
-Merge: f2d7da7... ea7ada3...
+Merge: f2d7da7 ea7ada3
Author: Ondrej Zajicek <santiago@crfreenet.org>
Date: Sun Dec 20 22:56:09 2009 +0100
@@ -1809,7 +1877,7 @@
NEWS and version update.
commit 0225ea4eddb44bd9dd4f112e512325cbf80134d3
-Merge: 43c1cec... f2d7da7...
+Merge: 43c1cec f2d7da7
Author: Ondrej Zajicek <santiago@crfreenet.org>
Date: Tue Dec 15 00:32:13 2009 +0100
@@ -1840,7 +1908,7 @@
Implements route reload for OSPF.
commit 63542845dfb6d2277f93f77ad9ca3ad8bbaddd09
-Merge: 34a877c... 8a7fb88...
+Merge: 34a877c 8a7fb88
Author: Ondrej Zajicek <santiago@crfreenet.org>
Date: Mon Dec 14 20:37:32 2009 +0100
@@ -1970,7 +2038,7 @@
Implements BGP route refresh.
commit 5e6f568115511e2bcf43c60dfdcbd7a35cb04b93
-Merge: 069bfcb... 1f8be1e...
+Merge: 069bfcb 1f8be1e
Author: Ondrej Zajicek <santiago@crfreenet.org>
Date: Tue Nov 24 17:19:23 2009 +0100
@@ -2071,14 +2139,14 @@
Use IPv6 checksums in OSPFv3.
commit 3f22fa9e74c8643d3e4f7e3a7b4f2aa992ad09f5
-Merge: a6bc04d... b7c0e93...
+Merge: a6bc04d b7c0e93
Author: Ondrej Zajicek <santiago@crfreenet.org>
Date: Mon Nov 9 22:54:39 2009 +0100
Merge branch 'dev' into ospf3
commit b7c0e93ebd40cdc4f6e89067a3e5f7293263c7f9
-Merge: 7965e17... f1f1e89...
+Merge: 7965e17 f1f1e89
Author: Ondrej Zajicek <santiago@crfreenet.org>
Date: Mon Nov 2 16:27:17 2009 +0100
@@ -2343,7 +2411,7 @@
Version 1.1.2
commit 2ef58837dcb7b78edc193bc9ef1da316bba86998
-Merge: 86975e5... 5516a66...
+Merge: 86975e5 5516a66
Author: Ondrej Zajicek <santiago@crfreenet.org>
Date: Fri Aug 21 09:46:49 2009 +0200
@@ -2456,7 +2524,7 @@
Fixes typo in Makefile
commit b92c8e30191dd757c76239076eda82d0065f2348
-Merge: 54d70d3... 71a9574...
+Merge: 54d70d3 71a9574
Author: Ondrej Zajicek <santiago@crfreenet.org>
Date: Mon Aug 10 10:16:00 2009 +0200
@@ -2519,7 +2587,7 @@
Fixed bug related to reconfiguration of BGP with MD5 passwords.
commit dd7b4a13848f5a92b403a563e8e27a3cbdfc937f
-Merge: d1abbea... bffd4c0...
+Merge: d1abbea bffd4c0
Author: Ondrej Zajicek <santiago@crfreenet.org>
Date: Mon Jul 6 23:10:33 2009 +0200
@@ -2588,7 +2656,7 @@
nobody noticed it already.
commit 5004d02cb9df1f3ee231632a8e89929f4eb4f088
-Merge: 1876e18... 99355da...
+Merge: 1876e18 99355da
Author: Ondrej Zajicek <santiago@crfreenet.org>
Date: Fri Jun 26 01:06:12 2009 +0200
@@ -2831,7 +2899,7 @@
Add 'primary' configuration option.
commit 7c3d06b087946cbea4affa4a814e72b7a3556833
-Merge: f571473... 4c2507d...
+Merge: f571473 4c2507d
Author: Ondrej Zajicek <santiago@crfreenet.org>
Date: Thu May 28 13:58:51 2009 +0200
@@ -2917,7 +2985,7 @@
Better checks for M4 in configure.
commit 6c84554b671fce473fe333ab3d8b548a0768882b
-Merge: f434d19... 4d176e1...
+Merge: f434d19 4d176e1
Author: Ondrej Zajicek <santiago@crfreenet.org>
Date: Thu May 21 09:26:59 2009 +0200
@@ -3686,7 +3754,7 @@
Fixes some sloppiness of commit a3b70dc499b64f41aa776b5b4afee5c7bfb8dfa6.
commit a98fbf0f12b5e83e25afa0f585ca6a4d4ac5f6bf
-Merge: a3b70dc... 1567ede...
+Merge: a3b70dc 1567ede
Author: Ondrej Zajicek <santiago@crfreenet.org>
Date: Mon Oct 27 00:20:22 2008 +0100
|
[-]
[+]
|
Changed |
bird-1.3.4.tar.bz2/NEWS
^
|
@@ -1,9 +1,13 @@
+Version 1.3.4 (2011-10-10)
+ o Static recursive routes.
+ o Several bugfixes.
+
Version 1.3.3 (2011-09-11)
- o OSPF NSSA
- o BGP extended communities
- o BGP TTL security
- o Configuration option "include" added (based on patch from Alexander V. Chernikov)
+ o OSPF NSSA.
+ o BGP extended communities.
+ o BGP TTL security.
+ o Configuration option "include" added (based on patch from Alexander V. Chernikov).
o Some minor bugfixes.
Version 1.3.2 (2011-07-08)
@@ -31,7 +35,7 @@
o Much improved OSPF reconfiguration.
o Point-to-MultiPoint interfaces (OSPF).
o Minor changes and improvements in config file grammar.
- o Better community list matching
+ o Better community list matching.
o Changes default behavior of BGP IPv6 socket to v6only.
Use 'listen bgp dual' for the old behavior.
o Changes default for handling missing link-local addresses on
|
[-]
[+]
|
Changed |
bird-1.3.4.tar.bz2/conf/cf-lex.l
^
|
@@ -75,6 +75,7 @@
int (*cf_read_hook)(byte *buf, unsigned int max, int fd);
int (*cf_open_hook)(char *filename);
+struct include_file_stack *ifs;
#define YY_INPUT(buf,result,max) result = cf_read_hook(buf, max, ifs->conf_fd);
#define YY_NO_UNPUT
|
[-]
[+]
|
Changed |
bird-1.3.4.tar.bz2/conf/conf.h
^
|
@@ -120,7 +120,7 @@
struct include_file_stack *next;
};
-struct include_file_stack *ifs;
+extern struct include_file_stack *ifs;
int cf_lex(void);
|
[-]
[+]
|
Changed |
bird-1.3.4.tar.bz2/doc/bird-6.html
^
|
@@ -415,22 +415,22 @@
<PRE>
protocol bgp {
local as 65000; # Use a private AS number
- neighbor 62.168.0.130 as 5588; # Our neighbor ...
+ neighbor 198.51.100.130 as 64496; # Our neighbor ...
multihop; # ... which is connected indirectly
export filter { # We use non-trivial export rules
if source = RTS_STATIC then { # Export only static routes
# Assign our community
- bgp_community.add((65000,5678));
+ bgp_community.add((65000,64501));
# Artificially increase path length
# by advertising local AS number twice
- if bgp_path ~ [= 65000 =] then
- bgp_path.prepend(65000);
+ if bgp_path ~ [= 65000 =] then
+ bgp_path.prepend(65000);
accept;
}
reject;
};
import all;
- source address 62.168.0.1; # Use a non-standard source address
+ source address 198.51.100.14; # Use a non-standard source address
}
</PRE>
<HR>
@@ -1414,11 +1414,13 @@
you don't have any specific destination for them and you don't want to send
them out through the default route to prevent routing loops).
<P>
-<P>There are three types of static routes: `classical' routes telling to
-forward packets to a neighboring router, device routes specifying forwarding
-to hosts on a directly connected network and special routes (sink, blackhole
-etc.) which specify a special action to be done instead of forwarding the
-packet.
+<P>There are five types of static routes: `classical' routes telling
+to forward packets to a neighboring router, multipath routes
+specifying several (possibly weighted) neighboring routers, device
+routes specifying forwarding to hosts on a directly connected network,
+recursive routes computing their nexthops by doing route table lookups
+for a given IP and special routes (sink, blackhole etc.) which specify
+a special action to be done instead of forwarding the packet.
<P>
<P>When the particular destination is not available (the interface is down or
the next hop of the route is not a neighbor at the moment), Static just
@@ -1435,16 +1437,21 @@
with their weights.
<DT><CODE>route <I>prefix</I> via <I>"interface"</I></CODE><DD><P>Static device
route through an interface to hosts on a directly connected network.
+<DT><CODE>route <I>prefix</I> recursive <I>ip</I></CODE><DD><P>Static recursive route,
+its nexthop depends on a route table lookup for given IP address.
<DT><CODE>route <I>prefix</I> drop|reject|prohibit</CODE><DD><P>Special routes
specifying to drop the packet, return it as unreachable or return
it as administratively prohibited.
<P>
-<DT><CODE>check link <I>switch</I></CODE><DD><P>The only option of the static protocol. If set, hardware link
-states of network interfaces are taken into consideration.
-When link disappears (e.g. ethernet cable is unplugged),
-static routes directing to that interface are removed. It is
-possible that some hardware drivers or platforms do not
-implement this feature. Default: off.
+<DT><CODE>check link <I>switch</I></CODE><DD><P>If set, hardware link states of network interfaces are taken
+into consideration. When link disappears (e.g. ethernet cable
+is unplugged), static routes directing to that interface are
+removed. It is possible that some hardware drivers or
+platforms do not implement this feature. Default: off.
+<P>
+<DT><CODE>igp table <I>name</I></CODE><DD><P>Specifies a table that is used
+for route table lookups of recursive routes. Default: the
+same table as the protocol is connected to.
</DL>
<P>
<P>Static routes have no specific attributes.
@@ -1456,12 +1463,12 @@
<PRE>
protocol static {
table testable; # Connect to a non-default routing table
- route 0.0.0.0/0 via 62.168.0.13; # Default route
+ route 0.0.0.0/0 via 198.51.100.130; # Default route
route 10.0.0.0/8 multipath # Multipath route
- via 62.168.0.14 weight 2
- via 62.168.1.10
- via 62.168.1.11;
- route 62.168.0.0/25 reject; # Sink route
+ via 198.51.100.10 weight 2
+ via 198.51.100.20
+ via 192.0.2.1;
+ route 203.0.113.0/24 reject; # Sink route
route 10.2.0.0/24 via "arc0"; # Secondary network
}
</PRE>
|
[-]
[+]
|
Changed |
bird-1.3.4.tar.bz2/doc/bird-7.html
^
|
@@ -21,9 +21,8 @@
implemented in future versions of BIRD:
<P>
<UL>
-<LI>OSPF NSSA areas and opaque LSA's</LI>
+<LI>Opaque LSA's</LI>
<LI>Route aggregation and flap dampening</LI>
-<LI>Generation of IPv6 router advertisements</LI>
<LI>Multipath routes</LI>
<LI>Multicast routing protocols</LI>
<LI>Ports to other systems</LI>
|
[-]
[+]
|
Changed |
bird-1.3.4.tar.bz2/doc/bird.conf.example
^
|
@@ -10,7 +10,7 @@
#log "tmp" all;
# Override router ID
-#router id 62.168.0.1;
+#router id 198.51.100.1;
# You can define your own symbols...
#define xyzzy = (120+10);
@@ -66,12 +66,12 @@
# preference 1000; # Default preference of routes
# debug { states, routes, filters, interfaces, events, packets };
# debug all;
-# route 0.0.0.0/0 via 62.168.0.13;
-# route 62.168.0.0/25 reject;
+# route 0.0.0.0/0 via 198.51.100.13;
+# route 198.51.100.0/25 reject;
# route 10.0.0.0/8 reject;
-# route 10.1.1.0:255.255.255.0 via 62.168.0.3;
-# route 10.1.2.0:255.255.255.0 via 62.168.0.3;
-# route 10.1.3.0:255.255.255.0 via 62.168.0.4;
+# route 10.1.1.0:255.255.255.0 via 198.51.100.3;
+# route 10.1.2.0:255.255.255.0 via 198.51.100.3;
+# route 10.1.3.0:255.255.255.0 via 198.51.100.4;
# route 10.2.0.0/24 via "arc0";
}
@@ -168,7 +168,7 @@
# disabled;
# description "My BGP uplink";
# local as 65000;
-# neighbor 62.168.0.130 as 5588;
+# neighbor 198.51.100.130 as 64496;
# multihop;
# hold time 240;
# startup hold time 240;
@@ -183,7 +183,7 @@
# path metric 1; # Prefer routes with shorter paths (like Cisco does)
# default bgp_med 0; # MED value we use for comparison when none is defined
# default bgp_local_pref 0; # The same for local preference
-# source address 62.168.0.14; # What local address we use for the TCP connection
+# source address 198.51.100.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
@@ -193,7 +193,7 @@
# bgp_community = -empty-; bgp_community = add(bgp_community,(65000,5678));
# bgp_origin = 0;
# bgp_community = -empty-; bgp_community.add((65000,5678));
-# if (65000,5678) ~ bgp_community then
+# if (65000,64501) ~ bgp_community then
# bgp_community.add((0, 1));
# if bgp_path ~ [= 65000 =] then
# bgp_path.prepend(65000);
|
[-]
[+]
|
Changed |
bird-1.3.4.tar.bz2/doc/bird.sgml
^
|
@@ -1401,22 +1401,22 @@
<p><code>
protocol bgp {
local as 65000; # Use a private AS number
- neighbor 62.168.0.130 as 5588; # Our neighbor ...
+ neighbor 198.51.100.130 as 64496; # Our neighbor ...
multihop; # ... which is connected indirectly
export filter { # We use non-trivial export rules
if source = RTS_STATIC then { # Export only static routes
# Assign our community
- bgp_community.add((65000,5678));
+ bgp_community.add((65000,64501));
# Artificially increase path length
# by advertising local AS number twice
- if bgp_path ~ [= 65000 =] then
- bgp_path.prepend(65000);
+ if bgp_path ~ [= 65000 =] then
+ bgp_path.prepend(65000);
accept;
}
reject;
};
import all;
- source address 62.168.0.1; # Use a non-standard source address
+ source address 198.51.100.14; # Use a non-standard source address
}
</code>
@@ -2420,11 +2420,13 @@
you don't have any specific destination for them and you don't want to send
them out through the default route to prevent routing loops).
-<p>There are three types of static routes: `classical' routes telling to
-forward packets to a neighboring router, device routes specifying forwarding
-to hosts on a directly connected network and special routes (sink, blackhole
-etc.) which specify a special action to be done instead of forwarding the
-packet.
+<p>There are five types of static routes: `classical' routes telling
+to forward packets to a neighboring router, multipath routes
+specifying several (possibly weighted) neighboring routers, device
+routes specifying forwarding to hosts on a directly connected network,
+recursive routes computing their nexthops by doing route table lookups
+for a given IP and special routes (sink, blackhole etc.) which specify
+a special action to be done instead of forwarding the packet.
<p>When the particular destination is not available (the interface is down or
the next hop of the route is not a neighbor at the moment), Static just
@@ -2442,17 +2444,22 @@
with their weights.
<tag>route <m/prefix/ via <m/"interface"/</tag> Static device
route through an interface to hosts on a directly connected network.
+ <tag>route <m/prefix/ recursive <m/ip/</tag> Static recursive route,
+ its nexthop depends on a route table lookup for given IP address.
<tag>route <m/prefix/ drop|reject|prohibit</tag> Special routes
specifying to drop the packet, return it as unreachable or return
it as administratively prohibited.
- <tag>check link <M>switch</M></tag>
- The only option of the static protocol. If set, hardware link
- states of network interfaces are taken into consideration.
- When link disappears (e.g. ethernet cable is unplugged),
- static routes directing to that interface are removed. It is
- possible that some hardware drivers or platforms do not
- implement this feature. Default: off.
+ <tag>check link <m/switch/</tag>
+ If set, hardware link states of network interfaces are taken
+ into consideration. When link disappears (e.g. ethernet cable
+ is unplugged), static routes directing to that interface are
+ removed. It is possible that some hardware drivers or
+ platforms do not implement this feature. Default: off.
+
+ <tag>igp table <m/name/</tag> Specifies a table that is used
+ for route table lookups of recursive routes. Default: the
+ same table as the protocol is connected to.
</descrip>
<p>Static routes have no specific attributes.
@@ -2462,12 +2469,12 @@
<p><code>
protocol static {
table testable; # Connect to a non-default routing table
- route 0.0.0.0/0 via 62.168.0.13; # Default route
+ route 0.0.0.0/0 via 198.51.100.130; # Default route
route 10.0.0.0/8 multipath # Multipath route
- via 62.168.0.14 weight 2
- via 62.168.1.10
- via 62.168.1.11;
- route 62.168.0.0/25 reject; # Sink route
+ via 198.51.100.10 weight 2
+ via 198.51.100.20
+ via 192.0.2.1;
+ route 203.0.113.0/24 reject; # Sink route
route 10.2.0.0/24 via "arc0"; # Secondary network
}
</code>
@@ -2481,9 +2488,8 @@
implemented in future versions of BIRD:
<itemize>
-<item>OSPF NSSA areas and opaque LSA's
+<item>Opaque LSA's
<item>Route aggregation and flap dampening
-<item>Generation of IPv6 router advertisements
<item>Multipath routes
<item>Multicast routing protocols
<item>Ports to other systems
|
[-]
[+]
|
Changed |
bird-1.3.4.tar.bz2/filter/config.Y
^
|
@@ -347,7 +347,7 @@
/* Declarations that have no ';' at the end. */
declsn: one_decl { $$ = $1; }
- | declsn ';' one_decl {
+ | one_decl ';' declsn {
$$ = $1;
$$->aux2 = $3;
}
|
[-]
[+]
|
Changed |
bird-1.3.4.tar.bz2/filter/filter.c
^
|
@@ -1214,6 +1214,7 @@
case '|':
case '&':
case P('m','p'):
+ case P('m','c'):
case P('!','='):
case P('=','='):
case '<':
|
[-]
[+]
|
Changed |
bird-1.3.4.tar.bz2/lib/ip.c
^
|
@@ -27,9 +27,9 @@
char *
ip_scope_text(unsigned scope)
{
- static char *scope_table[] = { "host", "link", "site", "org", "univ" };
+ static char *scope_table[] = { "host", "link", "site", "org", "univ", "undef" };
- if (scope > SCOPE_UNIVERSE)
+ if (scope > SCOPE_UNDEFINED)
return "?";
else
return scope_table[scope];
|
[-]
[+]
|
Changed |
bird-1.3.4.tar.bz2/lib/ip.h
^
|
@@ -37,6 +37,7 @@
#define SCOPE_SITE 2
#define SCOPE_ORGANIZATION 3
#define SCOPE_UNIVERSE 4
+#define SCOPE_UNDEFINED 5
char *ip_scope_text(unsigned);
|
[-]
[+]
|
Changed |
bird-1.3.4.tar.bz2/lib/ipv6.c
^
|
@@ -85,6 +85,7 @@
case 5: return IADDR_MULTICAST | SCOPE_SITE;
case 8: return IADDR_MULTICAST | SCOPE_ORGANIZATION;
case 14: return IADDR_MULTICAST | SCOPE_UNIVERSE;
+ default: return IADDR_MULTICAST | SCOPE_UNDEFINED;
}
}
if (!x && !a->addr[1] && !a->addr[2])
@@ -102,7 +103,7 @@
if (y >= 0x01000000 && y < 0xe0000000)
return IADDR_HOST | SCOPE_UNIVERSE;
}
- return IADDR_INVALID;
+ return IADDR_HOST | SCOPE_UNDEFINED;
}
void
|
[-]
[+]
|
Changed |
bird-1.3.4.tar.bz2/nest/cli.c
^
|
@@ -224,7 +224,7 @@
struct cli *this_cli;
static int
-cli_cmd_read_hook(byte *buf, unsigned int max)
+cli_cmd_read_hook(byte *buf, unsigned int max, UNUSED int fd)
{
if (!cli_rh_trick_flag)
{
|
[-]
[+]
|
Changed |
bird-1.3.4.tar.bz2/nest/config.Y
^
|
@@ -49,7 +49,7 @@
CF_ENUM(T_ENUM_RTS, RTS_, DUMMY, STATIC, INHERIT, DEVICE, STATIC_DEVICE, REDIRECT,
RIP, OSPF, OSPF_IA, OSPF_EXT1, OSPF_EXT2, BGP, PIPE)
-CF_ENUM(T_ENUM_SCOPE, SCOPE_, HOST, LINK, SITE, ORGANIZATION, UNIVERSE)
+CF_ENUM(T_ENUM_SCOPE, SCOPE_, HOST, LINK, SITE, ORGANIZATION, UNIVERSE, UNDEFINED)
CF_ENUM(T_ENUM_RTC, RTC_, UNICAST, BROADCAST, MULTICAST, ANYCAST)
CF_ENUM(T_ENUM_RTD, RTD_, ROUTER, DEVICE, BLACKHOLE, UNREACHABLE, PROHIBIT, MULTIPATH)
|
[-]
[+]
|
Changed |
bird-1.3.4.tar.bz2/nest/route.h
^
|
@@ -321,6 +321,10 @@
#define RTD_MULTIPATH 5 /* Multipath route (nexthops != NULL) */
#define RTD_NONE 6 /* Invalid RTD */
+ /* Flags for net->n.flags, used by kernel syncer */
+#define KRF_INSTALLED 0x80 /* This route should be installed in the kernel */
+#define KRF_SYNC_ERROR 0x40 /* Error during kernel table synchronization */
+
#define RTAF_CACHED 1 /* This is a cached rta */
#define IGP_METRIC_UNKNOWN 0x80000000 /* Default igp_metric used when no other
|
[-]
[+]
|
Changed |
bird-1.3.4.tar.bz2/nest/rt-table.c
^
|
@@ -1645,6 +1645,7 @@
byte tm[TM_DATETIME_BUFFER_SIZE], info[256];
rta *a = e->attrs;
int primary = (e->net->routes == e);
+ int sync_error = (e->net->n.flags & KRF_SYNC_ERROR);
struct mpnh *nh;
rt_format_via(e, via);
@@ -1667,7 +1668,7 @@
else
bsprintf(info, " (%d)", e->pref);
cli_printf(c, -1007, "%-18s %s [%s %s%s]%s%s", ia, via, a->proto->name,
- tm, from, primary ? " *" : "", info);
+ tm, from, primary ? (sync_error ? " !" : " *") : "", info);
for (nh = a->nexthops; nh; nh = nh->next)
cli_printf(c, -1007, "\tvia %I on %s weight %d", nh->gw, nh->iface->name, nh->weight + 1);
if (d->verbose)
|
[-]
[+]
|
Changed |
bird-1.3.4.tar.bz2/proto/ospf/packet.c
^
|
@@ -499,7 +499,7 @@
{
// struct ospf_iface *ifa= (struct ospf_iface *) (sk->data);
// struct proto *p = (struct proto *) (ifa->oa->po);
- log(L_ERR "OSPF: Socket error: %m", err);
+ log(L_ERR "OSPF: Socket error: %M", err);
}
void
|
[-]
[+]
|
Changed |
bird-1.3.4.tar.bz2/proto/ospf/topology.c
^
|
@@ -786,7 +786,7 @@
{
if (check_sum_net_lsaid_collision(fn, en))
{
- log(L_ERR, "%s: LSAID collision for %I/%d",
+ log(L_ERR "%s: LSAID collision for %I/%d",
p->name, fn->prefix, fn->pxlen);
return;
}
@@ -864,7 +864,7 @@
{
if ((type == ORT_NET) && check_sum_net_lsaid_collision(fn, en))
{
- log(L_ERR, "%s: LSAID collision for %I/%d",
+ log(L_ERR "%s: LSAID collision for %I/%d",
p->name, fn->prefix, fn->pxlen);
return;
}
@@ -1004,7 +1004,6 @@
WALK_LIST(ifa, po->iface_list)
{
if ((ifa->oa != oa) ||
- (ifa->state == OSPF_IS_DOWN) ||
(ifa->type == OSPF_IT_VLINK))
continue;
@@ -1091,7 +1090,7 @@
fwaddr = find_surrogate_fwaddr(oa);
if (ipa_zero(fwaddr))
{
- log(L_ERR, "%s: Cannot find forwarding address for NSSA-LSA %I/%d",
+ log(L_ERR "%s: Cannot find forwarding address for NSSA-LSA %I/%d",
p->name, fn->prefix, fn->pxlen);
return;
}
@@ -1102,7 +1101,7 @@
int rv = check_ext_lsa(en, fn, metric, fwaddr, tag);
if (rv < 0)
{
- log(L_ERR, "%s: LSAID collision for %I/%d",
+ log(L_ERR "%s: LSAID collision for %I/%d",
p->name, fn->prefix, fn->pxlen);
return;
}
@@ -1150,7 +1149,7 @@
{
if (check_ext_lsa(en, fn, 0, IPA_NONE, 0) < 0)
{
- log(L_ERR, "%s: LSAID collision for %I/%d",
+ log(L_ERR "%s: LSAID collision for %I/%d",
p->name, fn->prefix, fn->pxlen);
return;
}
|
[-]
[+]
|
Changed |
bird-1.3.4.tar.bz2/proto/static/config.Y
^
|
@@ -18,7 +18,7 @@
CF_DECLS
CF_KEYWORDS(STATIC, ROUTE, VIA, DROP, REJECT, PROHIBIT, PREFERENCE, CHECK, LINK)
-CF_KEYWORDS(MULTIPATH, WEIGHT)
+CF_KEYWORDS(MULTIPATH, WEIGHT, RECURSIVE, IGP, TABLE)
CF_GRAMMAR
@@ -35,6 +35,7 @@
static_proto_start proto_name '{'
| static_proto proto_item ';'
| static_proto CHECK LINK bool ';' { STATIC_CFG->check_link = $4; }
+ | static_proto IGP TABLE rtable ';' { STATIC_CFG->igp_table = $4; }
| static_proto stat_route ';'
;
@@ -79,6 +80,10 @@
| stat_route0 MULTIPATH stat_multipath {
this_srt->dest = RTD_MULTIPATH;
}
+ | stat_route0 RECURSIVE ipa {
+ this_srt->dest = RTDX_RECURSIVE;
+ this_srt->via = $3;
+ }
| stat_route0 DROP { this_srt->dest = RTD_BLACKHOLE; }
| stat_route0 REJECT { this_srt->dest = RTD_UNREACHABLE; }
| stat_route0 PROHIBIT { this_srt->dest = RTD_PROHIBIT; }
|
[-]
[+]
|
Changed |
bird-1.3.4.tar.bz2/proto/static/static.c
^
|
@@ -47,6 +47,14 @@
#include "static.h"
+static inline rtable *
+p_igp_table(struct proto *p)
+{
+ struct static_config *cf = (void *) p->cf;
+ return cf->igp_table ? cf->igp_table->table : p->table;
+}
+
+
static void
static_install(struct proto *p, struct static_route *r, struct iface *ifa)
{
@@ -97,6 +105,9 @@
a.nexthops = nhs;
}
+ if (r->dest == RTDX_RECURSIVE)
+ rta_set_recursive_next_hop(p->table, &a, p_igp_table(p), &r->via, &r->via);
+
aa = rta_lookup(&a);
n = net_get(p->table, r->net, r->masklen);
e = rte_get_temp(aa);
@@ -207,31 +218,45 @@
static int
static_start(struct proto *p)
{
- struct static_config *c = (void *) p->cf;
+ struct static_config *cf = (void *) p->cf;
struct static_route *r;
DBG("Static: take off!\n");
- WALK_LIST(r, c->other_routes)
- static_add(p, c, r);
+
+ if (cf->igp_table)
+ rt_lock_table(cf->igp_table->table);
+
+ WALK_LIST(r, cf->other_routes)
+ static_add(p, cf, r);
return PS_UP;
}
static int
static_shutdown(struct proto *p)
{
- struct static_config *c = (void *) p->cf;
+ struct static_config *cf = (void *) p->cf;
struct static_route *r;
/* Just reset the flag, the routes will be flushed by the nest */
- WALK_LIST(r, c->iface_routes)
+ WALK_LIST(r, cf->iface_routes)
r->installed = 0;
- WALK_LIST(r, c->other_routes)
+ WALK_LIST(r, cf->other_routes)
r->installed = 0;
return PS_DOWN;
}
static void
+static_cleanup(struct proto *p)
+{
+ struct static_config *cf = (void *) p->cf;
+
+ if (cf->igp_table)
+ rt_unlock_table(cf->igp_table->table);
+}
+
+
+static void
static_neigh_notify(struct neighbor *n)
{
struct proto *p = n->proto;
@@ -373,6 +398,9 @@
return 0;
return !x && !y;
+ case RTDX_RECURSIVE:
+ return ipa_equal(x->via, y->via);
+
default:
return 1;
}
@@ -407,6 +435,12 @@
static_remove(p, r);
}
+static inline rtable *
+cf_igp_table(struct static_config *cf)
+{
+ return cf->igp_table ? cf->igp_table->table : NULL;
+}
+
static int
static_reconfigure(struct proto *p, struct proto_config *new)
{
@@ -414,6 +448,9 @@
struct static_config *n = (void *) new;
struct static_route *r;
+ if (cf_igp_table(o) != cf_igp_table(n))
+ return 0;
+
/* Delete all obsolete routes and reset neighbor entries */
WALK_LIST(r, o->iface_routes)
static_match(p, r, n);
@@ -440,6 +477,7 @@
dump: static_dump,
start: static_start,
shutdown: static_shutdown,
+ cleanup: static_cleanup,
reconfigure: static_reconfigure,
};
@@ -456,6 +494,7 @@
case RTD_UNREACHABLE: bsprintf(via, "unreachable"); break;
case RTD_PROHIBIT: bsprintf(via, "prohibited"); break;
case RTD_MULTIPATH: bsprintf(via, "multipath"); break;
+ case RTDX_RECURSIVE: bsprintf(via, "recursive %I", r->via); break;
default: bsprintf(via, "???");
}
cli_msg(-1009, "%I/%d %s%s", r->net, r->masklen, via, r->installed ? "" : " (dormant)");
|
[-]
[+]
|
Changed |
bird-1.3.4.tar.bz2/proto/static/static.h
^
|
@@ -13,7 +13,8 @@
struct proto_config c;
list iface_routes; /* Routes to search on interface events */
list other_routes; /* Routes hooked to neighbor cache and reject routes */
- int check_link; /* Whether iface link state is used */
+ int check_link; /* Whether iface link state is used */
+ struct rtable_config *igp_table; /* Table used for recursive next hop lookups */
};
@@ -35,6 +36,9 @@
/* Dummy nodes (parts of multipath route) abuses masklen field for weight
and if_name field for a ptr to the master (RTD_MULTIPATH) node. */
+
+#define RTDX_RECURSIVE 0x7f /* Phony dest value for recursive routes */
+
void static_show(struct proto *);
#endif
|
[-]
[+]
|
Changed |
bird-1.3.4.tar.bz2/sysdep/bsd/krt-sock.c
^
|
@@ -68,7 +68,7 @@
memcpy(p, body, (l > sizeof(*p) ? sizeof(*p) : l));\
body += l;}
-static void
+static int
krt_sock_send(int cmd, rte *e)
{
net *net = e->net;
@@ -160,7 +160,7 @@
if(!i->addr) {
log(L_ERR "KRT: interface %s has no IP addess", i->name);
- return;
+ return -1;
}
fill_in_sockaddr(&gate, i->addr->ip, 0);
@@ -181,23 +181,28 @@
msg.rtm.rtm_msglen = l;
if ((l = write(rt_sock, (char *)&msg, l)) < 0) {
- log(L_ERR "KRT: Error sending route %I/%d to kernel", net->n.prefix, net->n.pxlen);
+ log(L_ERR "KRT: Error sending route %I/%d to kernel: %m", net->n.prefix, net->n.pxlen);
+ return -1;
}
+
+ return 0;
}
void
-krt_set_notify(struct krt_proto *p UNUSED, net *net, rte *new, rte *old)
+krt_set_notify(struct krt_proto *p UNUSED, net *n, rte *new, rte *old)
{
+ int err = 0;
+
if (old)
- {
- DBG("krt_remove_route(%I/%d)\n", net->n.prefix, net->n.pxlen);
- krt_sock_send(RTM_DELETE, old);
- }
+ krt_sock_send(RTM_DELETE, old);
+
if (new)
- {
- DBG("krt_add_route(%I/%d)\n", net->n.prefix, net->n.pxlen);
- krt_sock_send(RTM_ADD, new);
- }
+ err = krt_sock_send(RTM_ADD, new);
+
+ if (err < 0)
+ n->n.flags |= KRF_SYNC_ERROR;
+ else
+ n->n.flags &= ~KRF_SYNC_ERROR;
}
static int
|
[-]
[+]
|
Changed |
bird-1.3.4.tar.bz2/sysdep/config.h
^
|
@@ -7,7 +7,7 @@
#define _BIRD_CONFIG_H_
/* BIRD version */
-#define BIRD_VERSION "1.3.3"
+#define BIRD_VERSION "1.3.4"
/* Include parameters determined by configure script */
#include "sysdep/autoconf.h"
|
[-]
[+]
|
Changed |
bird-1.3.4.tar.bz2/sysdep/linux/netlink/netlink.c
^
|
@@ -198,7 +198,7 @@
break;
log(L_WARN "nl_exchange: Unexpected reply received");
}
- return nl_error(h);
+ return nl_error(h) ? -1 : 0;
}
/*
@@ -616,7 +616,7 @@
return rv;
}
-static void
+static int
nl_send_route(struct krt_proto *p, rte *e, int new)
{
eattr *ea;
@@ -663,7 +663,7 @@
break;
case RTD_DEVICE:
if (!a->iface)
- return;
+ return -1;
r.r.rtm_type = RTN_UNICAST;
nl_add_attr_u32(&r.h, sizeof(r), RTA_OIF, a->iface->index);
break;
@@ -684,17 +684,24 @@
bug("krt_capable inconsistent with nl_send_route");
}
- nl_exchange(&r.h);
+ return nl_exchange(&r.h);
}
void
-krt_set_notify(struct krt_proto *p, net *n UNUSED, rte *new, rte *old)
+krt_set_notify(struct krt_proto *p, net *n, rte *new, rte *old)
{
+ int err = 0;
+
if (old)
nl_send_route(p, old, 0);
if (new)
- nl_send_route(p, new, 1);
+ err = nl_send_route(p, new, 1);
+
+ if (err < 0)
+ n->n.flags |= KRF_SYNC_ERROR;
+ else
+ n->n.flags &= ~KRF_SYNC_ERROR;
}
|
[-]
[+]
|
Changed |
bird-1.3.4.tar.bz2/sysdep/unix/krt.h
^
|
@@ -19,7 +19,7 @@
#include "lib/krt-set.h"
#include "lib/krt-iface.h"
-/* Flags stored in net->n.flags */
+/* Flags stored in net->n.flags, rest are in nest/route.h */
#define KRF_VERDICT_MASK 0x0f
#define KRF_CREATE 0 /* Not seen in kernel table */
@@ -28,9 +28,6 @@
#define KRF_DELETE 3 /* Should be deleted */
#define KRF_IGNORE 4 /* To be ignored */
-#define KRF_INSTALLED 0x80 /* This route should be installed in the kernel */
-
-
#define EA_KRT_PREFSRC EA_CODE(EAP_KRT, 0)
#define EA_KRT_REALM EA_CODE(EAP_KRT, 1)
|
[-]
[+]
|
Changed |
bird-1.3.4.tar.bz2/sysdep/unix/main.c
^
|
@@ -171,11 +171,14 @@
if (*filename != '/') {
snprintf(full_name, sizeof(full_name), "%s/%s", dirname(config_name), filename);
+ full_name[sizeof(full_name)-1] = 0;
cur = full_name;
}
if ((ret = open(cur, O_RDONLY)) == -1)
cf_error("Unable to open included configuration file: %s", cur);
+
+ return ret;
}
|