diff options
| author | Lou Berger <lberger@labn.net> | 2022-10-21 11:12:11 +0000 |
|---|---|---|
| committer | Lou Berger <lberger@labn.net> | 2022-10-21 15:08:53 +0000 |
| commit | 08172828f6dc0950431e57e43b0aa2dc674cb6fe (patch) | |
| tree | f8d4a9379ec7fb406f452927b816646655783cb0 /ospfd/ospf_apiserver.c | |
| parent | e1a14d470011dd0368c272f7763e371b725c57f6 (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.c | 14 |
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; } |
