diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/plist.c | 24 | ||||
-rw-r--r-- | lib/plist.h | 2 |
2 files changed, 26 insertions, 0 deletions
diff --git a/lib/plist.c b/lib/plist.c index b01c48f6..9cf099dd 100644 --- a/lib/plist.c +++ b/lib/plist.c @@ -2834,6 +2834,30 @@ prefix_bgp_orf_entry (struct stream *s, prefix_list_ref ref, return s; } +/* Get the i'th BGP ORF prefix from the given list. + * return 1 - got ORF prefix. + * return 0 - no such entry + */ +int +prefix_bgp_orf_get(struct prefix_list *plist, vector_index i, + struct orf_prefix *orfpe, enum prefix_list_type *pe_type) +{ + struct prefix_list_entry *pe = NULL; + + if (!plist || i >= plist->list.end) + return 0; + + pe = vector_slot(&plist->list, i); + orfpe->seq = pe->seq; + orfpe->ge = pe->ge; + orfpe->le = pe->le; + orfpe->p = pe->prefix; + + *pe_type = pe->type; + + return 1; +} + /* Set or Unset a BGP ORF entry. */ int prefix_bgp_orf_set (char *name, afi_t afi, struct orf_prefix *orfp, diff --git a/lib/plist.h b/lib/plist.h index 0d9e3ecb..4f383417 100644 --- a/lib/plist.h +++ b/lib/plist.h @@ -62,6 +62,8 @@ extern const char* prefix_list_get_name(struct prefix_list* plist) ; extern struct stream * prefix_bgp_orf_entry (struct stream *, prefix_list_ref ref, u_char, u_char, u_char); +extern int prefix_bgp_orf_get(struct prefix_list *plist, vector_index i, + struct orf_prefix *orfpe, enum prefix_list_type *pe_type); extern int prefix_bgp_orf_set (char *, afi_t, struct orf_prefix *, int, int); extern void prefix_bgp_orf_remove_all (char *); extern int prefix_bgp_show_prefix_list (struct vty *, afi_t, char *); |