aboutsummaryrefslogtreecommitdiffstats
path: root/src/sua.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/sua.c')
-rw-r--r--src/sua.c30
1 files changed, 12 insertions, 18 deletions
diff --git a/src/sua.c b/src/sua.c
index c363cdb..2b4c64e 100644
--- a/src/sua.c
+++ b/src/sua.c
@@ -981,7 +981,7 @@ static int sua_rx_coref(struct osmo_sccp_link *link, struct xua_msg *xua)
{
struct osmo_scu_prim *prim;
struct sua_connection *conn;
- struct osmo_scu_connect_param *param;
+ struct osmo_scu_disconn_param *param;
struct xua_msg_part *data_ie = xua_msg_find_tag(xua, SUA_IEI_DATA);
struct msgb *upmsg;
uint32_t conn_id = xua_msg_get_u32(xua, SUA_IEI_DEST_REF);
@@ -1000,15 +1000,13 @@ static int sua_rx_coref(struct osmo_sccp_link *link, struct xua_msg *xua)
/* fill primitive */
upmsg = sua_msgb_alloc();
prim = (struct osmo_scu_prim *) msgb_put(upmsg, sizeof(*prim));
- param = &prim->u.connect;
+ param = &prim->u.disconnect;
osmo_prim_init(&prim->oph, SCCP_SAP_USER,
OSMO_SCU_PRIM_N_DISCONNECT,
PRIM_OP_INDICATION, upmsg);
param->conn_id = conn_id;
- memcpy(&param->called_addr, &conn->called_addr,
- sizeof(param->called_addr));
- memcpy(&param->calling_addr, &conn->calling_addr,
- sizeof(param->calling_addr));
+ param->responding_addr = conn->called_addr;
+ param->originator = OSMO_SCCP_ORIG_UNDEFINED;
//param->in_sequence_control;
/* TODO evaluate cause:
* cause = xua_msg_get_u32(xua, SUA_IEI_CAUSE); */
@@ -1035,7 +1033,7 @@ static int sua_rx_relre(struct osmo_sccp_link *link, struct xua_msg *xua)
{
struct osmo_scu_prim *prim;
struct sua_connection *conn;
- struct osmo_scu_connect_param *param;
+ struct osmo_scu_disconn_param *param;
struct xua_msg_part *data_ie = xua_msg_find_tag(xua, SUA_IEI_DATA);
struct msgb *upmsg;
uint32_t conn_id = xua_msg_get_u32(xua, SUA_IEI_DEST_REF);
@@ -1053,7 +1051,7 @@ static int sua_rx_relre(struct osmo_sccp_link *link, struct xua_msg *xua)
/* fill primitive */
upmsg = sua_msgb_alloc();
prim = (struct osmo_scu_prim *) msgb_put(upmsg, sizeof(*prim));
- param = &prim->u.connect;
+ param = &prim->u.disconnect;
osmo_prim_init(&prim->oph, SCCP_SAP_USER,
OSMO_SCU_PRIM_N_DISCONNECT,
PRIM_OP_INDICATION, upmsg); /* what primitive? */
@@ -1068,10 +1066,8 @@ static int sua_rx_relre(struct osmo_sccp_link *link, struct xua_msg *xua)
memcpy(upmsg->l2h, data_ie->dat, data_ie->len);
}
- memcpy(&param->called_addr, &conn->called_addr,
- sizeof(param->called_addr));
- memcpy(&param->calling_addr, &conn->calling_addr,
- sizeof(param->calling_addr));
+ param->responding_addr = conn->called_addr;
+ param->originator = OSMO_SCCP_ORIG_UNDEFINED;
/* send to user SAP */
link->user->prim_cb(&prim->oph, link);
@@ -1087,7 +1083,7 @@ static int sua_rx_relco(struct osmo_sccp_link *link, struct xua_msg *xua)
{
struct osmo_scu_prim *prim;
struct sua_connection *conn;
- struct osmo_scu_connect_param *param;
+ struct osmo_scu_disconn_param *param;
struct msgb *upmsg;
uint32_t conn_id = xua_msg_get_u32(xua, SUA_IEI_DEST_REF);
@@ -1104,7 +1100,7 @@ static int sua_rx_relco(struct osmo_sccp_link *link, struct xua_msg *xua)
/* fill primitive */
upmsg = sua_msgb_alloc();
prim = (struct osmo_scu_prim *) msgb_put(upmsg, sizeof(*prim));
- param = &prim->u.connect;
+ param = &prim->u.disconnect;
osmo_prim_init(&prim->oph, SCCP_SAP_USER,
OSMO_SCU_PRIM_N_DISCONNECT,
PRIM_OP_CONFIRM, upmsg); /* what primitive? */
@@ -1113,10 +1109,8 @@ static int sua_rx_relco(struct osmo_sccp_link *link, struct xua_msg *xua)
/* source reference */
param->importance = xua_msg_get_u32(xua, SUA_IEI_IMPORTANCE);
- memcpy(&param->called_addr, &conn->called_addr,
- sizeof(param->called_addr));
- memcpy(&param->calling_addr, &conn->calling_addr,
- sizeof(param->calling_addr));
+ param->responding_addr = conn->called_addr;
+ param->originator = OSMO_SCCP_ORIG_UNDEFINED;
/* send to user SAP */
link->user->prim_cb(&prim->oph, link);