Change in osmo-uecups[master]: Add support for UeCUPS_ResetAllState

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

laforge gerrit-no-reply at lists.osmocom.org
Sat Apr 18 19:05:57 UTC 2020


laforge has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-uecups/+/17857 )


Change subject: Add support for UeCUPS_ResetAllState
......................................................................

Add support for UeCUPS_ResetAllState

This allows the controlling entity (testsuite) to reset all
state in the daemon.

Change-Id: I18c952b3874324a9efafb26b5f2c64f8396ff36a
---
M daemon/main.c
M ttcn3/UECUPS_Types.ttcn
2 files changed, 48 insertions(+), 6 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/osmo-uecups refs/changes/57/17857/1

diff --git a/daemon/main.c b/daemon/main.c
index 155d5d5..a458e16 100644
--- a/daemon/main.c
+++ b/daemon/main.c
@@ -68,6 +68,14 @@
 	pid_t pid;
 };
 
+/* kill the specified subprocess and forget about it */
+static void subprocess_destroy(struct subprocess *p, int signal)
+{
+	kill(p->pid, signal);
+	llist_del(&p->list);
+	talloc_free(p);
+}
+
 /* Send JSON to a given client/connection */
 static int cups_client_tx_json(struct cups_client *cc, json_t *jtx)
 {
@@ -446,6 +454,29 @@
 	return 0;
 }
 
+static int cups_client_handle_reset_all_state(struct cups_client *cc, json_t *sprog)
+{
+	struct gtp_daemon *d = cc->d;
+	struct gtp_tunnel *t, *t2;
+	struct subprocess *p, *p2;
+	json_t *jres;
+
+	pthread_rwlock_wrlock(&d->rwlock);
+	llist_for_each_entry_safe(t, t2, &d->gtp_tunnels, list) {
+		_gtp_tunnel_destroy(t);
+	}
+	pthread_rwlock_unlock(&d->rwlock);
+
+	/* no locking needed as this list is only used by main thread */
+	llist_for_each_entry_safe(p, p2, &d->subprocesses, list) {
+		subprocess_destroy(p, SIGKILL);
+	}
+
+	jres = gen_uecups_result("reset_all_state_res", "OK");
+	cups_client_tx_json(cc, jres);
+
+	return 0;
+}
 
 static int cups_client_handle_json(struct cups_client *cc, json_t *jroot)
 {
@@ -469,6 +500,8 @@
 		rc = cups_client_handle_destroy_tun(cc, cmd);
 	} else if (!strcmp(key, "start_program")) {
 		rc = cups_client_handle_start_program(cc, cmd);
+	} else if (!strcmp(key, "reset_all_state")) {
+		rc = cups_client_handle_reset_all_state(cc, cmd);
 	} else {
 		LOGCC(cc, LOGL_NOTICE, "Unknown command '%s' received\n", key);
 		return -EINVAL;
@@ -551,12 +584,10 @@
 	struct subprocess *p, *p2;
 
 	/* kill + forget about all subprocesses of this client */
+	/* We need no locking here as the subprocess list is only used from the main thread */
 	llist_for_each_entry_safe(p, p2, &d->subprocesses, list) {
-		if (p->cups_client == cc) {
-			kill(p->pid, SIGKILL);
-			llist_del(&p->list);
-			talloc_free(p);
-		}
+		if (p->cups_client == cc)
+			subprocess_destroy(p, SIGKILL);
 	}
 
 	LOGCC(cc, LOGL_INFO, "UECUPS connection lost\n");
diff --git a/ttcn3/UECUPS_Types.ttcn b/ttcn3/UECUPS_Types.ttcn
index 8861998..bbd849f 100644
--- a/ttcn3/UECUPS_Types.ttcn
+++ b/ttcn3/UECUPS_Types.ttcn
@@ -80,15 +80,26 @@
 	integer		exit_code
 };
 
+type record UeCUPS_ResetAllState {
+};
+
+type record UeCUPS_ResetAllStateRes {
+	UECUPS_Result	result
+};
 
 type union PDU_UECUPS {
 	UECUPS_CreateTun	create_tun,
 	UECUPS_CreateTunRes	create_tun_res,
+
 	UECUPS_DestroyTun	destroy_tun,
 	UECUPS_DestroyTunRes	destroy_tun_res,
+
 	UECUPS_StartProgram	start_program,
 	UECUPS_StartProgramRes	start_program_res,
-	UECUPS_ProgramTermInd	program_term_ind
+	UECUPS_ProgramTermInd	program_term_ind,
+
+	UeCUPS_ResetAllState	reset_all_state,
+	UeCUPS_ResetAllStateRes	reset_all_state_res
 };
 
 

-- 
To view, visit https://gerrit.osmocom.org/c/osmo-uecups/+/17857
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-uecups
Gerrit-Branch: master
Gerrit-Change-Id: I18c952b3874324a9efafb26b5f2c64f8396ff36a
Gerrit-Change-Number: 17857
Gerrit-PatchSet: 1
Gerrit-Owner: laforge <laforge at osmocom.org>
Gerrit-MessageType: newchange
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20200418/2c1fd54f/attachment.htm>


More information about the gerrit-log mailing list