diff options
Diffstat (limited to 'src/sua.c')
-rw-r--r-- | src/sua.c | 30 |
1 files changed, 12 insertions, 18 deletions
@@ -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(¶m->called_addr, &conn->called_addr, - sizeof(param->called_addr)); - memcpy(¶m->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(¶m->called_addr, &conn->called_addr, - sizeof(param->called_addr)); - memcpy(¶m->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(¶m->called_addr, &conn->called_addr, - sizeof(param->called_addr)); - memcpy(¶m->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); |