summaryrefslogtreecommitdiff
path: root/ospfd/ospf_apiserver.c
diff options
context:
space:
mode:
authorLou Berger <lberger@labn.net>2022-10-21 11:12:11 +0000
committerLou Berger <lberger@labn.net>2022-10-21 15:08:53 +0000
commit08172828f6dc0950431e57e43b0aa2dc674cb6fe (patch)
treef8d4a9379ec7fb406f452927b816646655783cb0 /ospfd/ospf_apiserver.c
parente1a14d470011dd0368c272f7763e371b725c57f6 (diff)
ospfd: ospf_apiserver.c - fix link local opaque LSA delete
Signed-off-by: Lou Berger <lberger@labn.net>
Diffstat (limited to 'ospfd/ospf_apiserver.c')
-rw-r--r--ospfd/ospf_apiserver.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/ospfd/ospf_apiserver.c b/ospfd/ospf_apiserver.c
index f5ed77dab5..684e4c3d5b 100644
--- a/ospfd/ospf_apiserver.c
+++ b/ospfd/ospf_apiserver.c
@@ -1924,6 +1924,7 @@ int ospf_apiserver_handle_delete_request(struct ospf_apiserver *apiserv,
struct msg_delete_request *dmsg;
struct ospf_lsa *old;
struct ospf_area *area = NULL;
+ struct ospf_interface *oi = NULL;
struct in_addr id;
int lsa_type, opaque_type;
int rc = 0;
@@ -1938,11 +1939,20 @@ int ospf_apiserver_handle_delete_request(struct ospf_apiserver *apiserv,
/* Lookup area for link-local and area-local opaque LSAs */
switch (dmsg->lsa_type) {
case OSPF_OPAQUE_LINK_LSA:
+ oi = ospf_apiserver_if_lookup_by_addr(dmsg->addr);
+ if (!oi) {
+ zlog_warn("%s: unknown interface %pI4", __func__,
+ &dmsg->addr);
+ rc = OSPF_API_NOSUCHINTERFACE;
+ goto out;
+ }
+ area = oi->area;
+ break;
case OSPF_OPAQUE_AREA_LSA:
- area = ospf_area_lookup_by_area_id(ospf, dmsg->area_id);
+ area = ospf_area_lookup_by_area_id(ospf, dmsg->addr);
if (!area) {
zlog_warn("%s: unknown area %pI4", __func__,
- &dmsg->area_id);
+ &dmsg->addr);
rc = OSPF_API_NOSUCHAREA;
goto out;
}