summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* nhrpd: Use our built-in printf functionalityDonald Sharp2021-03-108-119/+56
| | | | Signed-off-by: Donald Sharp <sharpd@nvidia.com>
* ripd: Convert to using internal printf formattersDonald Sharp2021-03-101-14/+7
| | | | Signed-off-by: Donald Sharp <sharpd@nvidia.com>
* ripngd: Convet to using internal printf modifiersDonald Sharp2021-03-101-5/+2
| | | | Signed-off-by: Donald Sharp <sharpd@nvidia.com>
* watchfrr: Convert to not use warning in warning messagesDonald Sharp2021-03-101-3/+3
| | | | | | | We do not need to display: `Warning: ...` in a zlog_warn message Signed-off-by: Donald Sharp <sharpd@nvidia.com>
* ospfd: Convert to using proper string formattingDonald Sharp2021-03-103-88/+34
| | | | Signed-off-by: Donald Sharp <sharpd@nvidia.com>
* bgpd: Convert remaining string output to our internal typesDonald Sharp2021-03-109-180/+80
| | | | Signed-off-by: Donald Sharp <sharpd@nvidia.com>
* Merge pull request #8217 from Orange-OpenSource/ospf_srMark Stapp2021-03-093-8/+23
|\ | | | | ospfd: Correct Segment Routing prefix bugs
| * ospfd: Correct Segment Routing prefix bugsOlivier Dugeon2021-03-093-8/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch solves 2 Segment Routing prefix bugs: - If Segment Routing is not enabled in the initial configuration, Extended Prefix Opaque LSA is not flood. This is due to a control flag which is set only when Segment Routing is enabled at startup and not latter. - Attempting to modify Segment Routing prefix flag e.g. adding or removing no-php or explicit-null flag, doesn't work as expected: Corresponding entry in the MPLS table is not updated, Extended Prefix Opaque LSA carry wrong flag value, and neighbor set a wrong configuration in the MPLS table for this Segment Routing prefix. The first bug is corrected in ospfd/ospf_ext.c: - Flag setting is moved from ospf_ext_ism_change() to set_ext_prefix() function The seconf one is corrected in ospfd/ospf_sr.c: - For self node, previous MPLS entry is removed if needed and flag reset before setting the new Segment Routing prefix configuration - For neighbor node, srnext field of sr_prefix structure is always set and not only for new SR Prefix. Signed-off-by: Olivier Dugeon <olivier.dugeon@orange.com>
* | Merge pull request #8219 from mjstapp/fix_babel_doc_dupRafael Zalamena2021-03-091-5/+0
|\ \ | | | | | | doc: remove duplicate entry from babeld doc
| * | doc: remove duplicate entry from babeld docMark Stapp2021-03-091-5/+0
| | | | | | | | | | | | | | | | | | Remove a duplicated entry from the babeld doc. Signed-off-by: Mark Stapp <mjs@voltanet.io>
* | | Merge pull request #8123 from gromit1811/fix_topotest_ipv6_linklocalRuss White2021-03-091-1/+1
|\ \ \ | | | | | | | | tests: Fix determination of IPv6 link-local addresses
| * | | tests: Fix determination of IPv6 link-local addressesMartin Buck2021-02-221-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When parsing the output of "ip -6 address", allow arbitrary base interface names (the part after "@" in the interface name), not just "if0-9". Without this, link-local addresses sometimes are attributed to the wrong interface because we're not matching the interface name but still handle the interface's addresses. Signed-off-by: Martin Buck <mb-tmp-tvguho.pbz@gromit.dyndns.org>
* | | | Merge pull request #8138 from ckishimo/ospfv3_prefixRuss White2021-03-093-39/+18
|\ \ \ \ | | | | | | | | | | ospf6d: fix LSA prefix options
| * | | | ospf6d: add DN bit in prefix optionsckishimo2021-02-232-14/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | According to RFC 5340 appendix A.4.1.1 0 1 2 3 4 5 6 7 +--+--+--+--+--+-+--+--+ | | | |DN| P|x|LA|NU| +--+--+--+--+--+-+--+--+ Signed-off-by: ckishimo <carles.kishimoto@gmail.com>
| * | | | ospf6d: remove redundant code when printing prefix optionsckishimo2021-02-231-38/+8
| | | | | | | | | | | | | | | | | | | | Signed-off-by: ckishimo <carles.kishimoto@gmail.com>
| * | | | ospf6d: print prefix options for lsa type 3 and 5ckishimo2021-02-231-1/+15
| | | | | | | | | | | | | | | | | | | | Signed-off-by: ckishimo <carles.kishimoto@gmail.com>
* | | | | Merge pull request #8158 from idryzhov/staticd-fix-blackholeRuss White2021-03-091-0/+36
|\ \ \ \ \ | |_|_|/ / |/| | | | staticd: forbid blackhole and non-blackhole nexthops in a single route
| * | | | staticd: forbid blackhole and non-blackhole nexthops in a single routeIgor Ryzhov2021-03-031-0/+36
| | | | | | | | | | | | | | | | | | | | Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
* | | | | Merge pull request #6807 from opensourcerouting/xref-extractRuss White2021-03-0932-16/+2933
|\ \ \ \ \ | | | | | | | | | | | | xrefs extraction tool
| * | | | | doc: add libelf to build docsDavid Lamparter2021-02-2412-12/+19
| | | | | | | | | | | | | | | | | | | | | | | | Signed-off-by: David Lamparter <equinox@diac24.net>
| * | | | | doc: quick HOWTO on `python/xrelfo.py`David Lamparter2021-02-231-2/+47
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Just a few paragraphs on what it does and how to invoke it. Signed-off-by: David Lamparter <equinox@diac24.net>
| * | | | | python/xrelfo: cross-platform xrefstructs.jsonDavid Lamparter2021-02-232-67/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Just get names, types and order from pahole; ditch offset & size since they're different on 32/64 bit. None of the structs has padding currently; if we really need that it can be implemented in the future. (Padding will raise an exception, so it won't break silently.) Signed-off-by: David Lamparter <equinox@diac24.net>
| * | | | | lib: get rid of padding in struct cmd_elementDavid Lamparter2021-02-231-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This makes the Python code looking at xrefs much easier. Signed-off-by: David Lamparter <equinox@diac24.net>
| * | | | | lib/xref: record log message format argsDavid Lamparter2021-02-234-17/+59
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Apparently you can do `#__VA_ARGS__` and it actually does something sensible, so here we go recording the format parameters for log messages into the xref. This allows some more checking in xrelfo.py, e.g. hints to use `%pFX` and co. Signed-off-by: David Lamparter <equinox@diac24.net>
| * | | | | build: extract xrefsDavid Lamparter2021-02-233-0/+33
| | | | | | | | | | | | | | | | | | | | | | | | Signed-off-by: David Lamparter <equinox@diac24.net>
| * | | | | python/xrelfo: the ELF xref extractorDavid Lamparter2021-02-239-0/+1516
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This creates JSON dumps of all the xref structs littered around FRR. Signed-off-by: David Lamparter <equinox@diac24.net>
| * | | | | lib/clippy: add libelf wrapperDavid Lamparter2021-02-236-1/+1323
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This adds _clippy.ELFFile, which provides a fast wrapper around libelf. The API is similar to / a subset of pyelfutils, which unfortunately is painfully slow (to the tune of minutes instead of seconds.) The idea is that xrefs can be read out of ELF files by reading out the "xref_array" section or "FRRouting/XREF" note. Signed-off-by: David Lamparter <equinox@diac24.net>
* | | | | | Merge pull request #8176 from LabNConsulting/chopps/fix-locale-failDavid Lamparter2021-03-091-4/+8
|\ \ \ \ \ \ | |_|_|_|_|/ |/| | | | | tests: Sort expected and actual to avoid locale issues
| * | | | | tests: Sort expected and actual to avoid locale issuesChristian Hopps2021-03-041-4/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Avoid undocumented topotest dependency on installing en_US locale. With this change dependency is removed. Signed-off-by: Christian Hopps <chopps@labn.net>
* | | | | | Merge pull request #8180 from kuldeepkash/topojson_frameworkDonatas Abraitis2021-03-0820-345/+544
|\ \ \ \ \ \ | | | | | | | | | | | | | | tests: Improve error/assert message logging
| * | | | | | tests: Improve error/assert message loggingKuldeep Kashyap2021-03-0620-345/+544
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1. Improved error meesage logging. 2. No functionality changes only put some meaningfull error messages. Signed-off-by: Kuldeep Kashyap <kashyapk@vmware.com>
* | | | | | | Merge pull request #8208 from donaldsharp/validation_stateDonatas Abraitis2021-03-083-0/+41
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | bgpd: Display RPKI validation state if we have it
| * | | | | | | bgpd: Display RPKI validation state if we have itDonald Sharp2021-03-073-0/+41
| |/ / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When dumping data about prefixes in bgp. Let's dump the rpki validation state as well: Output if rpki is turned on: janelle# show rpki prefix 2003::/19 Prefix Prefix Length Origin-AS 2003:: 19 - 19 3320 janelle# show bgp ipv6 uni 2003::/19 BGP routing table entry for 2003::/19 Paths: (1 available, best #1, table default) Not advertised to any peer 15096 6939 3320 ::ffff:4113:867a from 65.19.134.122 (193.72.216.231) (fe80::e063:daff:fe79:1dab) (used) Origin IGP, valid, external, best (First path received), validation-state: valid Last update: Sat Mar 6 09:20:51 2021 janelle# show rpki prefix 8.8.8.0/24 Prefix Prefix Length Origin-AS janelle# show bgp ipv4 uni 8.8.8.0/24 BGP routing table entry for 8.8.8.0/24 Paths: (1 available, best #1, table default) Advertised to non peer-group peers: 100.99.229.142 15096 6939 15169 65.19.134.122 from 65.19.134.122 (193.72.216.231) Origin IGP, valid, external, best (First path received), validation-state: not found Last update: Sat Mar 6 09:21:25 2021 Example output when rpki is not configured: eva# show bgp ipv4 uni 8.8.8.0/24 BGP routing table entry for 8.8.8.0/24 Paths: (1 available, best #1, table default) Advertised to non peer-group peers: janelle(192.168.161.137) 64539 15096 6939 15169 192.168.161.137(janelle) from janelle(192.168.161.137) (192.168.44.1) Origin IGP, valid, external, bestpath-from-AS 64539, best (First path received) Last update: Sat Mar 6 09:33:51 2021 Signed-off-by: Donald Sharp <sharpd@nvidia.com>
* | | | | | | Merge pull request #8195 from qlyoung/fix-community-type-commandDonatas Abraitis2021-03-071-8/+1
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | tests: fix community-list invalid command
| * | | | | | | tests: fix community-list invalid commandQuentin Young2021-03-031-8/+1
| | |_|_|/ / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Didn't test this but it's already randomly broken so cant be worse Hopefully fixes: raise InvalidCLIError("%s" % output) InvalidCLIError: line 2: % Command incomplete[4]: bgp large-community-list standard Test1 permit Signed-off-by: Quentin Young <qlyoung@nvidia.com>
* | | | | | | Merge pull request #8185 from volta-networks/fix_ospf6_changing_area_to_stubDonald Sharp2021-03-074-2/+32
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | ospf6d: Don't advertise AS-External LSAs into stub area
| * | | | | | | ospf6d: Don't advertise AS-External LSAs into stub arealynne2021-03-034-2/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If area is a normal area and has adjacencies up and then the user changes the area to a stub area, the code was leaving existing AS-External LSAs in the database and was sending AS-External LSAs into the stub area causing the adjacency to stay in Ex-Start. With this change we now cleanup the AS-External LSAs that existed when area was not a stub and do not advertise AS-External LSAs into the stub area. Signed-off-by: Lynne Morrison <lynne@voltanet.io>
* | | | | | | | Merge pull request #8206 from aldobrrrr/add_isis_redist_routemap_match_tagDonald Sharp2021-03-074-4/+39
|\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | isisd: added support for routemap match tag in redistribution
| * | | | | | | | isisd: added support for routemap match tag in redistributionEmanuele Altomare2021-03-054-4/+39
| | |_|/ / / / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Now it's possible to filter routes redistributed by another protocol using tag which comes from zebra daemon. Example of a possible configuration: ``` ! ipv6 route fd00::/48 blackhole tag 20 ipv6 route fd00::/60 blackhole tag 10 ! interface one ipv6 router isis COMMON isis circuit-type level-1 ! interface two ipv6 router isis COMMON isis circuit-type level-2-only ! router isis COMMON net fd.0000.0000.0000.0001.00 redistribute ipv6 static level-1 route-map static-l1 redistribute ipv6 static level-2 route-map static-l2 topology ipv6-unicast ! route-map static-l1 permit 10 match tag 10 ! route-map static-l2 permit 10 match tag 20 ! ``` Signed-off-by: Emanuele Altomare <emanuele@common-net.org>
* | | | | | | | Merge pull request #8207 from opensourcerouting/bgp-opt-readDonald Sharp2021-03-073-7/+47
|\ \ \ \ \ \ \ \ | |/ / / / / / / |/| | | | | | | bgpd,lib: small improvement in BGP read
| * | | | | | | bgpd: improve socket read performanceRafael Zalamena2021-03-051-7/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Use the new ringbuffer API function to read file descriptors directly to the ringbuffer instead of using intermediary buffers. Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
| * | | | | | | lib: add ringbuf socket read functionRafael Zalamena2021-03-052-0/+46
|/ / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Implement new ringbuf function to do the proper socket reads without the need of intermediary buffers. Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
* | | | | | | Merge pull request #8188 from volta-networks/fix_ospf6_cost_flagDonald Sharp2021-03-051-2/+1
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | ospf6d: fix setting NOAUTOCOST flag
| * | | | | | | ospf6d: fix setting NOAUTOCOST flagEmanuele Di Pascale2021-03-031-2/+1
| |/ / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ospf6 keeps a flag to remember whether the cost for an interface was manually added via config or computed automatically, but if the configured value matches the auto-computed one we were not setting this flag, meaning that the config would not show up in the config. Signed-off-by: Emanuele Di Pascale <emanuele@voltanet.io>
* | | | | | | Merge pull request #8196 from ton31337/feature/rfc8654_bgpdDonald Sharp2021-03-0514-32/+131
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | bgpd: Add BGP Extended message support
| * | | | | | | bgpd: Add BGP Extended message supportDonatas Abraitis2021-03-0410-28/+124
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Implement https://www.rfc-editor.org/rfc/rfc8654.txt ``` > | jq '."192.168.10.25".neighborCapabilities.extendedMessage' "advertisedAndReceived" ``` Another side is Bird: ``` BIRD 2.0.7 ready. Name Proto Table State Since Info v4 BGP --- up 19:39:15.689 Established BGP state: Established Neighbor address: 192.168.10.123 Neighbor AS: 65534 Local AS: 65025 Neighbor ID: 192.168.100.1 Local capabilities Multiprotocol AF announced: ipv4 Route refresh Extended message Graceful restart 4-octet AS numbers Enhanced refresh Long-lived graceful restart Neighbor capabilities Multiprotocol AF announced: ipv4 Route refresh Extended message Graceful restart 4-octet AS numbers ADD-PATH RX: ipv4 TX: Enhanced refresh Session: external AS4 Source address: 192.168.10.25 Hold timer: 140.139/180 Keepalive timer: 9.484/60 Channel ipv4 State: UP Table: master4 Preference: 100 Input filter: ACCEPT Output filter: ACCEPT Routes: 9 imported, 3 exported, 8 preferred Route change stats: received rejected filtered ignored accepted Import updates: 9 0 0 0 9 Import withdraws: 2 0 --- 2 0 Export updates: 11 8 0 --- 3 Export withdraws: 0 --- --- --- 0 BGP Next hop: 192.168.10.25 ``` Tested at least as well with to make sure it works with backward compat.: ExaBGP 4.0.2-1c737d99. Arista vEOS 4.21.14M Testing by injecint 10k routes with: ``` sharp install routes 172.16.0.1 nexthop 192.168.10.123 10000 ``` Before extended message support: ``` 2021/03/01 07:18:51 BGP: u1:s1 send UPDATE len 4096 (max message len: 4096) numpfx 809 2021/03/01 07:18:51 BGP: u1:s1 send UPDATE len 4096 (max message len: 4096) numpfx 809 2021/03/01 07:18:51 BGP: u1:s1 send UPDATE len 4096 (max message len: 4096) numpfx 809 2021/03/01 07:18:51 BGP: u1:s1 send UPDATE len 4096 (max message len: 4096) numpfx 809 2021/03/01 07:18:51 BGP: u1:s1 send UPDATE len 4096 (max message len: 4096) numpfx 809 2021/03/01 07:18:51 BGP: u1:s1 send UPDATE len 4096 (max message len: 4096) numpfx 809 2021/03/01 07:18:52 BGP: u1:s1 send UPDATE len 4096 (max message len: 4096) numpfx 809 2021/03/01 07:18:52 BGP: u1:s1 send UPDATE len 4096 (max message len: 4096) numpfx 809 2021/03/01 07:18:52 BGP: u1:s1 send UPDATE len 4096 (max message len: 4096) numpfx 809 2021/03/01 07:18:52 BGP: u1:s1 send UPDATE len 4096 (max message len: 4096) numpfx 809 2021/03/01 07:18:52 BGP: u1:s1 send UPDATE len 4096 (max message len: 4096) numpfx 809 2021/03/01 07:18:52 BGP: u1:s1 send UPDATE len 2186 (max message len: 4096) numpfx 427 2021/03/01 07:18:53 BGP: u1:s1 send UPDATE len 3421 (max message len: 4096) numpfx 674 ``` After extended message support: ``` 2021/03/01 07:20:11 BGP: u1:s1 send UPDATE len 50051 (max message len: 65535) numpfx 10000 ``` Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
| * | | | | | | doc: Add rfc8654 to supported RFCs listDonatas Abraitis2021-03-031-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
| * | | | | | | tests: Use BGP Extended Message lengthDonatas Abraitis2021-03-033-4/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
* | | | | | | | Merge pull request #8191 from idryzhov/bfd-cli-fixesRafael Zalamena2021-03-052-24/+83
|\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | bfd cli/nb fixes
| * | | | | | | | bfdd: fix echo configuration in profileIgor Ryzhov2021-03-041-2/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It's not currently possible to configure echo mode in profile node: ``` (config)# bfd (config-bfd)# profile test (config-bfd-profile)# echo-mode % Echo mode is only available for single hop sessions. (config-bfd-profile)# echo-interval 20 % Echo mode is only available for single hop sessions. ``` Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>