Commit 283c7dfa authored by Ondrej Zajicek's avatar Ondrej Zajicek
Browse files

Merge branch 'master' into add-path

parents 736e143f 0bb4e37d
Loading
Loading
Loading
Loading
+13 −2
Original line number Diff line number Diff line
Version 1.3.12 (2013-11-23)
Version 1.4.0 (2013-11-25)
  o BFD protocol (RFC 5880).
  o BFD support for OSPF and BGP.
  o New 'allow local as' option for BGP.
  o Filters allows setting gw, ifname and ifindex.
  o Filter operator 'delete/filter' extended to bgp_paths.
  o Filter operator 'len' extended to [e]clists.
  o PID file support.
  o BIRD client now allows shorthands for noninteractive commands.
  o Flag -P for PID file support.
  o Flag -f added to force BIRD to run in foreground.
  o Protocol export/import/receive limits are checked during reconfiguration.
  o Several bugfixes and minor improvements.
  o Several minor but incompatible changes:
     - IBGP is multihop by default.
     - Changes primary address selection on BSD to the first one.
     - Integers in filters are handled as unsigned.
     - ISO 8601 time formats used by default.
     - Import of device routes from kernel protocol allowed.
     - Last state change now tracks just protocol state change.
     - Minor changes to default router ID calculation.
 
Version 1.3.11 (2013-07-27)
  o OSPF stub router option (RFC 3137).
+16 −1
Original line number Diff line number Diff line
@@ -137,6 +137,21 @@ submit_server_command(char *cmd)
  server_send(cmd);
}

static inline void
submit_init_command(char *cmd_raw)
{
  char *cmd = cmd_expand(cmd_raw);

  if (!cmd)
  {
    cleanup();
    exit(0);
  }

  submit_server_command(cmd);
  free(cmd);
}

