mirror of
				https://gitlab.labs.nic.cz/labs/bird.git
				synced 2024-05-11 16:54:54 +00:00 
			
		
		
		
	Based on the patch from Alexander V. Chernikov.
Extended to support almost all protocols.
Uses 'protocol bgp NAME from TEMPLATE { ... }' syntax.
		
	
		
			
				
	
	
		
			218 lines
		
	
	
		
			6.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			218 lines
		
	
	
		
			6.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| /*
 | |
|  *	This is an example configuration file.
 | |
|  */
 | |
| 
 | |
| # Yes, even shell-like comments work...
 | |
| 
 | |
| # Configure logging
 | |
| #log syslog { debug, trace, info, remote, warning, error, auth, fatal, bug };
 | |
| #log stderr all;
 | |
| #log "tmp" all;
 | |
| 
 | |
| # Override router ID
 | |
| #router id 198.51.100.1;
 | |
| 
 | |
| # You can define your own symbols...
 | |
| #define xyzzy = (120+10);
 | |
| #define '1a-a1' = (30+40);
 | |
| 
 | |
| # Define a route filter...
 | |
| #filter test_filter {
 | |
| #	if net ~ 10.0.0.0/16 then accept;
 | |
| #	else reject;
 | |
| #}
 | |
| 
 | |
| #filter sink { reject; }
 | |
| #filter okay { accept; }
 | |
| 
 | |
| #include "filters.conf";
 | |
| 
 | |
| # Define another routing table
 | |
| #table testable;
 | |
| 
 | |
| # Turn on global debugging of all protocols
 | |
| #debug protocols all;
 | |
| 
 | |
| # 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 "-eth*", "*";	# Restrict network interfaces it works with
 | |
| #}
 | |
| 
 | |
| # This pseudo-protocol performs synchronization between BIRD's routing
 | |
| # tables and the kernel. If your kernel supports multiple routing tables
 | |
| # (as Linux 2.2.x does), 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
 | |
| #	kernel table 5;		# Kernel table to synchronize with (default: main)
 | |
| }
 | |
| 
 | |
| # 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 {
 | |
| #	disabled;		# Disable by default
 | |
| #	table testable;		# Connect to a non-default table
 | |
| #	preference 1000;	# Default preference of routes
 | |
| #	debug { states, routes, filters, interfaces, events, packets };
 | |
| #	debug all;
 | |
| #	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 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";
 | |
| }
 | |
| 
 | |
| # Pipe protocol connects two routing tables... Beware of loops.
 | |
| #protocol pipe {
 | |
| #	peer table testable;
 | |
| # Define what routes do we export to this protocol / import from it.
 | |
| #	import all;		# default is all
 | |
| #	export all;		# default is none
 | |
| #	import none;		# If you wish to disable imports
 | |
| #	import filter test_filter;		# Use named filter
 | |
| #	import where source = RTS_DEVICE;	# Use explicit filter
 | |
| #}
 | |
| 
 | |
| # RIP aka Rest In Pieces...
 | |
| #protocol rip MyRIP {	# You can also use an explicit name
 | |
| #	preference xyzzy;
 | |
| #	debug all;
 | |
| #	port 1520;
 | |
| #	period 7;
 | |
| #	infinity 16;
 | |
| #	garbage time 60;
 | |
| #	interface "*" { mode broadcast; };
 | |
| #	honor neighbor;		# To whom do we agree to send the routing table
 | |
| #	honor always;
 | |
| #	honor never;
 | |
| #	passwords {
 | |
| #		password "nazdar";
 | |
| #	};
 | |
| #	authentication none;
 | |
| #	import filter { print "importing"; accept; };
 | |
| #	export filter { print "exporting"; accept; };
 | |
| #}
 | |
| 
 | |
| #protocol ospf MyOSPF {
 | |
| #       tick 2;
 | |
| #	rfc1583compat yes;
 | |
| #	area 0.0.0.0 {
 | |
| #		stub no;
 | |
| #		interface "eth*" {
 | |
| #			hello 9;
 | |
| #			retransmit 6;
 | |
| #			cost 10;
 | |
| #			transmit delay 5;
 | |
| #			dead count 5;
 | |
| #			wait 50;
 | |
| #			type broadcast;
 | |
| #			authentication simple;
 | |
| #			password "pass";
 | |
| #		};
 | |
| #		interface "arc0" {
 | |
| #			rx buffer large;
 | |
| #			type nonbroadcast;
 | |
| #			poll 14;
 | |
| #			dead 75;
 | |
| #			neighbors {
 | |
| #				10.1.1.2 eligible;
 | |
| #				10.1.1.4;
 | |
| #			};
 | |
| #			strict nonbroadcast yes;
 | |
| #		};
 | |
| #		interface "xxx0" {
 | |
| #                       passwords {
 | |
| #				password "abc" {
 | |
| #					id 1;
 | |
| #					generate to "22-04-2003 11:00:06";
 | |
| #					accept to "17-01-2004 12:01:05";
 | |
| #				};
 | |
| #				password "def" {
 | |
| #					id 2;
 | |
| #					generate from "22-04-2003 11:00:07";
 | |
| #					accept from "17-01-2003 12:01:05";
 | |
| #				};
 | |
| #			};
 | |
| #                       authentication cryptographic;
 | |
| #		};
 | |
| #	};
 | |
| #	area 20 {
 | |
| #		stub 1;
 | |
| #		interface "ppp1" {
 | |
| #			hello 8;
 | |
| #			authentication none;
 | |
| #		};
 | |
| #               interface "fr*";
 | |
| #               virtual link 192.168.0.1 {
 | |
| #                       password "sdsdffsdfg";
 | |
| #                       authentication cryptographic;
 | |
| #               };
 | |
| #	};
 | |
| #}
 | |
| 		
 | |
| 
 | |
| #protocol bgp {
 | |
| #	disabled;
 | |
| #	description "My BGP uplink";
 | |
| #	local as 65000;
 | |
| #	neighbor 198.51.100.130 as 64496;
 | |
| #	multihop;
 | |
| #	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
 | |
| #	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 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 
 | |
| #	export where source=RTS_STATIC;
 | |
| #	export filter {
 | |
| #		if source = RTS_STATIC then {
 | |
| #			bgp_community = -empty-; bgp_community = add(bgp_community,(65000,5678));
 | |
| #			bgp_origin = 0;
 | |
| #			bgp_community = -empty-; bgp_community.add((65000,5678));
 | |
| #			if (65000,64501) ~ bgp_community then
 | |
| #				bgp_community.add((0, 1));
 | |
| #			if bgp_path ~ [= 65000 =] then
 | |
| #				bgp_path.prepend(65000);
 | |
| #			accept;
 | |
| #		}
 | |
| #		reject;
 | |
| #	};
 | |
| #}
 | |
| # 
 | |
| # Template usage example
 | |
| #template bgp rr_client {
 | |
| #	disabled;
 | |
| #	local as 65000;
 | |
| #	multihop;
 | |
| #	rr client;
 | |
| #	rr cluster id 1.0.0.1;
 | |
| #}
 | |
| #
 | |
| #protocol bgp rr_abcd from rr_client {
 | |
| #	neighbor 10.1.4.7 as 65000;
 | |
| #}
 |