]>
Commit | Line | Data |
---|---|---|
0efdf0fe | 1 | .. _basic-commands: |
42fc5d26 QY |
2 | |
3 | ************** | |
db910447 | 4 | Basic Commands |
42fc5d26 QY |
5 | ************** |
6 | ||
2da6ccc3 | 7 | The following sections discuss commands common to all the routing daemons. |
42fc5d26 | 8 | |
0efdf0fe | 9 | .. _config-commands: |
42fc5d26 QY |
10 | |
11 | Config Commands | |
12 | =============== | |
13 | ||
42fc5d26 | 14 | |
42fc5d26 | 15 | |
42fc5d26 | 16 | |
42fc5d26 QY |
17 | |
18 | In a config file, you can write the debugging options, a vty's password, | |
2da6ccc3 QY |
19 | routing daemon configurations, a log file name, and so forth. This information |
20 | forms the initial command set for a routing beast as it is starting. | |
42fc5d26 | 21 | |
dc5564c7 | 22 | Config files are generally found in |INSTALL_PREFIX_ETC|. |
42fc5d26 | 23 | |
d7432def | 24 | Config Methods |
d71b9156 | 25 | -------------- |
d7432def QY |
26 | |
27 | There are two ways of configuring FRR. | |
28 | ||
29 | Traditionally each of the daemons had its own config file. The daemon name plus | |
30 | ``.conf`` was the default config file name. For example, zebra's default config | |
31 | file was :file:`zebra.conf`. This method is deprecated. | |
32 | ||
33 | Because of the amount of config files this creates, and the tendency of one | |
34 | daemon to rely on others for certain functionality, most deployments now use | |
35 | "integrated" configuration. In this setup all configuration goes into a single | |
36 | file, typically :file:`/etc/frr/frr.conf`. When starting up FRR using an init | |
37 | script or systemd, ``vtysh`` is invoked to read the config file and send the | |
38 | appropriate portions to only the daemons interested in them. Running | |
39 | configuration updates are persisted back to this single file using ``vtysh``. | |
40 | This is the recommended method. To use this method, add the following line to | |
41 | :file:`/etc/frr/vtysh.conf`: | |
42 | ||
43 | .. code-block:: frr | |
44 | ||
45 | service integrated-vtysh-config | |
46 | ||
47 | If you installed from source or used a package, this is probably already | |
48 | present. | |
49 | ||
50 | If desired, you can specify a config file using the :option:`-f` or | |
51 | :option:`--config_file` options when starting a daemon. | |
52 | ||
42fc5d26 | 53 | |
0efdf0fe | 54 | .. _basic-config-commands: |
42fc5d26 QY |
55 | |
56 | Basic Config Commands | |
57 | --------------------- | |
58 | ||
29adcd50 QY |
59 | .. clicmd:: hostname HOSTNAME |
60 | ||
8f58056c | 61 | Set hostname of the router. It is only for current ``vtysh``, it will not be |
62 | saved to any configuration file even with ``write file``. | |
63 | ||
64 | .. clicmd:: domainname DOMAINNAME | |
65 | ||
66 | Set domainname of the router. It is only for current ``vtysh``, it will not | |
67 | be saved to any configuration file even with ``write file``. | |
42fc5d26 | 68 | |
03750f1e | 69 | .. clicmd:: password PASSWORD |
29adcd50 | 70 | |
322e2d5c PM |
71 | Set password for vty interface. The ``no`` form of the command deletes the |
72 | password. If there is no password, a vty won't accept connections. | |
42fc5d26 | 73 | |
03750f1e | 74 | .. clicmd:: enable password PASSWORD |
29adcd50 | 75 | |
322e2d5c PM |
76 | Set enable password. The ``no`` form of the command deletes the enable |
77 | password. | |
42fc5d26 | 78 | |
9b802bf4 DL |
79 | .. clicmd:: service cputime-stats |
80 | ||
81 | Collect CPU usage statistics for individual FRR event handlers and CLI | |
82 | commands. This is enabled by default and can be disabled if the extra | |
83 | overhead causes a noticeable slowdown on your system. | |
84 | ||
85 | Disabling these statistics will also make the | |
86 | :clicmd:`service cputime-warning (1-4294967295)` limit non-functional. | |
87 | ||
88 | .. clicmd:: service cputime-warning (1-4294967295) | |
89 | ||
90 | Warn if the CPU usage of an event handler or CLI command exceeds the | |
91 | specified limit (in milliseconds.) Such warnings are generally indicative | |
92 | of some routine in FRR mistakenly blocking/hogging the processing loop and | |
93 | should be reported as a FRR bug. | |
94 | ||
95 | The default limit is 5 seconds (i.e. 5000), but this can be changed by the | |
96 | deprecated ``--enable-time-check=...`` compile-time option. | |
97 | ||
98 | This command has no effect if :clicmd:`service cputime-stats` is disabled. | |
99 | ||
100 | .. clicmd:: service walltime-warning (1-4294967295) | |
101 | ||
102 | Warn if the total wallclock time spent handling an event or executing a CLI | |
103 | command exceeds the specified limit (in milliseconds.) This includes time | |
104 | spent waiting for I/O or other tasks executing and may produce excessive | |
105 | warnings if the system is overloaded. (This may still be useful to | |
106 | provide an immediate sign that FRR is not operating correctly due to | |
107 | externally caused starvation.) | |
108 | ||
109 | The default limit is 5 seconds as above, including the same deprecated | |
110 | ``--enable-time-check=...`` compile-time option. | |
111 | ||
03750f1e | 112 | .. clicmd:: log trap LEVEL |
29adcd50 QY |
113 | |
114 | These commands are deprecated and are present only for historical | |
115 | compatibility. The log trap command sets the current logging level for all | |
116 | enabled logging destinations, and it sets the default for all future logging | |
117 | commands that do not specify a level. The normal default logging level is | |
2da6ccc3 QY |
118 | debugging. The ``no`` form of the command resets the default level for |
119 | future logging commands to debugging, but it does not change the logging | |
120 | level of existing logging destinations. | |
8d209861 | 121 | |
29adcd50 | 122 | |
03750f1e | 123 | .. clicmd:: log stdout LEVEL |
29adcd50 QY |
124 | |
125 | Enable logging output to stdout. If the optional second argument specifying | |
126 | the logging level is not present, the default logging level (typically | |
2da6ccc3 QY |
127 | debugging) will be used. The ``no`` form of the command disables logging to |
128 | stdout. The ``LEVEL`` argument must have one of these values: emergencies, | |
129 | alerts, critical, errors, warnings, notifications, informational, or | |
130 | debugging. Note that the existing code logs its most important messages with | |
131 | severity ``errors``. | |
8d209861 | 132 | |
f93640b8 DL |
133 | .. note:: |
134 | ||
135 | If ``systemd`` is in use and stdout is connected to systemd, FRR will | |
136 | automatically switch to ``journald`` extended logging for this target. | |
137 | ||
0eb5f938 DL |
138 | .. warning:: |
139 | ||
140 | FRRouting uses the ``writev()`` system call to write log messages. This | |
141 | call is supposed to be atomic, but in reality this does not hold for | |
142 | pipes or terminals, only regular files. This means that in rare cases, | |
143 | concurrent log messages from distinct threads may get jumbled in | |
144 | terminal output. Use a log file and ``tail -f`` if this rare chance is | |
145 | inacceptable to your setup. | |
146 | ||
03750f1e | 147 | .. clicmd:: log file [FILENAME [LEVEL]] |
8d209861 | 148 | |
29adcd50 | 149 | If you want to log into a file, please specify ``filename`` as |
2da6ccc3 | 150 | in this example: |
8d209861 | 151 | |
2da6ccc3 QY |
152 | :: |
153 | ||
154 | log file /var/log/frr/bgpd.log informational | |
8d209861 | 155 | |
29adcd50 QY |
156 | If the optional second argument specifying the logging level is not present, |
157 | the default logging level (typically debugging, but can be changed using the | |
158 | deprecated ``log trap`` command) will be used. The ``no`` form of the command | |
2da6ccc3 QY |
159 | disables logging to a file. |
160 | ||
03750f1e | 161 | .. clicmd:: log syslog [LEVEL] |
8d209861 | 162 | |
29adcd50 QY |
163 | Enable logging output to syslog. If the optional second argument specifying |
164 | the logging level is not present, the default logging level (typically | |
165 | debugging, but can be changed using the deprecated ``log trap`` command) will | |
166 | be used. The ``no`` form of the command disables logging to syslog. | |
8d209861 | 167 | |
f93640b8 DL |
168 | .. note:: |
169 | ||
170 | This uses the system's ``syslog()`` API, which does not support message | |
171 | batching or structured key/value data pairs. If possible, use | |
172 | :clicmd:`log extended EXTLOGNAME` with | |
173 | :clicmd:`destination syslog [supports-rfc5424]` instead of this. | |
174 | ||
175 | .. clicmd:: log extended EXTLOGNAME | |
176 | ||
177 | Create an extended logging target with the specified name. The name has | |
178 | no further meaning and is only used to identify the target. Multiple | |
179 | targets can be created and deleted with the ``no`` form. | |
180 | ||
181 | Refer to :ref:`ext-log-target` for further details and suboptions. | |
182 | ||
03750f1e | 183 | .. clicmd:: log monitor [LEVEL] |
29adcd50 | 184 | |
f93640b8 | 185 | This command is deprecated and does nothing. |
8d209861 | 186 | |
03750f1e | 187 | .. clicmd:: log facility [FACILITY] |
29adcd50 QY |
188 | |
189 | This command changes the facility used in syslog messages. The default | |
2da6ccc3 QY |
190 | facility is ``daemon``. The ``no`` form of the command resets the facility |
191 | to the default ``daemon`` facility. | |
8d209861 | 192 | |
03750f1e | 193 | .. clicmd:: log record-priority |
29adcd50 QY |
194 | |
195 | To include the severity in all messages logged to a file, to stdout, or to | |
196 | a terminal monitor (i.e. anything except syslog), | |
197 | use the ``log record-priority`` global configuration command. | |
198 | To disable this option, use the ``no`` form of the command. By default, | |
199 | the severity level is not included in logged messages. Note: some | |
32d9e333 DS |
200 | versions of syslogd can be configured to include the facility and |
201 | level in the messages emitted. | |
8d209861 | 202 | |
03750f1e | 203 | .. clicmd:: log timestamp precision [(0-6)] |
29adcd50 | 204 | |
2da6ccc3 QY |
205 | This command sets the precision of log message timestamps to the given |
206 | number of digits after the decimal point. Currently, the value must be in | |
207 | the range 0 to 6 (i.e. the maximum precision is microseconds). To restore | |
208 | the default behavior (1-second accuracy), use the ``no`` form of the | |
209 | command, or set the precision explicitly to 0. | |
42fc5d26 | 210 | |
2da6ccc3 | 211 | :: |
42fc5d26 | 212 | |
2da6ccc3 | 213 | log timestamp precision 3 |
42fc5d26 | 214 | |
29adcd50 QY |
215 | In this example, the precision is set to provide timestamps with |
216 | millisecond accuracy. | |
42fc5d26 | 217 | |
03750f1e | 218 | .. clicmd:: log commands |
29adcd50 | 219 | |
2da6ccc3 QY |
220 | This command enables the logging of all commands typed by a user to all |
221 | enabled log destinations. The note that logging includes full command lines, | |
80d02adb DS |
222 | including passwords. If the daemon startup option `--command-log-always` |
223 | is used to start the daemon then this command is turned on by default | |
224 | and cannot be turned off and the [no] form of the command is dissallowed. | |
42fc5d26 | 225 | |
9c2aa919 DL |
226 | .. clicmd:: log filtered-file [FILENAME [LEVEL]] |
227 | ||
228 | Configure a destination file for filtered logs with the | |
229 | :clicmd:`log filter-text WORD` command. | |
230 | ||
231 | .. clicmd:: log filter-text WORD | |
c103b19f SW |
232 | |
233 | This command forces logs to be filtered on a specific string. A log message | |
234 | will only be printed if it matches on one of the filters in the log-filter | |
9c2aa919 DL |
235 | table. The filter only applies to file logging targets configured with |
236 | :clicmd:`log filtered-file [FILENAME [LEVEL]]`. | |
c103b19f | 237 | |
018fa5f8 SW |
238 | .. note:: |
239 | ||
240 | Log filters help when you need to turn on debugs that cause significant | |
241 | load on the system (enabling certain debugs can bring FRR to a halt). | |
242 | Log filters prevent this but you should still expect a small performance | |
243 | hit due to filtering each of all those logs. | |
244 | ||
9c2aa919 DL |
245 | .. note:: |
246 | ||
247 | This setting is not saved to ``frr.conf`` and not shown in | |
248 | :clicmd:`show running-config`. It is intended for ephemeral debugging | |
249 | purposes only. | |
250 | ||
251 | .. clicmd:: clear log filter-text | |
c103b19f | 252 | |
9c2aa919 | 253 | This command clears all current filters in the log-filter table. |
c103b19f | 254 | |
7c945dff MS |
255 | |
256 | .. clicmd:: log immediate-mode | |
257 | ||
258 | Use unbuffered output for log and debug messages; normally there is | |
259 | some internal buffering. | |
260 | ||
de75bdc3 DL |
261 | .. clicmd:: log unique-id |
262 | ||
263 | Include ``[XXXXX-XXXXX]`` log message unique identifier in the textual part | |
264 | of log messages. This is enabled by default, but can be disabled with | |
265 | ``no log unique-id``. Please make sure the IDs are enabled when including | |
266 | logs for FRR bug reports. | |
267 | ||
268 | The unique identifiers are automatically generated based on source code | |
269 | file name, format string (before filling out) and severity. They do not | |
270 | change "randomly", but some cleanup work may cause large chunks of ID | |
271 | changes between releases. The IDs always start with a letter, consist of | |
272 | letters and numbers (and a dash for readability), are case insensitive, and | |
273 | ``I``, ``L``, ``O`` & ``U`` are excluded. | |
274 | ||
275 | This option will not affect future logging targets which allow putting the | |
276 | unique identifier in auxiliary metadata outside the log message text | |
277 | content. (No such logging target exists currently, but RFC5424 syslog and | |
278 | systemd's journald both support it.) | |
279 | ||
280 | .. clicmd:: debug unique-id XXXXX-XXXXX backtrace | |
281 | ||
282 | Print backtraces (call stack) for specific log messages, identified by | |
283 | their unique ID (see above.) Includes source code location and current | |
284 | event handler being executed. On some systems you may need to install a | |
285 | `debug symbols` package to get proper function names rather than raw code | |
286 | pointers. | |
287 | ||
288 | This command can be issued inside and outside configuration mode, and is | |
289 | saved to configuration only if it was given in configuration mode. | |
290 | ||
291 | .. warning:: | |
292 | ||
293 | Printing backtraces can significantly slow down logging calls and cause | |
294 | log files to quickly balloon in size. Remember to disable backtraces | |
295 | when they're no longer needed. | |
296 | ||
29adcd50 QY |
297 | .. clicmd:: service password-encryption |
298 | ||
299 | Encrypt password. | |
42fc5d26 | 300 | |
29adcd50 | 301 | .. clicmd:: service advanced-vty |
42fc5d26 | 302 | |
29adcd50 | 303 | Enable advanced mode VTY. |
42fc5d26 | 304 | |
29adcd50 QY |
305 | .. clicmd:: service terminal-length (0-512) |
306 | ||
2da6ccc3 QY |
307 | Set system wide line configuration. This configuration command applies to |
308 | all VTY interfaces. | |
42fc5d26 | 309 | |
29adcd50 QY |
310 | .. clicmd:: line vty |
311 | ||
312 | Enter vty configuration mode. | |
42fc5d26 | 313 | |
29adcd50 QY |
314 | .. clicmd:: banner motd default |
315 | ||
316 | Set default motd string. | |
42fc5d26 | 317 | |
038984fd DA |
318 | .. clicmd:: banner motd file FILE |
319 | ||
320 | Set motd string from file. The file must be in directory specified | |
321 | under ``--sysconfdir``. | |
322 | ||
038984fd DA |
323 | .. clicmd:: banner motd line LINE |
324 | ||
325 | Set motd string from an input. | |
326 | ||
29adcd50 QY |
327 | .. clicmd:: exec-timeout MINUTE [SECOND] |
328 | ||
329 | Set VTY connection timeout value. When only one argument is specified | |
330 | it is used for timeout value in minutes. Optional second argument is | |
331 | used for timeout value in seconds. Default timeout value is 10 minutes. | |
332 | When timeout value is zero, it means no timeout. | |
42fc5d26 | 333 | |
03750f1e QY |
334 | Not setting this, or setting the values to 0 0, means a timeout will not be |
335 | enabled. | |
42fc5d26 | 336 | |
29adcd50 QY |
337 | .. clicmd:: access-class ACCESS-LIST |
338 | ||
339 | Restrict vty connections with an access list. | |
42fc5d26 | 340 | |
2da6ccc3 | 341 | |
0efdf0fe | 342 | .. _sample-config-file: |
42fc5d26 QY |
343 | |
344 | Sample Config File | |
345 | ------------------ | |
346 | ||
347 | Below is a sample configuration file for the zebra daemon. | |
348 | ||
9eb95b3b | 349 | .. code-block:: frr |
42fc5d26 | 350 | |
9eb95b3b QY |
351 | ! |
352 | ! Zebra configuration file | |
353 | ! | |
a048cda5 DL |
354 | frr version 6.0 |
355 | frr defaults traditional | |
356 | ! | |
9eb95b3b QY |
357 | hostname Router |
358 | password zebra | |
359 | enable password zebra | |
360 | ! | |
361 | log stdout | |
362 | ! | |
363 | ! | |
42fc5d26 | 364 | |
8d209861 | 365 | |
2da6ccc3 QY |
366 | ``!`` and ``#`` are comment characters. If the first character of the word is |
367 | one of the comment characters then from the rest of the line forward will be | |
368 | ignored as a comment. | |
42fc5d26 | 369 | |
9eb95b3b | 370 | .. code-block:: frr |
42fc5d26 | 371 | |
9eb95b3b | 372 | password zebra!password |
42fc5d26 | 373 | |
2da6ccc3 QY |
374 | If a comment character is not the first character of the word, it's a normal |
375 | character. So in the above example ``!`` will not be regarded as a comment and | |
376 | the password is set to ``zebra!password``. | |
42fc5d26 | 377 | |
a048cda5 DL |
378 | |
379 | Configuration versioning, profiles and upgrade behavior | |
380 | ------------------------------------------------------- | |
381 | ||
382 | All |PACKAGE_NAME| daemons share a mechanism to specify a configuration profile | |
383 | and version for loading and saving configuration. Specific configuration | |
384 | settings take different default values depending on the selected profile and | |
385 | version. | |
386 | ||
387 | While the profile can be selected by user configuration and will remain over | |
388 | upgrades, |PACKAGE_NAME| will always write configurations using its current | |
389 | version. This means that, after upgrading, a ``write file`` may write out a | |
390 | slightly different configuration than what was read in. | |
391 | ||
392 | Since the previous configuration is loaded with its version's defaults, but | |
393 | the new configuration is written with the new defaults, any default that | |
394 | changed between versions will result in an appropriate configuration entry | |
395 | being written out. **FRRouting configuration is sticky, staying consistent | |
396 | over upgrades.** Changed defaults will only affect new configuration. | |
397 | ||
398 | Note that the loaded version persists into interactive configuration | |
399 | sessions. Commands executed in an interactive configuration session are | |
400 | no different from configuration loaded at startup. This means that when, | |
401 | say, you configure a new BGP peer, the defaults used for configuration | |
402 | are the ones selected by the last ``frr version`` command. | |
403 | ||
404 | .. warning:: | |
405 | ||
406 | Saving the configuration does not bump the daemons forward to use the new | |
407 | version for their defaults, but restarting them will, since they will then | |
408 | apply the new ``frr version`` command that was written out. Manually | |
409 | execute the ``frr version`` command in ``show running-config`` to avoid | |
410 | this intermediate state. | |
411 | ||
412 | This is visible in ``show running-config``: | |
413 | ||
414 | .. code-block:: frr | |
415 | ||
416 | Current configuration: | |
417 | ! | |
418 | ! loaded from 6.0 | |
419 | frr version 6.1-dev | |
420 | frr defaults traditional | |
421 | ! | |
422 | ||
423 | If you save and then restart with this configuration, the old defaults will | |
424 | no longer apply. Similarly, you could execute ``frr version 6.1-dev``, causing | |
425 | the new defaults to apply and the ``loaded from 6.0`` comment to disappear. | |
426 | ||
427 | ||
428 | Profiles | |
429 | ^^^^^^^^ | |
430 | ||
431 | |PACKAGE_NAME| provides configuration profiles to adapt its default settings | |
432 | to various usage scenarios. Currently, the following profiles are | |
433 | implemented: | |
434 | ||
435 | * ``traditional`` - reflects defaults adhering mostly to IETF standards or | |
436 | common practices in wide-area internet routing. | |
437 | * ``datacenter`` - reflects a single administrative domain with intradomain | |
438 | links using aggressive timers. | |
439 | ||
440 | Your distribution/installation may pre-set a profile through the ``-F`` command | |
441 | line option on all daemons. All daemons must be configured for the same | |
442 | profile. The value specified on the command line is only a pre-set and any | |
443 | ``frr defaults`` statement in the configuration will take precedence. | |
444 | ||
445 | .. note:: | |
446 | ||
447 | The profile must be the same across all daemons. Mismatches may result | |
448 | in undefined behavior. | |
449 | ||
450 | You can freely switch between profiles without causing any interruption or | |
451 | configuration changes. All settings remain at their previous values, and | |
452 | ``show running-configuration`` output will have new output listing the previous | |
453 | default values as explicit configuration. New configuration, e.g. adding a | |
454 | BGP peer, will use the new defaults. To apply the new defaults for existing | |
455 | configuration, the previously-invisible old defaults that are now shown must | |
456 | be removed from the configuration. | |
457 | ||
458 | ||
459 | Upgrade practices for interactive configuration | |
460 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | |
461 | ||
462 | If you configure |PACKAGE_NAME| interactively and use the configuration | |
463 | writing functionality to make changes persistent, the following | |
464 | recommendations apply in regards to upgrades: | |
465 | ||
466 | 1. Skipping major versions should generally work but is still inadvisable. | |
467 | To avoid unneeded issue, upgrade one major version at a time and write | |
468 | out the configuration after each update. | |
469 | ||
470 | 2. After installing a new |PACKAGE_NAME| version, check the configuration | |
471 | for differences against your old configuration. If any defaults changed | |
472 | that affect your setup, lines may appear or disappear. If a new line | |
473 | appears, it was previously the default (or not supported) and is now | |
485ac9a7 | 474 | necessary to retain previous behavior. If a line disappears, it |
a048cda5 DL |
475 | previously wasn't the default, but now is, so it is no longer necessary. |
476 | ||
477 | 3. Check the log files for deprecation warnings by using ``grep -i deprecat``. | |
478 | ||
479 | 4. After completing each upgrade, save the configuration and either restart | |
480 | |PACKAGE_NAME| or execute ``frr version <CURRENT>`` to ensure defaults of | |
481 | the new version are fully applied. | |
482 | ||
483 | ||
484 | Upgrade practices for autogenerated configuration | |
485 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | |
486 | ||
487 | When using |PACKAGE_NAME| with generated configurations (e.g. Ansible, | |
488 | Puppet, etc.), upgrade considerations differ somewhat: | |
489 | ||
490 | 1. Always write out a ``frr version`` statement in the configurations you | |
491 | generate. This ensures that defaults are applied consistently. | |
492 | ||
493 | 2. Try to not run more distinct versions of |PACKAGE_NAME| than necessary. | |
494 | Each version may need to be checked individually. If running a mix of | |
495 | older and newer installations, use the oldest version for the | |
496 | ``frr version`` statement. | |
497 | ||
498 | 3. When rolling out upgrades, generate a configuration as usual with the old | |
499 | version identifier and load it. Check for any differences or deprecation | |
500 | warnings. If there are differences in the configuration, propagate these | |
501 | back to the configuration generator to minimize relying on actual default | |
502 | values. | |
503 | ||
504 | 4. After the last installation of an old version is removed, change the | |
505 | configuration generation to a newer ``frr version`` as appropriate. Perform | |
506 | the same checks as when rolling out upgrades. | |
507 | ||
508 | ||
0efdf0fe | 509 | .. _terminal-mode-commands: |
42fc5d26 QY |
510 | |
511 | Terminal Mode Commands | |
512 | ====================== | |
513 | ||
29adcd50 QY |
514 | .. clicmd:: write terminal |
515 | ||
d1a242fd | 516 | Displays the current configuration to the vty interface. |
42fc5d26 | 517 | |
29adcd50 QY |
518 | .. clicmd:: write file |
519 | ||
d1a242fd | 520 | Write current configuration to configuration file. |
42fc5d26 | 521 | |
982589a3 | 522 | .. clicmd:: configure [terminal] |
29adcd50 | 523 | |
d1a242fd QY |
524 | Change to configuration mode. This command is the first step to |
525 | configuration. | |
42fc5d26 | 526 | |
29adcd50 QY |
527 | .. clicmd:: terminal length (0-512) |
528 | ||
2da6ccc3 QY |
529 | Set terminal display length to ``(0-512)``. If length is 0, no display |
530 | control is performed. | |
42fc5d26 | 531 | |
29adcd50 QY |
532 | .. clicmd:: who |
533 | ||
d1a242fd | 534 | Show a list of currently connected vty sessions. |
42fc5d26 | 535 | |
29adcd50 QY |
536 | .. clicmd:: list |
537 | ||
d1a242fd | 538 | List all available commands. |
42fc5d26 | 539 | |
29adcd50 QY |
540 | .. clicmd:: show version |
541 | ||
d1a242fd | 542 | Show the current version of |PACKAGE_NAME| and its build host information. |
42fc5d26 | 543 | |
29adcd50 QY |
544 | .. clicmd:: show logging |
545 | ||
2da6ccc3 QY |
546 | Shows the current configuration of the logging system. This includes the |
547 | status of all logging destinations. | |
42fc5d26 | 548 | |
c103b19f SW |
549 | .. clicmd:: show log-filter |
550 | ||
551 | Shows the current log filters applied to each daemon. | |
552 | ||
aa270404 | 553 | .. clicmd:: show memory [DAEMON] |
0a62b873 DL |
554 | |
555 | Show information on how much memory is used for which specific things in | |
556 | |PACKAGE_NAME|. Output may vary depending on system capabilities but will | |
557 | generally look something like this: | |
558 | ||
559 | :: | |
560 | ||
561 | frr# show memory | |
562 | System allocator statistics: | |
563 | Total heap allocated: 1584 KiB | |
564 | Holding block headers: 0 bytes | |
565 | Used small blocks: 0 bytes | |
566 | Used ordinary blocks: 1484 KiB | |
567 | Free small blocks: 2096 bytes | |
568 | Free ordinary blocks: 100 KiB | |
569 | Ordinary blocks: 2 | |
570 | Small blocks: 60 | |
571 | Holding blocks: 0 | |
572 | (see system documentation for 'mallinfo' for meaning) | |
573 | --- qmem libfrr --- | |
574 | Buffer : 3 24 72 | |
575 | Buffer data : 1 4120 4120 | |
576 | Host config : 3 (variably sized) 72 | |
577 | Command Tokens : 3427 72 247160 | |
578 | Command Token Text : 2555 (variably sized) 83720 | |
579 | Command Token Help : 2555 (variably sized) 61720 | |
580 | Command Argument : 2 (variably sized) 48 | |
581 | Command Argument Name : 641 (variably sized) 15672 | |
582 | [...] | |
583 | --- qmem Label Manager --- | |
584 | --- qmem zebra --- | |
585 | ZEBRA VRF : 1 912 920 | |
586 | Route Entry : 11 80 968 | |
587 | Static route : 1 192 200 | |
588 | RIB destination : 8 48 448 | |
589 | RIB table info : 4 16 96 | |
590 | Nexthop tracking object : 1 200 200 | |
591 | Zebra Name Space : 1 312 312 | |
592 | --- qmem Table Manager --- | |
593 | ||
594 | To understand system allocator statistics, refer to your system's | |
595 | :manpage:`mallinfo(3)` man page. | |
596 | ||
597 | Below these statistics, statistics on individual memory allocation types | |
598 | in |PACKAGE_NAME| (so-called `MTYPEs`) is printed: | |
599 | ||
600 | * the first column of numbers is the current count of allocations made for | |
601 | the type (the number decreases when items are freed.) | |
602 | * the second column is the size of each item. This is only available if | |
603 | allocations on a type are always made with the same size. | |
604 | * the third column is the total amount of memory allocated for the | |
605 | particular type, including padding applied by malloc. This means that | |
606 | the number may be larger than the first column multiplied by the second. | |
607 | Overhead incurred by malloc's bookkeeping is not included in this, and | |
608 | the column may be missing if system support is not available. | |
609 | ||
610 | When executing this command from ``vtysh``, each of the daemons' memory | |
aa270404 IR |
611 | usage is printed sequentially. You can specify the daemon's name to print |
612 | only its memory usage. | |
0a62b873 | 613 | |
a65f4b5d DS |
614 | .. clicmd:: show history |
615 | ||
616 | Dump the vtysh cli history. | |
617 | ||
29adcd50 QY |
618 | .. clicmd:: logmsg LEVEL MESSAGE |
619 | ||
2da6ccc3 QY |
620 | Send a message to all logging destinations that are enabled for messages of |
621 | the given severity. | |
622 | ||
fdd40d51 | 623 | .. clicmd:: find REGEX... |
8421b140 | 624 | |
fdd40d51 QY |
625 | This command performs a regex search across all defined commands in all |
626 | modes. As an example, suppose you're in enable mode and can't remember where | |
627 | the command to turn OSPF segment routing on is: | |
8421b140 QY |
628 | |
629 | :: | |
630 | ||
631 | frr# find segment-routing on | |
632 | (ospf) segment-routing on | |
fdd40d51 QY |
633 | (isis) segment-routing on |
634 | ||
8421b140 QY |
635 | |
636 | The CLI mode is displayed next to each command. In this example, | |
637 | :clicmd:`segment-routing on` is under the `router ospf` mode. | |
638 | ||
fdd40d51 QY |
639 | Similarly, suppose you want a listing of all commands that contain "l2vpn" |
640 | and "neighbor": | |
8421b140 QY |
641 | |
642 | :: | |
643 | ||
fdd40d51 QY |
644 | frr# find l2vpn.*neighbor |
645 | (view) show [ip] bgp l2vpn evpn neighbors <A.B.C.D|X:X::X:X|WORD> advertised-routes [json] | |
646 | (view) show [ip] bgp l2vpn evpn neighbors <A.B.C.D|X:X::X:X|WORD> routes [json] | |
647 | (view) show [ip] bgp l2vpn evpn rd ASN:NN_OR_IP-ADDRESS:NN neighbors <A.B.C.D|X:X::X:X|WORD> advertised-routes [json] | |
648 | (view) show [ip] bgp l2vpn evpn rd ASN:NN_OR_IP-ADDRESS:NN neighbors <A.B.C.D|X:X::X:X|WORD> routes [json] | |
8421b140 QY |
649 | ... |
650 | ||
fdd40d51 QY |
651 | |
652 | Note that when entering spaces as part of a regex specification, repeated | |
653 | spaces will be compressed into a single space for matching purposes. This is | |
654 | a consequence of spaces being used to delimit CLI tokens. If you need to | |
655 | match more than one space, use the ``\s`` escape. | |
656 | ||
657 | POSIX Extended Regular Expressions are supported. | |
658 | ||
659 | ||
8b1148bf DS |
660 | .. _common-show-commands: |
661 | ||
8b1148bf DS |
662 | .. clicmd:: show thread cpu [r|w|t|e|x] |
663 | ||
664 | This command displays system run statistics for all the different event | |
665 | types. If no options is specified all different run types are displayed | |
666 | together. Additionally you can ask to look at (r)ead, (w)rite, (t)imer, | |
f75e802d DS |
667 | (e)vent and e(x)ecute thread event types. If you have compiled with |
668 | disable-cpu-time then this command will not show up. | |
8b1148bf | 669 | |
8b1148bf DS |
670 | .. clicmd:: show thread poll |
671 | ||
672 | This command displays FRR's poll data. It allows a glimpse into how | |
673 | we are setting each individual fd for the poll command at that point | |
674 | in time. | |
42fc5d26 | 675 | |
a698ba16 DS |
676 | .. clicmd:: show thread timers |
677 | ||
678 | This command displays FRR's timer data for timers that will pop in | |
679 | the future. | |
680 | ||
1c9bd416 RZ |
681 | .. clicmd:: show yang operational-data XPATH [{format <json|xml>|translate TRANSLATOR|with-config}] DAEMON |
682 | ||
683 | Display the YANG operational data starting from XPATH. The default | |
684 | format is JSON, but can be displayed in XML as well. | |
685 | ||
686 | Normally YANG operational data are located inside containers marked | |
687 | as `read-only`. | |
688 | ||
689 | Optionally it is also possible to display configuration leaves in | |
690 | addition to operational data with the option `with-config`. This | |
691 | option enables the display of configuration leaves with their | |
692 | currently configured value (if the leaf is optional it will only show | |
693 | if it was created or has a default value). | |
694 | ||
0efdf0fe | 695 | .. _common-invocation-options: |
42fc5d26 QY |
696 | |
697 | Common Invocation Options | |
698 | ========================= | |
699 | ||
be46d288 | 700 | These options apply to all |PACKAGE_NAME| daemons. |
42fc5d26 QY |
701 | |
702 | ||
c9365894 | 703 | .. option:: -d, --daemon |
42fc5d26 | 704 | |
d1a242fd | 705 | Run in daemon mode. |
29adcd50 | 706 | |
c9365894 | 707 | .. option:: -f, --config_file <file> |
42fc5d26 | 708 | |
d1a242fd | 709 | Set configuration file name. |
42fc5d26 | 710 | |
d1a242fd | 711 | .. option:: -h, --help |
42fc5d26 | 712 | |
d1a242fd | 713 | Display this help and exit. |
29adcd50 | 714 | |
c9365894 | 715 | .. option:: -i, --pid_file <file> |
42fc5d26 | 716 | |
d1a242fd QY |
717 | Upon startup the process identifier of the daemon is written to a file, |
718 | typically in :file:`/var/run`. This file can be used by the init system | |
719 | to implement commands such as ``.../init.d/zebra status``, | |
720 | ``.../init.d/zebra restart`` or ``.../init.d/zebra stop``. | |
42fc5d26 | 721 | |
2da6ccc3 QY |
722 | The file name is an run-time option rather than a configure-time option so |
723 | that multiple routing daemons can be run simultaneously. This is useful when | |
724 | using |PACKAGE_NAME| to implement a routing looking glass. One machine can | |
725 | be used to collect differing routing views from differing points in the | |
726 | network. | |
29adcd50 | 727 | |
c9365894 | 728 | .. option:: -A, --vty_addr <address> |
42fc5d26 | 729 | |
2da6ccc3 QY |
730 | Set the VTY local address to bind to. If set, the VTY socket will only be |
731 | bound to this address. | |
42fc5d26 | 732 | |
c9365894 | 733 | .. option:: -P, --vty_port <port> |
29adcd50 | 734 | |
d1a242fd QY |
735 | Set the VTY TCP port number. If set to 0 then the TCP VTY sockets will not |
736 | be opened. | |
42fc5d26 | 737 | |
d1a242fd | 738 | .. option:: -u <user> |
42fc5d26 | 739 | |
d1a242fd | 740 | Set the user and group to run as. |
29adcd50 | 741 | |
6ed85950 DS |
742 | .. option:: -N <namespace> |
743 | ||
744 | Set the namespace that the daemon will run in. A "/<namespace>" will | |
745 | be added to all files that use the statedir. If you have "/var/run/frr" | |
746 | as the default statedir then it will become "/var/run/frr/<namespace>". | |
747 | ||
ac2cb9bf IR |
748 | .. option:: -o, --vrfdefaultname <name> |
749 | ||
750 | Set the name used for the *Default VRF* in CLI commands and YANG models. | |
751 | This option must be the same for all running daemons. By default, the name | |
752 | is "default". | |
753 | ||
754 | .. seealso:: :ref:`zebra-vrf` | |
755 | ||
c9365894 | 756 | .. option:: -v, --version |
42fc5d26 | 757 | |
d1a242fd | 758 | Print program version. |
42fc5d26 | 759 | |
80d02adb DS |
760 | .. option:: --command-log-always |
761 | ||
762 | Cause the daemon to always log commands entered to the specified log file. | |
763 | This also makes the `no log commands` command dissallowed. Enabling this | |
764 | is suggested if you have need to track what the operator is doing on | |
765 | this router. | |
766 | ||
ed74ddf4 DS |
767 | .. option:: --log <stdout|syslog|file:/path/to/log/file> |
768 | ||
769 | When initializing the daemon, setup the log to go to either stdout, | |
770 | syslog or to a file. These values will be displayed as part of | |
771 | a show run. Additionally they can be overridden at runtime if | |
772 | desired via the normal log commands. | |
773 | ||
3cf3e018 DS |
774 | .. option:: --log-level <emergencies|alerts|critical|errors|warnings|notifications|informational|debugging> |
775 | ||
776 | When initializing the daemon, allow the specification of a default | |
777 | log level at startup from one of the specified levels. | |
778 | ||
1c2facd1 RW |
779 | .. option:: --tcli |
780 | ||
781 | Enable the transactional CLI mode. | |
782 | ||
1a9f340b MS |
783 | .. option:: --limit-fds <number> |
784 | ||
785 | Limit the number of file descriptors that will be used internally | |
786 | by the FRR daemons. By default, the daemons use the system ulimit | |
787 | value. | |
788 | ||
0efdf0fe | 789 | .. _loadable-module-support: |
42fc5d26 QY |
790 | |
791 | Loadable Module Support | |
792 | ======================= | |
793 | ||
8d209861 QY |
794 | FRR supports loading extension modules at startup. Loading, reloading or |
795 | unloading modules at runtime is not supported (yet). To load a module, use | |
42fc5d26 QY |
796 | the following command line option at daemon startup: |
797 | ||
798 | ||
c9365894 | 799 | .. option:: -M, --module <module:options> |
29adcd50 | 800 | |
d1a242fd QY |
801 | Load the specified module, optionally passing options to it. If the module |
802 | name contains a slash (/), it is assumed to be a full pathname to a file to | |
803 | be loaded. If it does not contain a slash, the |INSTALL_PREFIX_MODULES| | |
804 | directory is searched for a module of the given name; first with the daemon | |
805 | name prepended (e.g. ``zebra_mod`` for ``mod``), then without the daemon | |
806 | name prepended. | |
42fc5d26 | 807 | |
d1a242fd QY |
808 | This option is available on all daemons, though some daemons may not have |
809 | any modules available to be loaded. | |
42fc5d26 | 810 | |
2da6ccc3 | 811 | |
42fc5d26 QY |
812 | The SNMP Module |
813 | --------------- | |
814 | ||
815 | If SNMP is enabled during compile-time and installed as part of the package, | |
2da6ccc3 | 816 | the ``snmp`` module can be loaded for the *Zebra*, *bgpd*, *ospfd*, *ospf6d* |
8d209861 | 817 | and *ripd* daemons. |
42fc5d26 | 818 | |
2da6ccc3 QY |
819 | The module ignores any options passed to it. Refer to :ref:`snmp-support` for |
820 | information on its usage. | |
821 | ||
42fc5d26 QY |
822 | |
823 | The FPM Module | |
824 | -------------- | |
825 | ||
d1a242fd QY |
826 | If FPM is enabled during compile-time and installed as part of the package, the |
827 | ``fpm`` module can be loaded for the *zebra* daemon. This provides the | |
828 | Forwarding Plane Manager ("FPM") API. | |
42fc5d26 | 829 | |
d1e7591e QY |
830 | The module expects its argument to be either ``Netlink`` or ``protobuf``, |
831 | specifying the encapsulation to use. ``Netlink`` is the default, and | |
d1a242fd | 832 | ``protobuf`` may not be available if the module was built without protobuf |
0efdf0fe | 833 | support. Refer to :ref:`zebra-fib-push-interface` for more information. |
42fc5d26 | 834 | |
2da6ccc3 | 835 | |
0efdf0fe | 836 | .. _virtual-terminal-interfaces: |
42fc5d26 QY |
837 | |
838 | Virtual Terminal Interfaces | |
839 | =========================== | |
840 | ||
841 | VTY -- Virtual Terminal [aka TeletYpe] Interface is a command line | |
842 | interface (CLI) for user interaction with the routing daemon. | |
843 | ||
2da6ccc3 | 844 | |
0efdf0fe | 845 | .. _vty-overview: |
42fc5d26 QY |
846 | |
847 | VTY Overview | |
848 | ------------ | |
849 | ||
8d209861 | 850 | VTY stands for Virtual TeletYpe interface. It means you can connect to |
42fc5d26 QY |
851 | the daemon via the telnet protocol. |
852 | ||
8d209861 | 853 | To enable a VTY interface, you have to setup a VTY password. If there |
42fc5d26 QY |
854 | is no VTY password, one cannot connect to the VTY interface at all. |
855 | ||
856 | :: | |
857 | ||
9eb95b3b QY |
858 | % telnet localhost 2601 |
859 | Trying 127.0.0.1... | |
860 | Connected to localhost. | |
861 | Escape character is '^]'. | |
42fc5d26 | 862 | |
9eb95b3b QY |
863 | Hello, this is |PACKAGE_NAME| (version |PACKAGE_VERSION|) |
864 | |COPYRIGHT_STR| | |
42fc5d26 | 865 | |
9eb95b3b | 866 | User Access Verification |
42fc5d26 | 867 | |
9eb95b3b QY |
868 | Password: XXXXX |
869 | Router> ? | |
870 | enable . . . Turn on privileged commands | |
871 | exit . . . Exit current mode and down to previous mode | |
872 | help . . . Description of the interactive help system | |
873 | list . . . Print command list | |
874 | show . . . Show system inform | |
8d209861 | 875 | |
9eb95b3b QY |
876 | wh. . . Display who is on a vty |
877 | Router> enable | |
878 | Password: XXXXX | |
879 | Router# configure terminal | |
880 | Router(config)# interface eth0 | |
881 | Router(config-if)# ip address 10.0.0.1/8 | |
882 | Router(config-if)# ^Z | |
883 | Router# | |
42fc5d26 | 884 | |
8d209861 | 885 | |
0efdf0fe | 886 | .. _vty-modes: |
42fc5d26 QY |
887 | |
888 | VTY Modes | |
889 | --------- | |
890 | ||
891 | There are three basic VTY modes: | |
892 | ||
893 | There are commands that may be restricted to specific VTY modes. | |
894 | ||
0efdf0fe | 895 | .. _vty-view-mode: |
42fc5d26 QY |
896 | |
897 | VTY View Mode | |
898 | ^^^^^^^^^^^^^ | |
899 | ||
900 | This mode is for read-only access to the CLI. One may exit the mode by | |
901 | leaving the system, or by entering `enable` mode. | |
902 | ||
0efdf0fe | 903 | .. _vty-enable-mode: |
42fc5d26 QY |
904 | |
905 | VTY Enable Mode | |
906 | ^^^^^^^^^^^^^^^ | |
907 | ||
908 | This mode is for read-write access to the CLI. One may exit the mode by | |
909 | leaving the system, or by escaping to view mode. | |
910 | ||
0efdf0fe | 911 | .. _vty-other-modes: |
42fc5d26 QY |
912 | |
913 | VTY Other Modes | |
914 | ^^^^^^^^^^^^^^^ | |
915 | ||
916 | This page is for describing other modes. | |
917 | ||
0efdf0fe | 918 | .. _vty-cli-commands: |
42fc5d26 QY |
919 | |
920 | VTY CLI Commands | |
921 | ---------------- | |
922 | ||
923 | Commands that you may use at the command-line are described in the following | |
924 | three subsubsections. | |
925 | ||
0efdf0fe | 926 | .. _cli-movement-commands: |
42fc5d26 QY |
927 | |
928 | CLI Movement Commands | |
929 | ^^^^^^^^^^^^^^^^^^^^^ | |
930 | ||
931 | These commands are used for moving the CLI cursor. The :kbd:`C` character | |
932 | means press the Control Key. | |
933 | ||
8d209861 | 934 | :kbd:`C-f` / :kbd:`LEFT` |
9eb95b3b | 935 | Move forward one character. |
42fc5d26 | 936 | |
8d209861 | 937 | :kbd:`C-b` / :kbd:`RIGHT` |
9eb95b3b | 938 | Move backward one character. |
42fc5d26 | 939 | |
8d209861 | 940 | :kbd:`M-f` |
9eb95b3b | 941 | Move forward one word. |
42fc5d26 | 942 | |
8d209861 | 943 | :kbd:`M-b` |
9eb95b3b | 944 | Move backward one word. |
42fc5d26 | 945 | |
8d209861 | 946 | :kbd:`C-a` |
9eb95b3b | 947 | Move to the beginning of the line. |
42fc5d26 | 948 | |
8d209861 | 949 | :kbd:`C-e` |
9eb95b3b | 950 | Move to the end of the line. |
42fc5d26 QY |
951 | |
952 | ||
0efdf0fe | 953 | .. _cli-editing-commands: |
42fc5d26 QY |
954 | |
955 | CLI Editing Commands | |
956 | ^^^^^^^^^^^^^^^^^^^^ | |
957 | ||
958 | These commands are used for editing text on a line. The :kbd:`C` | |
959 | character means press the Control Key. | |
960 | ||
961 | ||
8d209861 | 962 | :kbd:`C-h` / :kbd:`DEL` |
9eb95b3b | 963 | Delete the character before point. |
42fc5d26 QY |
964 | |
965 | ||
8d209861 | 966 | :kbd:`C-d` |
9eb95b3b | 967 | Delete the character after point. |
42fc5d26 QY |
968 | |
969 | ||
8d209861 | 970 | :kbd:`M-d` |
9eb95b3b | 971 | Forward kill word. |
42fc5d26 QY |
972 | |
973 | ||
8d209861 | 974 | :kbd:`C-w` |
9eb95b3b | 975 | Backward kill word. |
42fc5d26 QY |
976 | |
977 | ||
8d209861 | 978 | :kbd:`C-k` |
9eb95b3b | 979 | Kill to the end of the line. |
42fc5d26 QY |
980 | |
981 | ||
8d209861 | 982 | :kbd:`C-u` |
9eb95b3b | 983 | Kill line from the beginning, erasing input. |
42fc5d26 QY |
984 | |
985 | ||
8d209861 | 986 | :kbd:`C-t` |
9eb95b3b | 987 | Transpose character. |
42fc5d26 QY |
988 | |
989 | ||
990 | CLI Advanced Commands | |
991 | ^^^^^^^^^^^^^^^^^^^^^ | |
992 | ||
993 | There are several additional CLI commands for command line completions, | |
994 | insta-help, and VTY session management. | |
995 | ||
996 | ||
8d209861 | 997 | :kbd:`C-c` |
9eb95b3b | 998 | Interrupt current input and moves to the next line. |
42fc5d26 QY |
999 | |
1000 | ||
8d209861 | 1001 | :kbd:`C-z` |
9eb95b3b | 1002 | End current configuration session and move to top node. |
42fc5d26 QY |
1003 | |
1004 | ||
8d209861 | 1005 | :kbd:`C-n` / :kbd:`DOWN` |
9eb95b3b | 1006 | Move down to next line in the history buffer. |
42fc5d26 QY |
1007 | |
1008 | ||
8d209861 | 1009 | :kbd:`C-p` / :kbd:`UP` |
9eb95b3b | 1010 | Move up to previous line in the history buffer. |
42fc5d26 QY |
1011 | |
1012 | ||
8d209861 | 1013 | :kbd:`TAB` |
9eb95b3b | 1014 | Use command line completion by typing :kbd:`TAB`. |
42fc5d26 QY |
1015 | |
1016 | ||
8d209861 | 1017 | :kbd:`?` |
9eb95b3b QY |
1018 | You can use command line help by typing ``help`` at the beginning of the |
1019 | line. Typing :kbd:`?` at any point in the line will show possible | |
1020 | completions. | |
42fc5d26 | 1021 | |
4c54343f QY |
1022 | Pipe Actions |
1023 | ^^^^^^^^^^^^ | |
1024 | ||
1025 | VTY supports optional modifiers at the end of commands that perform | |
1026 | postprocessing on command output or modify the action of commands. These do not | |
1027 | show up in the :kbd:`?` or :kbd:`TAB` suggestion lists. | |
1028 | ||
1029 | ``... | include REGEX`` | |
1030 | Filters the output of the preceding command, including only lines which | |
1031 | match the POSIX Extended Regular Expression ``REGEX``. Do not put the regex | |
1032 | in quotes. | |
1033 | ||
1034 | Examples: | |
1035 | ||
1036 | :: | |
1037 | ||
1038 | frr# show ip bgp sum json | include remoteAs | |
1039 | "remoteAs":0, | |
1040 | "remoteAs":455, | |
1041 | "remoteAs":99, | |
1042 | ||
1043 | :: | |
1044 | ||
1045 | frr# show run | include neigh.*[0-9]{2}\.0\.[2-4]\.[0-9]* | |
1046 | neighbor 10.0.2.106 remote-as 99 | |
1047 | neighbor 10.0.2.107 remote-as 99 | |
1048 | neighbor 10.0.2.108 remote-as 99 | |
1049 | neighbor 10.0.2.109 remote-as 99 | |
1050 | neighbor 10.0.2.110 remote-as 99 | |
1051 | neighbor 10.0.3.111 remote-as 111 | |
1052 |