void
submit_command(char *cmd_raw)
{
@@ -165,7 +180,7 @@ init_commands(void)
    {
      /* First transition - client received hello from BIRD
	 and there is waiting initial command */
      submit_server_command(init_cmd);
      submit_init_command(init_cmd);
      init_cmd = NULL;
      return;
    }
+2 −1
Original line number Diff line number Diff line
@@ -96,7 +96,8 @@ config_alloc(byte *name)
  cfg_mem = c->mem = l;
  c->file_name = cfg_strdup(name);
  c->load_time = now;
  c->tf_base.fmt1 = c->tf_log.fmt1 = "%d-%m-%Y %T";
  c->tf_route = c->tf_proto = (struct timeformat){"%T", "%F", 20*3600};
  c->tf_base = c->tf_log = (struct timeformat){"%F %T", NULL, 0};

  return c;
}
+49 −37
Original line number Diff line number Diff line
@@ -256,7 +256,10 @@ which allows you to talk with BIRD in an extensive way.
<p>In the config, everything on a line after <cf/#/ or inside <cf>/*
*/</cf> is a comment, whitespace characters are treated as a single space. If there's a variable number of options, they are grouped using
the <cf/{ }/ brackets. Each option is terminated by a <cf/;/. Configuration
is case sensitive.
is case sensitive. There are two ways how to name symbols (like protocol names, filter names, constats etc.). You can either use
a simple string starting with a letter followed by any combination of letters and numbers (e.g. "R123", "myfilter", "bgp5") or you
can enclose the name into apostrophes (<cf/'/) and than you can use any combination of numbers, letters. hyphens, dots and colons
(e.g. "'1:strange-name'", "'-NAME-'", "'cool::name'").

<p>Here is an example of a simple config file. It enables
synchronization of routing tables with OS kernel, scans for 
@@ -377,7 +380,7 @@ protocol rip {
	"<m/format1/" is a format string using <it/strftime(3)/
	notation (see <it/man strftime/ for details). <m/limit> and
	"<m/format2/" allow to specify the second format string for
	times in past deeper than <m/limit/ seconds. There are two
	times in past deeper than <m/limit/ seconds. There are few
	shorthands: <cf/iso long/ is a ISO 8601 date/time format
	(YYYY-MM-DD hh:mm:ss) that can be also specified using <cf/"%F
	%T"/. <cf/iso short/ is a variant of ISO 8601 that uses just
@@ -385,11 +388,15 @@ protocol rip {
	the past) and the date format (YYYY-MM-DD) for far times. This
	is a shorthand for <cf/"%T" 72000 "%F"/.

	By default, BIRD uses an short, ad-hoc format for <cf/route/
	and <cf/protocol/ times, and a <cf/iso long/ similar format
	(DD-MM-YYYY hh:mm:ss) for <cf/base/ and <cf/log/. These
	defaults are here for a compatibility with older versions
	and might change in the future.
	By default, BIRD uses the <cf/iso short/ format for <cf/route/ and
	<cf/protocol/ times, and the <cf/iso long/ format for <cf/base/ and
	<cf/log/ times.

	In pre-1.4.0 versions, BIRD used an short, ad-hoc format for
	<cf/route/ and <cf/protocol/ times, and a <cf/iso long/ similar format
	(DD-MM-YYYY hh:mm:ss) for <cf/base/ and <cf/log/. These timeformats
	could be set by <cf/old short/ and <cf/old long/ compatibility
	shorthands.

	<tag>table <m/name/ [sorted]</tag>
	Create a new routing table. The default routing table is
@@ -922,9 +929,10 @@ incompatible with each other (that is to prevent you from shooting in the foot).
	  <cf/true/ and <cf/false/. Boolean is the only type you can use in
	  <cf/if/ statements.

	<tag/int/ This is a general integer type, you can expect it to store
	  signed values from -2000000000 to +2000000000. Overflows are not
	  checked. You can use <cf/0x1234/ syntax to write hexadecimal values.
	<tag/int/ This is a general integer type. It is an unsigned 32bit type;
	  i.e., you can expect it to store values from 0 to 4294967295.
	  Overflows are not checked. You can use <cf/0x1234/ syntax to write
	  hexadecimal values.

	<tag/pair/ This is a pair of two short integers. Each component can have
	  values from 0 to 65535. Literals of this type are written as
@@ -1532,33 +1540,37 @@ This allows to set routing policy and all the other parameters differently
for each neighbor using the following configuration parameters:

<descrip>
	<tag>local [<m/ip/] as <m/number/</tag> Define which AS we
	are part of. (Note that contrary to other IP routers, BIRD is
	able to act as a router located in multiple AS'es
	simultaneously, but in such cases you need to tweak the BGP
	paths manually in the filters to get consistent behavior.)
	Optional <cf/ip/ argument specifies a source address,
	equivalent to the <cf/source address/ option (see below).
	<tag>local [<m/ip/] as <m/number/</tag> Define which AS we are part
	of. (Note that contrary to other IP routers, BIRD is able to act as a
	router located in multiple AS'es simultaneously, but in such cases you
	need to tweak the BGP paths manually in the filters to get consistent
	behavior.) Optional <cf/ip/ argument specifies a source address,
	equivalent to the <cf/source address/ option (see below).  This
	parameter is mandatory.

	<tag>neighbor <m/ip/ as <m/number/</tag> Define neighboring router this
	instance will be talking to and what AS it's located in. In case the
	neighbor is in the same AS as we are, we automatically switch to iBGP.
	This parameter is mandatory.

	<tag>neighbor <m/ip/ as <m/number/</tag> Define neighboring router
	this instance will be talking to and what AS it's located in. Unless
	you use the <cf/multihop/ clause, it must be directly connected to one
	of your router's interfaces. In case the neighbor is in the same AS
	as we are, we automatically switch to iBGP. This parameter is mandatory.

	<tag>multihop [<m/number/]</tag> Configure multihop BGP
	session to a neighbor that isn't directly connected.
	Accurately, this option should be used if the configured
	neighbor IP address does not match with any local network
	subnets. Such IP address have to be reachable through system
	routing table. For multihop BGP it is recommended to
	explicitly configure <cf/source address/ to have it
	stable. Optional <cf/number/ argument can be used to specify
	the number of hops (used for TTL). Note that the number of
	networks (edges) in a path is counted, i.e. if two BGP
	speakers are separated by one router, the number of hops is
	2. Default: switched off.
	<tag>direct</tag> Specify that the neighbor is directly connected. The
	IP address of the neighbor must be from a directly reachable IP range
	(i.e. associated with one of your router's interfaces), otherwise the
	BGP session wouldn't start but it would wait for such interface to
	appear. The alternative is the <cf/multihop/ option.  Default: enabled
	for eBGP.

	<tag>multihop [<m/number/]</tag> Configure multihop BGP session to a
	neighbor that isn't directly connected.  Accurately, this option should
	be used if the configured neighbor IP address does not match with any
	local network subnets. Such IP address have to be reachable through
	system routing table.  The alternative is the <cf/direct/ option. For
	multihop BGP it is recommended to explicitly configure the source
	address to have it stable. Optional <cf/number/ argument can be used to
	specify the number of hops (used for TTL). Note that the number of
	networks (edges) in a path is counted; i.e., if two BGP speakers are
	separated by one router, the number of hops is 2. Default: enabled for
	iBGP.

	<tag>source address <m/ip/</tag> Define local address we
	should use for next hop calculation and as a source address
@@ -1605,8 +1617,8 @@ for each neighbor using the following configuration parameters:
	table, and was used in older versions of BIRD, but does not
	handle well nontrivial iBGP setups and multihop.  Recursive
	mode is incompatible with <ref id="dsc-sorted" name="sorted
	tables">. Default: <cf/direct/ for singlehop eBGP,
	<cf/recursive/ otherwise.
	tables">. Default: <cf/direct/ for direct sessions,
	<cf/recursive/ for multihop sessions.

	<tag>igp table <m/name/</tag> Specifies a table that is used
	as an IGP routing table. Default: the same as the table BGP is
+1 −0
Original line number Diff line number Diff line
@@ -53,6 +53,7 @@ Reply codes of BIRD command-line interface
1017	Show ospf lsadb
1018	Show memory
1019	Show ROA list
1020	Show BFD sessions

8000	Reply too long
8001	Route not found
Loading