summaryrefslogtreecommitdiffstats
path: root/src/fsm.c
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2017-04-16 17:23:56 +0200
committerHarald Welte <laforge@gnumonks.org>2017-04-16 17:28:23 +0200
commit4585e6755dd569ab620c711f20a3d45d4ad87216 (patch)
treefe76626f7771919be792dae0f2aff21759169ddd /src/fsm.c
parent7bc88bbd7ea43082fec181c6892259218ce198a0 (diff)
osmo_fsm: Lookup functions to find FSM Instance by name or ID
Introduce two lookup helper functions to resolve a fsm_instance based on the FSM and name or ID. Also, add related test cases. Change-Id: I707f3ed2795c28a924e64adc612d378c21baa815
Diffstat (limited to 'src/fsm.c')
-rw-r--r--src/fsm.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/fsm.c b/src/fsm.c
index 0e2c9be4..7b2be701 100644
--- a/src/fsm.c
+++ b/src/fsm.c
@@ -113,6 +113,30 @@ struct osmo_fsm *osmo_fsm_find_by_name(const char *name)
return NULL;
}
+struct osmo_fsm_inst *osmo_fsm_inst_find_by_name(const struct osmo_fsm *fsm,
+ const char *name)
+{
+ struct osmo_fsm_inst *fi;
+
+ llist_for_each_entry(fi, &fsm->instances, list) {
+ if (!strcmp(name, fi->name))
+ return fi;
+ }
+ return NULL;
+}
+
+struct osmo_fsm_inst *osmo_fsm_inst_find_by_id(const struct osmo_fsm *fsm,
+ const char *id)
+{
+ struct osmo_fsm_inst *fi;
+
+ llist_for_each_entry(fi, &fsm->instances, list) {
+ if (!strcmp(id, fi->id))
+ return fi;
+ }
+ return NULL;
+}
+
/*! \brief register a FSM with the core
*
* A FSM descriptor needs to be registered with the core before any