zebra: make declaration const in rtm_flag_dump()
[jleu-quagga.git] / doc / main.texi
blob9966b356d35432c198af6abdf4a23ad2c0c324ee
1 @node Zebra
2 @chapter Zebra
4 @c SYNOPSIS
5 @command{zebra} is an IP routing manager.  It provides kernel routing
6 table updates, interface lookups, and redistribution of routes between
7 different routing protocols.
9 @menu
10 * Invoking zebra::              Running the program
11 * Interface Commands::          Commands for zebra interfaces
12 * Static Route Commands::       Commands for adding static routes
13 * zebra Route Filtering::       Commands for zebra route filtering
14 * zebra Terminal Mode Commands::  Commands for zebra's VTY
15 @end menu
18 @node Invoking zebra
19 @section Invoking zebra
21 Besides the common invocation options (@pxref{Common Invocation Options}), the
22 @command{zebra} specific invocation options are listed below.
24 @table @samp
25 @item -b
26 @itemx --batch
27 Runs in batch mode.  @command{zebra} parses configuration file and terminates
28 immediately.
30 @item -k
31 @itemx --keep_kernel
32 When zebra starts up, don't delete old self inserted routes.
34 @item -r
35 @itemx --retain
36 When program terminates, retain routes added by zebra.
38 @end table
40 @node Interface Commands
41 @section Interface Commands
43 @deffn Command {interface @var{ifname}} {}
44 @end deffn
46 @deffn {Interface Command} {shutdown} {}
47 @deffnx {Interface Command} {no shutdown} {}
48 Up or down the current interface.
49 @end deffn
51 @deffn {Interface Command} {ip address @var{address/prefix}} {}
52 @deffnx {Interface Command} {ip6 address @var{address/prefix}} {}
53 @deffnx {Interface Command} {no ip address @var{address/prefix}} {}
54 @deffnx {Interface Command} {no ip6 address @var{address/prefix}} {}
55 Set the IPv4 or IPv6 address/prefix for the interface.
56 @end deffn
58 @deffn {Interface Command} {ip address @var{address/prefix} secondary} {}
59 @deffnx {Interface Command} {no ip address @var{address/prefix} secondary} {}
60 Set the secondary flag for this address. This causes ospfd to not treat the
61 address as a distinct subnet.
62 @end deffn
64 @deffn {Interface Command} {description @var{description} ...} {}
65 Set description for the interface.
66 @end deffn
68 @deffn {Interface Command} {multicast} {}
69 @deffnx {Interface Command} {no multicast} {}
70 Enable or disables multicast flag for the interface.
71 @end deffn
73 @deffn {Interface Command} {bandwidth <1-10000000>} {}
74 @deffnx {Interface Command} {no bandwidth <1-10000000>} {}
75 Set bandwidth value of the interface in kilobits/sec.  This is for 
76 calculating OSPF cost. This command does not affect the actual device 
77 configuration.
78 @end deffn
80 @deffn {Interface Command} {link-detect} {}
81 @deffnx {Interface Command} {no link-detect} {}
82 Enable/disable link-detect on platforms which support this. Currently 
83 only Linux and Solaris, and only where network interface drivers support reporting
84 link-state via the IFF_RUNNING flag.
85 @end deffn
87 @node Static Route Commands
88 @section Static Route Commands
90 Static routing is a very fundamental feature of routing technology.  It
91 defines static prefix and gateway.
93 @deffn Command {ip route @var{network} @var{gateway}} {}
94 @var{network} is destination prefix with format of A.B.C.D/M.
95 @var{gateway} is gateway for the prefix.  When @var{gateway} is
96 A.B.C.D format.  It is taken as a IPv4 address gateway.  Otherwise it
97 is treated as an interface name. If the interface name is @var{null0} then
98 zebra installs a blackhole route.
100 @example
101 ip route 10.0.0.0/8 10.0.0.2
102 ip route 10.0.0.0/8 ppp0
103 ip route 10.0.0.0/8 null0
104 @end example
106 First example defines 10.0.0.0/8 static route with gateway 10.0.0.2.
107 Second one defines the same prefix but with gateway to interface ppp0. The
108 third install a blackhole route.
109 @end deffn
111 @deffn Command {ip route @var{network} @var{netmask} @var{gateway}} {}
112 This is alternate version of above command.  When @var{network} is
113 A.B.C.D format, user must define @var{netmask} value with A.B.C.D
114 format.  @var{gateway} is same option as above command
116 @example
117 ip route 10.0.0.0 255.255.255.0 10.0.0.2
118 ip route 10.0.0.0 255.255.255.0 ppp0
119 ip route 10.0.0.0 255.255.255.0 null0
120 @end example
122 These statements are equivalent to those in the previous example.
123 @end deffn
125 @deffn Command {ip route @var{network} @var{gateway} @var{distance}} {}
126 Installs the route with the specified distance.
127 @end deffn
129 Multiple nexthop static route
131 @example
132 ip route 10.0.0.1/32 10.0.0.2
133 ip route 10.0.0.1/32 10.0.0.3
134 ip route 10.0.0.1/32 eth0
135 @end example
137 If there is no route to 10.0.0.2 and 10.0.0.3, and interface eth0
138 is reachable, then the last route is installed into the kernel.
140 If zebra has been compiled with multipath support, and both 10.0.0.2 and
141 10.0.0.3 are reachable, zebra will install a multipath route via both
142 nexthops, if the platform supports this.
144 @example
145 zebra> show ip route
146 S>  10.0.0.1/32 [1/0] via 10.0.0.2 inactive
147                       via 10.0.0.3 inactive
148   *                   is directly connected, eth0
149 @end example
151 @example
152 ip route 10.0.0.0/8 10.0.0.2
153 ip route 10.0.0.0/8 10.0.0.3
154 ip route 10.0.0.0/8 null0 255
155 @end example
157 This will install a multihop route via the specified next-hops if they are
158 reachable, as well as a high-metric blackhole route, which can be useful to
159 prevent traffic destined for a prefix to match less-specific routes (eg
160 default) should the specified gateways not be reachable. Eg:
162 @example
163 zebra> show ip route 10.0.0.0/8             
164 Routing entry for 10.0.0.0/8
165   Known via "static", distance 1, metric 0
166     10.0.0.2 inactive
167     10.0.0.3 inactive
169 Routing entry for 10.0.0.0/8
170   Known via "static", distance 255, metric 0
171     directly connected, Null0
172 @end example
174 @deffn Command {ipv6 route @var{network} @var{gateway}} {}
175 @deffnx Command {ipv6 route @var{network} @var{gateway} @var{distance}} {}
176 These behave similarly to their ipv4 counterparts.
177 @end deffn
180 @deffn Command {table @var{tableno}} {}
181 Select the primary kernel routing table to be used.  This only works
182 for kernels supporting multiple routing tables (like GNU/Linux 2.2.x
183 and later).  After setting @var{tableno} with this command, 
184 static routes defined after this are added to the specified table.
185 @end deffn
187 @node zebra Route Filtering
188 @section zebra Route Filtering
189 Zebra supports @command{prefix-list} and @command{route-map} to match
190 routes received from other quagga components.  The
191 @command{permit}/@command{deny} facilities provided by these commands
192 can be used to filter which routes zebra will install in the kernel.
194 @deffn Command {ip protocol @var{protocol} route-map @var{routemap}} {}
195 Apply a route-map filter to routes for the specified protocol. @var{protocol}
196 can be @b{any} or one of
197 @b{system},
198 @b{kernel},
199 @b{connected},
200 @b{static},
201 @b{rip},
202 @b{ripng},
203 @b{ospf},
204 @b{ospf6},
205 @b{isis},
206 @b{bgp},
207 @b{hsls}.
208 @end deffn
210 @deffn {Route Map} {set src @var{address}}
211 Within a route-map, set the preferred source address for matching routes
212 when installing in the kernel.
213 @end deffn
215 @example
216 The following creates a prefix-list that matches all addresses, a route-map
217 that sets the preferred source address, and applies the route-map to all
218 @command{rip} routes.
220 @group
221 ip prefix-list ANY permit 0.0.0.0/0 le 32
222 route-map RM1 permit 10
223      match ip address prefix-list ANY
224      set src 10.0.0.1
226 ip protocol rip route-map RM1
227 @end group
228 @end example
230 @node zebra Terminal Mode Commands
231 @section zebra Terminal Mode Commands
233 @deffn Command {show ip route} {}
234 Display current routes which zebra holds in its database.
236 @example
237 @group
238 Router# show ip route 
239 Codes: K - kernel route, C - connected, S - static, R - RIP, 
240        B - BGP * - FIB route.
242 K* 0.0.0.0/0              203.181.89.241
243 S  0.0.0.0/0              203.181.89.1
244 C* 127.0.0.0/8            lo
245 C* 203.181.89.240/28      eth0
246 @end group
247 @end example
248 @end deffn
250 @deffn Command {show ipv6 route} {}
251 @end deffn
253 @deffn Command {show interface} {}
254 @end deffn
256 @deffn Command {show ip prefix-list [@var{name}]} {}
257 @end deffn
259 @deffn Command {show route-map [@var{name}]} {}
260 @end deffn
262 @deffn Command {show ip protocol} {}
263 @end deffn
265 @deffn Command {show ipforward} {}
266 Display whether the host's IP forwarding function is enabled or not.
267 Almost any UNIX kernel can be configured with IP forwarding disabled.
268 If so, the box can't work as a router.
269 @end deffn
271 @deffn Command {show ipv6forward} {}
272 Display whether the host's IP v6 forwarding is enabled or not.
273 @end deffn