diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-09 13:16:35 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-09 13:16:35 +0000 |
commit | e2bbf175a2184bd76f6c54ccf8456babeb1a46fc (patch) | |
tree | f0b76550d6e6f500ada964a3a4ee933a45e5a6f1 /lib/plist_int.h | |
parent | Initial commit. (diff) | |
download | frr-e2bbf175a2184bd76f6c54ccf8456babeb1a46fc.tar.xz frr-e2bbf175a2184bd76f6c54ccf8456babeb1a46fc.zip |
Adding upstream version 9.1.upstream/9.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'lib/plist_int.h')
-rw-r--r-- | lib/plist_int.h | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/lib/plist_int.h b/lib/plist_int.h new file mode 100644 index 0000000..d33ac0f --- /dev/null +++ b/lib/plist_int.h @@ -0,0 +1,71 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * Prefix list internal definitions. + * Copyright (C) 1999 Kunihiro Ishiguro + */ + +#ifndef _QUAGGA_PLIST_INT_H +#define _QUAGGA_PLIST_INT_H + +#ifdef __cplusplus +extern "C" { +#endif + +struct pltrie_table; + +PREDECL_RBTREE_UNIQ(plist); + +struct prefix_list { + char *name; + char *desc; + + struct prefix_master *master; + + int count; + int rangecount; + + struct plist_item plist_item; + + struct prefix_list_entry *head; + struct prefix_list_entry *tail; + + struct pltrie_table *trie; +}; + +/* Each prefix-list's entry. */ +struct prefix_list_entry { + int64_t seq; + + int le; + int ge; + + enum prefix_list_type type; + + bool any; + struct prefix prefix; + + unsigned long refcnt; + unsigned long hitcnt; + + struct prefix_list *pl; + + struct prefix_list_entry *next; + struct prefix_list_entry *prev; + + /* up the chain for best match search */ + struct prefix_list_entry *next_best; + + /* Flag to track trie/list installation status. */ + bool installed; +}; + +extern void prefix_list_entry_free(struct prefix_list_entry *pentry); +extern void prefix_list_entry_delete2(struct prefix_list_entry *ple); +extern void prefix_list_entry_update_start(struct prefix_list_entry *ple); +extern void prefix_list_entry_update_finish(struct prefix_list_entry *ple); + +#ifdef __cplusplus +} +#endif + +#endif /* _QUAGGA_PLIST_INT_H */ |