| Age | Commit message (Collapse) | Author |
|
Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
|
|
```
exit1-debian-11(config)# route-map ?
RMAP_NAME Route map tag
belekas testas
```
Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
|
|
bgpd: match ipv6 next-hop
|
|
Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
|
|
Since f60a1188 we store a pointer to the VRF in the interface structure.
There's no need anymore to store a separate vrf_id field.
Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
|
|
*: unify if_is_loopback/if_is_loopback_or_vrf
|
|
lib: use _safe iteration during link_state/ted cleanup
|
|
For IPv4 matching, we have "match ip next-hop address A.B.C.D".
For IPv6 matching, we have "match ipv6 next-hop X:X::X:X".
To have consistency, let's add "address" keyword to IPv6 commands.
Old commands are preserved as hidden for backward compatibility.
Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
|
|
lib/vtysh/ospf6d: assorted small bits
|
|
ton31337/feature/replace_json_object_string_add_to_json_object_string_addf_for_inet_ntop
*: inet_ntop for JSON output
|
|
Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
|
|
Use the _safe iterators when cleaning up the link-state module's
vertices, edges, and subnets.
Signed-off-by: Mark Stapp <mstapp@nvidia.com>
|
|
This prevents caller from getting complete
validation message.
Signed-off-by: zyxwvu Shi <i@shiyc.cn>
|
|
Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
|
|
lib: make JSON output less painful/boilerplate-y
|
|
(This is mostly just to exercise the code, the actual replacement needs
to be a cocci script.)
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
|
|
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
|
|
... these should probably have been added ages ago.
`json_object_string_addf(json, "key", "%pFX", prefix)` is super useful.
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
|
|
... this is copypasted all over the codebase & should've been a helper
to begin with really.
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
|
|
pimd: make PIM NHT less weird
|
|
|
|
Just a line that sticks out like a sore thumb.
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
|
|
Most users of if_lookup_address_exact only cared about whether the
address is any local address. Split that off into a separate function.
For the users that actually need the ifp - which I'm about to add a few
of - change it to prefer returning interfaces that are UP.
(Function name changed due to slight change in behavior re. UP state, to
avoid possible bugs from this change.)
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
|
|
i.e. to whoever cares, since some unique IDs (from libfrr) are valid
everywhere but some others (from the daemons) only apply to specific
daemons.
(Default handling aborts on first error, so configuring any unique IDs
that don't exist on the first daemon vtysh connects to just failed
before this.)
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
|
|
...by having a flag in struct cmd_node rather than hardcoding it in
`lib/command.c`.
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
|
|
Why would this be in a vector to loop over with strcmp()'ing each
item... that just makes no sense. Use a hash instead.
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
|
|
We should always treat the VRF interface as a loopback. Currently, this
is not the case, because in some old pre-VRF code we use if_is_loopback
instead of if_is_loopback_or_vrf. To avoid any future problems, the
proposal is to rename if_is_loopback_or_vrf to if_is_loopback and use it
everywhere. if_is_loopback is renamed to if_is_loopback_exact in case
it's ever needed, but currently it's not used anywhere.
Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
|
|
Signed-off-by: Solyn <admin@iloft.xyz>
|
|
Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
|
|
lib: remove confusing bfd TTL API
|
|
build: assorted build system improvements, 2021-11 edition
|
|
Finally frr
|
|
lib: fix vrf deletion when the last interface is deleted
|
|
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
|
|
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
|
|
Naming functions/data structures more appropriately for
the project we are actually in.
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
|
|
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
|
|
We had various forms of min/max macros across multiple daemons
all of which duplicated what we have in compiler.h. Convert
everyone to use the `correct` ones
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
|
|
They're not needed elsewhere.
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
|
|
lib: backtraces for specific log messages
|
|
lib: Add autocomplete for access-lists
|
|
Currently, we automatically delete an inactive VRF when its last
interface is deleted. This code introduces a couple of crashes because
of the following problems:
- vrf_delete is called before calling if_del hook, so daemons may try to
dereference an ifp->vrf pointer which is freed
- in if_terminate, we continue to use the VRF in the loop condition
after the last interface is deleted
This check is needed only when the interface is deleted by the user,
because if the interface is deleted by the system, VRF must still exist
in the system. Move the check to appropriate places to fix crashes.
Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
|
|
There are two APIs to control the expected number of hops for a BFD
session – `bfd_sess_set_mininum_ttl` and `bfd_sess_set_hop_count`.
The former is very confusing, as it takes an expected TTL in the
BFD packet which is actually a protocol internal value. The latter is
simple and straightforward – it takes an expected number of hops, which
is always 1 for single-hop and >1 for multi-hop.
As the former API is not used anywhere, just remove it to avoid any
confusion.
Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
|
|
... need to ignore TLS sections, their address is effectively
meaningless but can overlap other sections we actually need to access.
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
|
|
`assert.h` -> `xref.h` -> `typesafe.h` -> `assert.h`
Might be possible to do this more cleanly some way, but that way is not
obvious, so here's the "simple & dumb" approach.
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
|
|
Looks much prettier if `libunwind` is available, but works with glibc or
libexecinfo's `backtrace()` too.
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
|
|
... so we can actually access by UID without searching the entire list.
Signed-off-by: David Lamparter <equinox@diac24.net>
|
|
The RB-tree macros use memset(), so we need to #include <string.h>
Signed-off-by: David Lamparter <equinox@diac24.net>
|
|
... its only purpose was to serve as a footgun, and all such uses have
been eliminated now.
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
|
|
The `struct thread **ref` that the thread code takes is written to and
needs to stay valid over the lifetime of a thread. This does not hold
up if thread pointers are directly put in a `vector` since adding items
to a `vector` may reallocate the entire array. The thread code would
then write to a now-invalid `ref`, potentially corrupting entirely
unrelated data.
This should be extremely rare to trigger in practice since we only use
one c-ares channel, which will likely only ever use one fd, so the
vector is never resized. That said, c-ares using only one fd is just
plain fragile luck.
Either way, fix this by creating a resolver_fd tracking struct, and
clean up the code while we're at it.
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
|