summaryrefslogtreecommitdiffstats
path: root/ospf6d
diff options
context:
space:
mode:
authorAndrew Cooks <acooks.at.bda@gmail.com>2024-06-10 06:11:47 +0200
committerAndrew Cooks <acooks.at.bda@gmail.com>2024-09-16 10:38:16 +0200
commit8ea50a44b5b98e542e0c3d0d3043dc3090f87e82 (patch)
treef036f328cd3c1fb44367b56538ee00ff44a0348a /ospf6d
parentospf6d: add nth_lsdesc() (diff)
downloadfrr-8ea50a44b5b98e542e0c3d0d3043dc3090f87e82.tar.xz
frr-8ea50a44b5b98e542e0c3d0d3043dc3090f87e82.zip
ospf6d: use nth_lsdesc() in ospf6_network_lsa_get_ar_id()
Signed-off-by: Andrew Cooks <acooks.at.bda@gmail.com>
Diffstat (limited to 'ospf6d')
-rw-r--r--ospf6d/ospf6_intra.c27
1 files changed, 5 insertions, 22 deletions
diff --git a/ospf6d/ospf6_intra.c b/ospf6d/ospf6_intra.c
index 470fc6608..ebecd41ad 100644
--- a/ospf6d/ospf6_intra.c
+++ b/ospf6d/ospf6_intra.c
@@ -419,30 +419,13 @@ void ospf6_router_lsa_originate(struct event *thread)
static char *ospf6_network_lsa_get_ar_id(struct ospf6_lsa *lsa, char *buf,
int buflen, int pos)
{
- char *start, *end, *current;
- struct ospf6_network_lsa *network_lsa;
- struct ospf6_network_lsdesc *lsdesc;
-
- if (lsa) {
- network_lsa = (struct ospf6_network_lsa
- *)((caddr_t)lsa->header
- + sizeof(struct ospf6_lsa_header));
-
- start = (char *)network_lsa + sizeof(struct ospf6_network_lsa);
- end = (char *)lsa->header + ntohs(lsa->header->length);
- current = start + pos * (sizeof(struct ospf6_network_lsdesc));
+ struct ospf6_network_lsdesc *lsdesc = nth_lsdesc(lsa->header, pos);
- if ((current + sizeof(struct ospf6_network_lsdesc)) <= end) {
- lsdesc = (struct ospf6_network_lsdesc *)current;
- if (buf) {
- inet_ntop(AF_INET, &lsdesc->router_id, buf,
- buflen);
- return buf;
- }
- }
- }
+ if (!lsdesc || !buf || buflen < (1 + INET_ADDRSTRLEN))
+ return NULL;
- return NULL;
+ inet_ntop(AF_INET, &lsdesc->router_id, buf, buflen);
+ return buf;
}
static int ospf6_network_lsa_show(struct vty *vty, struct ospf6_lsa *lsa,