laforge has submitted this change. (
https://gerrit.osmocom.org/c/osmo-cbc/+/28786 )
Change subject: vty: Add command to delete expired messages
......................................................................
vty: Add command to delete expired messages
Otherwise there's no way to remove expired messages, which keep filling
the expired list forever.
Change-Id: Ie7ed2d9ec8fc23cdc4cb007dce4150458085a6a3
---
M include/osmocom/cbc/cbc_message.h
M src/cbc_vty.c
M src/smscb_message_fsm.c
3 files changed, 28 insertions(+), 0 deletions(-)
Approvals:
Jenkins Builder: Verified
fixeria: Looks good to me, but someone else must approve
laforge: Looks good to me, approved
diff --git a/include/osmocom/cbc/cbc_message.h b/include/osmocom/cbc/cbc_message.h
index 9d3b5b8..b42d0f2 100644
--- a/include/osmocom/cbc/cbc_message.h
+++ b/include/osmocom/cbc/cbc_message.h
@@ -99,6 +99,7 @@
};
struct cbc_message *cbc_message_alloc(void *ctx, const struct cbc_message *cbcmsg);
+void cbc_message_free(struct cbc_message *cbcmsg);
int cbc_message_new(const struct cbc_message *cbcmsg, struct rest_it_op *op);
void cbc_message_delete(struct cbc_message *cbcmsg, struct rest_it_op *op);
struct cbc_message *cbc_message_by_id(uint16_t message_id);
diff --git a/src/cbc_vty.c b/src/cbc_vty.c
index 99363fb..72ac315 100644
--- a/src/cbc_vty.c
+++ b/src/cbc_vty.c
@@ -138,6 +138,27 @@
return CMD_SUCCESS;
}
+DEFUN(delete_message_expired, delete_message_expired_cmd,
+ "delete message expired id <0-65535>",
+ "Delete message from the local expired list\n"
+ "Delete message from the local expired list\n"
+ "Delete message from the local expired list\n"
+ "Message ID\n" "Message ID\n")
+{
+ struct cbc_message *cbc_msg;
+ uint16_t msgid = atoi(argv[0]);
+ cbc_msg = cbc_message_expired_by_id(msgid);
+ if (!cbc_msg) {
+ if (cbc_message_by_id(msgid))
+ vty_out(vty, "Message ID %s has not yet expired!%s", argv[0], VTY_NEWLINE);
+ else
+ vty_out(vty, "Unknown expired Message ID %s%s", argv[0], VTY_NEWLINE);
+ return CMD_WARNING;
+ }
+ cbc_message_free(cbc_msg);
+ return CMD_SUCCESS;
+}
+
static const char *cbc_cell_id2str(const struct cbc_cell_id *cid)
{
static char buf[256];
@@ -720,6 +741,7 @@
install_element_ve(&show_message_cbs_cmd);
install_element_ve(&show_messages_cbs_cmd);
install_element_ve(&show_messages_etws_cmd);
+ install_element_ve(&delete_message_expired_cmd);
install_element(CONFIG_NODE, &cfg_cbc_cmd);
install_node(&cbc_node, config_write_cbc);
diff --git a/src/smscb_message_fsm.c b/src/smscb_message_fsm.c
index 0796587..ba17910 100644
--- a/src/smscb_message_fsm.c
+++ b/src/smscb_message_fsm.c
@@ -384,6 +384,11 @@
return smscb;
}
+void cbc_message_free(struct cbc_message *cbcmsg)
+{
+ osmo_fsm_inst_term(cbcmsg->fi, OSMO_FSM_TERM_REGULAR, NULL);
+}
+
__attribute__((constructor)) void smscb_fsm_constructor(void)
{
OSMO_ASSERT(osmo_fsm_register(&smscb_fsm) == 0);
--
To view, visit
https://gerrit.osmocom.org/c/osmo-cbc/+/28786
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-cbc
Gerrit-Branch: master
Gerrit-Change-Id: Ie7ed2d9ec8fc23cdc4cb007dce4150458085a6a3
Gerrit-Change-Number: 28786
Gerrit-PatchSet: 3
Gerrit-Owner: pespin <pespin(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-MessageType: merged