pespin has uploaded this change for review. (
https://gerrit.osmocom.org/c/libosmo-sigtran/+/40585?usp=email )
Change subject: Make helper function available as internal ss7_as API
......................................................................
Make helper function available as internal ss7_as API
This API will be used in more places starting with follow-up commit.
Change-Id: I818efd9e864fe0bd624a2ff1cba5ccd1d49939c5
---
M src/ss7_as.c
M src/ss7_as.h
M src/xua_as_fsm.c
3 files changed, 23 insertions(+), 21 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/libosmo-sigtran refs/changes/85/40585/1
diff --git a/src/ss7_as.c b/src/ss7_as.c
index 16da09f..b4eb439 100644
--- a/src/ss7_as.c
+++ b/src/ss7_as.c
@@ -274,6 +274,27 @@
return cnt;
}
+/* Determine which role (SG/ASP/IPSP) we operate in.
+ * return enum osmo_ss7_asp_role on success, negative otherwise. */
+int ss7_as_get_local_role(const struct osmo_ss7_as *as)
+{
+ unsigned int i;
+
+ /* this is a bit tricky. "osmo_ss7_as" has no configuration of a role,
+ * only the ASPs have. As they all must be of the same role, let's simply
+ * find the first one and return its role */
+ for (i = 0; i < ARRAY_SIZE(as->cfg.asps); i++) {
+ struct osmo_ss7_asp *asp = as->cfg.asps[i];
+
+ if (!asp)
+ continue;
+
+ return asp->cfg.role;
+ }
+ /* No ASPs associated to this AS yet? */
+ return -1;
+}
+
/*! Determine if given AS is in the active state.
* \param[in] as Application Server.
* \returns true in case as is active; false otherwise. */
diff --git a/src/ss7_as.h b/src/ss7_as.h
index fe1d86b..be10f48 100644
--- a/src/ss7_as.h
+++ b/src/ss7_as.h
@@ -133,6 +133,7 @@
unsigned int osmo_ss7_as_count_asp(const struct osmo_ss7_as *as);
int ss7_as_add_asp(struct osmo_ss7_as *as, struct osmo_ss7_asp *asp);
+int ss7_as_get_local_role(const struct osmo_ss7_as *as);
void ss7_as_loadshare_binding_table_reset(struct osmo_ss7_as *as);
#define LOGPAS(as, subsys, level, fmt, args ...) \
diff --git a/src/xua_as_fsm.c b/src/xua_as_fsm.c
index 7d8e302..7afcb6d 100644
--- a/src/xua_as_fsm.c
+++ b/src/xua_as_fsm.c
@@ -150,26 +150,6 @@
return sent;
}
-/* determine which role (SG/ASP/IPSP) we operate in */
-static int get_local_role(struct osmo_ss7_as *as)
-{
- unsigned int i;
-
- /* this is a bit tricky. "osmo_ss7_as" has no configuration of a role,
- * only the ASPs have. As they all must be of the same role, let's simply
- * find the first one and return its role */
- for (i = 0; i < ARRAY_SIZE(as->cfg.asps); i++) {
- struct osmo_ss7_asp *asp = as->cfg.asps[i];
-
- if (!asp)
- continue;
-
- return asp->cfg.role;
- }
- /* we don't have any ASPs in this AS? Strange */
- return -1;
-}
-
static struct msgb *xua_as_encode_msg(const struct osmo_ss7_as *as, struct xua_msg *xua)
{
switch (as->cfg.proto) {
@@ -537,7 +517,7 @@
bool became_available = (old_state != XUA_AS_S_ACTIVE && fi->state ==
XUA_AS_S_ACTIVE);
bool became_unavailable = (old_state == XUA_AS_S_ACTIVE && fi->state !=
XUA_AS_S_ACTIVE);
- int role = get_local_role(xafp->as);
+ int role = ss7_as_get_local_role(xafp->as);
switch (role) {
case OSMO_SS7_ASP_ROLE_ASP:
--
To view, visit
https://gerrit.osmocom.org/c/libosmo-sigtran/+/40585?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: newchange
Gerrit-Project: libosmo-sigtran
Gerrit-Branch: master
Gerrit-Change-Id: I818efd9e864fe0bd624a2ff1cba5ccd1d49939c5
Gerrit-Change-Number: 40585
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <pespin(a)sysmocom.de>