mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-03 05:16:24 +00:00
ospf6d: add nth_lsdesc()
Add utility function to find the Nth router lsdesc or network lsdesc in an LSA. Signed-off-by: Andrew Cooks <acooks.at.bda@gmail.com>
This commit is contained in:
parent
d0366de57c
commit
cd6d36fd82
@ -70,6 +70,28 @@ void *lsdesc_start(struct ospf6_lsa_header *header)
|
||||
|
||||
static struct ospf6_lsa_handler *lsa_handlers[OSPF6_LSTYPE_SIZE];
|
||||
|
||||
void *nth_lsdesc(struct ospf6_lsa_header *header, int pos)
|
||||
{
|
||||
char *lsdesc = lsdesc_start(header);
|
||||
char *lsa_end = ospf6_lsa_end(header);
|
||||
char *nth;
|
||||
int lsdesc_size;
|
||||
|
||||
if (ntohs(header->type) == OSPF6_LSTYPE_ROUTER)
|
||||
lsdesc_size = OSPF6_ROUTER_LSDESC_FIX_SIZE;
|
||||
else if (ntohs(header->type) == OSPF6_LSTYPE_NETWORK)
|
||||
lsdesc_size = OSPF6_NETWORK_LSDESC_FIX_SIZE;
|
||||
else
|
||||
return NULL;
|
||||
|
||||
nth = lsdesc + (pos * lsdesc_size);
|
||||
|
||||
if (nth + lsdesc_size <= lsa_end)
|
||||
return nth;
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
struct ospf6 *ospf6_get_by_lsdb(struct ospf6_lsa *lsa)
|
||||
{
|
||||
struct ospf6 *ospf6 = NULL;
|
||||
|
@ -374,4 +374,6 @@ struct ospf6_lsa *ospf6_find_external_lsa(struct ospf6 *ospf6,
|
||||
void *lsdesc_start_lsa_type(struct ospf6_lsa_header *header, int lsa_type);
|
||||
void *lsdesc_start(struct ospf6_lsa_header *header);
|
||||
|
||||
void *nth_lsdesc(struct ospf6_lsa_header *header, int pos);
|
||||
|
||||
#endif /* OSPF6_LSA_H */
|
||||
|
Loading…
Reference in New Issue
Block a user