diff options
| author | Christian Hopps <chopps@labn.net> | 2023-10-20 04:53:05 -0400 |
|---|---|---|
| committer | Christian Hopps <chopps@labn.net> | 2023-12-28 17:53:40 +0000 |
| commit | d266b1cc9c454579a175dd3efac238e40e64cd4a (patch) | |
| tree | 187ec26d0d28f4ffa818d136b69217a7aacd734d /lib/vrf.c | |
| parent | ef91d34f01bcabb23a631523e31fceb973b711a3 (diff) | |
zebra: support yielding between oper state routes query
Signed-off-by: Christian Hopps <chopps@labn.net>
Diffstat (limited to 'lib/vrf.c')
| -rw-r--r-- | lib/vrf.c | 14 |
1 files changed, 14 insertions, 0 deletions
@@ -987,6 +987,19 @@ static const void *lib_vrf_lookup_entry(struct nb_cb_lookup_entry_args *args) return vrf; } +static const void *lib_vrf_lookup_next(struct nb_cb_lookup_entry_args *args) +{ + const char *vrfname = args->keys->key[0]; + struct vrf vrfkey, *vrf; + + strlcpy(vrfkey.name, vrfname, sizeof(vrfkey.name)); + vrf = RB_FIND(vrf_name_head, &vrfs_by_name, &vrfkey); + if (!strcmp(vrf->name, vrfname)) + vrf = RB_NEXT(vrf_name_head, vrf); + + return vrf; +} + /* * XPath: /frr-vrf:lib/vrf/id */ @@ -1024,6 +1037,7 @@ const struct frr_yang_module_info frr_vrf_info = { .get_next = lib_vrf_get_next, .get_keys = lib_vrf_get_keys, .lookup_entry = lib_vrf_lookup_entry, + .lookup_next = lib_vrf_lookup_next, }, .priority = NB_DFLT_PRIORITY - 2, }, |
