pespin has uploaded this change for review. (
https://gerrit.osmocom.org/c/libosmo-sigtran/+/40684?usp=email )
Change subject: xua: Introduce internal APIs to transmit DAUD
......................................................................
xua: Introduce internal APIs to transmit DAUD
Change-Id: Iab6126f1a9eac1a66bb8ec362b87e20a5eb795ff
---
M src/m3ua.c
M src/sua.c
M src/xua_internal.h
M src/xua_snm.c
4 files changed, 56 insertions(+), 4 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/libosmo-sigtran refs/changes/84/40684/1
diff --git a/src/m3ua.c b/src/m3ua.c
index f073c8e..b3b0797 100644
--- a/src/m3ua.c
+++ b/src/m3ua.c
@@ -883,7 +883,6 @@
return xua;
}
-#if 0 /* not used so far */
/* 3.4.3 Destination Available (DAUD) */
static struct xua_msg *m3ua_encode_daud(const uint32_t *rctx, unsigned int num_rctx,
const uint32_t *aff_pc, unsigned int num_aff_pc,
@@ -895,7 +894,6 @@
xua->hdr.msg_type = M3UA_SNM_DAUD;
return xua;
}
-#endif
/* 3.4.5 Destination User Part Unavailable (DUPU) */
static struct xua_msg *m3ua_encode_dupu(const uint32_t *rctx, unsigned int num_rctx,
@@ -976,6 +974,22 @@
m3ua_tx_xua_asp(asp, xua);
}
+/*! Transmit SSNM DAUD message requesting [un]availability status of certain point
code[s]
+ * \param[in] asp ASP through which to transmit message. Must be ACTIVE.
+ * \param[in] rctx array of Routing Contexts in network byte order.
+ * \param[in] num_rctx number of rctx
+ * \param[in] aff_pc array of 'Affected Point Code' in network byte order.
+ * \param[in] num_aff_pc number of aff_pc
+ * \param[in] info_string optional information string (can be NULL).
+ */
+void m3ua_tx_snm_daud(struct osmo_ss7_asp *asp, const uint32_t *rctx, unsigned int
num_rctx,
+ const uint32_t *aff_pc, unsigned int num_aff_pc, const char *info_string)
+{
+ /* encoding is exactly identical to DUNA */
+ struct xua_msg *xua = m3ua_encode_daud(rctx, num_rctx, aff_pc, num_aff_pc,
info_string);
+ m3ua_tx_xua_asp(asp, xua);
+}
+
/*! Transmit SSNM DUPU message indicating user unavailability.
* \param[in] asp ASP through which to transmit message. Must be ACTIVE.
* \param[in] rctx array of Routing Contexts in network byte order.
diff --git a/src/sua.c b/src/sua.c
index 7d14f3b..9d3e3f1 100644
--- a/src/sua.c
+++ b/src/sua.c
@@ -825,7 +825,6 @@
return xua;
}
-#if 0 /* not used so far */
/* 3.4.3 Destination Available (DAUD) */
static struct xua_msg *sua_encode_daud(const uint32_t *rctx, unsigned int num_rctx,
const uint32_t *aff_pc, unsigned int num_aff_pc,
@@ -837,7 +836,6 @@
xua->hdr.msg_type = SUA_SNM_DAUD;
return xua;
}
-#endif
/* 3.4.5 Destination User Part Unavailable (DUPU) */
static struct xua_msg *sua_encode_dupu(const uint32_t *rctx, unsigned int num_rctx,
@@ -914,6 +912,23 @@
xua_msg_add_data(xua, SUA_IEI_INFO_STRING, strlen(info_string)+1, (const uint8_t *)
info_string);
}
+/*! Transmit SSNM DAUD message requesting [un]availability status of certain point
code[s]
+ * \param[in] asp ASP through which to transmit message. Must be ACTIVE.
+ * \param[in] rctx array of Routing Contexts in network byte order.
+ * \param[in] num_rctx number of rctx
+ * \param[in] aff_pc array of 'Affected Point Code' in network byte order.
+ * \param[in] num_aff_pc number of aff_pc
+ * \param[in] aff_ssn affected SSN (optional)
+ * \param[in] smi subsystem multiplicity indicator (optional)
+ * \param[in] info_string optional information strng (can be NULL).
+ */
+void sua_tx_snm_daud(struct osmo_ss7_asp *asp, const uint32_t *rctx, unsigned int
num_rctx,
+ const uint32_t *aff_pc, unsigned int num_aff_pc, const uint32_t *aff_ssn,
+ const uint32_t *smi, const char *info_string)
+{
+ struct xua_msg *xua = sua_encode_daud(rctx, num_rctx, aff_pc, num_aff_pc, aff_ssn, smi,
info_string);
+ sua_tx_xua_asp(asp, xua);
+}
/*! Transmit SSNM DUPU message indicating user unavailability.
* \param[in] asp ASP through which to transmit message. Must be ACTIVE.
diff --git a/src/xua_internal.h b/src/xua_internal.h
index b0bc98c..0061449 100644
--- a/src/xua_internal.h
+++ b/src/xua_internal.h
@@ -28,6 +28,9 @@
void sua_tx_snm_congestion(struct osmo_ss7_asp *asp, const uint32_t *rctx, unsigned int
num_rctx,
const uint32_t *aff_pc, unsigned int num_aff_pc, const uint32_t *ssn,
const uint8_t cong_level, const char *info_string);
+void sua_tx_snm_daud(struct osmo_ss7_asp *asp, const uint32_t *rctx, unsigned int
num_rctx,
+ const uint32_t *aff_pc, unsigned int num_aff_pc, const uint32_t *aff_ssn,
+ const uint32_t *smi, const char *info_string);
void sua_tx_dupu(struct osmo_ss7_asp *asp, const uint32_t *rctx, unsigned int num_rctx,
uint32_t dpc, uint16_t user, uint16_t cause, const char *info_str);
@@ -42,6 +45,8 @@
const uint32_t *aff_pc, unsigned int num_aff_pc,
const uint32_t *concerned_dpc, const uint8_t *cong_level,
const char *info_string);
+void m3ua_tx_snm_daud(struct osmo_ss7_asp *asp, const uint32_t *rctx, unsigned int
num_rctx,
+ const uint32_t *aff_pc, unsigned int num_aff_pc, const char *info_string);
void m3ua_tx_dupu(struct osmo_ss7_asp *asp, const uint32_t *rctx, unsigned int num_rctx,
uint32_t dpc, uint16_t user, uint16_t cause, const char *info_str);
@@ -95,6 +100,9 @@
void xua_snm_pc_available(struct osmo_ss7_as *as, const uint32_t *aff_pc,
unsigned int num_aff_pc, const char *info_str, bool
available);
+void xua_tx_snm_daud(struct osmo_ss7_asp *asp, const uint32_t *rctx, unsigned int
num_rctx,
+ const uint32_t *aff_pc, unsigned int num_aff_pc, const char *info_str);
+
enum ss7_asp_lm_timer {
/* 0 kept unused on purpose since it's handled specially by osmo_fsm */
SS7_ASP_LM_T_WAIT_ASP_UP = 1,
diff --git a/src/xua_snm.c b/src/xua_snm.c
index e613573..eda03c9 100644
--- a/src/xua_snm.c
+++ b/src/xua_snm.c
@@ -83,6 +83,21 @@
}
}
+void xua_tx_snm_daud(struct osmo_ss7_asp *asp, const uint32_t *rctx, unsigned int
num_rctx,
+ const uint32_t *aff_pc, unsigned int num_aff_pc, const char *info_str)
+{
+ switch (asp->cfg.proto) {
+ case OSMO_SS7_ASP_PROT_M3UA:
+ m3ua_tx_snm_daud(asp, rctx, num_rctx, aff_pc, num_aff_pc, info_str);
+ break;
+ case OSMO_SS7_ASP_PROT_SUA:
+ sua_tx_snm_daud(asp, rctx, num_rctx, aff_pc, num_aff_pc, NULL, NULL, info_str);
+ break;
+ default:
+ break;
+ }
+}
+
static void xua_tx_upu(struct osmo_ss7_asp *asp, const uint32_t *rctx, unsigned int
num_rctx,
uint32_t dpc, uint16_t user, uint16_t cause, const char *info_str)
{
--
To view, visit
https://gerrit.osmocom.org/c/libosmo-sigtran/+/40684?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: Iab6126f1a9eac1a66bb8ec362b87e20a5eb795ff
Gerrit-Change-Number: 40684
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <pespin(a)sysmocom.de>