]> git.proxmox.com Git - mirror_frr.git/blame - doc/install.texi
zebra: simplify redistribution code
[mirror_frr.git] / doc / install.texi
CommitLineData
76b89b4a 1@node Installation
718e3744 2@chapter Installation
3
7190f4ea 4@cindex How to install Quagga
718e3744 5@cindex Installation
7190f4ea 6@cindex Installing Quagga
718e3744 7@cindex Building the system
7190f4ea 8@cindex Making Quagga
718e3744 9
76b89b4a 10There are three steps for installing the software: configuration,
718e3744 11compilation, and installation.
12
13@menu
76b89b4a 14* Configure the Software::
15* Build the Software::
16* Install the Software::
718e3744 17@end menu
18
76b89b4a 19The easiest way to get Quagga running is to issue the following
718e3744 20commands:
21
22@example
23% configure
24% make
25% make install
26@end example
27
76b89b4a 28@node Configure the Software
718e3744 29@section Configure the Software
30
76b89b4a 31@menu
32* The Configure script and its options::
33* Least-Privilege support::
34* Linux notes::
35@end menu
36
37@node The Configure script and its options
38@subsection The Configure script and its options
39
718e3744 40@cindex Configuration options
41@cindex Options for configuring
42@cindex Build options
43@cindex Distribution configuration
44@cindex Options to @code{./configure}
45
76b89b4a 46Quagga has an excellent configure script which automatically detects most
47host configurations. There are several additional configure options you can
48use to turn off IPv6 support, to disable the compilation of specific
49daemons, and to enable SNMP support.
718e3744 50
51@table @option
718e3744 52@item --disable-ipv6
7190f4ea 53Turn off IPv6 related features and daemons. Quagga configure script
718e3744 54automatically detects IPv6 stack. But sometimes you might want to
7190f4ea 55disable IPv6 support of Quagga.
718e3744 56@item --disable-zebra
57Do not build zebra daemon.
58@item --disable-ripd
59Do not build ripd.
60@item --disable-ripngd
61Do not build ripngd.
62@item --disable-ospfd
63Do not build ospfd.
64@item --disable-ospf6d
65Do not build ospf6d.
66@item --disable-bgpd
67Do not build bgpd.
68@item --disable-bgp-announce
69Make @command{bgpd} which does not make bgp announcements at all. This
70feature is good for using @command{bgpd} as a BGP announcement listener.
71@item --enable-netlink
7190f4ea 72Force to enable @sc{gnu}/Linux netlink interface. Quagga configure
718e3744 73script detects netlink interface by checking a header file. When the header
74file does not match to the current running kernel, configure script will
75not turn on netlink support.
76@item --enable-snmp
77Enable SNMP support. By default, SNMP support is disabled.
7d50ad44
DL
78@item --disable-opaque-lsa
79Disable support for Opaque LSAs (RFC2370) in ospfd.
971a4497 80@item --disable-ospfapi
81Disable support for OSPF-API, an API to interface directly with ospfd.
82OSPF-API is enabled if --enable-opaque-lsa is set.
83@item --disable-ospfclient
84Disable building of the example OSPF-API client.
7d50ad44
DL
85@item --disable-ospf-te
86Disable support for OSPF Traffic Engineering Extension (internet-draft) this
971a4497 87requires support for Opaque LSAs.
88@item --enable-multipath=@var{ARG}
89Enable support for Equal Cost Multipath. @var{ARG} is the maximum number
90of ECMP paths to allow, set to 0 to allow unlimited number of paths.
7d50ad44
DL
91@item --disable-rtadv
92Disable support IPV6 router advertisement in zebra.
8c99b4c1
DL
93@item --enable-gcc-rdynamic
94Pass the @command{-rdynamic} option to the linker driver. This is in most
95cases neccessary for getting usable backtraces. This option defaults to on
96if the compiler is detected as gcc, but giving an explicit enable/disable is
97suggested.
98@item --enable-backtrace
99Controls backtrace support for the crash handlers. This is autodetected by
100default. Using the switch will enforce the requested behaviour, failing with
101an error if support is requested but not available. On BSD systems, this
102needs libexecinfo, while on glibc support for this is part of libc itself.
718e3744 103@end table
104
105You may specify any combination of the above options to the configure
106script. By default, the executables are placed in @file{/usr/local/sbin}
107and the configuration files in @file{/usr/local/etc}. The @file{/usr/local/}
108installation prefix and other directories may be changed using the following
109options to the configuration script.
110
111@table @option
112@item --prefix=@var{prefix}
113Install architecture-independent files in @var{prefix} [/usr/local].
114@item --sysconfdir=@var{dir}
971a4497 115Look for configuration files in @var{dir} [@var{prefix}/etc]. Note
116that sample configuration files will be installed here.
117@item --localstatedir=@var{dir}
118Configure zebra to use @var{dir} for local state files, such
119as pid files and unix sockets.
718e3744 120@end table
121
76b89b4a 122@example
123% ./configure --disable-ipv6
124@end example
125
126This command will configure zebra and the routing daemons.
127
128@node Least-Privilege support
129@subsection Least-Privilege support
130
131@cindex Quagga Least-Privileges
132@cindex Quagga Privileges
133
134Additionally, you may configure zebra to drop its elevated privileges
135shortly after startup and switch to another user. The configure script will
136automatically try to configure this support. There are three configure
137options to control the behaviour of Quagga daemons.
971a4497 138
139@table @option
140@item --enable-user=@var{user}
141Switch to user @var{ARG} shortly after startup, and run as user @var{ARG}
142in normal operation.
143@item --enable-group=@var{group}
144Switch real and effective group to @var{group} shortly after
145startup.
146@item --enable-vty-group=@var{group}
147Create Unix Vty sockets (for use with vtysh) with group owndership set to
148@var{group}. This allows one to create a seperate group which is
149restricted to accessing only the Vty sockets, hence allowing one to
150delegate this group to individual users, or to run vtysh setgid to
151this group.
152@end table
153
7190f4ea 154The default user and group which will be configured is 'quagga' if no user
76b89b4a 155or group is specified. Note that this user or group requires write access to
156the local state directory (see --localstatedir) and requires at least read
157access, and write access if you wish to allow daemons to write out their
158configuration, to the configuration directory (see --sysconfdir).
971a4497 159
160On systems which have the 'libcap' capabilities manipulation library
76b89b4a 161(currently only linux), the quagga system will retain only minimal
162capabilities required, further it will only raise these capabilities for
163brief periods. On systems without libcap, quagga will run as the user
164specified and only raise its uid back to uid 0 for brief periods.
971a4497 165
76b89b4a 166@node Linux notes
167@subsection Linux Notes
718e3744 168
7190f4ea 169@cindex Configuring Quagga
718e3744 170@cindex Building on Linux boxes
171@cindex Linux configurations
172
173There are several options available only to @sc{gnu}/Linux systems:
76b89b4a 174@footnote{@sc{gnu}/Linux has very flexible kernel configuration features}. If
175you use @sc{gnu}/Linux, make sure that the current kernel configuration is
7190f4ea 176what you want. Quagga will run with any kernel configuration but some
718e3744 177recommendations do exist.
178
179@table @var
180
181@item CONFIG_NETLINK
76b89b4a 182Kernel/User netlink socket. This is a brand new feature which enables an
183advanced interface between the Linux kernel and zebra (@pxref{Kernel Interface}).
718e3744 184
185@item CONFIG_RTNETLINK
186Routing messages.
187This makes it possible to receive netlink routing messages. If you
188specify this option, @command{zebra} can detect routing information
189updates directly from the kernel (@pxref{Kernel Interface}).
190
191@item CONFIG_IP_MULTICAST
192IP: multicasting.
76b89b4a 193This option should be specified when you use @command{ripd} (@pxref{RIP}) or
194@command{ospfd} (@pxref{OSPFv2}) because these protocols use multicast.
718e3744 195
196@end table
197
198IPv6 support has been added in @sc{gnu}/Linux kernel version 2.2. If you
7190f4ea 199try to use the Quagga IPv6 feature on a @sc{gnu}/Linux kernel, please
718e3744 200make sure the following libraries have been installed. Please note that
201these libraries will not be needed when you uses @sc{gnu} C library 2.1
202or upper.
203
204@table @code
205
206@item inet6-apps
207The @code{inet6-apps} package includes basic IPv6 related libraries such
208as @code{inet_ntop} and @code{inet_pton}. Some basic IPv6 programs such
209as @command{ping}, @command{ftp}, and @command{inetd} are also
210included. The @code{inet-apps} can be found at
76b89b4a 211@uref{ftp://ftp.inner.net/pub/ipv6/}.
718e3744 212
213@item net-tools
214The @code{net-tools} package provides an IPv6 enabled interface and
215routing utility. It contains @command{ifconfig}, @command{route},
216@command{netstat}, and other tools. @code{net-tools} may be found at
76b89b4a 217@uref{http://www.tazenda.demon.co.uk/phil/net-tools/}.
718e3744 218
219@end table
220@c A - end of footnote
718e3744 221
76b89b4a 222@node Build the Software
718e3744 223@section Build the Software
224
225After configuring the software, you will need to compile it for your
226system. Simply issue the command @command{make} in the root of the source
227directory and the software will be compiled. If you have *any* problems
228at this stage, be certain to send a bug report @xref{Bug Reports}.
229
230@example
231% ./configure
232.
233.
234.
235./configure output
236.
237.
238.
239% make
240@end example
241@c A - End of node, Building the Software
242
243
76b89b4a 244@node Install the Software
718e3744 245@comment node-name, next, previous, up
246@section Install the Software
247
248Installing the software to your system consists of copying the compiled
249programs and supporting files to a standard location. After the
250installation process has completed, these files have been copied
251from your work directory to @file{/usr/local/bin}, and @file{/usr/local/etc}.
252
7190f4ea 253To install the Quagga suite, issue the following command at your shell
718e3744 254prompt: @command{make install}.
255
256@example
257%
258% make install
259%
260@end example
261
7190f4ea 262Quagga daemons have their own terminal interface or VTY. After
718e3744 263installation, you have to setup each beast's port number to connect to
264them. Please add the following entries to @file{/etc/services}.
265
266@example
267zebrasrv 2600/tcp # zebra service
268zebra 2601/tcp # zebra vty
269ripd 2602/tcp # RIPd vty
270ripngd 2603/tcp # RIPngd vty
271ospfd 2604/tcp # OSPFd vty
272bgpd 2605/tcp # BGPd vty
273ospf6d 2606/tcp # OSPF6d vty
5a514b14 274ospfapi 2607/tcp # ospfapi
275isisd 2608/tcp # ISISd vty
12e41d03 276pimd 2611/tcp # PIMd vty
718e3744 277@end example
278
279If you use a FreeBSD newer than 2.2.8, the above entries are already
280added to @file{/etc/services} so there is no need to add it. If you
281specify a port number when starting the daemon, these entries may not be
282needed.
283
284You may need to make changes to the config files in
285@file{@value{INSTALL_PREFIX_ETC}/*.conf}. @xref{Config Commands}.