pespin has uploaded this change for review. ( https://gerrit.osmocom.org/c/libosmo-sigtran/+/38660?usp=email )
Change subject: sigtran: Add API osmo_ss7_instances_llist_entry ......................................................................
sigtran: Add API osmo_ss7_instances_llist_entry
This API allows iterating over the public global list of ss7 instances, without knowing the structure internal layout.
Change-Id: I148438aecd64bdd66848d4b3404d379a380c5e9c --- M TODO-RELEASE M include/osmocom/sigtran/osmo_ss7.h M src/osmo_ss7.c 3 files changed, 16 insertions(+), 2 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/libosmo-sigtran refs/changes/60/38660/1
diff --git a/TODO-RELEASE b/TODO-RELEASE index 366c680..f56b4e5 100644 --- a/TODO-RELEASE +++ b/TODO-RELEASE @@ -12,3 +12,4 @@ libosmo-sigtran add API osmo_ss7_route_get_dest_as() libosmo-sigtran Make private osmo_ss7_route libosmo-sigtran add API osmo_ss7_instance_get_id(), osmo_ss7_instance_get_name(), osmo_ss7_instance_get_pc_fmt(), osmo_ss7_instance_get_primary_pc(), osmo_ss7_get_sccp() +libosmo-sigtran add API osmo_ss7_instances_llist_entry() diff --git a/include/osmocom/sigtran/osmo_ss7.h b/include/osmocom/sigtran/osmo_ss7.h index 8f22b8a..9da94b3 100644 --- a/include/osmocom/sigtran/osmo_ss7.h +++ b/include/osmocom/sigtran/osmo_ss7.h @@ -11,9 +11,12 @@ #include <osmocom/core/socket.h> #include <osmocom/core/rate_ctr.h>
-extern struct llist_head osmo_ss7_instances; - struct osmo_ss7_instance; + +extern struct llist_head osmo_ss7_instances; +/* Get an entry pointer from a list item in osmo_ss7_instances: */ +struct osmo_ss7_instance *osmo_ss7_instances_llist_entry(struct llist_head *list); + struct osmo_ss7_user; struct osmo_sccp_instance; struct osmo_mtp_prim; diff --git a/src/osmo_ss7.c b/src/osmo_ss7.c index fb9c0fe..2dad013 100644 --- a/src/osmo_ss7.c +++ b/src/osmo_ss7.c @@ -63,6 +63,16 @@ bool ss7_initialized = false;
LLIST_HEAD(osmo_ss7_instances); +/* This API allows iterating over the public global list of ss7 instances, + * without knowing the structure internal layout. + */ +struct osmo_ss7_instance *osmo_ss7_instances_llist_entry(struct llist_head *list) +{ + struct osmo_ss7_instance *pos; + pos = llist_entry((list)->next, typeof(*pos), list); + return pos; +} + static int32_t next_rctx = 1; static int32_t next_l_rk_id = 1;