summaryrefslogtreecommitdiff
path: root/doc/bird.conf.example
blob: ca7546e9143bde0936be58517a0ea3e5a3b99b90 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
/*
 *	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 62.168.0.1;

# You can define your own symbols...
#define xyzzy = 120+10;

# Define a route filter...
filter test_filter {
	if net ~ 10.0.0.0/16 then accept;
	else reject;
}

#filter sink { reject; }
#filter okay { accept; }

# 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 62.168.0.13;
#	route 62.168.0.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.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 "ahoj" from 0 to 10;
#		password "nazdar" from 10;
#	}
#	authentication none;
#	import filter { print "importing"; accept; };
#	export filter { print "exporting"; accept; };
#}

# Please note, multiple areas still don't work.
#protocol ospf MyOSPF {
#	rfc1583compat yes;
#	area 0.0.0.0 {
#		stub no;
#		tick 1;
#		interface "eth*" {
#			hello 9;
#			retransmit 6;
#			cost 10;
#			transit delay 5;
#			dead count 5;
#			wait 50;
#			type broadcast;
#		};
#		interface "arc0" {
#			type nonbroadcast;
#			neighbors {
#				10.1.1.2;
#				10.1.1.4;
#			};
#		};
#	};
#	area 20 {
#		stub 1;
#		interface "ppp1" {
#			hello 8;
#		};
#	};
#}
		

#protocol bgp {
#	disabled;
#	local as 65000;
#	neighbor 62.168.0.130 as 5588;
#	multihop 20 via 62.168.0.13;
#	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 62.168.0.14;	# What local address we use for the TCP connection
#	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,5678) ~ bgp_community then
##				bgp_community.add((0, 1));
#			if bgp_path ~ / 65000 / then
#				bgp_path.prepend(65000);
#			accept;
#		}
#		reject;
#	};
#}