9
0
Fork 0

mtp: Call the mtp_link_set always set otherwise things get confusing

In a backtrace it is confusing to see variables called link and link
and one is a mtp_link and the other is a mtp_link_set.
This commit is contained in:
Holger Hans Peter Freyther 2011-02-23 16:58:15 +01:00
parent 765fba3fd0
commit d062f8318e
5 changed files with 115 additions and 115 deletions

View File

@ -48,7 +48,7 @@ struct isup_msg_grs {
uint8_t pointer_int;
};
int mtp_link_set_isup(struct mtp_link_set *link, struct msgb *msg, int sls);
int mtp_link_set_isup(struct mtp_link_set *set, struct msgb *msg, int sls);
int isup_parse_status(const uint8_t *data, uint8_t length);

View File

@ -141,11 +141,11 @@ struct mtp_link {
};
void mtp_link_set_stop(struct mtp_link_set *link);
void mtp_link_set_reset(struct mtp_link_set *link);
void mtp_link_set_stop(struct mtp_link_set *set);
void mtp_link_set_reset(struct mtp_link_set *set);
int mtp_link_set_data(struct mtp_link *link, struct msgb *msg);
int mtp_link_set_submit_sccp_data(struct mtp_link_set *link, int sls, const uint8_t *data, unsigned int length);
int mtp_link_set_submit_isup_data(struct mtp_link_set *link, int sls, const uint8_t *data, unsigned int length);
int mtp_link_set_submit_sccp_data(struct mtp_link_set *set, int sls, const uint8_t *data, unsigned int length);
int mtp_link_set_submit_isup_data(struct mtp_link_set *set, int sls, const uint8_t *data, unsigned int length);
void mtp_link_set_init_slc(struct mtp_link_set *set);
@ -155,8 +155,8 @@ void mtp_link_unblock(struct mtp_link *link);
/* to be implemented for MSU sending */
void mtp_link_submit(struct mtp_link *link, struct msgb *msg);
void mtp_link_set_forward_sccp(struct mtp_link_set *link, struct msgb *msg, int sls);
void mtp_link_set_forward_isup(struct mtp_link_set *link, struct msgb *msg, int sls);
void mtp_link_set_forward_sccp(struct mtp_link_set *set, struct msgb *msg, int sls);
void mtp_link_set_forward_isup(struct mtp_link_set *set, struct msgb *msg, int sls);
void mtp_link_restart(struct mtp_link *link);
int mtp_link_set_send(struct mtp_link_set *set, struct msgb *msg);
@ -171,7 +171,7 @@ int mtp_link_slta(struct mtp_link *link, uint16_t l3_len, struct mtp_level_3_mng
void mtp_link_failure(struct mtp_link *fail);
/* internal routines */
struct msgb *mtp_msg_alloc(struct mtp_link_set *link);
struct msgb *mtp_msg_alloc(struct mtp_link_set *set);
/* link management */
struct mtp_link_set *mtp_link_set_alloc(struct bsc_data *bsc);

View File

@ -119,7 +119,7 @@ int isup_parse_status(const uint8_t *data, uint8_t in_length)
/* Handle incoming ISUP data */
static int handle_circuit_reset_grs(struct mtp_link_set *link, int sls, int cic,
static int handle_circuit_reset_grs(struct mtp_link_set *set, int sls, int cic,
const uint8_t *data, int size)
{
struct msgb *resp;
@ -133,12 +133,12 @@ static int handle_circuit_reset_grs(struct mtp_link_set *link, int sls, int cic,
if (!resp)
return -1;
mtp_link_set_submit_isup_data(link, sls, resp->l2h, msgb_l2len(resp));
mtp_link_set_submit_isup_data(set, sls, resp->l2h, msgb_l2len(resp));
msgb_free(resp);
return 0;
}
static int handle_circuit_reset_cgb(struct mtp_link_set *link, int sls, int cic,
static int handle_circuit_reset_cgb(struct mtp_link_set *set, int sls, int cic,
const uint8_t *data, int size)
{
struct msgb *resp;
@ -157,12 +157,12 @@ static int handle_circuit_reset_cgb(struct mtp_link_set *link, int sls, int cic,
if (!resp)
return -1;
mtp_link_set_submit_isup_data(link, sls, resp->l2h, msgb_l2len(resp));
mtp_link_set_submit_isup_data(set, sls, resp->l2h, msgb_l2len(resp));
msgb_free(resp);
return 0;
}
static int send_cgu(struct mtp_link_set *link, int sls, int cic, int range)
static int send_cgu(struct mtp_link_set *set, int sls, int cic, int range)
{
struct msgb *resp;
uint8_t val;
@ -172,7 +172,7 @@ static int send_cgu(struct mtp_link_set *link, int sls, int cic, int range)
if (!resp)
return -1;
mtp_link_set_submit_isup_data(link, sls, resp->l2h, msgb_l2len(resp));
mtp_link_set_submit_isup_data(set, sls, resp->l2h, msgb_l2len(resp));
msgb_free(resp);
return 0;
}
@ -189,7 +189,7 @@ static int handle_simple_resp(struct mtp_link_set *set, int sls, int cic, int ms
return 0;
}
int mtp_link_set_isup(struct mtp_link_set *link, struct msgb *msg, int sls)
int mtp_link_set_isup(struct mtp_link_set *set, struct msgb *msg, int sls)
{
int rc = -1;
int payload_size;
@ -200,8 +200,8 @@ int mtp_link_set_isup(struct mtp_link_set *link, struct msgb *msg, int sls)
return -1;
}
if (link->pass_all_isup) {
mtp_link_set_forward_isup(link, msg, sls);
if (set->pass_all_isup) {
mtp_link_set_forward_isup(set, msg, sls);
return 0;
}
@ -210,21 +210,21 @@ int mtp_link_set_isup(struct mtp_link_set *link, struct msgb *msg, int sls)
switch (hdr->msg_type) {
case ISUP_MSG_GRS:
rc = handle_circuit_reset_grs(link, sls, hdr->cic, hdr->data, payload_size);
rc = handle_circuit_reset_grs(set, sls, hdr->cic, hdr->data, payload_size);
break;
case ISUP_MSG_CGB:
rc = handle_circuit_reset_cgb(link, sls, hdr->cic, hdr->data, payload_size);
rc = handle_circuit_reset_cgb(set, sls, hdr->cic, hdr->data, payload_size);
if (rc == 0)
rc = send_cgu(link, sls, hdr->cic, 28);
rc = send_cgu(set, sls, hdr->cic, 28);
break;
case ISUP_MSG_CGUA:
LOGP(DISUP, LOGL_NOTICE, "CIC %d is now unblocked.\n", hdr->cic);
break;
case ISUP_MSG_RSC:
rc = handle_simple_resp(link, sls, hdr->cic, ISUP_MSG_RLC);
rc = handle_simple_resp(set, sls, hdr->cic, ISUP_MSG_RLC);
break;
default:
mtp_link_set_forward_isup(link, msg, sls);
mtp_link_set_forward_isup(set, msg, sls);
rc = 0;
break;
}

View File

@ -33,7 +33,7 @@
#include <string.h>
static int mtp_int_submit(struct mtp_link_set *link, int pc, int sls, int type, const uint8_t *data, unsigned int length);
static int mtp_int_submit(struct mtp_link_set *set, int pc, int sls, int type, const uint8_t *data, unsigned int length);
void mtp_link_submit(struct mtp_link *link, struct msgb *msg)
{
@ -43,7 +43,7 @@ void mtp_link_submit(struct mtp_link *link, struct msgb *msg)
}
struct msgb *mtp_msg_alloc(struct mtp_link_set *link)
struct msgb *mtp_msg_alloc(struct mtp_link_set *set)
{
struct mtp_level_3_hdr *hdr;
struct msgb *msg = msgb_alloc_headroom(4096, 128, "mtp-msg");
@ -54,25 +54,25 @@ struct msgb *mtp_msg_alloc(struct mtp_link_set *link)
msg->l2h = msgb_put(msg, sizeof(*hdr));
hdr = (struct mtp_level_3_hdr *) msg->l2h;
hdr->addr = MTP_ADDR(0x0, link->dpc, link->opc);
hdr->ni = link->ni;
hdr->spare = link->spare;
hdr->addr = MTP_ADDR(0x0, set->dpc, set->opc);
hdr->ni = set->ni;
hdr->spare = set->spare;
return msg;
}
static struct msgb *mtp_create_slta(struct mtp_link_set *link, int sls,
static struct msgb *mtp_create_slta(struct mtp_link_set *set, int sls,
struct mtp_level_3_mng *in_mng, int l3_len)
{
struct mtp_level_3_hdr *hdr;
struct mtp_level_3_mng *mng;
struct msgb *out = mtp_msg_alloc(link);
struct msgb *out = mtp_msg_alloc(set);
if (!out)
return NULL;
hdr = (struct mtp_level_3_hdr *) out->l2h;
hdr->ser_ind = MTP_SI_MNT_REG_MSG;
hdr->addr = MTP_ADDR(sls, link->dpc, link->opc);
hdr->addr = MTP_ADDR(sls, set->dpc, set->opc);
mng = (struct mtp_level_3_mng *) msgb_put(out, sizeof(*mng));
mng->cmn.h0 = MTP_TST_MSG_GRP;
@ -132,7 +132,7 @@ static struct msgb *mtp_tra_alloc(struct mtp_link *link, int opc)
return out;
}
static struct msgb *mtp_sccp_alloc_scmg(struct mtp_link_set *link,
static struct msgb *mtp_sccp_alloc_scmg(struct mtp_link_set *set,
int type, int assn, int apoc, int sls)
{
struct sccp_data_unitdata *udt;
@ -141,7 +141,7 @@ static struct msgb *mtp_sccp_alloc_scmg(struct mtp_link_set *link,
uint8_t *data;
struct msgb *out = mtp_msg_alloc(link);
struct msgb *out = mtp_msg_alloc(set);
if (!out)
return NULL;
@ -150,7 +150,7 @@ static struct msgb *mtp_sccp_alloc_scmg(struct mtp_link_set *link,
hdr->ser_ind = MTP_SI_MNT_SCCP;
/* this appears to be round robin or such.. */
hdr->addr = MTP_ADDR(sls % 16, link->dpc, link->sccp_opc);
hdr->addr = MTP_ADDR(sls % 16, set->dpc, set->sccp_opc);
/* generate the UDT message... libsccp does not offer formating yet */
udt = (struct sccp_data_unitdata *) msgb_put(out, sizeof(*udt));
@ -183,27 +183,27 @@ static struct msgb *mtp_sccp_alloc_scmg(struct mtp_link_set *link,
return out;
}
void mtp_link_set_stop(struct mtp_link_set *link)
void mtp_link_set_stop(struct mtp_link_set *set)
{
struct mtp_link *lnk;
llist_for_each_entry(lnk, &link->links, entry)
llist_for_each_entry(lnk, &set->links, entry)
mtp_link_stop_link_test(lnk);
bsc_del_timer(&link->T18);
bsc_del_timer(&link->T20);
bsc_del_timer(&set->T18);
bsc_del_timer(&set->T20);
link->sccp_up = 0;
link->running = 0;
link->linkset_up = 0;
set->sccp_up = 0;
set->running = 0;
set->linkset_up = 0;
}
void mtp_link_set_reset(struct mtp_link_set *link)
void mtp_link_set_reset(struct mtp_link_set *set)
{
struct mtp_link *lnk;
mtp_link_set_stop(link);
link->running = 1;
mtp_link_set_stop(set);
set->running = 1;
llist_for_each_entry(lnk, &link->links, entry)
llist_for_each_entry(lnk, &set->links, entry)
mtp_link_start_link_test(lnk);
}
@ -306,12 +306,12 @@ static void linkset_t20_cb(void *_set)
return;
}
static int mtp_link_sign_msg(struct mtp_link_set *link, struct mtp_level_3_hdr *hdr, int l3_len)
static int mtp_link_sign_msg(struct mtp_link_set *set, struct mtp_level_3_hdr *hdr, int l3_len)
{
struct mtp_level_3_cmn *cmn;
uint16_t *apc;
if (hdr->ni != link->ni || l3_len < 1) {
if (hdr->ni != set->ni || l3_len < 1) {
LOGP(DINP, LOGL_ERROR, "Unhandled data (ni: %d len: %d)\n",
hdr->ni, l3_len);
return -1;
@ -326,17 +326,17 @@ static int mtp_link_sign_msg(struct mtp_link_set *link, struct mtp_level_3_hdr *
switch (cmn->h1) {
case MTP_RESTR_MSG_ALLWED:
LOGP(DINP, LOGL_INFO,
"Received TRA on linkset %d/%s.\n", link->nr, link->name);
"Received TRA on linkset %d/%s.\n", set->nr, set->name);
/*
* TODO: routing should be done on a higher level. This should not
* arrive after we expired the timer but we are friendly here and
* respond with a TFA and TRA...
*/
bsc_del_timer(&link->T18);
bsc_del_timer(&link->T20);
linkset_t18_cb(link);
linkset_t20_cb(link);
link->sccp_up = 1;
bsc_del_timer(&set->T18);
bsc_del_timer(&set->T20);
linkset_t18_cb(set);
linkset_t20_cb(set);
set->sccp_up = 1;
return 0;
break;
}
@ -345,14 +345,14 @@ static int mtp_link_sign_msg(struct mtp_link_set *link, struct mtp_level_3_hdr *
switch (cmn->h1) {
case MTP_PROHIBIT_MSG_SIG:
if (l3_len < 3) {
LOGP(DINP, LOGL_ERROR, "TFP is too short on %d/%s.\n", link->nr, link->name);
LOGP(DINP, LOGL_ERROR, "TFP is too short on %d/%s.\n", set->nr, set->name);
return -1;
}
apc = (uint16_t *) &hdr->data[1];
LOGP(DINP, LOGL_INFO,
"TFP for the affected point code %d on %d/%s\n",
*apc, link->nr, link->name);
*apc, set->nr, set->name);
return 0;
break;
}
@ -361,7 +361,7 @@ static int mtp_link_sign_msg(struct mtp_link_set *link, struct mtp_level_3_hdr *
LOGP(DINP, LOGL_ERROR, "Unknown message:%d/%d %s on %d/%s.\n",
cmn->h0, cmn->h1, hexdump(&hdr->data[0], l3_len),
link->nr, link->name);
set->nr, set->name);
return -1;
}
@ -411,7 +411,7 @@ static int mtp_link_regular_msg(struct mtp_link *link, struct mtp_level_3_hdr *h
return -1;
}
static int mtp_link_sccp_data(struct mtp_link_set *link, struct mtp_level_3_hdr *hdr, struct msgb *msg, int l3_len)
static int mtp_link_sccp_data(struct mtp_link_set *set, struct mtp_level_3_hdr *hdr, struct msgb *msg, int l3_len)
{
struct msgb *out;
struct sccp_con_ctrl_prt_mgt *prt;
@ -424,9 +424,9 @@ static int mtp_link_sccp_data(struct mtp_link_set *link, struct mtp_level_3_hdr
return -1;
}
if (!link->sccp_up) {
if (!set->sccp_up) {
LOGP(DINP, LOGL_ERROR, "SCCP traffic is not allowed on %d/%s\n",
link->nr, link->name);
set->nr, set->name);
return -1;
}
@ -447,29 +447,29 @@ static int mtp_link_sccp_data(struct mtp_link_set *link, struct mtp_level_3_hdr
}
prt = (struct sccp_con_ctrl_prt_mgt *) &msg->l3h[0];
if (prt->apoc != MTP_MAKE_APOC(link->sccp_opc)) {
if (prt->apoc != MTP_MAKE_APOC(set->sccp_opc)) {
LOGP(DINP, LOGL_ERROR, "Unknown APOC: %u/%u on %d/%s\n",
ntohs(prt->apoc), prt->apoc, link->nr, link->name);
ntohs(prt->apoc), prt->apoc, set->nr, set->name);
type = SCCP_SSP;
} else if (!link->supported_ssn[prt->assn]) {
} else if (!set->supported_ssn[prt->assn]) {
LOGP(DINP, LOGL_ERROR, "Unknown affected SSN assn: %u on %d/%s\n",
prt->assn, link->nr, link->name);
prt->assn, set->nr, set->name);
type = SCCP_SSP;
} else {
type = SCCP_SSA;
}
out = mtp_sccp_alloc_scmg(link, type, prt->assn, prt->apoc,
out = mtp_sccp_alloc_scmg(set, type, prt->assn, prt->apoc,
MTP_LINK_SLS(hdr->addr));
if (!out)
return -1;
mtp_link_submit(link->slc[MTP_LINK_SLS(hdr->addr)], out);
mtp_link_submit(set->slc[MTP_LINK_SLS(hdr->addr)], out);
return 0;
}
rate_ctr_inc(&link->ctrg->ctr[MTP_LSET_SCCP_IN_MSG]);
mtp_link_set_forward_sccp(link, msg, MTP_LINK_SLS(hdr->addr));
rate_ctr_inc(&set->ctrg->ctr[MTP_LSET_SCCP_IN_MSG]);
mtp_link_set_forward_sccp(set, msg, MTP_LINK_SLS(hdr->addr));
return 0;
}
@ -518,29 +518,29 @@ int mtp_link_set_data(struct mtp_link *link, struct msgb *msg)
return rc;
}
int mtp_link_set_submit_sccp_data(struct mtp_link_set *link, int sls, const uint8_t *data, unsigned int length)
int mtp_link_set_submit_sccp_data(struct mtp_link_set *set, int sls, const uint8_t *data, unsigned int length)
{
if (!link->sccp_up) {
if (!set->sccp_up) {
LOGP(DINP, LOGL_ERROR, "SCCP msg after TRA and before SSA. Dropping it on %d/%s\n",
link->nr, link->name);
set->nr, set->name);
return -1;
}
if (sls == -1) {
sls = link->last_sls;
link->last_sls = (link->last_sls + 1) % 16;
sls = set->last_sls;
set->last_sls = (set->last_sls + 1) % 16;
}
rate_ctr_inc(&link->ctrg->ctr[MTP_LSET_SCCP_OUT_MSG]);
return mtp_int_submit(link, link->sccp_opc, sls, MTP_SI_MNT_SCCP, data, length);
rate_ctr_inc(&set->ctrg->ctr[MTP_LSET_SCCP_OUT_MSG]);
return mtp_int_submit(set, set->sccp_opc, sls, MTP_SI_MNT_SCCP, data, length);
}
int mtp_link_set_submit_isup_data(struct mtp_link_set *link, int sls,
int mtp_link_set_submit_isup_data(struct mtp_link_set *set, int sls,
const uint8_t *data, unsigned int length)
{
rate_ctr_inc(&link->ctrg->ctr[MTP_LSET_ISUP_OUT_MSG]);
return mtp_int_submit(link, link->isup_opc, sls, MTP_SI_MNT_ISUP, data, length);
rate_ctr_inc(&set->ctrg->ctr[MTP_LSET_ISUP_OUT_MSG]);
return mtp_int_submit(set, set->isup_opc, sls, MTP_SI_MNT_ISUP, data, length);
}
int mtp_link_set_send(struct mtp_link_set *set, struct msgb *msg)
@ -560,30 +560,30 @@ int mtp_link_set_send(struct mtp_link_set *set, struct msgb *msg)
return 0;
}
static int mtp_int_submit(struct mtp_link_set *link, int pc, int sls, int type,
static int mtp_int_submit(struct mtp_link_set *set, int pc, int sls, int type,
const uint8_t *data, unsigned int length)
{
uint8_t *put_ptr;
struct mtp_level_3_hdr *hdr;
struct msgb *msg;
if (!link->slc[sls % 16])
if (!set->slc[sls % 16])
return -1;
msg = mtp_msg_alloc(link);
msg = mtp_msg_alloc(set);
if (!msg)
return -1;
hdr = (struct mtp_level_3_hdr *) msg->l2h;
hdr->ser_ind = type;
hdr->addr = MTP_ADDR(sls % 16, link->dpc, pc);
hdr->addr = MTP_ADDR(sls % 16, set->dpc, pc);
/* copy the raw sccp data */
put_ptr = msgb_put(msg, length);
memcpy(put_ptr, data, length);
mtp_link_submit(link->slc[sls % 16], msg);
mtp_link_submit(set->slc[sls % 16], msg);
return 0;
}
@ -635,41 +635,41 @@ void mtp_link_set_init_slc(struct mtp_link_set *set)
struct mtp_link_set *mtp_link_set_alloc(struct bsc_data *bsc)
{
struct mtp_link_set *link;
struct mtp_link_set *set;
link = talloc_zero(bsc, struct mtp_link_set);
if (!link)
set = talloc_zero(bsc, struct mtp_link_set);
if (!set)
return NULL;
link->ctrg = rate_ctr_group_alloc(link,
set->ctrg = rate_ctr_group_alloc(set,
mtp_link_set_rate_ctr_desc(),
bsc->num_linksets + 1);
if (!link->ctrg) {
if (!set->ctrg) {
LOGP(DINP, LOGL_ERROR, "Failed to allocate counter.\n");
return NULL;
}
link->ni = MTP_NI_NATION_NET;
INIT_LLIST_HEAD(&link->links);
set->ni = MTP_NI_NATION_NET;
INIT_LLIST_HEAD(&set->links);
link->nr = bsc->num_linksets++;
link->sccp_opc = link->isup_opc = -1;
link->pcap_fd = bsc->pcap_fd;
link->bsc = bsc;
set->nr = bsc->num_linksets++;
set->sccp_opc = set->isup_opc = -1;
set->pcap_fd = bsc->pcap_fd;
set->bsc = bsc;
/* timeout code */
link->timeout_t18 = 15;
link->timeout_t20 = 16;
set->timeout_t18 = 15;
set->timeout_t20 = 16;
link->T18.cb = linkset_t18_cb;
link->T18.data = link;
link->T20.cb = linkset_t20_cb;
link->T20.data = link;
set->T18.cb = linkset_t18_cb;
set->T18.data = set;
set->T20.cb = linkset_t20_cb;
set->T20.data = set;
llist_add_tail(&link->entry, &bsc->linksets);
llist_add_tail(&set->entry, &bsc->linksets);
return link;
return set;
}
struct mtp_link_set *mtp_link_set_num(struct bsc_data *bsc, int num)

View File

@ -46,9 +46,9 @@
#include <assert.h>
#include <unistd.h>
static void send_reset_ack(struct mtp_link_set *link, int sls);
static void handle_local_sccp(struct mtp_link_set *link, struct msgb *inp, struct sccp_parse_result *res, int sls);
static void send_local_rlsd(struct mtp_link_set *link, struct sccp_parse_result *res);
static void send_reset_ack(struct mtp_link_set *set, int sls);
static void handle_local_sccp(struct mtp_link_set *set, struct msgb *inp, struct sccp_parse_result *res, int sls);
static void send_local_rlsd(struct mtp_link_set *set, struct sccp_parse_result *res);
static void update_con_state(struct ss7_application *ss7, int rc, struct sccp_parse_result *result, struct msgb *msg, int from_msc, int sls);
/*
@ -122,7 +122,7 @@ void app_forward_sccp(struct ss7_application *app, struct msgb *_msg, int sls)
/*
* handle local message in close down mode
*/
static void handle_local_sccp(struct mtp_link_set *link, struct msgb *inpt, struct sccp_parse_result *result, int sls)
static void handle_local_sccp(struct mtp_link_set *set, struct msgb *inpt, struct sccp_parse_result *result, int sls)
{
/* Handle msg with a reject */
if (inpt->l2h[0] == SCCP_MSG_TYPE_CR) {
@ -133,7 +133,7 @@ static void handle_local_sccp(struct mtp_link_set *link, struct msgb *inpt, stru
cr = (struct sccp_connection_request *) inpt->l2h;
msg = create_sccp_refuse(&cr->source_local_reference);
if (msg) {
mtp_link_set_submit_sccp_data(link, sls, msg->l2h, msgb_l2len(msg));
mtp_link_set_submit_sccp_data(set, sls, msg->l2h, msgb_l2len(msg));
msgb_free(msg);
}
return;
@ -147,13 +147,13 @@ static void handle_local_sccp(struct mtp_link_set *link, struct msgb *inpt, stru
form1 = (struct sccp_data_form1 *) inpt->l2h;
llist_for_each_entry(con, &link->app->sccp_connections, entry) {
llist_for_each_entry(con, &set->app->sccp_connections, entry) {
if (memcmp(&form1->destination_local_reference,
&con->dst_ref, sizeof(con->dst_ref)) == 0) {
LOGP(DINP, LOGL_DEBUG, "Sending a release request now.\n");
msg = create_sccp_rlsd(&con->dst_ref, &con->src_ref);
if (msg) {
mtp_link_set_submit_sccp_data(link, con->sls, msg->l2h, msgb_l2len(msg));
mtp_link_set_submit_sccp_data(set, con->sls, msg->l2h, msgb_l2len(msg));
msgb_free(msg);
}
return;
@ -165,16 +165,16 @@ static void handle_local_sccp(struct mtp_link_set *link, struct msgb *inpt, stru
} else if (inpt->l2h[0] == SCCP_MSG_TYPE_UDT && result->data_len >= 3) {
if (inpt->l3h[0] == 0 && inpt->l3h[2] == BSS_MAP_MSG_RESET_ACKNOWLEDGE) {
LOGP(DINP, LOGL_NOTICE, "Reset ACK. Connecting to the MSC again.\n");
app_resources_released(link->app);
app_resources_released(set->app);
return;
}
}
/* Update the state, maybe the connection was released? */
update_con_state(link->app, 0, result, inpt, 0, sls);
if (llist_empty(&link->app->sccp_connections))
app_resources_released(link->app);
update_con_state(set->app, 0, result, inpt, 0, sls);
if (llist_empty(&set->app->sccp_connections))
app_resources_released(set->app);
return;
}
@ -502,20 +502,20 @@ static void send_local_rlsd_for_con(void *data)
msgb_free(rlsd);
}
static void send_local_rlsd(struct mtp_link_set *link, struct sccp_parse_result *res)
static void send_local_rlsd(struct mtp_link_set *set, struct sccp_parse_result *res)
{
struct active_sccp_con *con;
LOGP(DINP, LOGL_DEBUG, "Received GSM Clear Complete. Sending RLSD locally.\n");
con = find_con_by_dest_ref(link->app, res->destination_local_reference);
con = find_con_by_dest_ref(set->app, res->destination_local_reference);
if (!con)
return;
con->rls_tries = 0;
send_local_rlsd_for_con(con);
}
static void send_reset_ack(struct mtp_link_set *link, int sls)
static void send_reset_ack(struct mtp_link_set *set, int sls)
{
static const uint8_t reset_ack[] = {
0x09, 0x00, 0x03, 0x05, 0x7, 0x02, 0x42, 0xfe,
@ -523,7 +523,7 @@ static void send_reset_ack(struct mtp_link_set *link, int sls)
0x00, 0x01, 0x31
};
mtp_link_set_submit_sccp_data(link, sls, reset_ack, sizeof(reset_ack));
mtp_link_set_submit_sccp_data(set, sls, reset_ack, sizeof(reset_ack));
}
void msc_dispatch_sccp(struct msc_connection *msc, struct msgb *msg)