4 @cindex How to install Quagga
6 @cindex Installing Quagga
7 @cindex Building the system
10 There are three steps for installing the software: configuration,
11 compilation, and installation.
14 * Configure the Software::
15 * Build the Software::
16 * Install the Software::
19 The easiest way to get Quagga running is to issue the following
28 @node Configure the Software
29 @section Configure the Software
32 * The Configure script and its options::
33 * Least-Privilege support::
37 @node The Configure script and its options
38 @subsection The Configure script and its options
40 @cindex Configuration options
41 @cindex Options for configuring
43 @cindex Distribution configuration
44 @cindex Options to @code{./configure}
46 Quagga has an excellent configure script which automatically detects most
47 host configurations. There are several additional configure options you can
48 use to turn off IPv6 support, to disable the compilation of specific
49 daemons, and to enable SNMP support.
53 Turn off IPv6 related features and daemons. Quagga configure script
54 automatically detects IPv6 stack. But sometimes you might want to
55 disable IPv6 support of Quagga.
57 Do not build zebra daemon.
60 @item --disable-ripngd
64 @item --disable-ospf6d
68 @item --disable-bgp-announce
69 Make @command{bgpd} which does not make bgp announcements at all. This
70 feature is good for using @command{bgpd} as a BGP announcement listener.
71 @item --enable-netlink
72 Force to enable @sc{gnu}/Linux netlink interface. Quagga configure
73 script detects netlink interface by checking a header file. When the header
74 file does not match to the current running kernel, configure script will
75 not turn on netlink support.
77 Enable SNMP support. By default, SNMP support is disabled.
78 @item --disable-opaque-lsa
79 Disable support for Opaque LSAs (RFC2370) in ospfd.
80 @item --disable-ospfapi
81 Disable support for OSPF-API, an API to interface directly with ospfd.
82 OSPF-API is enabled if --enable-opaque-lsa is set.
83 @item --disable-ospfclient
84 Disable building of the example OSPF-API client.
85 @item --disable-ospf-te
86 Disable support for OSPF Traffic Engineering Extension (internet-draft) this
87 requires support for Opaque LSAs.
88 @item --enable-multipath=@var{ARG}
89 Enable support for Equal Cost Multipath. @var{ARG} is the maximum number
90 of ECMP paths to allow, set to 0 to allow unlimited number of paths.
92 Disable support IPV6 router advertisement in zebra.
93 @item --enable-gcc-rdynamic
94 Pass the @command{-rdynamic} option to the linker driver. This is in most
95 cases neccessary for getting usable backtraces. This option defaults to on
96 if the compiler is detected as gcc, but giving an explicit enable/disable is
98 @item --enable-backtrace
99 Controls backtrace support for the crash handlers. This is autodetected by
100 default. Using the switch will enforce the requested behaviour, failing with
101 an error if support is requested but not available. On BSD systems, this
102 needs libexecinfo, while on glibc support for this is part of libc itself.
105 You may specify any combination of the above options to the configure
106 script. By default, the executables are placed in @file{/usr/local/sbin}
107 and the configuration files in @file{/usr/local/etc}. The @file{/usr/local/}
108 installation prefix and other directories may be changed using the following
109 options to the configuration script.
112 @item --prefix=@var{prefix}
113 Install architecture-independent files in @var{prefix} [/usr/local].
114 @item --sysconfdir=@var{dir}
115 Look for configuration files in @var{dir} [@var{prefix}/etc]. Note
116 that sample configuration files will be installed here.
117 @item --localstatedir=@var{dir}
118 Configure zebra to use @var{dir} for local state files, such
119 as pid files and unix sockets.
123 % ./configure --disable-ipv6
126 This command will configure zebra and the routing daemons.
128 @node Least-Privilege support
129 @subsection Least-Privilege support
131 @cindex Quagga Least-Privileges
132 @cindex Quagga Privileges
134 Additionally, you may configure zebra to drop its elevated privileges
135 shortly after startup and switch to another user. The configure script will
136 automatically try to configure this support. There are three configure
137 options to control the behaviour of Quagga daemons.
140 @item --enable-user=@var{user}
141 Switch to user @var{ARG} shortly after startup, and run as user @var{ARG}
143 @item --enable-group=@var{group}
144 Switch real and effective group to @var{group} shortly after
146 @item --enable-vty-group=@var{group}
147 Create 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
149 restricted to accessing only the Vty sockets, hence allowing one to
150 delegate this group to individual users, or to run vtysh setgid to
154 The default user and group which will be configured is 'quagga' if no user
155 or group is specified. Note that this user or group requires write access to
156 the local state directory (see --localstatedir) and requires at least read
157 access, and write access if you wish to allow daemons to write out their
158 configuration, to the configuration directory (see --sysconfdir).
160 On systems which have the 'libcap' capabilities manipulation library
161 (currently only linux), the quagga system will retain only minimal
162 capabilities required, further it will only raise these capabilities for
163 brief periods. On systems without libcap, quagga will run as the user
164 specified and only raise its uid back to uid 0 for brief periods.
167 @subsection Linux Notes
169 @cindex Configuring Quagga
170 @cindex Building on Linux boxes
171 @cindex Linux configurations
173 There are several options available only to @sc{gnu}/Linux systems:
174 @footnote{@sc{gnu}/Linux has very flexible kernel configuration features}. If
175 you use @sc{gnu}/Linux, make sure that the current kernel configuration is
176 what you want. Quagga will run with any kernel configuration but some
177 recommendations do exist.
182 Kernel/User netlink socket. This is a brand new feature which enables an
183 advanced interface between the Linux kernel and zebra (@pxref{Kernel Interface}).
185 @item CONFIG_RTNETLINK
187 This makes it possible to receive netlink routing messages. If you
188 specify this option, @command{zebra} can detect routing information
189 updates directly from the kernel (@pxref{Kernel Interface}).
191 @item CONFIG_IP_MULTICAST
193 This option should be specified when you use @command{ripd} (@pxref{RIP}) or
194 @command{ospfd} (@pxref{OSPFv2}) because these protocols use multicast.
198 IPv6 support has been added in @sc{gnu}/Linux kernel version 2.2. If you
199 try to use the Quagga IPv6 feature on a @sc{gnu}/Linux kernel, please
200 make sure the following libraries have been installed. Please note that
201 these libraries will not be needed when you uses @sc{gnu} C library 2.1
207 The @code{inet6-apps} package includes basic IPv6 related libraries such
208 as @code{inet_ntop} and @code{inet_pton}. Some basic IPv6 programs such
209 as @command{ping}, @command{ftp}, and @command{inetd} are also
210 included. The @code{inet-apps} can be found at
211 @uref{ftp://ftp.inner.net/pub/ipv6/}.
214 The @code{net-tools} package provides an IPv6 enabled interface and
215 routing utility. It contains @command{ifconfig}, @command{route},
216 @command{netstat}, and other tools. @code{net-tools} may be found at
217 @uref{http://www.tazenda.demon.co.uk/phil/net-tools/}.
220 @c A - end of footnote
222 @node Build the Software
223 @section Build the Software
225 After configuring the software, you will need to compile it for your
226 system. Simply issue the command @command{make} in the root of the source
227 directory and the software will be compiled. If you have *any* problems
228 at this stage, be certain to send a bug report @xref{Bug Reports}.
241 @c A - End of node, Building the Software
244 @node Install the Software
245 @comment node-name, next, previous, up
246 @section Install the Software
248 Installing the software to your system consists of copying the compiled
249 programs and supporting files to a standard location. After the
250 installation process has completed, these files have been copied
251 from your work directory to @file{/usr/local/bin}, and @file{/usr/local/etc}.
253 To install the Quagga suite, issue the following command at your shell
254 prompt: @command{make install}.
262 Quagga daemons have their own terminal interface or VTY. After
263 installation, you have to setup each beast's port number to connect to
264 them. Please add the following entries to @file{/etc/services}.
267 zebrasrv 2600/tcp # zebra service
268 zebra 2601/tcp # zebra vty
269 ripd 2602/tcp # RIPd vty
270 ripngd 2603/tcp # RIPngd vty
271 ospfd 2604/tcp # OSPFd vty
272 bgpd 2605/tcp # BGPd vty
273 ospf6d 2606/tcp # OSPF6d vty
274 ospfapi 2607/tcp # ospfapi
275 isisd 2608/tcp # ISISd vty
278 If you use a FreeBSD newer than 2.2.8, the above entries are already
279 added to @file{/etc/services} so there is no need to add it. If you
280 specify a port number when starting the daemon, these entries may not be
283 You may need to make changes to the config files in
284 @file{@value{INSTALL_PREFIX_ETC}/*.conf}. @xref{Config Commands}.