Merge commit 'remotes/jocke/ospf_neighbour'; commit 'remotes/jocke/snmp_crosscompile'
[jleu-quagga.git] / doc / basic.texi
blob77fceee1ed4ed406a808ce725fc522a9a50b925d
1 @node Basic commands
2 @chapter Basic commands
4 There are five routing daemons in use, and there is one manager daemon.
5 These daemons may be located on separate machines from the manager
6 daemon.  Each of these daemons will listen on a particular port for
7 incoming VTY connections.  The routing daemons are:
9 @itemize @bullet
10 @item @command{ripd}, @command{ripngd}, @command{ospfd}, @command{ospf6d}, @command{bgpd}
11 @item @command{zebra}
12 @end itemize
14 The following sections discuss commands common to all the routing
15 daemons.
17 @menu
18 * Terminal Mode Commands::      Common commands used in a VTY
19 * Config Commands::             Commands used in config files
20 * Common Invocation Options::   Starting the daemons
21 * Virtual Terminal Interfaces:: Interacting with the daemons
22 @end menu
26 @node Config Commands
27 @section Config Commands
29 @cindex Configuration files for running the software
30 @c A -not configuration files for installing the software
31 @cindex Files for running configurations
32 @cindex Modifying the herd's behavior
33 @cindex Getting the herd running
36 @menu
37 * Basic Config Commands::       Some of the generic config commands
38 * Sample Config File::          An example config file
39 @end menu
42 In a config file, you can write the debugging options, a vty's password,
43 routing daemon configurations, a log file name, and so forth. This
44 information forms the initial command set for a routing beast as it is
45 starting.
47 Config files are generally found in:
49 @itemize @asis
50 @item @file{@value{INSTALL_PREFIX_ETC}/*.conf}
51 @end itemize
53 Each of the daemons has its own
54 config file.  For example, zebra's default config file name is:
56 @itemize @asis
57 @item @file{@value{INSTALL_PREFIX_ETC}/zebra.conf}
58 @end itemize
60 The daemon name plus @file{.conf} is the default config file name. You
61 can specify a config file using the @kbd{-f} or @kbd{--config-file}
62 options when starting the daemon.
66 @node Basic Config Commands
67 @subsection Basic Config Commands
69 @deffn Command {hostname @var{hostname}} {}
70 Set hostname of the router.
71 @end deffn
73 @deffn Command {password @var{password}} {}
74 Set password for vty interface.  If there is no password, a vty won't
75 accept connections.
76 @end deffn
78 @deffn Command {enable password @var{password}} {}
79 Set enable password.
80 @end deffn
82 @deffn Command {log trap @var{level}} {}
83 @deffnx Command {no log trap} {}
84 These commands are deprecated and are present only for historical compatibility.
85 The log trap command sets the current logging level for all enabled
86 logging destinations, and it sets the default for all future logging commands
87 that do not specify a level.  The normal default
88 logging level is debugging.  The @code{no} form of the command resets
89 the default level for future logging commands to debugging, but it does
90 not change the logging level of existing logging destinations.
91 @end deffn
94 @deffn Command {log stdout} {}
95 @deffnx Command {log stdout @var{level}} {}
96 @deffnx Command {no log stdout} {}
97 Enable logging output to stdout. 
98 If the optional second argument specifying the
99 logging level is not present, the default logging level (typically debugging,
100 but can be changed using the deprecated @code{log trap} command) will be used.
101 The @code{no} form of the command disables logging to stdout.
102 The @code{level} argument must have one of these values: 
103 emergencies, alerts, critical, errors, warnings, notifications, informational, or debugging.  Note that the existing code logs its most important messages
104 with severity @code{errors}.
105 @end deffn
107 @deffn Command {log file @var{filename}} {}
108 @deffnx Command {log file @var{filename} @var{level}} {}
109 @deffnx Command {no log file} {}
110 If you want to log into a file, please specify @code{filename} as
111 in this example:
112 @example
113 log file /var/log/quagga/bgpd.log informational
114 @end example
115 If the optional second argument specifying the
116 logging level is not present, the default logging level (typically debugging,
117 but can be changed using the deprecated @code{log trap} command) will be used.
118 The @code{no} form of the command disables logging to a file.
120 Note: if you do not configure any file logging, and a daemon crashes due
121 to a signal or an assertion failure, it will attempt to save the crash
122 information in a file named /var/tmp/quagga.<daemon name>.crashlog.
123 For security reasons, this will not happen if the file exists already, so
124 it is important to delete the file after reporting the crash information.
125 @end deffn
127 @deffn Command {log syslog} {}
128 @deffnx Command {log syslog @var{level}} {}
129 @deffnx Command {no log syslog} {}
130 Enable logging output to syslog.
131 If the optional second argument specifying the
132 logging level is not present, the default logging level (typically debugging,
133 but can be changed using the deprecated @code{log trap} command) will be used.
134 The @code{no} form of the command disables logging to syslog.
135 @end deffn
137 @deffn Command {log monitor} {}
138 @deffnx Command {log monitor @var{level}} {}
139 @deffnx Command {no log monitor} {}
140 Enable logging output to vty terminals that have enabled logging
141 using the @code{terminal monitor} command.
142 By default, monitor logging is enabled at the debugging level, but this
143 command (or the deprecated @code{log trap} command) can be used to change 
144 the monitor logging level.
145 If the optional second argument specifying the
146 logging level is not present, the default logging level (typically debugging,
147 but can be changed using the deprecated @code{log trap} command) will be used.
148 The @code{no} form of the command disables logging to terminal monitors.
149 @end deffn
151 @deffn Command {log facility @var{facility}} {}
152 @deffnx Command {no log facility} {}
153 This command changes the facility used in syslog messages.  The default
154 facility is @code{daemon}.  The @code{no} form of the command resets
155 the facility to the default @code{daemon} facility.
156 @end deffn
158 @deffn Command {log record-priority} {}
159 @deffnx Command {no log record-priority} {}
160 To include the severity in all messages logged to a file, to stdout, or to
161 a terminal monitor (i.e. anything except syslog),
162 use the @code{log record-priority} global configuration command.
163 To disable this option, use the @code{no} form of the command.  By default,
164 the severity level is not included in logged messages.  Note: some
165 versions of syslogd (including Solaris) can be configured to include
166 the facility and level in the messages emitted.
167 @end deffn
169 @deffn Command {log timestamp precision @var{<0-6>}} {}
170 @deffnx Command {no log timestamp precision} {}
171 This command sets the precision of log message timestamps to the
172 given number of digits after the decimal point.  Currently,
173 the value must be in the range 0 to 6 (i.e. the maximum precision
174 is microseconds).
175 To restore the default behavior (1-second accuracy), use the
176 @code{no} form of the command, or set the precision explicitly to 0.
178 @example
179 @group
180 log timestamp precision 3
181 @end group
182 @end example
184 In this example, the precision is set to provide timestamps with
185 millisecond accuracy.
186 @end deffn
188 @deffn Command {service password-encryption} {}
189 Encrypt password.
190 @end deffn
192 @deffn Command {service advanced-vty} {}
193 Enable advanced mode VTY.
194 @end deffn
196 @deffn Command {service terminal-length @var{<0-512>}} {}
197 Set system wide line configuration.  This configuration command applies
198 to all VTY interfaces.
199 @end deffn
201 @deffn Command {line vty} {}
202 Enter vty configuration mode.
203 @end deffn
205 @deffn Command {banner motd default} {}
206 Set default motd string.
207 @end deffn
209 @deffn Command {no banner motd} {}
210 No motd banner string will be printed.
211 @end deffn
213 @deffn {Line Command} {exec-timeout @var{minute}} {}
214 @deffnx {Line Command} {exec-timeout @var{minute} @var{second}} {}
215 Set VTY connection timeout value.  When only one argument is specified
216 it is used for timeout value in minutes.  Optional second argument is
217 used for timeout value in seconds. Default timeout value is 10 minutes.
218 When timeout value is zero, it means no timeout.
219 @end deffn
221 @deffn {Line Command} {no exec-timeout} {}
222 Do not perform timeout at all.  This command is as same as
223 @command{exec-timeout 0 0}.
224 @end deffn
226 @deffn {Line Command} {access-class @var{access-list}} {}
227 Restrict vty connections with an access list.
228 @end deffn
230 @node Sample Config File
231 @subsection Sample Config File
234 Below is a sample configuration file for the zebra daemon.
236 @example
237 @group
239 ! Zebra configuration file
241 hostname Router
242 password zebra
243 enable password zebra
245 log stdout
248 @end group
249 @end example
251 '!' and '#' are comment characters.  If the first character of the word
252 is one of the comment characters then from the rest of the line forward
253 will be ignored as a comment.
255 @example
256 password zebra!password
257 @end example
259 If a comment character is not the first character of the word, it's a
260 normal character. So in the above example '!' will not be regarded as a
261 comment and the password is set to 'zebra!password'.
265 @node Terminal Mode Commands
266 @section Terminal Mode Commands
268 @deffn Command {write terminal} {}
269 Displays the current configuration to the vty interface.
270 @end deffn
272 @deffn Command {write file} {}
273 Write current configuration to configuration file.
274 @end deffn
276 @deffn Command {configure terminal} {}
277 Change to configuration mode.  This command is the first step to
278 configuration.
279 @end deffn
281 @deffn Command {terminal length @var{<0-512>}} {}
282 Set terminal display length to @var{<0-512>}.  If length is 0, no
283 display control is performed.
284 @end deffn
286 @deffn Command {who} {}
287 Show a list of currently connected vty sessions.
288 @end deffn
290 @deffn Command {list} {}
291 List all available commands.
292 @end deffn
294 @deffn Command {show version} {}
295 Show the current version of @value{PACKAGE_NAME} and its build host information.
296 @end deffn
298 @deffn Command {show logging} {}
299 Shows the current configuration of the logging system.  This includes
300 the status of all logging destinations.
301 @end deffn
303 @deffn Command {logmsg @var{level} @var{message}} {}
304 Send a message to all logging destinations that are enabled for messages
305 of the given severity.
306 @end deffn
311 @node Common Invocation Options
312 @section Common Invocation Options
313 @c COMMON_OPTIONS
314 @c OPTIONS section of the man page
316 These options apply to all @value{PACKAGE_NAME} daemons.
318 @table @samp
320 @item -d
321 @itemx --daemon
322 Runs in daemon mode.
324 @item -f @var{file}
325 @itemx --config_file=@var{file}
326 Set configuration file name.
328 @item -h
329 @itemx --help
330 Display this help and exit.
332 @item -i @var{file}
333 @itemx --pid_file=@var{file}
335 Upon startup the process identifier of the daemon is written to a file,
336 typically in @file{/var/run}.  This file can be used by the init system
337 to implement commands such as @command{@dots{}/init.d/zebra status},
338 @command{@dots{}/init.d/zebra restart} or @command{@dots{}/init.d/zebra
339 stop}.
341 The file name is an run-time option rather than a configure-time option
342 so that multiple routing daemons can be run simultaneously.  This is
343 useful when using @value{PACKAGE_NAME} to implement a routing looking glass.  One
344 machine can be used to collect differing routing views from differing
345 points in the network.
347 @item -A @var{address}
348 @itemx --vty_addr=@var{address}
349 Set the VTY local address to bind to. If set, the VTY socket will only
350 be bound to this address. 
352 @item -P @var{port}
353 @itemx --vty_port=@var{port}
354 Set the VTY TCP port number. If set to 0 then the TCP VTY sockets will not
355 be opened.
357 @item -u @var{user}
358 @itemx --vty_addr=@var{user}
359 Set the user and group to run as.
361 @item -v
362 @itemx --version
363 Print program version.
365 @end table
369 @node Virtual Terminal Interfaces
370 @section Virtual Terminal Interfaces
372 VTY -- Virtual Terminal [aka TeletYpe] Interface is a command line
373 interface (CLI) for user interaction with the routing daemon.
375 @menu
376 * VTY Overview::                Basics about VTYs                
377 * VTY Modes::                   View, Enable, and Other VTY modes
378 * VTY CLI Commands::            Commands for movement, edition, and management
379 @end menu
383 @node VTY Overview
384 @subsection VTY Overview
387 VTY stands for Virtual TeletYpe interface.  It means you can connect to
388 the daemon via the telnet protocol.
390 To enable a VTY interface, you have to setup a VTY password.  If there
391 is no VTY password, one cannot connect to the VTY interface at all.
393 @example
394 @group
395 % telnet localhost 2601
396 Trying 127.0.0.1...
397 Connected to localhost.
398 Escape character is '^]'.
400 Hello, this is @value{PACKAGE_NAME} (version @value{VERSION})
401 @value{COPYRIGHT_STR}
403 User Access Verification
405 Password: XXXXX
406 Router> ?
407   enable            Turn on privileged commands
408   exit              Exit current mode and down to previous mode
409   help              Description of the interactive help system
410   list              Print command list
411   show              Show running system information
412   who               Display who is on a vty
413 Router> enable
414 Password: XXXXX
415 Router# configure terminal
416 Router(config)# interface eth0
417 Router(config-if)# ip address 10.0.0.1/8
418 Router(config-if)# ^Z
419 Router#
420 @end group
421 @end example
423 '?' is very useful for looking up commands.
425 @node VTY Modes
426 @subsection VTY Modes
428 There are three basic VTY modes:
430 @menu
431 * VTY View Mode::               Mode for read-only interaction               
432 * VTY Enable Mode::             Mode for read-write interaction
433 * VTY Other Modes::             Special modes (tftp, etc)
434 @end menu
436 There are commands that may be restricted to specific VTY modes. 
438 @node VTY View Mode
439 @subsubsection VTY View Mode
440 @c to be written (gpoul)
443 This mode is for read-only access to the CLI. One may exit the mode by
444 leaving the system, or by entering @code{enable} mode.
446 @node VTY Enable Mode
447 @subsubsection VTY Enable Mode
449 @c to be written (gpoul)
450 This mode is for read-write access to the CLI. One may exit the mode by
451 leaving the system, or by escaping to view mode.
453 @node VTY Other Modes
454 @subsubsection VTY Other Modes
457 @c to be written (gpoul)
458 This page is for describing other modes.
460 @node VTY CLI Commands
461 @subsection VTY CLI Commands
463 Commands that you may use at the command-line are described in the following
464 three subsubsections.
466 @menu
467 * CLI Movement Commands::       Commands for moving the cursor about
468 * CLI Editing Commands::        Commands for changing text
469 * CLI Advanced Commands::       Other commands, session management and so on
470 @end menu
472 @node CLI Movement Commands
473 @subsubsection CLI Movement Commands
475 These commands are used for moving the CLI cursor. The @key{C} character
476 means press the Control Key.
478 @table @kbd
480 @item C-f
481 @itemx @key{RIGHT}
482 @kindex C-f
483 @kindex @key{RIGHT}
484 Move forward one character.
486 @item C-b
487 @itemx @key{LEFT}
488 @kindex C-b
489 @kindex @key{LEFT}
490 Move backward one character.
492 @item M-f
493 @kindex M-f
494 Move forward one word.
496 @item M-b
497 @kindex M-b
498 Move backward one word.
500 @item C-a
501 @kindex C-a
502 Move to the beginning of the line.
504 @item C-e
505 @kindex C-e
506 Move to the end of the line.
508 @end table
510 @node CLI Editing Commands
511 @subsubsection CLI Editing Commands
513 These commands are used for editing text on a line. The @key{C}
514 character means press the Control Key.
516 @table @kbd
518 @item C-h
519 @itemx @key{DEL}
520 @kindex C-h
521 @kindex @key{DEL}
522 Delete the character before point.
524 @item C-d
525 @kindex C-d
526 Delete the character after point.
528 @item M-d
529 @kindex M-d
530 Forward kill word.
532 @item C-w
533 @kindex C-w
534 Backward kill word.
536 @item C-k
537 @kindex C-k
538 Kill to the end of the line.
540 @item C-u
541 @kindex C-u
542 Kill line from the beginning, erasing input.
544 @item C-t
545 @kindex C-t
546 Transpose character.
548 @end table
550 @node CLI Advanced Commands
551 @subsubsection CLI Advanced Commands
553 There are several additional CLI commands for command line completions,
554 insta-help, and VTY session management.
556 @table @kbd
558 @item C-c
559 @kindex C-c
560 Interrupt current input and moves to the next line.
562 @item C-z
563 @kindex C-z
564 End current configuration session and move to top node.
567 @item C-n
568 @itemx @key{DOWN}
569 @kindex C-n
570 @kindex @key{DOWN}
571 Move down to next line in the history buffer.
573 @item C-p
574 @itemx @key{UP}
575 @kindex C-p
576 @kindex @key{UP}
577 Move up to previous line in the history buffer.
579 @item TAB
580 @kindex @key{TAB}
581 Use command line completion by typing @key{TAB}.
583 @item
584 @kindex ?
585 You can use command line help by typing @code{help} at the beginning of
586 the line.  Typing @kbd{?} at any point in the line will show possible
587 completions.
589 @end table