From 336f8ec57a1f33997967b9a5d1e10ec2358ee3d6 Mon Sep 17 00:00:00 2001 From: Jan Luebbe Date: Wed, 12 Aug 2009 15:18:52 +0200 Subject: allocate a token for new subscribers --- openbsc/src/gsm_04_11.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'openbsc/src/gsm_04_11.c') diff --git a/openbsc/src/gsm_04_11.c b/openbsc/src/gsm_04_11.c index 05e55d4dc..1dc68d0c3 100644 --- a/openbsc/src/gsm_04_11.c +++ b/openbsc/src/gsm_04_11.c @@ -954,6 +954,8 @@ static int subscr_sig_cb(unsigned int subsys, unsigned int signal, struct gsm_lchan *lchan; struct gsm_sms *sms; + u_int32_t token; + switch (signal) { case S_SUBSCR_ATTACHED: /* A subscriber has attached. Check if there are @@ -968,6 +970,18 @@ static int subscr_sig_cb(unsigned int subsys, unsigned int signal, /* Establish a SAPI3 RLL connection for SMS */ rll_establish(lchan, UM_SAPI_SMS, rll_ind_cb, sms); break; + case S_SUBSCR_FIRST_CONTACT: + /* A new subscriber has just been created in the DB */ + subscr = signal_data; + if (subscr->net->auth_policy == GSM_AUTH_POLICY_TOKEN) { + if (db_subscriber_alloc_token(subscr, &token)) { + /* error: probably use already has a token */ + break; + } else { + /* FIXME: send sms with token here */ + } + } + break; default: break; } -- cgit v1.2.3 From aa9dc19ca7e64f63863f7622150fd8ea625baf9f Mon Sep 17 00:00:00 2001 From: "Harald Welte (local)" Date: Thu, 13 Aug 2009 13:49:51 +0200 Subject: remove FIRST_CONTACT signal, the subscriber flag is sufficient --- openbsc/src/gsm_04_11.c | 12 ------------ 1 file changed, 12 deletions(-) (limited to 'openbsc/src/gsm_04_11.c') diff --git a/openbsc/src/gsm_04_11.c b/openbsc/src/gsm_04_11.c index 1dc68d0c3..5070b5413 100644 --- a/openbsc/src/gsm_04_11.c +++ b/openbsc/src/gsm_04_11.c @@ -970,18 +970,6 @@ static int subscr_sig_cb(unsigned int subsys, unsigned int signal, /* Establish a SAPI3 RLL connection for SMS */ rll_establish(lchan, UM_SAPI_SMS, rll_ind_cb, sms); break; - case S_SUBSCR_FIRST_CONTACT: - /* A new subscriber has just been created in the DB */ - subscr = signal_data; - if (subscr->net->auth_policy == GSM_AUTH_POLICY_TOKEN) { - if (db_subscriber_alloc_token(subscr, &token)) { - /* error: probably use already has a token */ - break; - } else { - /* FIXME: send sms with token here */ - } - } - break; default: break; } -- cgit v1.2.3 From 58c83d8368c22a25f0bd8482cc031297c1bbcb4c Mon Sep 17 00:00:00 2001 From: Daniel Willmann Date: Thu, 13 Aug 2009 03:40:49 +0200 Subject: Support sms with a validity period format of none --- openbsc/src/gsm_04_11.c | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'openbsc/src/gsm_04_11.c') diff --git a/openbsc/src/gsm_04_11.c b/openbsc/src/gsm_04_11.c index 5070b5413..246847bf2 100644 --- a/openbsc/src/gsm_04_11.c +++ b/openbsc/src/gsm_04_11.c @@ -175,6 +175,10 @@ static unsigned long gsm340_validity_period(u_int8_t sms_vpf, u_int8_t *sms_vp) /* FIXME: implementation */ DEBUGP(DSMS, "VPI enhanced not implemented yet\n"); break; + case GSM340_TP_VPF_NONE: + /* Default validity: two days */ + minutes = 24 * 60 * 2; + break; } return minutes; } @@ -383,6 +387,9 @@ static int gsm340_rx_tpdu(struct msgb *msg) sms_vp = smsp; smsp += 7; break; + case GSM340_TP_VPF_NONE: + sms_vp = 0; + break; default: DEBUGP(DSMS, "SMS Validity period not implemented: 0x%02x\n", sms_vpf); -- cgit v1.2.3 From 9aef14547a721e96193e65be0a60eb94b34eb476 Mon Sep 17 00:00:00 2001 From: Daniel Willmann Date: Thu, 13 Aug 2009 03:39:07 +0200 Subject: Beautify septet->octet calculation (do not use ceil) --- openbsc/src/gsm_04_11.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'openbsc/src/gsm_04_11.c') diff --git a/openbsc/src/gsm_04_11.c b/openbsc/src/gsm_04_11.c index 246847bf2..e1b417a86 100644 --- a/openbsc/src/gsm_04_11.c +++ b/openbsc/src/gsm_04_11.c @@ -276,6 +276,7 @@ static int gsm340_gen_tpdu(struct msgb *msg, struct gsm_sms *sms) u_int8_t *smsp; u_int8_t oa[12]; /* max len per 03.40 */ u_int8_t oa_len = 0; + u_int8_t octet_len; unsigned int old_msg_len = msg->len; /* generate first octet with masked bits */ @@ -321,10 +322,13 @@ static int gsm340_gen_tpdu(struct msgb *msg, struct gsm_sms *sms) /* generate TP-UD */ /* FIXME: Handle DSC of UCS2 or 8/bit default */ if (gsm338_get_sms_alphabet(sms->data_coding_scheme) == DCS_7BIT_DEFAULT) { + octet_len = sms->user_data_len*7/8; + if (sms->user_data_len*7%8 != 0) + octet_len++; /* Warning, user_data_len indicates the amount of septets * (characters), we need amount of octets occupied */ - smsp = msgb_put(msg, ceil(sms->user_data_len*7/8.0)); - memcpy(smsp, sms->user_data, ceil(sms->user_data_len*7/8.0)); + smsp = msgb_put(msg, octet_len); + memcpy(smsp, sms->user_data, octet_len); } return msg->len - old_msg_len; -- cgit v1.2.3