[PATCH] libosmo-abis[master]: src: use osmo_timer_setup()

2017-06-07 Thread Pablo Neira Ayuso

Review at  https://gerrit.osmocom.org/2855

src: use osmo_timer_setup()

Use new function available in libosmocore to set up timers. Compile
tested only.

Change-Id: I4ca4950e49a09c63b608b13ac7561ebbd351889a
---
M src/input/dahdi.c
M src/input/ipaccess.c
M src/input/misdn.c
M src/input/unixsocket.c
4 files changed, 4 insertions(+), 8 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/libosmo-abis refs/changes/55/2855/1

diff --git a/src/input/dahdi.c b/src/input/dahdi.c
index 0945daa..911f862 100644
--- a/src/input/dahdi.c
+++ b/src/input/dahdi.c
@@ -252,8 +252,7 @@
sign_link->sapi, msg);
 
/* set tx delay timer for next event */
-   e1i_ts->sign.tx_timer.cb = timeout_ts1_write;
-   e1i_ts->sign.tx_timer.data = e1i_ts;
+   osmo_timer_setup(&e1i_ts->sign.tx_timer, timeout_ts1_write, e1i_ts);
osmo_timer_schedule(&e1i_ts->sign.tx_timer, 0, 5);
 
return 0;
diff --git a/src/input/ipaccess.c b/src/input/ipaccess.c
index ac84ffc..63ee167 100644
--- a/src/input/ipaccess.c
+++ b/src/input/ipaccess.c
@@ -354,8 +354,7 @@
}
 
/* set tx delay timer for next event */
-   e1i_ts->sign.tx_timer.cb = timeout_ts1_write;
-   e1i_ts->sign.tx_timer.data = e1i_ts;
+   osmo_timer_setup(&e1i_ts->sign.tx_timer, timeout_ts1_write, e1i_ts);
 
/* Reducing this might break the nanoBTS 900 init. */
osmo_timer_schedule(&e1i_ts->sign.tx_timer, 0, e1i_ts->sign.delay);
diff --git a/src/input/misdn.c b/src/input/misdn.c
index 98a836f..347b7bf 100644
--- a/src/input/misdn.c
+++ b/src/input/misdn.c
@@ -283,8 +283,7 @@
 
 
/* set tx delay timer for next event */
-   e1i_ts->sign.tx_timer.cb = timeout_ts1_write;
-   e1i_ts->sign.tx_timer.data = e1i_ts;
+   osmo_timer_setup(&e1i_ts->sign.tx_timer, timeout_ts1_write, e1i_ts);
osmo_timer_schedule(&e1i_ts->sign.tx_timer, 0, e1i_ts->sign.delay);
 
return ret;
diff --git a/src/input/unixsocket.c b/src/input/unixsocket.c
index 4f287ae..63bd796 100644
--- a/src/input/unixsocket.c
+++ b/src/input/unixsocket.c
@@ -160,8 +160,7 @@
}
 
/* set tx delay timer for next event */
-   e1i_ts->sign.tx_timer.cb = timeout_ts1_write;
-   e1i_ts->sign.tx_timer.data = e1i_ts;
+   osmo_timer_setup(&e1i_ts->sign.tx_timer, timeout_ts1_write, e1i_ts);
 
osmo_timer_schedule(&e1i_ts->sign.tx_timer, 0, e1i_ts->sign.delay);
 

-- 
To view, visit https://gerrit.osmocom.org/2855
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I4ca4950e49a09c63b608b13ac7561ebbd351889a
Gerrit-PatchSet: 1
Gerrit-Project: libosmo-abis
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 


[PATCH] libosmo-netif[master]: src: use osmo_timer_setup()

2017-06-07 Thread Pablo Neira Ayuso

Review at  https://gerrit.osmocom.org/2856

src: use osmo_timer_setup()

Use new function available in libosmocore to set up timers. Compile
tested only.

Change-Id: Id3dd32102c7362f3b280d2c058c2decebccb357a
---
M src/osmux.c
M src/rs232.c
M src/stream.c
3 files changed, 6 insertions(+), 10 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/libosmo-netif refs/changes/56/2856/1

diff --git a/src/osmux.c b/src/osmux.c
index 91054f1..23a6440 100644
--- a/src/osmux.c
+++ b/src/osmux.c
@@ -721,8 +721,7 @@
 
INIT_LLIST_HEAD(&batch->circuit_list);
batch->remaining_bytes = h->batch_size;
-   batch->timer.cb = osmux_batch_timer_expired;
-   batch->timer.data = h;
+   osmo_timer_setup(&batch->timer, osmux_batch_timer_expired, h);
 
h->internal_data = (void *)batch;
 
@@ -803,8 +802,7 @@
h->msg = msg;
h->tx_cb = tx_cb;
h->data = data;
-   h->timer.cb = osmux_tx_cb;
-   h->timer.data = h;
+   osmo_timer_setup(&h->timer, osmux_tx_cb, h);
 
 #ifdef DEBUG_TIMING
osmo_gettimeofday(&h->start, NULL);
diff --git a/src/rs232.c b/src/rs232.c
index c05a693..49520d8 100644
--- a/src/rs232.c
+++ b/src/rs232.c
@@ -234,10 +234,9 @@
return rc;
}
 
-   if (r->cfg.delay_us) {
-   r->tx_timer.cb = rs232_tx_timer_cb;
-   r->tx_timer.data = r;
-   }
+   if (r->cfg.delay_us)
+   osmo_timer_setup(&r->tx_timer, rs232_tx_timer_cb, r);
+
return 0;
 }
 
diff --git a/src/stream.c b/src/stream.c
index b96293e..a80d842 100644
--- a/src/stream.c
+++ b/src/stream.c
@@ -281,8 +281,7 @@
cli->ofd.cb = osmo_stream_cli_fd_cb;
cli->ofd.data = cli;
cli->state = STREAM_CLI_STATE_CONNECTING;
-   cli->timer.cb = cli_timer_cb;
-   cli->timer.data = cli;
+   osmo_timer_setup(&cli->timer, cli_timer_cb, cli);
cli->reconnect_timeout = 5; /* default is 5 seconds. */
INIT_LLIST_HEAD(&cli->tx_queue);
 

-- 
To view, visit https://gerrit.osmocom.org/2856
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Id3dd32102c7362f3b280d2c058c2decebccb357a
Gerrit-PatchSet: 1
Gerrit-Project: libosmo-netif
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 


[PATCH] openbsc[master]: libmsc: do not leak pending SMPP command object on error path

2017-08-08 Thread Pablo Neira Ayuso

Review at  https://gerrit.osmocom.org/3423

libmsc: do not leak pending SMPP command object on error path

Make sure the SMPP command object is released on errors.

Change-Id: I474584425d23fb379a9d71b33e29ac0e24f01e61
---
M openbsc/src/libmsc/smpp_openbsc.c
1 file changed, 6 insertions(+), 5 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/openbsc refs/changes/23/3423/1

diff --git a/openbsc/src/libmsc/smpp_openbsc.c 
b/openbsc/src/libmsc/smpp_openbsc.c
index f7d1441..36ad0a2 100644
--- a/openbsc/src/libmsc/smpp_openbsc.c
+++ b/openbsc/src/libmsc/smpp_openbsc.c
@@ -517,7 +517,7 @@
conn = connection_for_subscr(cmd->subscr);
if (!conn) {
LOGP(DSMPP, LOGL_ERROR, "No connection to subscriber 
anymore\n");
-   return;
+   goto out;
}
 
trans = trans_find_by_id(conn, GSM48_PDISC_SMS,
@@ -525,10 +525,11 @@
if (!trans) {
LOGP(DSMPP, LOGL_ERROR, "GSM transaction %u is gone\n",
 cmd->sms->gsm411.transaction_id);
-   return;
+   goto out;
}
 
gsm411_send_rp_ack(trans, cmd->sms->gsm411.msg_ref);
+out:
smpp_cmd_free(cmd);
 }
 
@@ -541,7 +542,7 @@
conn = connection_for_subscr(cmd->subscr);
if (!conn) {
LOGP(DSMPP, LOGL_ERROR, "No connection to subscriber 
anymore\n");
-   return;
+   goto out;
}
 
trans = trans_find_by_id(conn, GSM48_PDISC_SMS,
@@ -549,14 +550,14 @@
if (!trans) {
LOGP(DSMPP, LOGL_ERROR, "GSM transaction %u is gone\n",
 cmd->sms->gsm411.transaction_id);
-   return;
+   goto out;
}
 
if (smpp_to_gsm411_err(status, &gsm411_cause) < 0)
gsm411_cause = GSM411_RP_CAUSE_MO_NET_OUT_OF_ORDER;
 
gsm411_send_rp_error(trans, cmd->sms->gsm411.msg_ref, gsm411_cause);
-
+out:
smpp_cmd_free(cmd);
 }
 

-- 
To view, visit https://gerrit.osmocom.org/3423
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I474584425d23fb379a9d71b33e29ac0e24f01e61
Gerrit-PatchSet: 1
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 


[PATCH] openbsc[master]: libmsc: remove dead code in sms_route_mt_sms()

2017-08-08 Thread Pablo Neira Ayuso

Review at  https://gerrit.osmocom.org/3424

libmsc: remove dead code in sms_route_mt_sms()

The following branch:

if (!rc && !gsms->receiver)
rc = GSM411_RP_CAUSE_MO_NUM_UNASSIGNED;

at the end of sms_route_mt_sms() always evaluates false.

Just a bit before, in such function, we have this:

if (!gsms->receiver) {
...
 #ifdef BUILD_SMPP
...
 #else
...
 #endif
return rc;
}

So, if there is no receiver, we just stop running code and return the RP
cause via the rc variable. Same applies to the smpp_first check under
the BUILD_SMPP ifdef (that I have removed in this snippet to keep this
commit message small).

Change-Id: Ic3502b5b169bc7a73a67fd6ff53d8b6c0dc045c8
---
M openbsc/src/libmsc/gsm_04_11.c
1 file changed, 0 insertions(+), 3 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/openbsc refs/changes/24/3424/1

diff --git a/openbsc/src/libmsc/gsm_04_11.c b/openbsc/src/libmsc/gsm_04_11.c
index da4460c..7df5e64 100644
--- a/openbsc/src/libmsc/gsm_04_11.c
+++ b/openbsc/src/libmsc/gsm_04_11.c
@@ -356,9 +356,6 @@
break;
}
 
-   if (!rc && !gsms->receiver)
-   rc = GSM411_RP_CAUSE_MO_NUM_UNASSIGNED;
-
return rc;
 }
 

-- 
To view, visit https://gerrit.osmocom.org/3424
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ic3502b5b169bc7a73a67fd6ff53d8b6c0dc045c8
Gerrit-PatchSet: 1
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 


[PATCH] openbsc[master]: utils: smpp_mirror: set registered_delivery field in SMPP SU...

2017-08-08 Thread Pablo Neira Ayuso

Review at  https://gerrit.osmocom.org/3431

utils: smpp_mirror: set registered_delivery field in SMPP SUBMIT_SM

To test delivery reports using this utility.

Change-Id: I0e477407531fdd4d906e53c9b5a48a79a239966f
---
M openbsc/src/utils/smpp_mirror.c
1 file changed, 1 insertion(+), 0 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/openbsc refs/changes/31/3431/1

diff --git a/openbsc/src/utils/smpp_mirror.c b/openbsc/src/utils/smpp_mirror.c
index 95df5f2..ec28f0a 100644
--- a/openbsc/src/utils/smpp_mirror.c
+++ b/openbsc/src/utils/smpp_mirror.c
@@ -130,6 +130,7 @@
 sizeof(deliver.destination_addr)));
 
submit.esm_class = deliver.esm_class;
+   submit.registered_delivery = deliver.registered_delivery;
submit.protocol_id = deliver.protocol_id;
submit.priority_flag = deliver.priority_flag;
memcpy(submit.schedule_delivery_time, deliver.schedule_delivery_time,

-- 
To view, visit https://gerrit.osmocom.org/3431
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I0e477407531fdd4d906e53c9b5a48a79a239966f
Gerrit-PatchSet: 1
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 


[PATCH] openbsc[master]: libmsc: remove 'deferred' parameter in sms_route_mt_sms()

2017-08-08 Thread Pablo Neira Ayuso
pp_to_gsm411_err(status, &gsm411_cause) < 0)
gsm411_cause = GSM411_RP_CAUSE_MO_NET_OUT_OF_ORDER;
 
-   gsm411_send_rp_error(trans, cmd->sms->gsm411.msg_ref, gsm411_cause);
+   gsm411_send_rp_error(trans, cmd->gsm411_msg_ref, gsm411_cause);
 out:
smpp_cmd_free(cmd);
 }
@@ -568,7 +565,7 @@
 
 static int smpp_cmd_enqueue(struct osmo_esme *esme,
struct gsm_subscriber *subscr, struct gsm_sms *sms,
-   uint32_t sequence_number, bool *deferred)
+   uint32_t sequence_number)
 {
struct osmo_smpp_cmd *cmd;
 
@@ -577,7 +574,8 @@
return -1;
 
cmd->sequence_nr= sequence_number;
-   cmd->sms= sms;
+   cmd->gsm411_msg_ref = sms->gsm411.msg_ref;
+   cmd->gsm411_trans_id= sms->gsm411.transaction_id;
cmd->subscr = subscr_get(subscr);
 
/* FIXME: No predefined value for this response_timer as specified by
@@ -588,7 +586,6 @@
osmo_timer_setup(&cmd->response_timer, smpp_deliver_sm_cb, cmd);
osmo_timer_schedule(&cmd->response_timer, 5, 0);
llist_add_tail(&cmd->list, &esme->smpp_cmd_list);
-   *deferred = true;
 
return 0;
 }
@@ -606,8 +603,7 @@
 }
 
 static int deliver_to_esme(struct osmo_esme *esme, struct gsm_sms *sms,
-  struct gsm_subscriber_connection *conn,
-  bool *deferred)
+  struct gsm_subscriber_connection *conn)
 {
struct deliver_sm_t deliver;
int mode, ret;
@@ -686,7 +682,7 @@
return ret;
 
return smpp_cmd_enqueue(esme, conn->subscr, sms,
-   deliver.sequence_number, deferred);
+   deliver.sequence_number);
 }
 
 static struct smsc *g_smsc;
@@ -697,7 +693,7 @@
 }
 
 int smpp_try_deliver(struct gsm_sms *sms,
-struct gsm_subscriber_connection *conn, bool *deferred)
+struct gsm_subscriber_connection *conn)
 {
struct osmo_esme *esme;
struct osmo_smpp_addr dst;
@@ -710,7 +706,7 @@
 
rc = smpp_route(g_smsc, &dst, &esme);
if (!rc)
-   rc = deliver_to_esme(esme, sms, conn, deferred);
+   rc = deliver_to_esme(esme, sms, conn);
 
return rc;
 }
diff --git a/openbsc/src/libmsc/smpp_smsc.h b/openbsc/src/libmsc/smpp_smsc.h
index c9209ef..468d3b4 100644
--- a/openbsc/src/libmsc/smpp_smsc.h
+++ b/openbsc/src/libmsc/smpp_smsc.h
@@ -89,8 +89,9 @@
 struct osmo_smpp_cmd {
struct llist_head   list;
struct gsm_subscriber   *subscr;
-   struct gsm_sms  *sms;
uint32_tsequence_nr;
+   uint32_tgsm411_msg_ref;
+   uint8_t gsm411_trans_id;
struct osmo_timer_list  response_timer;
 };
 
@@ -161,5 +162,5 @@
 int smpp_route_smpp_first(struct gsm_sms *sms,
struct gsm_subscriber_connection *conn);
 int smpp_try_deliver(struct gsm_sms *sms,
-struct gsm_subscriber_connection *conn, bool *deferred);
+struct gsm_subscriber_connection *conn);
 #endif

-- 
To view, visit https://gerrit.osmocom.org/3426
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Iba5f864f9bb963baff95969e306b1b7cff00c1e3
Gerrit-PatchSet: 1
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 


[PATCH] openbsc[master]: gsm_04_11: get rid of unused parameter in sms_route_mt_sms()

2017-08-08 Thread Pablo Neira Ayuso

Review at  https://gerrit.osmocom.org/3422

gsm_04_11: get rid of unused parameter in sms_route_mt_sms()

This parameter is unused, remove it.

Change-Id: I797abce3f91447e8f397c7cf726db7425479fe0e
---
M openbsc/src/libmsc/gsm_04_11.c
1 file changed, 6 insertions(+), 5 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/openbsc refs/changes/22/3422/1

diff --git a/openbsc/src/libmsc/gsm_04_11.c b/openbsc/src/libmsc/gsm_04_11.c
index acf425a..da4460c 100644
--- a/openbsc/src/libmsc/gsm_04_11.c
+++ b/openbsc/src/libmsc/gsm_04_11.c
@@ -187,7 +187,7 @@
return gsm411_smc_send(&trans->sms.smc_inst, msg_type, msg);
 }
 
-static int gsm340_rx_sms_submit(struct msgb *msg, struct gsm_sms *gsms)
+static int gsm340_rx_sms_submit(struct gsm_sms *gsms)
 {
if (db_sms_store(gsms) != 0) {
LOGP(DLSMS, LOGL_ERROR, "Failed to store SMS in Database\n");
@@ -277,8 +277,9 @@
return msg->len - old_msg_len;
 }
 
-int sms_route_mt_sms(struct gsm_subscriber_connection *conn, struct msgb *msg,
-struct gsm_sms *gsms, uint8_t sms_mti, bool *deferred)
+static int sms_route_mt_sms(struct gsm_subscriber_connection *conn,
+   struct gsm_sms *gsms, uint8_t sms_mti,
+   bool *deferred)
 {
int rc;
 
@@ -342,7 +343,7 @@
switch (sms_mti) {
case GSM340_SMS_SUBMIT_MS2SC:
/* MS is submitting a SMS */
-   rc = gsm340_rx_sms_submit(msg, gsms);
+   rc = gsm340_rx_sms_submit(gsms);
break;
case GSM340_SMS_COMMAND_MS2SC:
case GSM340_SMS_DELIVER_REP_MS2SC:
@@ -487,7 +488,7 @@
/* FIXME: This looks very wrong */
send_signal(0, NULL, gsms, 0);
 
-   rc = sms_route_mt_sms(conn, msg, gsms, sms_mti, deferred);
+   rc = sms_route_mt_sms(conn, gsms, sms_mti, deferred);
 out:
if (!deferred)
sms_free(gsms);

-- 
To view, visit https://gerrit.osmocom.org/3422
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I797abce3f91447e8f397c7cf726db7425479fe0e
Gerrit-PatchSet: 1
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 


[PATCH] openbsc[master]: libmsc: report status report request flag from SMPP SUBMIT_SM

2017-08-08 Thread Pablo Neira Ayuso

Review at  https://gerrit.osmocom.org/3429

libmsc: report status report request flag from SMPP SUBMIT_SM

Restore the sms status report request flag from SUBMIT_SM.

Change-Id: Iac05252253f8933a3875b4904599b7a225191a4b
---
M openbsc/src/libmsc/smpp_openbsc.c
1 file changed, 1 insertion(+), 0 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/openbsc refs/changes/29/3429/1

diff --git a/openbsc/src/libmsc/smpp_openbsc.c 
b/openbsc/src/libmsc/smpp_openbsc.c
index cf78676..a803763 100644
--- a/openbsc/src/libmsc/smpp_openbsc.c
+++ b/openbsc/src/libmsc/smpp_openbsc.c
@@ -129,6 +129,7 @@
sms = sms_alloc();
sms->source = SMS_SOURCE_SMPP;
sms->smpp.sequence_nr = submit->sequence_number;
+   sms->status_rep_req = submit->registered_delivery;
 
/* fill in the destination address */
sms->receiver = dest;

-- 
To view, visit https://gerrit.osmocom.org/3429
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Iac05252253f8933a3875b4904599b7a225191a4b
Gerrit-PatchSet: 1
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 


[PATCH] openbsc[master]: libmsc: remove duplicate lines in deliver_to_esme()

2017-08-08 Thread Pablo Neira Ayuso

Review at  https://gerrit.osmocom.org/3425

libmsc: remove duplicate lines in deliver_to_esme()

This code is accidentally doing the same thing twice, remove it.

Change-Id: I68087a850399e22951d2407e4d8a09c671a775c9
---
M openbsc/src/libmsc/smpp_openbsc.c
1 file changed, 0 insertions(+), 2 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/openbsc refs/changes/25/3425/1

diff --git a/openbsc/src/libmsc/smpp_openbsc.c 
b/openbsc/src/libmsc/smpp_openbsc.c
index 36ad0a2..c9379ec 100644
--- a/openbsc/src/libmsc/smpp_openbsc.c
+++ b/openbsc/src/libmsc/smpp_openbsc.c
@@ -676,8 +676,6 @@
} else {
deliver.sm_length = sms->user_data_len;
memcpy(deliver.short_message, sms->user_data, 
deliver.sm_length);
-   deliver.sm_length = sms->user_data_len;
-   memcpy(deliver.short_message, sms->user_data, 
deliver.sm_length);
}
 
if (esme->acl && esme->acl->osmocom_ext && conn->lchan)

-- 
To view, visit https://gerrit.osmocom.org/3425
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I68087a850399e22951d2407e4d8a09c671a775c9
Gerrit-PatchSet: 1
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 


[PATCH] openbsc[master]: libmsc: move gsm340_rx_sms_submit() to sms_route_mt_sms()

2017-08-08 Thread Pablo Neira Ayuso

Review at  https://gerrit.osmocom.org/3427

libmsc: move gsm340_rx_sms_submit() to sms_route_mt_sms()

Move the sms message-type-identifier (mti) handling away from the
routing logic. This patch allows us to reuse the sms_route_mt_sms()
function in a follow up patch for sms reports send through SMPP
DELIVER_SM with esm_class = Delivery Receipt.

Change-Id: I3f3d30e0762b91e2099243b0be1a4b67cbb5e9c0
---
M openbsc/src/libmsc/gsm_04_11.c
1 file changed, 22 insertions(+), 19 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/openbsc refs/changes/27/3427/1

diff --git a/openbsc/src/libmsc/gsm_04_11.c b/openbsc/src/libmsc/gsm_04_11.c
index d60de08..7294153 100644
--- a/openbsc/src/libmsc/gsm_04_11.c
+++ b/openbsc/src/libmsc/gsm_04_11.c
@@ -278,7 +278,7 @@
 }
 
 static int sms_route_mt_sms(struct gsm_subscriber_connection *conn,
-   struct gsm_sms *gsms, uint8_t sms_mti)
+   struct gsm_sms *gsms)
 {
int rc;
 
@@ -336,23 +336,6 @@
rc = GSM411_RP_CAUSE_MO_NUM_UNASSIGNED;

rate_ctr_inc(&conn->network->msc_ctrs->ctr[MSC_CTR_SMS_NO_RECEIVER]);
 #endif
-   return rc;
-   }
-
-   switch (sms_mti) {
-   case GSM340_SMS_SUBMIT_MS2SC:
-   /* MS is submitting a SMS */
-   rc = gsm340_rx_sms_submit(gsms);
-   break;
-   case GSM340_SMS_COMMAND_MS2SC:
-   case GSM340_SMS_DELIVER_REP_MS2SC:
-   LOGP(DLSMS, LOGL_NOTICE, "Unimplemented MTI 0x%02x\n", sms_mti);
-   rc = GSM411_RP_CAUSE_IE_NOTEXIST;
-   break;
-   default:
-   LOGP(DLSMS, LOGL_NOTICE, "Undefined MTI 0x%02x\n", sms_mti);
-   rc = GSM411_RP_CAUSE_IE_NOTEXIST;
-   break;
}
 
return rc;
@@ -484,7 +467,27 @@
/* FIXME: This looks very wrong */
send_signal(0, NULL, gsms, 0);
 
-   rc = sms_route_mt_sms(conn, gsms, sms_mti);
+   rc = sms_route_mt_sms(conn, gsms);
+
+   /* This SMS got routed through SMPP or no receiver exists. */
+   if (!gsms->receiver)
+   return rc;
+
+   switch (sms_mti) {
+   case GSM340_SMS_SUBMIT_MS2SC:
+   /* MS is submitting a SMS */
+   rc = gsm340_rx_sms_submit(gsms);
+   break;
+   case GSM340_SMS_COMMAND_MS2SC:
+   case GSM340_SMS_DELIVER_REP_MS2SC:
+   LOGP(DLSMS, LOGL_NOTICE, "Unimplemented MTI 0x%02x\n", sms_mti);
+   rc = GSM411_RP_CAUSE_IE_NOTEXIST;
+   break;
+   default:
+   LOGP(DLSMS, LOGL_NOTICE, "Undefined MTI 0x%02x\n", sms_mti);
+   rc = GSM411_RP_CAUSE_IE_NOTEXIST;
+   break;
+   }
 out:
sms_free(gsms);
 

-- 
To view, visit https://gerrit.osmocom.org/3427
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I3f3d30e0762b91e2099243b0be1a4b67cbb5e9c0
Gerrit-PatchSet: 1
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 


[PATCH] openbsc[master]: libmsc: set registered_delivery field in SMPP 3.4 DELIVER_SM...

2017-08-08 Thread Pablo Neira Ayuso

Review at  https://gerrit.osmocom.org/3428

libmsc: set registered_delivery field in SMPP 3.4 DELIVER_SM messages

Propagate the status report request field to the SMPP message through
the registered_delivery field, so the ESME knows that the mobile phone
is asking for explicit delivery acknowledgment is required. See SMPP 3.4
specs section 5.2.17.

Change-Id: I59af60fa89cd10ae973c5e122789e3e03e3728ee
---
M openbsc/src/libmsc/smpp_openbsc.c
1 file changed, 8 insertions(+), 1 deletion(-)


  git pull ssh://gerrit.osmocom.org:29418/openbsc refs/changes/28/3428/1

diff --git a/openbsc/src/libmsc/smpp_openbsc.c 
b/openbsc/src/libmsc/smpp_openbsc.c
index 6b89df2..cf78676 100644
--- a/openbsc/src/libmsc/smpp_openbsc.c
+++ b/openbsc/src/libmsc/smpp_openbsc.c
@@ -602,6 +602,10 @@
return NULL;
 }
 
+/* See SMPP 3.4, Section 5.2.17. registered_delivery (1 byte field). */
+#define SMPP34_NO_DELIVERY_RECEIPT 0x0
+#define SMPP34_DELIVERY_RECEIPT_REQ0x1
+
 static int deliver_to_esme(struct osmo_esme *esme, struct gsm_sms *sms,
   struct gsm_subscriber_connection *conn)
 {
@@ -642,7 +646,10 @@
 
deliver.protocol_id = sms->protocol_id;
deliver.priority_flag   = 0;
-   deliver.registered_delivery = 0;
+   if (sms->status_rep_req)
+   deliver.registered_delivery = SMPP34_DELIVERY_RECEIPT_REQ;
+   else
+   deliver.registered_delivery = SMPP34_NO_DELIVERY_RECEIPT;
 
/* Figure out SMPP DCS from TP-DCS */
dcs = sms->data_coding_scheme;

-- 
To view, visit https://gerrit.osmocom.org/3428
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I59af60fa89cd10ae973c5e122789e3e03e3728ee
Gerrit-PatchSet: 1
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 


[PATCH] openbsc[master]: libmsc: handle delivery ack via SMPP SUBMIT SM / send GSM 03...

2017-08-08 Thread Pablo Neira Ayuso

Review at  https://gerrit.osmocom.org/3437

libmsc: handle delivery ack via SMPP SUBMIT SM / send GSM 03.40 status report

This patch adds gsm340_sms_send_status_report_tpdu() to build a
status-report. Moreover, set sms->report field if we see a SMPP
SUBMIT_SM with Delivery Acknowledgment esm_class, so this identifies
that this is a delivery report.

MSGSM 03.40   SMSC   SMPP 3.4   ESME
 | ||
 | |   SUBMIT-SM|
 | |esm_class = Delivery Ack|
 | |<---|
 | | SUBMIT-SM-RESP |
 | |--->|
 | ||
 | SMS-STATUS-REPORT   ||
 |<||
 | GSM 04.11 RP-ACK||
 |>||
 | ||

There is a FIXME message in this patch, that I just copied from
gsm340_gen_sms_deliver_tpdu() since TP-MMS is not supported by OpenBSC.

Change-Id: Ib70e534840308ed315f7add440351e649de3f907
---
M openbsc/src/libmsc/gsm_04_11.c
M openbsc/src/libmsc/smpp_openbsc.c
2 files changed, 54 insertions(+), 2 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/openbsc refs/changes/37/3437/1

diff --git a/openbsc/src/libmsc/gsm_04_11.c b/openbsc/src/libmsc/gsm_04_11.c
index ea80860..a2e002e 100644
--- a/openbsc/src/libmsc/gsm_04_11.c
+++ b/openbsc/src/libmsc/gsm_04_11.c
@@ -277,6 +277,49 @@
return msg->len - old_msg_len;
 }
 
+/* As defined by GSM 03.40, Section 9.2.2.3. */
+static int gsm340_gen_sms_status_report_tpdu(struct msgb *msg,
+struct gsm_sms *sms)
+{
+   unsigned int old_msg_len = msg->len;
+   uint8_t oa_len = 0;
+   uint8_t oa[12]; /* max len per 03.40 */
+   uint8_t *smsp;
+
+   /* generate first octet with masked bits */
+   smsp = msgb_put(msg, 1);
+   /* TP-MTI (message type indicator) */
+   *smsp = GSM340_SMS_STATUS_REP_SC2MS;
+   /* TP-MMS (more messages to send) */
+   if (0 /* FIXME */)
+   *smsp |= 0x04;
+   /* TP-MR (message reference) */
+   smsp = msgb_put(msg, 1);
+   *smsp = sms->msg_ref;
+   /* generate recipient address */
+   oa_len = gsm340_gen_oa_sub(oa, sizeof(oa), &sms->dst);
+   smsp = msgb_put(msg, oa_len);
+   memcpy(smsp, oa, oa_len);
+
+   /* generate TP-SCTS (Service centre timestamp) */
+   smsp = msgb_put(msg, 7);
+   gsm340_gen_scts(smsp, time(NULL));
+
+   /* generate TP-DT (Discharge time, in TP-SCTS format). */
+   smsp = msgb_put(msg, 7);
+   gsm340_gen_scts(smsp, time(NULL));
+
+   /* TP-ST (status) */
+   smsp = msgb_put(msg, 1);
+   /* From GSM 03.40, Section 9.2.3.15, 0x00 means OK. */
+   *smsp = 0x00;
+
+   LOGP(DLSMS, LOGL_INFO, "sending status report for SMS reference %x\n",
+sms->msg_ref);
+
+   return msg->len - old_msg_len;
+}
+
 static int sms_route_mt_sms(struct gsm_subscriber_connection *conn,
struct gsm_sms *gsms)
 {
@@ -992,8 +1035,13 @@
/* obtain a pointer for the rp_ud_len, so we can fill it later */
rp_ud_len = (uint8_t *)msgb_put(msg, 1);
 
-   /* generate the 03.40 SMS-DELIVER TPDU */
-   rc = gsm340_gen_sms_deliver_tpdu(msg, sms);
+   if (sms->report) {
+   /* generate the 03.40 SMS-STATUS-REPORT TPDU */
+   rc = gsm340_gen_sms_status_report_tpdu(msg, sms);
+   } else {
+   /* generate the 03.40 SMS-DELIVER TPDU */
+   rc = gsm340_gen_sms_deliver_tpdu(msg, sms);
+   }
if (rc < 0) {
send_signal(S_SMS_UNKNOWN_ERROR, trans, sms, 0);
sms_free(sms);
diff --git a/openbsc/src/libmsc/smpp_openbsc.c 
b/openbsc/src/libmsc/smpp_openbsc.c
index 42357e2..32ad30e 100644
--- a/openbsc/src/libmsc/smpp_openbsc.c
+++ b/openbsc/src/libmsc/smpp_openbsc.c
@@ -143,6 +143,10 @@
osmo_strlcpy(sms->src.addr, (char *)submit->source_addr,
 sizeof(sms->src.addr));
 
+   /* This is a Delivery Acknowledgment. */
+   if (submit->esm_class == 0x08)
+   sms->report = true;
+
if (submit->esm_class & 0x40)
sms->ud_hdr_ind = 1;
 

-- 
To view, visit https://gerrit.osmocom.org/3437
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ib70e534840308ed315f7add440351e649de3f907
Gerrit-PatchSet: 1
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 


[PATCH] openbsc[master]: libmsc: add support for SMPP delivery receipts

2017-08-08 Thread Pablo Neira Ayuso
0 @@
sms->user_data_len = sms_msg_len;
}
 
+   t = find_tlv(submit->tlv, TLVID_user_message_reference);
+   if (t)
+   sms->msg_ref = ntohs(t->value.val16);
+
*psms = sms;
return ESME_ROK;
 }
@@ -514,6 +518,13 @@
struct gsm_subscriber_connection *conn;
struct gsm_trans *trans;
 
+   /* We got a DELIVER_SM response for this is status report, this was
+* initiated by the SMSC, so no need to send any RP-ACK to the mobile
+* station.
+*/
+   if (cmd->report)
+   goto out;
+
conn = connection_for_subscr(cmd->subscr);
if (!conn) {
LOGP(DSMPP, LOGL_ERROR, "No connection to subscriber 
anymore\n");
@@ -537,6 +548,9 @@
struct gsm_subscriber_connection *conn;
struct gsm_trans *trans;
int gsm411_cause;
+
+   if (cmd->report)
+   goto out;
 
conn = connection_for_subscr(cmd->subscr);
if (!conn) {
@@ -575,6 +589,7 @@
return -1;
 
cmd->sequence_nr= sequence_number;
+   cmd->report = sms->report;
cmd->gsm411_msg_ref = sms->gsm411.msg_ref;
cmd->gsm411_trans_id= sms->gsm411.transaction_id;
cmd->subscr = subscr_get(subscr);
@@ -639,7 +654,12 @@
memcpy(deliver.destination_addr, sms->dst.addr,
sizeof(deliver.destination_addr));
 
-   deliver.esm_class   = 1;/* datagram mode */
+   /* Short message contains a delivery receipt? Sect. 5.2.12. */
+   if (sms->report)
+   deliver.esm_class = 0x04;
+   else
+   deliver.esm_class = 1;  /* datagram mode */
+
if (sms->ud_hdr_ind)
deliver.esm_class |= 0x40;
if (sms->reply_path_req)
@@ -685,6 +705,9 @@
if (esme->acl && esme->acl->osmocom_ext && conn->lchan)
append_osmo_tlvs(&deliver.tlv, conn->lchan);
 
+   append_tlv_u16(&deliver.tlv, TLVID_user_message_reference,
+  sms->msg_ref);
+
ret = smpp_tx_deliver(esme, &deliver);
if (ret < 0)
return ret;
diff --git a/openbsc/src/libmsc/smpp_smsc.h b/openbsc/src/libmsc/smpp_smsc.h
index 468d3b4..854d048 100644
--- a/openbsc/src/libmsc/smpp_smsc.h
+++ b/openbsc/src/libmsc/smpp_smsc.h
@@ -92,6 +92,7 @@
uint32_tsequence_nr;
uint32_tgsm411_msg_ref;
uint8_t gsm411_trans_id;
+   boolreport;
struct osmo_timer_list  response_timer;
 };
 

-- 
To view, visit https://gerrit.osmocom.org/3434
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ic1a9023074bfa938099377980b6aff9b262fab2a
Gerrit-PatchSet: 1
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 


[PATCH] openbsc[master]: libmsc: missing bit shift in status report flag when stored ...

2017-08-08 Thread Pablo Neira Ayuso

Review at  https://gerrit.osmocom.org/3430

libmsc: missing bit shift in status report flag when stored in sms object

So we just store 0 or 1 depending on what the mobile phone requests.

Change-Id: Idb7d5594219c0e458ccb561383a59604bc1a4201
---
M openbsc/src/libmsc/gsm_04_11.c
1 file changed, 1 insertion(+), 1 deletion(-)


  git pull ssh://gerrit.osmocom.org:29418/openbsc refs/changes/30/3430/1

diff --git a/openbsc/src/libmsc/gsm_04_11.c b/openbsc/src/libmsc/gsm_04_11.c
index 7294153..1aed60e 100644
--- a/openbsc/src/libmsc/gsm_04_11.c
+++ b/openbsc/src/libmsc/gsm_04_11.c
@@ -366,7 +366,7 @@
/* invert those fields where 0 means active/present */
sms_mti = *smsp & 0x03;
sms_vpf = (*smsp & 0x18) >> 3;
-   gsms->status_rep_req = (*smsp & 0x20);
+   gsms->status_rep_req = (*smsp & 0x20) >> 5;
gsms->ud_hdr_ind = (*smsp & 0x40);
/*
 * Not evaluating MMS (More Messages to Send) because the

-- 
To view, visit https://gerrit.osmocom.org/3430
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Idb7d5594219c0e458ccb561383a59604bc1a4201
Gerrit-PatchSet: 1
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 


[PATCH] openbsc[master]: utils: smpp_mirror: bounce Delivery Receipts as Delivery Ack...

2017-08-08 Thread Pablo Neira Ayuso

Review at  https://gerrit.osmocom.org/3436

utils: smpp_mirror: bounce Delivery Receipts as Delivery Acknowledgments

Simple patch to test the new status-report support.

Change-Id: I877e228d8e174430f700631edbf9955972da7892
---
M openbsc/src/utils/smpp_mirror.c
1 file changed, 8 insertions(+), 9 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/openbsc refs/changes/36/3436/1

diff --git a/openbsc/src/utils/smpp_mirror.c b/openbsc/src/utils/smpp_mirror.c
index 88545de..0b04b24 100644
--- a/openbsc/src/utils/smpp_mirror.c
+++ b/openbsc/src/utils/smpp_mirror.c
@@ -123,14 +123,6 @@
 
PACK_AND_SEND(esme, &deliver_r);
 
-   /* This is a delivery receipt, temporarily munch it until we teach
-* openbsc what to do with this.
-*/
-   if (deliver.esm_class == 0x04) {
-   LOGP(DSMPP, LOGL_NOTICE, "%s\n", deliver.short_message);
-   return 0;
-   }
-
memset(&submit, 0, sizeof(submit));
submit.command_id = SUBMIT_SM;
submit.command_status = ESME_ROK;
@@ -148,7 +140,14 @@
OSMO_MIN(sizeof(submit.source_addr),
 sizeof(deliver.destination_addr)));
 
-   submit.esm_class = deliver.esm_class;
+   /* Mirror delivery receipts as a delivery acknowledgements. */
+   if (deliver.esm_class == 0x04) {
+   LOGP(DSMPP, LOGL_NOTICE, "%s\n", deliver.short_message);
+   submit.esm_class = 0x08;
+   } else {
+   submit.esm_class = deliver.esm_class;
+   }
+
submit.registered_delivery = deliver.registered_delivery;
submit.protocol_id = deliver.protocol_id;
submit.priority_flag = deliver.priority_flag;

-- 
To view, visit https://gerrit.osmocom.org/3436
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I877e228d8e174430f700631edbf9955972da7892
Gerrit-PatchSet: 1
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 


[PATCH] openbsc[master]: libmsc: support GSM 03.40 status report for nitb

2017-08-08 Thread Pablo Neira Ayuso

Review at  https://gerrit.osmocom.org/3438

libmsc: support GSM 03.40 status report for nitb

This patch adds support for GSM 03.40 in nitb mode.

  MS GSM 03.40  SMSC
   ||
   | SMS-SUBMIT |
   |--->|
   | GSM 04.11 RP-ACK   |
   |<---|
   | SMS-DELIVER|
   |<---|
   | GSM 04.11 RP-ACK   |
   |--->|
   | SMS-STATUS-REPORT  |
   |<---|
   | GSM 04.11 RP-ACK   |
   |--->|
   ||

Change-Id: I5cc7bb4ebadde0940f44d10c3df34707b0615160
---
M openbsc/src/libmsc/gsm_04_11.c
1 file changed, 4 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/openbsc refs/changes/38/3438/1

diff --git a/openbsc/src/libmsc/gsm_04_11.c b/openbsc/src/libmsc/gsm_04_11.c
index a2e002e..13d7d1c 100644
--- a/openbsc/src/libmsc/gsm_04_11.c
+++ b/openbsc/src/libmsc/gsm_04_11.c
@@ -687,6 +687,10 @@
}
LOGP(DLSMS, LOGL_NOTICE, "Status report has been sent\n");
 
+   /* No route via SMPP, send the GSM 03.40 status-report now. */
+   if (gsms->receiver)
+   gsm340_rx_sms_submit(sms_report);
+
sms_free(sms_report);
 }
 

-- 
To view, visit https://gerrit.osmocom.org/3438
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I5cc7bb4ebadde0940f44d10c3df34707b0615160
Gerrit-PatchSet: 1
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 


[PATCH] openbsc[master]: utils: smpp_mirror: temporarily munch SMPP delivery receipts

2017-08-08 Thread Pablo Neira Ayuso

Review at  https://gerrit.osmocom.org/3432

utils: smpp_mirror: temporarily munch SMPP delivery receipts

Just munch and log SMPP delivery receipts by now, don't mirror this, it
is going to break things in openbsc.

Follow up patch removes this and mirrors this SMPP message as a
SUBMIT_SM with esm_class = Delivery Acknowledgement.

Change-Id: I78e93bc4034679e238c8642ccf6a0e844b1d6d8b
---
M openbsc/src/utils/smpp_mirror.c
1 file changed, 8 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/openbsc refs/changes/32/3432/1

diff --git a/openbsc/src/utils/smpp_mirror.c b/openbsc/src/utils/smpp_mirror.c
index ec28f0a..edb40b5 100644
--- a/openbsc/src/utils/smpp_mirror.c
+++ b/openbsc/src/utils/smpp_mirror.c
@@ -112,6 +112,14 @@
 
PACK_AND_SEND(esme, &deliver_r);
 
+   /* This is a delivery receipt, temporarily munch it until we teach
+* openbsc what to do with this.
+*/
+   if (deliver.esm_class == 0x04) {
+   LOGP(DSMPP, LOGL_NOTICE, "%s\n", deliver.short_message);
+   return 0;
+   }
+
memset(&submit, 0, sizeof(submit));
submit.command_id = SUBMIT_SM;
submit.command_status = ESME_ROK;

-- 
To view, visit https://gerrit.osmocom.org/3432
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I78e93bc4034679e238c8642ccf6a0e844b1d6d8b
Gerrit-PatchSet: 1
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 


[PATCH] openbsc[master]: utils: smpp_mirror: reflect message reference TLV

2017-08-08 Thread Pablo Neira Ayuso

Review at  https://gerrit.osmocom.org/3433

utils: smpp_mirror: reflect message reference TLV

Useful to test the delivery receipt support. This TLV contains the
GSM03.40 message reference.

Change-Id: I1b0abaa7e06ffe1bd2242c70813d8b70e9fa954f
---
M openbsc/src/utils/smpp_mirror.c
1 file changed, 23 insertions(+), 1 deletion(-)


  git pull ssh://gerrit.osmocom.org:29418/openbsc refs/changes/33/3433/1

diff --git a/openbsc/src/utils/smpp_mirror.c b/openbsc/src/utils/smpp_mirror.c
index edb40b5..88545de 100644
--- a/openbsc/src/utils/smpp_mirror.c
+++ b/openbsc/src/utils/smpp_mirror.c
@@ -95,12 +95,23 @@
 }
 /* FIXME: merge with smpp_smsc.c */
 
+static struct tlv_t *find_tlv(struct tlv_t *head, uint16_t tag)
+{
+   struct tlv_t *t;
+
+   for (t = head; t != NULL; t = t->next) {
+   if (t->tag == tag)
+   return t;
+   }
+   return NULL;
+}
 
 static int smpp_handle_deliver(struct esme *esme, struct msgb *msg)
 {
struct deliver_sm_t deliver;
struct deliver_sm_resp_t deliver_r;
struct submit_sm_t submit;
+   tlv_t *t;
int rc;
 
memset(&deliver, 0, sizeof(deliver));
@@ -155,7 +166,18 @@
memcpy(submit.short_message, deliver.short_message,
OSMO_MIN(sizeof(submit.short_message),
 sizeof(deliver.short_message)));
-   /* FIXME: TLV? */
+
+   /* FIXME: More TLV? */
+   t = find_tlv(deliver.tlv, TLVID_user_message_reference);
+   if (t) {
+   tlv_t tlv;
+
+   memset(&tlv, 0, sizeof(tlv));
+   tlv.tag = TLVID_user_message_reference;
+   tlv.length = 2;
+   tlv.value.val16 = t->value.val16;
+   build_tlv(&submit.tlv, &tlv);
+   }
 
return PACK_AND_SEND(esme, &submit);
 }

-- 
To view, visit https://gerrit.osmocom.org/3433
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I1b0abaa7e06ffe1bd2242c70813d8b70e9fa954f
Gerrit-PatchSet: 1
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 


[PATCH] openbsc[master]: libmsc: update database to accomodate SMS status-report fields

2017-08-08 Thread Pablo Neira Ayuso
, sms->src.ton, sms->src.npi);
@@ -1489,6 +1643,8 @@
/* FIXME: those should all be get_uchar, but sqlite3 is braindead */
sms->reply_path_req = dbi_result_get_ulonglong(result, 
"reply_path_req");
sms->status_rep_req = dbi_result_get_ulonglong(result, 
"status_rep_req");
+   sms->report = dbi_result_get_ulonglong(result, "report");
+   sms->msg_ref = dbi_result_get_ulonglong(result, "msg_ref");
sms->ud_hdr_ind = dbi_result_get_ulonglong(result, "ud_hdr_ind");
sms->protocol_id = dbi_result_get_ulonglong(result, "protocol_id");
sms->data_coding_scheme = dbi_result_get_ulonglong(result,

-- 
To view, visit https://gerrit.osmocom.org/3435
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I7276d356d805a83ebeec72b02c8563b7135ea0b6
Gerrit-PatchSet: 1
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 


openbsc[master]: libmsc: report status report request flag from SMPP SUBMIT_SM

2017-08-08 Thread Pablo Neira Ayuso

Patch Set 1:

(1 comment)

https://gerrit.osmocom.org/#/c/3429/1//COMMIT_MSG
Commit Message:

Line 9: Restore the sms status report request flag from SUBMIT_SM.
> what's the difference in behavior before and after this patch?
Without this patch, the status report request flag is not accordingly 
propagated from the ESME.

Given all sms are routed via SMPP/ESME, if we don't set this flag when 
submitting it back to the SMSC, the SMSC generates not Delivery Receipt.


-- 
To view, visit https://gerrit.osmocom.org/3429
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Iac05252253f8933a3875b4904599b7a225191a4b
Gerrit-PatchSet: 1
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Holger Freyther 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Keith Whyte 
Gerrit-Reviewer: Neels Hofmeyr 
Gerrit-Reviewer: Pablo Neira Ayuso 
Gerrit-HasComments: Yes


openbsc[master]: libmsc: set registered_delivery field in SMPP 3.4 DELIVER_SM...

2017-08-08 Thread Pablo Neira Ayuso

Patch Set 1:

(1 comment)

https://gerrit.osmocom.org/#/c/3428/1/openbsc/src/libmsc/smpp_openbsc.c
File openbsc/src/libmsc/smpp_openbsc.c:

Line 607: #define SMPP34_DELIVERY_RECEIPT_REQ   0x1
> (we tend to use enums instead)
OK, I didn't know about this policy.

I have a few more cleanup patches here after this, I can include such change in 
the next batch if this is not a major showstopper? This would block the entire 
series...

Let me know, thanks for reviewing!


-- 
To view, visit https://gerrit.osmocom.org/3428
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: I59af60fa89cd10ae973c5e122789e3e03e3728ee
Gerrit-PatchSet: 1
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Holger Freyther 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Keith Whyte 
Gerrit-Reviewer: Neels Hofmeyr 
Gerrit-Reviewer: Pablo Neira Ayuso 
Gerrit-HasComments: Yes


[PATCH] openbsc[master]: libmsc: move gsm340_rx_sms_submit() to sms_route_mt_sms()

2017-08-08 Thread Pablo Neira Ayuso
Hello Jenkins Builder,

I'd like you to reexamine a change.  Please visit

https://gerrit.osmocom.org/3427

to look at the new patch set (#2).

libmsc: move gsm340_rx_sms_submit() to sms_route_mt_sms()

Move the sms message-type-identifier (mti) handling away from the
routing logic. This patch allows us to reuse the sms_route_mt_sms()
function in a follow up patch for sms reports send through SMPP
DELIVER_SM with esm_class = Delivery Receipt whose Change-Id is
Ic1a9023074bfa938099377980b6aff9b262fab2a.

Change-Id: I3f3d30e0762b91e2099243b0be1a4b67cbb5e9c0
---
M openbsc/src/libmsc/gsm_04_11.c
1 file changed, 22 insertions(+), 19 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/openbsc refs/changes/27/3427/2

diff --git a/openbsc/src/libmsc/gsm_04_11.c b/openbsc/src/libmsc/gsm_04_11.c
index d60de08..7294153 100644
--- a/openbsc/src/libmsc/gsm_04_11.c
+++ b/openbsc/src/libmsc/gsm_04_11.c
@@ -278,7 +278,7 @@
 }
 
 static int sms_route_mt_sms(struct gsm_subscriber_connection *conn,
-   struct gsm_sms *gsms, uint8_t sms_mti)
+   struct gsm_sms *gsms)
 {
int rc;
 
@@ -336,23 +336,6 @@
rc = GSM411_RP_CAUSE_MO_NUM_UNASSIGNED;

rate_ctr_inc(&conn->network->msc_ctrs->ctr[MSC_CTR_SMS_NO_RECEIVER]);
 #endif
-   return rc;
-   }
-
-   switch (sms_mti) {
-   case GSM340_SMS_SUBMIT_MS2SC:
-   /* MS is submitting a SMS */
-   rc = gsm340_rx_sms_submit(gsms);
-   break;
-   case GSM340_SMS_COMMAND_MS2SC:
-   case GSM340_SMS_DELIVER_REP_MS2SC:
-   LOGP(DLSMS, LOGL_NOTICE, "Unimplemented MTI 0x%02x\n", sms_mti);
-   rc = GSM411_RP_CAUSE_IE_NOTEXIST;
-   break;
-   default:
-   LOGP(DLSMS, LOGL_NOTICE, "Undefined MTI 0x%02x\n", sms_mti);
-   rc = GSM411_RP_CAUSE_IE_NOTEXIST;
-   break;
}
 
return rc;
@@ -484,7 +467,27 @@
/* FIXME: This looks very wrong */
send_signal(0, NULL, gsms, 0);
 
-   rc = sms_route_mt_sms(conn, gsms, sms_mti);
+   rc = sms_route_mt_sms(conn, gsms);
+
+   /* This SMS got routed through SMPP or no receiver exists. */
+   if (!gsms->receiver)
+   return rc;
+
+   switch (sms_mti) {
+   case GSM340_SMS_SUBMIT_MS2SC:
+   /* MS is submitting a SMS */
+   rc = gsm340_rx_sms_submit(gsms);
+   break;
+   case GSM340_SMS_COMMAND_MS2SC:
+   case GSM340_SMS_DELIVER_REP_MS2SC:
+   LOGP(DLSMS, LOGL_NOTICE, "Unimplemented MTI 0x%02x\n", sms_mti);
+   rc = GSM411_RP_CAUSE_IE_NOTEXIST;
+   break;
+   default:
+   LOGP(DLSMS, LOGL_NOTICE, "Undefined MTI 0x%02x\n", sms_mti);
+   rc = GSM411_RP_CAUSE_IE_NOTEXIST;
+   break;
+   }
 out:
sms_free(gsms);
 

-- 
To view, visit https://gerrit.osmocom.org/3427
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newpatchset
Gerrit-Change-Id: I3f3d30e0762b91e2099243b0be1a4b67cbb5e9c0
Gerrit-PatchSet: 2
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Holger Freyther 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Keith Whyte 
Gerrit-Reviewer: Neels Hofmeyr 


[PATCH] openbsc[master]: libmsc: report status report request flag from SMPP SUBMIT_SM

2017-08-08 Thread Pablo Neira Ayuso
Hello Jenkins Builder,

I'd like you to reexamine a change.  Please visit

https://gerrit.osmocom.org/3429

to look at the new patch set (#2).

libmsc: report status report request flag from SMPP SUBMIT_SM

Restore the sms status report request flag from SUBMIT_SM. Without this
patch, the status report request flag is not accordingly propagated from
the ESME. Given all sms are routed via SMPP/ESME, if we don't set this
flag when submitting it back to the SMSC, the SMSC generates not
Delivery Receipt.

Change-Id: Iac05252253f8933a3875b4904599b7a225191a4b
---
M openbsc/src/libmsc/smpp_openbsc.c
1 file changed, 1 insertion(+), 0 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/openbsc refs/changes/29/3429/2

diff --git a/openbsc/src/libmsc/smpp_openbsc.c 
b/openbsc/src/libmsc/smpp_openbsc.c
index cf78676..a803763 100644
--- a/openbsc/src/libmsc/smpp_openbsc.c
+++ b/openbsc/src/libmsc/smpp_openbsc.c
@@ -129,6 +129,7 @@
sms = sms_alloc();
sms->source = SMS_SOURCE_SMPP;
sms->smpp.sequence_nr = submit->sequence_number;
+   sms->status_rep_req = submit->registered_delivery;
 
/* fill in the destination address */
sms->receiver = dest;

-- 
To view, visit https://gerrit.osmocom.org/3429
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newpatchset
Gerrit-Change-Id: Iac05252253f8933a3875b4904599b7a225191a4b
Gerrit-PatchSet: 2
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Holger Freyther 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Keith Whyte 
Gerrit-Reviewer: Neels Hofmeyr 
Gerrit-Reviewer: Pablo Neira Ayuso 


openbsc[master]: libmsc: support GSM 03.40 status report for nitb

2017-08-08 Thread Pablo Neira Ayuso

Patch Set 1:

(1 comment)

https://gerrit.osmocom.org/#/c/3438/1/openbsc/src/libmsc/gsm_04_11.c
File openbsc/src/libmsc/gsm_04_11.c:

Line 692:   gsm340_rx_sms_submit(sms_report);
> code cosmetics: I see from the old sms_route_mt_sms() that it looks correct
I'm going to try to address all your concerns in one go.

With SMPP support, we're getting this from the SMPP SUBMIT_SM, so there is no 
mti here. In nitb mode, the sms_report object is created from the original sms 
that we get from the mobile station. I don't think the old switch(mti) belong 
sms_route_mt_sms().

I don't see where the name "sms_route_mt_sms()" suggests it has been already 
sent :-), we can probably rename this to simply sms_route() given that no mti 
handling happens anymore.

I agree the log could be moved after the gsms->receiver branch, it would be 
more intuitive, yes. Anyway, this code runs inconditionally, so from the 
logging perspective, this would be printed in the right.

Regarding the gsm->receiver indicator, the SMSC handles both SMPP and nitb 
modes. With SMPP there is no receiver, we really don't know since it's the ESME 
the one routing all SMS. We can probably wrap this in some simple:

static inline bool sms_has_route(struct gsm_sms *sms)
{
   return gsm->receiver;
}

Thanks for your fast review!


-- 
To view, visit https://gerrit.osmocom.org/3438
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: I5cc7bb4ebadde0940f44d10c3df34707b0615160
Gerrit-PatchSet: 1
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Holger Freyther 
Gerrit-Reviewer: Keith Whyte 
Gerrit-Reviewer: Neels Hofmeyr 
Gerrit-Reviewer: Pablo Neira Ayuso 
Gerrit-HasComments: Yes


openbsc[master]: gsm_04_11: get rid of unused parameter in sms_route_mt_sms()

2017-08-08 Thread Pablo Neira Ayuso

Patch Set 1:

This is DEAD code, just consuming more CPU cycles on something we don't need.

We can restore this once you need it ;-)

Thanks!

-- 
To view, visit https://gerrit.osmocom.org/3422
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: I797abce3f91447e8f397c7cf726db7425479fe0e
Gerrit-PatchSet: 1
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Holger Freyther 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Keith Whyte 
Gerrit-Reviewer: Neels Hofmeyr 
Gerrit-Reviewer: Pablo Neira Ayuso 
Gerrit-HasComments: No


[PATCH] openbsc[master]: utils: smpp_mirror: bounce Delivery Receipts as Delivery Ack...

2017-08-08 Thread Pablo Neira Ayuso

utils: smpp_mirror: bounce Delivery Receipts as Delivery Acknowledgments

Simple patch to test the new status-report support.

Change-Id: I877e228d8e174430f700631edbf9955972da7892
---
M openbsc/src/utils/smpp_mirror.c
1 file changed, 8 insertions(+), 9 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/openbsc refs/changes/36/3436/2

diff --git a/openbsc/src/utils/smpp_mirror.c b/openbsc/src/utils/smpp_mirror.c
index 88545de..c570505 100644
--- a/openbsc/src/utils/smpp_mirror.c
+++ b/openbsc/src/utils/smpp_mirror.c
@@ -123,14 +123,6 @@
 
PACK_AND_SEND(esme, &deliver_r);
 
-   /* This is a delivery receipt, temporarily munch it until we teach
-* openbsc what to do with this.
-*/
-   if (deliver.esm_class == 0x04) {
-   LOGP(DSMPP, LOGL_NOTICE, "%s\n", deliver.short_message);
-   return 0;
-   }
-
memset(&submit, 0, sizeof(submit));
submit.command_id = SUBMIT_SM;
submit.command_status = ESME_ROK;
@@ -148,7 +140,14 @@
OSMO_MIN(sizeof(submit.source_addr),
 sizeof(deliver.destination_addr)));
 
-   submit.esm_class = deliver.esm_class;
+   /* Mirror delivery receipts as a delivery acknowledgements. */
+   if (deliver.esm_class == 0x04) {
+   LOGP(DSMPP, LOGL_DEBUG, "%s\n", deliver.short_message);
+   submit.esm_class = 0x08;
+   } else {
+   submit.esm_class = deliver.esm_class;
+   }
+
submit.registered_delivery = deliver.registered_delivery;
submit.protocol_id = deliver.protocol_id;
submit.priority_flag = deliver.priority_flag;

-- 
To view, visit https://gerrit.osmocom.org/3436
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newpatchset
Gerrit-Change-Id: I877e228d8e174430f700631edbf9955972da7892
Gerrit-PatchSet: 2
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Holger Freyther 
Gerrit-Reviewer: Keith Whyte 
Gerrit-Reviewer: Neels Hofmeyr 


openbsc[master]: libmsc: add support for SMPP delivery receipts

2017-08-08 Thread Pablo Neira Ayuso

Patch Set 1:

(5 comments)

https://gerrit.osmocom.org/#/c/3434/1/openbsc/src/libmsc/gsm_04_11.c
File openbsc/src/libmsc/gsm_04_11.c:

Line 637:   if (!sms_report)
> log error, or maybe OSMO_ASSERT(sms_report)?
Is there anything the user can do after this error?

Why bother?

I mean, you only hit this is there is not memory left... So likely there is a 
leak.

OSMO_ASSERT() would stop openBSC from running, is that getting this any better? 
This sounds like calling BUG() in the kernel.

So what do we get from spamming the user with an error that *only* happens if 
we have no memory left?


https://gerrit.osmocom.org/#/c/3434/1/openbsc/src/libmsc/smpp_openbsc.c
File openbsc/src/libmsc/smpp_openbsc.c:

Line 521:   /* We got a DELIVER_SM response for this is status report, this 
was
> (hard to understand, fix typo/punctuation?)
This is a reply to a DELIVER_SM with esm_class = Delivery Receipt, we're just 
having a conversation that was initiated by the SMSC. So we don't need to send 
any RP-ACK to the mobile, as we do with DELIVER_SM for a plan SMS.


Line 659:   deliver.esm_class = 0x04;
> (would be nice to have constants instead of magic numbers ... but not relat
I agree, this applies all over the place, but that would require a bit of work.


Line 709:  sms->msg_ref);
> user message reference was always missing? maybe the fact that it is added 
Yes, message reference was always missing because there was no status-reports 
;-).

We can just add a branch here to skip this if saving bytes on the network are 
really a concern at the cost of slowing down the CPU path.


https://gerrit.osmocom.org/#/c/3434/1/openbsc/src/libmsc/smpp_smsc.h
File openbsc/src/libmsc/smpp_smsc.h:

Line 95:boolreport;
> (can be understood as "you should report" or "this is a report" ... would b
This just annotates that the SMPP command that we send represents a 
deliver-report.


-- 
To view, visit https://gerrit.osmocom.org/3434
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ic1a9023074bfa938099377980b6aff9b262fab2a
Gerrit-PatchSet: 1
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Holger Freyther 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Keith Whyte 
Gerrit-Reviewer: Neels Hofmeyr 
Gerrit-Reviewer: Pablo Neira Ayuso 
Gerrit-HasComments: Yes


openbsc[master]: utils: smpp_mirror: reflect message reference TLV

2017-08-08 Thread Pablo Neira Ayuso

Patch Set 1:

(1 comment)

https://gerrit.osmocom.org/#/c/3433/1/openbsc/src/utils/smpp_mirror.c
File openbsc/src/utils/smpp_mirror.c:

Line 98: static struct tlv_t *find_tlv(struct tlv_t *head, uint16_t tag)
> this is kind of on its own... could it use libosmocore gsm/tlv.h instead? B
I think this belongs to the libsmpp library, since these are SMPP TLVs. There 
is more code in the openBSC tree that is related to SMPP that could be placed 
there too.


-- 
To view, visit https://gerrit.osmocom.org/3433
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: I1b0abaa7e06ffe1bd2242c70813d8b70e9fa954f
Gerrit-PatchSet: 1
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Holger Freyther 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Keith Whyte 
Gerrit-Reviewer: Neels Hofmeyr 
Gerrit-Reviewer: Pablo Neira Ayuso 
Gerrit-HasComments: Yes


[PATCH] openbsc[master]: libmsc: update database to accomodate SMS status-report fields

2017-08-08 Thread Pablo Neira Ayuso
q_udata, q_text,
q_daddr, sms->dst.ton, sms->dst.npi,
q_saddr, sms->src.ton, sms->src.npi);
@@ -1489,6 +1643,8 @@
/* FIXME: those should all be get_uchar, but sqlite3 is braindead */
    sms->reply_path_req = dbi_result_get_ulonglong(result, 
"reply_path_req");
sms->status_rep_req = dbi_result_get_ulonglong(result, 
"status_rep_req");
+   sms->report = dbi_result_get_ulonglong(result, "report");
+   sms->msg_ref = dbi_result_get_ulonglong(result, "msg_ref");
sms->ud_hdr_ind = dbi_result_get_ulonglong(result, "ud_hdr_ind");
sms->protocol_id = dbi_result_get_ulonglong(result, "protocol_id");
sms->data_coding_scheme = dbi_result_get_ulonglong(result,

-- 
To view, visit https://gerrit.osmocom.org/3435
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newpatchset
Gerrit-Change-Id: I7276d356d805a83ebeec72b02c8563b7135ea0b6
Gerrit-PatchSet: 2
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Holger Freyther 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Keith Whyte 
Gerrit-Reviewer: Neels Hofmeyr 


[PATCH] openbsc[master]: libmsc: handle delivery ack via SMPP SUBMIT SM / send GSM 03...

2017-08-08 Thread Pablo Neira Ayuso
tps://gerrit.osmocom.org/settings

Gerrit-MessageType: newpatchset
Gerrit-Change-Id: Ib70e534840308ed315f7add440351e649de3f907
Gerrit-PatchSet: 2
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Holger Freyther 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Keith Whyte 
Gerrit-Reviewer: Neels Hofmeyr 


[PATCH] openbsc[master]: libmsc: support GSM 03.40 status report for nitb

2017-08-08 Thread Pablo Neira Ayuso
Hello Jenkins Builder,

I'd like you to reexamine a change.  Please visit

https://gerrit.osmocom.org/3438

to look at the new patch set (#2).

libmsc: support GSM 03.40 status report for nitb

This patch adds support for GSM 03.40 in nitb mode.

  MS GSM 03.40  SMSC
   ||
   | SMS-SUBMIT |
   |--->|
   | GSM 04.11 RP-ACK   |
   |<---|
   | SMS-DELIVER|
   |<---|
   | GSM 04.11 RP-ACK   |
   |--->|
   | SMS-STATUS-REPORT  |
   |<---|
   | GSM 04.11 RP-ACK   |
   |--->|
   ||

Change-Id: I5cc7bb4ebadde0940f44d10c3df34707b0615160
---
M openbsc/src/libmsc/gsm_04_11.c
1 file changed, 5 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/openbsc refs/changes/38/3438/2

diff --git a/openbsc/src/libmsc/gsm_04_11.c b/openbsc/src/libmsc/gsm_04_11.c
index a2e002e..fa00907 100644
--- a/openbsc/src/libmsc/gsm_04_11.c
+++ b/openbsc/src/libmsc/gsm_04_11.c
@@ -685,6 +685,11 @@
LOGP(DLSMS, LOGL_ERROR,
 "Failed to send status report! err=%d\n", rc);
}
+
+   /* No route via SMPP, send the GSM 03.40 status-report now. */
+   if (gsms->receiver)
+   gsm340_rx_sms_submit(sms_report);
+  
LOGP(DLSMS, LOGL_NOTICE, "Status report has been sent\n");
 
sms_free(sms_report);

-- 
To view, visit https://gerrit.osmocom.org/3438
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newpatchset
Gerrit-Change-Id: I5cc7bb4ebadde0940f44d10c3df34707b0615160
Gerrit-PatchSet: 2
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Holger Freyther 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Keith Whyte 
Gerrit-Reviewer: Neels Hofmeyr 
Gerrit-Reviewer: Pablo Neira Ayuso 


openbsc[master]: gsm_04_11: get rid of unused parameter in sms_route_mt_sms()

2017-08-09 Thread Pablo Neira Ayuso

Patch Set 1:

I need to call gsm340_rx_sms_submit() in the last patch of this series, to add 
support for status-report in nitb mode.

In such scenario, I have no real msgb object, since the struct gsm_sms object 
is allocated from the SMPP SUBMIT_SM esm_class = Delivery Acknoledgement.

If this patch is kept back, I will have to pass a NULL pointer as parameter 
here when calling gsm340_rx_sms_submit() from the new sms_status_report() path.

-- 
To view, visit https://gerrit.osmocom.org/3422
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: I797abce3f91447e8f397c7cf726db7425479fe0e
Gerrit-PatchSet: 1
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Holger Freyther 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Keith Whyte 
Gerrit-Reviewer: Neels Hofmeyr 
Gerrit-Reviewer: Pablo Neira Ayuso 
Gerrit-HasComments: No


[MERGED] openbsc[master]: libmsc: do not leak pending SMPP command object on error path

2017-08-09 Thread Pablo Neira Ayuso
Pablo Neira Ayuso has submitted this change and it was merged.

Change subject: libmsc: do not leak pending SMPP command object on error path
..


libmsc: do not leak pending SMPP command object on error path

Make sure the SMPP command object is released on errors.

Change-Id: I474584425d23fb379a9d71b33e29ac0e24f01e61
---
M openbsc/src/libmsc/smpp_openbsc.c
1 file changed, 6 insertions(+), 5 deletions(-)

Approvals:
  Neels Hofmeyr: Looks good to me, approved
  Harald Welte: Looks good to me, approved
  Jenkins Builder: Verified



diff --git a/openbsc/src/libmsc/smpp_openbsc.c 
b/openbsc/src/libmsc/smpp_openbsc.c
index f7d1441..36ad0a2 100644
--- a/openbsc/src/libmsc/smpp_openbsc.c
+++ b/openbsc/src/libmsc/smpp_openbsc.c
@@ -517,7 +517,7 @@
conn = connection_for_subscr(cmd->subscr);
if (!conn) {
LOGP(DSMPP, LOGL_ERROR, "No connection to subscriber 
anymore\n");
-   return;
+   goto out;
}
 
trans = trans_find_by_id(conn, GSM48_PDISC_SMS,
@@ -525,10 +525,11 @@
if (!trans) {
LOGP(DSMPP, LOGL_ERROR, "GSM transaction %u is gone\n",
 cmd->sms->gsm411.transaction_id);
-   return;
+   goto out;
}
 
gsm411_send_rp_ack(trans, cmd->sms->gsm411.msg_ref);
+out:
smpp_cmd_free(cmd);
 }
 
@@ -541,7 +542,7 @@
conn = connection_for_subscr(cmd->subscr);
if (!conn) {
LOGP(DSMPP, LOGL_ERROR, "No connection to subscriber 
anymore\n");
-   return;
+   goto out;
}
 
trans = trans_find_by_id(conn, GSM48_PDISC_SMS,
@@ -549,14 +550,14 @@
if (!trans) {
LOGP(DSMPP, LOGL_ERROR, "GSM transaction %u is gone\n",
 cmd->sms->gsm411.transaction_id);
-   return;
+   goto out;
}
 
if (smpp_to_gsm411_err(status, &gsm411_cause) < 0)
gsm411_cause = GSM411_RP_CAUSE_MO_NET_OUT_OF_ORDER;
 
gsm411_send_rp_error(trans, cmd->sms->gsm411.msg_ref, gsm411_cause);
-
+out:
smpp_cmd_free(cmd);
 }
 

-- 
To view, visit https://gerrit.osmocom.org/3423
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I474584425d23fb379a9d71b33e29ac0e24f01e61
Gerrit-PatchSet: 1
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Holger Freyther 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Keith Whyte 
Gerrit-Reviewer: Neels Hofmeyr 
Gerrit-Reviewer: Pablo Neira Ayuso 


[MERGED] openbsc[master]: libmsc: remove dead code in sms_route_mt_sms()

2017-08-09 Thread Pablo Neira Ayuso
Pablo Neira Ayuso has submitted this change and it was merged.

Change subject: libmsc: remove dead code in sms_route_mt_sms()
..


libmsc: remove dead code in sms_route_mt_sms()

The following branch:

if (!rc && !gsms->receiver)
rc = GSM411_RP_CAUSE_MO_NUM_UNASSIGNED;

at the end of sms_route_mt_sms() always evaluates false.

Just a bit before, in such function, we have this:

if (!gsms->receiver) {
...
 #ifdef BUILD_SMPP
...
 #else
...
 #endif
return rc;
}

So, if there is no receiver, we just stop running code and return the RP
cause via the rc variable. Same applies to the smpp_first check under
the BUILD_SMPP ifdef (that I have removed in this snippet to keep this
commit message small).

Change-Id: Ic3502b5b169bc7a73a67fd6ff53d8b6c0dc045c8
---
M openbsc/src/libmsc/gsm_04_11.c
1 file changed, 0 insertions(+), 3 deletions(-)

Approvals:
  Neels Hofmeyr: Looks good to me, approved
  Harald Welte: Looks good to me, approved
  Jenkins Builder: Verified



diff --git a/openbsc/src/libmsc/gsm_04_11.c b/openbsc/src/libmsc/gsm_04_11.c
index da4460c..7df5e64 100644
--- a/openbsc/src/libmsc/gsm_04_11.c
+++ b/openbsc/src/libmsc/gsm_04_11.c
@@ -356,9 +356,6 @@
break;
}
 
-   if (!rc && !gsms->receiver)
-   rc = GSM411_RP_CAUSE_MO_NUM_UNASSIGNED;
-
return rc;
 }
 

-- 
To view, visit https://gerrit.osmocom.org/3424
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Ic3502b5b169bc7a73a67fd6ff53d8b6c0dc045c8
Gerrit-PatchSet: 1
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Holger Freyther 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Keith Whyte 
Gerrit-Reviewer: Neels Hofmeyr 
Gerrit-Reviewer: Pablo Neira Ayuso 


[MERGED] openbsc[master]: gsm_04_11: get rid of unused parameter in sms_route_mt_sms()

2017-08-09 Thread Pablo Neira Ayuso
Pablo Neira Ayuso has submitted this change and it was merged.

Change subject: gsm_04_11: get rid of unused parameter in sms_route_mt_sms()
..


gsm_04_11: get rid of unused parameter in sms_route_mt_sms()

This parameter is unused, remove it.

Change-Id: I797abce3f91447e8f397c7cf726db7425479fe0e
---
M openbsc/src/libmsc/gsm_04_11.c
1 file changed, 6 insertions(+), 5 deletions(-)

Approvals:
  Neels Hofmeyr: Looks good to me, but someone else must approve
  Harald Welte: Looks good to me, approved
  Jenkins Builder: Verified



diff --git a/openbsc/src/libmsc/gsm_04_11.c b/openbsc/src/libmsc/gsm_04_11.c
index acf425a..da4460c 100644
--- a/openbsc/src/libmsc/gsm_04_11.c
+++ b/openbsc/src/libmsc/gsm_04_11.c
@@ -187,7 +187,7 @@
return gsm411_smc_send(&trans->sms.smc_inst, msg_type, msg);
 }
 
-static int gsm340_rx_sms_submit(struct msgb *msg, struct gsm_sms *gsms)
+static int gsm340_rx_sms_submit(struct gsm_sms *gsms)
 {
if (db_sms_store(gsms) != 0) {
LOGP(DLSMS, LOGL_ERROR, "Failed to store SMS in Database\n");
@@ -277,8 +277,9 @@
return msg->len - old_msg_len;
 }
 
-int sms_route_mt_sms(struct gsm_subscriber_connection *conn, struct msgb *msg,
-struct gsm_sms *gsms, uint8_t sms_mti, bool *deferred)
+static int sms_route_mt_sms(struct gsm_subscriber_connection *conn,
+   struct gsm_sms *gsms, uint8_t sms_mti,
+   bool *deferred)
 {
int rc;
 
@@ -342,7 +343,7 @@
switch (sms_mti) {
case GSM340_SMS_SUBMIT_MS2SC:
/* MS is submitting a SMS */
-   rc = gsm340_rx_sms_submit(msg, gsms);
+   rc = gsm340_rx_sms_submit(gsms);
break;
case GSM340_SMS_COMMAND_MS2SC:
case GSM340_SMS_DELIVER_REP_MS2SC:
@@ -487,7 +488,7 @@
/* FIXME: This looks very wrong */
send_signal(0, NULL, gsms, 0);
 
-   rc = sms_route_mt_sms(conn, msg, gsms, sms_mti, deferred);
+   rc = sms_route_mt_sms(conn, gsms, sms_mti, deferred);
 out:
if (!deferred)
sms_free(gsms);

-- 
To view, visit https://gerrit.osmocom.org/3422
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I797abce3f91447e8f397c7cf726db7425479fe0e
Gerrit-PatchSet: 1
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Holger Freyther 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Keith Whyte 
Gerrit-Reviewer: Neels Hofmeyr 
Gerrit-Reviewer: Pablo Neira Ayuso 


[MERGED] openbsc[master]: libmsc: remove duplicate lines in deliver_to_esme()

2017-08-09 Thread Pablo Neira Ayuso
Pablo Neira Ayuso has submitted this change and it was merged.

Change subject: libmsc: remove duplicate lines in deliver_to_esme()
..


libmsc: remove duplicate lines in deliver_to_esme()

This code is accidentally doing the same thing twice, remove it.

Change-Id: I68087a850399e22951d2407e4d8a09c671a775c9
---
M openbsc/src/libmsc/smpp_openbsc.c
1 file changed, 0 insertions(+), 2 deletions(-)

Approvals:
  Neels Hofmeyr: Looks good to me, approved
  Harald Welte: Looks good to me, approved
  Jenkins Builder: Verified



diff --git a/openbsc/src/libmsc/smpp_openbsc.c 
b/openbsc/src/libmsc/smpp_openbsc.c
index 36ad0a2..c9379ec 100644
--- a/openbsc/src/libmsc/smpp_openbsc.c
+++ b/openbsc/src/libmsc/smpp_openbsc.c
@@ -676,8 +676,6 @@
} else {
deliver.sm_length = sms->user_data_len;
memcpy(deliver.short_message, sms->user_data, 
deliver.sm_length);
-   deliver.sm_length = sms->user_data_len;
-   memcpy(deliver.short_message, sms->user_data, 
deliver.sm_length);
}
 
if (esme->acl && esme->acl->osmocom_ext && conn->lchan)

-- 
To view, visit https://gerrit.osmocom.org/3425
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I68087a850399e22951d2407e4d8a09c671a775c9
Gerrit-PatchSet: 1
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Holger Freyther 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Keith Whyte 
Gerrit-Reviewer: Neels Hofmeyr 
Gerrit-Reviewer: Pablo Neira Ayuso 


[MERGED] openbsc[master]: libmsc: remove 'deferred' parameter in sms_route_mt_sms()

2017-08-09 Thread Pablo Neira Ayuso
Pablo Neira Ayuso has submitted this change and it was merged.

Change subject: libmsc: remove 'deferred' parameter in sms_route_mt_sms()
..


libmsc: remove 'deferred' parameter in sms_route_mt_sms()

No need to cache the sms object, just cache what we need into the
smpp_cmd structure. This simplifies what that I introduced in
93ffbd0029d1 ("libmsc: send RP-ACK to MS after ESME sends SMPP
DELIVER-SM-RESP").

Change-Id: Iba5f864f9bb963baff95969e306b1b7cff00c1e3
---
M openbsc/src/libmsc/gsm_04_11.c
M openbsc/src/libmsc/smpp_openbsc.c
M openbsc/src/libmsc/smpp_smsc.h
3 files changed, 24 insertions(+), 30 deletions(-)

Approvals:
  Neels Hofmeyr: Looks good to me, but someone else must approve
  Harald Welte: Looks good to me, approved
  Jenkins Builder: Verified



diff --git a/openbsc/src/libmsc/gsm_04_11.c b/openbsc/src/libmsc/gsm_04_11.c
index 7df5e64..d60de08 100644
--- a/openbsc/src/libmsc/gsm_04_11.c
+++ b/openbsc/src/libmsc/gsm_04_11.c
@@ -278,8 +278,7 @@
 }
 
 static int sms_route_mt_sms(struct gsm_subscriber_connection *conn,
-   struct gsm_sms *gsms, uint8_t sms_mti,
-   bool *deferred)
+   struct gsm_sms *gsms, uint8_t sms_mti)
 {
int rc;
 
@@ -293,7 +292,7 @@
 * delivery of the SMS.
 */
if (smpp_first) {
-   rc = smpp_try_deliver(gsms, conn, deferred);
+   rc = smpp_try_deliver(gsms, conn);
if (rc == GSM411_RP_CAUSE_MO_NUM_UNASSIGNED)
/* unknown subscriber, try local */
goto try_local;
@@ -322,7 +321,7 @@
return GSM411_RP_CAUSE_MO_NUM_UNASSIGNED;
}
 
-   rc = smpp_try_deliver(gsms, conn, deferred);
+   rc = smpp_try_deliver(gsms, conn);
if (rc == GSM411_RP_CAUSE_MO_NUM_UNASSIGNED) {

rate_ctr_inc(&conn->network->msc_ctrs->ctr[MSC_CTR_SMS_NO_RECEIVER]);
} else if (rc < 0) {
@@ -363,7 +362,7 @@
 /* process an incoming TPDU (called from RP-DATA)
  * return value > 0: RP CAUSE for ERROR; < 0: silent error; 0 = success */
 static int gsm340_rx_tpdu(struct gsm_trans *trans, struct msgb *msg,
- uint32_t gsm411_msg_ref, bool *deferred)
+ uint32_t gsm411_msg_ref)
 {
struct gsm_subscriber_connection *conn = trans->conn;
uint8_t *smsp = msgb_sms(msg);
@@ -485,10 +484,9 @@
/* FIXME: This looks very wrong */
send_signal(0, NULL, gsms, 0);
 
-   rc = sms_route_mt_sms(conn, gsms, sms_mti, deferred);
+   rc = sms_route_mt_sms(conn, gsms, sms_mti);
 out:
-   if (!deferred)
-   sms_free(gsms);
+   sms_free(gsms);
 
return rc;
 }
@@ -541,7 +539,6 @@
  uint8_t dst_len, uint8_t *dst,
  uint8_t tpdu_len, uint8_t *tpdu)
 {
-   bool deferred = false;
int rc = 0;
 
if (src_len && src)
@@ -558,8 +555,8 @@
 
DEBUGP(DLSMS, "DST(%u,%s)\n", dst_len, osmo_hexdump(dst, dst_len));
 
-   rc = gsm340_rx_tpdu(trans, msg, rph->msg_ref, &deferred);
-   if (rc == 0 && !deferred)
+   rc = gsm340_rx_tpdu(trans, msg, rph->msg_ref);
+   if (rc == 0)
return gsm411_send_rp_ack(trans, rph->msg_ref);
else if (rc > 0)
return gsm411_send_rp_error(trans, rph->msg_ref, rc);
diff --git a/openbsc/src/libmsc/smpp_openbsc.c 
b/openbsc/src/libmsc/smpp_openbsc.c
index c9379ec..6b89df2 100644
--- a/openbsc/src/libmsc/smpp_openbsc.c
+++ b/openbsc/src/libmsc/smpp_openbsc.c
@@ -497,7 +497,6 @@
osmo_timer_del(&cmd->response_timer);
llist_del(&cmd->list);
subscr_put(cmd->subscr);
-   sms_free(cmd->sms);
talloc_free(cmd);
 }
 
@@ -520,15 +519,14 @@
goto out;
}
 
-   trans = trans_find_by_id(conn, GSM48_PDISC_SMS,
-cmd->sms->gsm411.transaction_id);
+   trans = trans_find_by_id(conn, GSM48_PDISC_SMS, cmd->gsm411_trans_id);
if (!trans) {
LOGP(DSMPP, LOGL_ERROR, "GSM transaction %u is gone\n",
-cmd->sms->gsm411.transaction_id);
+cmd->gsm411_trans_id);
goto out;
}
 
-   gsm411_send_rp_ack(trans, cmd->sms->gsm411.msg_ref);
+   gsm411_send_rp_ack(trans, cmd->gsm411_msg_ref);
 out:
smpp_cmd_free(cmd);
 }
@@ -545,18 +543,17 @@
goto out;
}
 
-   trans = trans_find_by_id(conn, GSM48_PDISC_SMS,
-cmd->sms->gsm411.transaction_id);
+   trans = trans_find_by_id(conn, GSM48_PDISC_SMS, cmd->gsm411_trans_id);
if (!trans) {
  

[MERGED] openbsc[master]: libmsc: move gsm340_rx_sms_submit() to sms_route_mt_sms()

2017-08-09 Thread Pablo Neira Ayuso
Pablo Neira Ayuso has submitted this change and it was merged.

Change subject: libmsc: move gsm340_rx_sms_submit() to sms_route_mt_sms()
..


libmsc: move gsm340_rx_sms_submit() to sms_route_mt_sms()

Move the sms message-type-identifier (mti) handling away from the
routing logic. This patch allows us to reuse the sms_route_mt_sms()
function in a follow up patch for sms reports send through SMPP
DELIVER_SM with esm_class = Delivery Receipt whose Change-Id is
Ic1a9023074bfa938099377980b6aff9b262fab2a.

Change-Id: I3f3d30e0762b91e2099243b0be1a4b67cbb5e9c0
---
M openbsc/src/libmsc/gsm_04_11.c
1 file changed, 22 insertions(+), 19 deletions(-)

Approvals:
  Harald Welte: Looks good to me, approved
  Jenkins Builder: Verified



diff --git a/openbsc/src/libmsc/gsm_04_11.c b/openbsc/src/libmsc/gsm_04_11.c
index d60de08..7294153 100644
--- a/openbsc/src/libmsc/gsm_04_11.c
+++ b/openbsc/src/libmsc/gsm_04_11.c
@@ -278,7 +278,7 @@
 }
 
 static int sms_route_mt_sms(struct gsm_subscriber_connection *conn,
-   struct gsm_sms *gsms, uint8_t sms_mti)
+   struct gsm_sms *gsms)
 {
int rc;
 
@@ -336,23 +336,6 @@
rc = GSM411_RP_CAUSE_MO_NUM_UNASSIGNED;

rate_ctr_inc(&conn->network->msc_ctrs->ctr[MSC_CTR_SMS_NO_RECEIVER]);
 #endif
-   return rc;
-   }
-
-   switch (sms_mti) {
-   case GSM340_SMS_SUBMIT_MS2SC:
-   /* MS is submitting a SMS */
-   rc = gsm340_rx_sms_submit(gsms);
-   break;
-   case GSM340_SMS_COMMAND_MS2SC:
-   case GSM340_SMS_DELIVER_REP_MS2SC:
-   LOGP(DLSMS, LOGL_NOTICE, "Unimplemented MTI 0x%02x\n", sms_mti);
-   rc = GSM411_RP_CAUSE_IE_NOTEXIST;
-   break;
-   default:
-   LOGP(DLSMS, LOGL_NOTICE, "Undefined MTI 0x%02x\n", sms_mti);
-   rc = GSM411_RP_CAUSE_IE_NOTEXIST;
-   break;
}
 
return rc;
@@ -484,7 +467,27 @@
/* FIXME: This looks very wrong */
send_signal(0, NULL, gsms, 0);
 
-   rc = sms_route_mt_sms(conn, gsms, sms_mti);
+   rc = sms_route_mt_sms(conn, gsms);
+
+   /* This SMS got routed through SMPP or no receiver exists. */
+   if (!gsms->receiver)
+   return rc;
+
+   switch (sms_mti) {
+   case GSM340_SMS_SUBMIT_MS2SC:
+   /* MS is submitting a SMS */
+   rc = gsm340_rx_sms_submit(gsms);
+   break;
+   case GSM340_SMS_COMMAND_MS2SC:
+   case GSM340_SMS_DELIVER_REP_MS2SC:
+   LOGP(DLSMS, LOGL_NOTICE, "Unimplemented MTI 0x%02x\n", sms_mti);
+   rc = GSM411_RP_CAUSE_IE_NOTEXIST;
+   break;
+   default:
+   LOGP(DLSMS, LOGL_NOTICE, "Undefined MTI 0x%02x\n", sms_mti);
+   rc = GSM411_RP_CAUSE_IE_NOTEXIST;
+   break;
+   }
 out:
sms_free(gsms);
 

-- 
To view, visit https://gerrit.osmocom.org/3427
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I3f3d30e0762b91e2099243b0be1a4b67cbb5e9c0
Gerrit-PatchSet: 2
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Holger Freyther 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Keith Whyte 
Gerrit-Reviewer: Neels Hofmeyr 
Gerrit-Reviewer: Pablo Neira Ayuso 


openbsc[master]: libmsc: set registered_delivery field in SMPP 3.4 DELIVER_SM...

2017-08-09 Thread Pablo Neira Ayuso

Patch Set 1:

If I push the "submit" button here, gerrit (on a black screen) fails with:

Code Review - Error
Cannot merge 6f615241665a8c47500855e2d608cab4467e6443
Missing dependency

-- 
To view, visit https://gerrit.osmocom.org/3428
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: I59af60fa89cd10ae973c5e122789e3e03e3728ee
Gerrit-PatchSet: 1
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Holger Freyther 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Keith Whyte 
Gerrit-Reviewer: Neels Hofmeyr 
Gerrit-Reviewer: Pablo Neira Ayuso 
Gerrit-HasComments: No


[PATCH] openbsc[master]: libmsc: add support for SMPP delivery receipts

2017-08-09 Thread Pablo Neira Ayuso
ms_free(sms);
trans->sms.sms = NULL;
 
diff --git a/openbsc/src/libmsc/smpp_openbsc.c 
b/openbsc/src/libmsc/smpp_openbsc.c
index a803763..c0aa89b 100644
--- a/openbsc/src/libmsc/smpp_openbsc.c
+++ b/openbsc/src/libmsc/smpp_openbsc.c
@@ -200,6 +200,10 @@
sms->user_data_len = sms_msg_len;
}
 
+   t = find_tlv(submit->tlv, TLVID_user_message_reference);
+   if (t)
+   sms->msg_ref = ntohs(t->value.val16);
+
*psms = sms;
return ESME_ROK;
 }
@@ -514,6 +518,9 @@
struct gsm_subscriber_connection *conn;
struct gsm_trans *trans;
 
+   if (cmd->is_report)
+   goto out;
+
conn = connection_for_subscr(cmd->subscr);
if (!conn) {
LOGP(DSMPP, LOGL_ERROR, "No connection to subscriber 
anymore\n");
@@ -537,6 +544,9 @@
struct gsm_subscriber_connection *conn;
struct gsm_trans *trans;
int gsm411_cause;
+
+   if (cmd->is_report)
+   goto out;
 
conn = connection_for_subscr(cmd->subscr);
if (!conn) {
@@ -575,6 +585,7 @@
return -1;
 
cmd->sequence_nr= sequence_number;
+   cmd->is_report  = sms->is_report;
cmd->gsm411_msg_ref = sms->gsm411.msg_ref;
cmd->gsm411_trans_id= sms->gsm411.transaction_id;
cmd->subscr = subscr_get(subscr);
@@ -639,7 +650,12 @@
memcpy(deliver.destination_addr, sms->dst.addr,
sizeof(deliver.destination_addr));
 
-   deliver.esm_class   = 1;/* datagram mode */
+   /* Short message contains a delivery receipt? Sect. 5.2.12. */
+   if (sms->is_report)
+   deliver.esm_class = 0x04;
+   else
+   deliver.esm_class = 1;  /* datagram mode */
+
if (sms->ud_hdr_ind)
deliver.esm_class |= 0x40;
if (sms->reply_path_req)
@@ -685,6 +701,9 @@
if (esme->acl && esme->acl->osmocom_ext && conn->lchan)
append_osmo_tlvs(&deliver.tlv, conn->lchan);
 
+   append_tlv_u16(&deliver.tlv, TLVID_user_message_reference,
+  sms->msg_ref);
+
ret = smpp_tx_deliver(esme, &deliver);
if (ret < 0)
return ret;
diff --git a/openbsc/src/libmsc/smpp_smsc.h b/openbsc/src/libmsc/smpp_smsc.h
index 468d3b4..257383f 100644
--- a/openbsc/src/libmsc/smpp_smsc.h
+++ b/openbsc/src/libmsc/smpp_smsc.h
@@ -92,6 +92,7 @@
uint32_tsequence_nr;
uint32_tgsm411_msg_ref;
uint8_t gsm411_trans_id;
+   boolis_report;
struct osmo_timer_list  response_timer;
 };
 

-- 
To view, visit https://gerrit.osmocom.org/3434
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newpatchset
Gerrit-Change-Id: Ic1a9023074bfa938099377980b6aff9b262fab2a
Gerrit-PatchSet: 2
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Holger Freyther 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Keith Whyte 
Gerrit-Reviewer: Neels Hofmeyr 
Gerrit-Reviewer: Pablo Neira Ayuso 


[PATCH] openbsc[master]: libmsc: handle delivery ack via SMPP SUBMIT SM / send GSM 03...

2017-08-09 Thread Pablo Neira Ayuso
tps://gerrit.osmocom.org/settings

Gerrit-MessageType: newpatchset
Gerrit-Change-Id: Ib70e534840308ed315f7add440351e649de3f907
Gerrit-PatchSet: 3
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Holger Freyther 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Keith Whyte 
Gerrit-Reviewer: Neels Hofmeyr 


[PATCH] openbsc[master]: libmsc: support GSM 03.40 status report for nitb

2017-08-09 Thread Pablo Neira Ayuso
Hello Jenkins Builder,

I'd like you to reexamine a change.  Please visit

https://gerrit.osmocom.org/3438

to look at the new patch set (#3).

libmsc: support GSM 03.40 status report for nitb

This patch adds support for GSM 03.40 in nitb mode.

  MS GSM 03.40  SMSC
   ||
   | SMS-SUBMIT |
   |--->|
   | GSM 04.11 RP-ACK   |
   |<---|
   | SMS-DELIVER|
   |<---|
   | GSM 04.11 RP-ACK   |
   |--->|
   | SMS-STATUS-REPORT  |
   |<---|
   | GSM 04.11 RP-ACK   |
   |--->|
   ||

Change-Id: I5cc7bb4ebadde0940f44d10c3df34707b0615160
---
M openbsc/src/libmsc/gsm_04_11.c
1 file changed, 5 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/openbsc refs/changes/38/3438/3

diff --git a/openbsc/src/libmsc/gsm_04_11.c b/openbsc/src/libmsc/gsm_04_11.c
index 80c3d77..73e0f55 100644
--- a/openbsc/src/libmsc/gsm_04_11.c
+++ b/openbsc/src/libmsc/gsm_04_11.c
@@ -682,6 +682,11 @@
LOGP(DLSMS, LOGL_ERROR,
 "Failed to send status report! err=%d\n", rc);
}
+
+   /* No route via SMPP, send the GSM 03.40 status-report now. */
+   if (gsms->receiver)
+   gsm340_rx_sms_submit(sms_report);
+
LOGP(DLSMS, LOGL_NOTICE, "Status report has been sent\n");
 
sms_free(sms_report);

-- 
To view, visit https://gerrit.osmocom.org/3438
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newpatchset
Gerrit-Change-Id: I5cc7bb4ebadde0940f44d10c3df34707b0615160
Gerrit-PatchSet: 3
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Holger Freyther 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Keith Whyte 
Gerrit-Reviewer: Neels Hofmeyr 
Gerrit-Reviewer: Pablo Neira Ayuso 


[PATCH] openbsc[master]: libmsc: report status report request flag from SMPP SUBMIT_SM

2017-08-09 Thread Pablo Neira Ayuso
Hello Harald Welte, Jenkins Builder,

I'd like you to reexamine a change.  Please visit

https://gerrit.osmocom.org/3429

to look at the new patch set (#3).

libmsc: report status report request flag from SMPP SUBMIT_SM

Restore the sms status report request flag from SUBMIT_SM.

Change-Id: Iac05252253f8933a3875b4904599b7a225191a4b
---
M openbsc/src/libmsc/smpp_openbsc.c
1 file changed, 1 insertion(+), 0 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/openbsc refs/changes/29/3429/3

diff --git a/openbsc/src/libmsc/smpp_openbsc.c 
b/openbsc/src/libmsc/smpp_openbsc.c
index cf78676..a803763 100644
--- a/openbsc/src/libmsc/smpp_openbsc.c
+++ b/openbsc/src/libmsc/smpp_openbsc.c
@@ -129,6 +129,7 @@
sms = sms_alloc();
sms->source = SMS_SOURCE_SMPP;
sms->smpp.sequence_nr = submit->sequence_number;
+   sms->status_rep_req = submit->registered_delivery;
 
/* fill in the destination address */
sms->receiver = dest;

-- 
To view, visit https://gerrit.osmocom.org/3429
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newpatchset
Gerrit-Change-Id: Iac05252253f8933a3875b4904599b7a225191a4b
Gerrit-PatchSet: 3
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Holger Freyther 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Keith Whyte 
Gerrit-Reviewer: Neels Hofmeyr 
Gerrit-Reviewer: Pablo Neira Ayuso 


[PATCH] openbsc[master]: libmsc: update database to accomodate SMS status-report fields

2017-08-09 Thread Pablo Neira Ayuso
 sms->ud_hdr_ind,
q_udata, q_text,
q_daddr, sms->dst.ton, sms->dst.npi,
q_saddr, sms->src.ton, sms->src.npi);
@@ -1489,6 +1643,8 @@
/* FIXME: those should all be get_uchar, but sqlite3 is braindead */
    sms->reply_path_req = dbi_result_get_ulonglong(result, 
"reply_path_req");
sms->status_rep_req = dbi_result_get_ulonglong(result, 
"status_rep_req");
+   sms->is_report = dbi_result_get_ulonglong(result, "is_report");
+   sms->msg_ref = dbi_result_get_ulonglong(result, "msg_ref");
sms->ud_hdr_ind = dbi_result_get_ulonglong(result, "ud_hdr_ind");
sms->protocol_id = dbi_result_get_ulonglong(result, "protocol_id");
sms->data_coding_scheme = dbi_result_get_ulonglong(result,

-- 
To view, visit https://gerrit.osmocom.org/3435
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newpatchset
Gerrit-Change-Id: I7276d356d805a83ebeec72b02c8563b7135ea0b6
Gerrit-PatchSet: 3
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Holger Freyther 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Keith Whyte 
Gerrit-Reviewer: Neels Hofmeyr 


[PATCH] openbsc[master]: utils: smpp_mirror: bounce Delivery Receipts as Delivery Ack...

2017-08-09 Thread Pablo Neira Ayuso
Hello Jenkins Builder,

I'd like you to reexamine a change.  Please visit

https://gerrit.osmocom.org/3436

to look at the new patch set (#3).

utils: smpp_mirror: bounce Delivery Receipts as Delivery Acknowledgments

Simple patch to test the new status-report support code, remove previous
code before Delivery Acknowledgement support was in place. Use
LOGL_DEBUG for logging messages here as suggested by Neels and Harald.

Change-Id: I877e228d8e174430f700631edbf9955972da7892
---
M openbsc/src/utils/smpp_mirror.c
1 file changed, 8 insertions(+), 9 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/openbsc refs/changes/36/3436/3

diff --git a/openbsc/src/utils/smpp_mirror.c b/openbsc/src/utils/smpp_mirror.c
index 88545de..c570505 100644
--- a/openbsc/src/utils/smpp_mirror.c
+++ b/openbsc/src/utils/smpp_mirror.c
@@ -123,14 +123,6 @@
 
PACK_AND_SEND(esme, &deliver_r);
 
-   /* This is a delivery receipt, temporarily munch it until we teach
-* openbsc what to do with this.
-*/
-   if (deliver.esm_class == 0x04) {
-   LOGP(DSMPP, LOGL_NOTICE, "%s\n", deliver.short_message);
-   return 0;
-   }
-
memset(&submit, 0, sizeof(submit));
submit.command_id = SUBMIT_SM;
submit.command_status = ESME_ROK;
@@ -148,7 +140,14 @@
OSMO_MIN(sizeof(submit.source_addr),
 sizeof(deliver.destination_addr)));
 
-   submit.esm_class = deliver.esm_class;
+   /* Mirror delivery receipts as a delivery acknowledgements. */
+   if (deliver.esm_class == 0x04) {
+   LOGP(DSMPP, LOGL_DEBUG, "%s\n", deliver.short_message);
+   submit.esm_class = 0x08;
+   } else {
+   submit.esm_class = deliver.esm_class;
+   }
+
submit.registered_delivery = deliver.registered_delivery;
submit.protocol_id = deliver.protocol_id;
submit.priority_flag = deliver.priority_flag;

-- 
To view, visit https://gerrit.osmocom.org/3436
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newpatchset
Gerrit-Change-Id: I877e228d8e174430f700631edbf9955972da7892
Gerrit-PatchSet: 3
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Holger Freyther 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Keith Whyte 
Gerrit-Reviewer: Neels Hofmeyr 


openbsc[master]: libmsc: report status report request flag from SMPP SUBMIT_SM

2017-08-09 Thread Pablo Neira Ayuso

Patch Set 3: Verified+1

-- 
To view, visit https://gerrit.osmocom.org/3429
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Iac05252253f8933a3875b4904599b7a225191a4b
Gerrit-PatchSet: 3
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Holger Freyther 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Keith Whyte 
Gerrit-Reviewer: Neels Hofmeyr 
Gerrit-Reviewer: Pablo Neira Ayuso 
Gerrit-HasComments: No


[PATCH] openbsc[master]: libmsc: update database to accomodate SMS status-report fields

2017-08-09 Thread Pablo Neira Ayuso
protocol_id, sms->data_coding_scheme,
+   sms->ud_hdr_ind,
q_udata, q_text,
q_daddr, sms->dst.ton, sms->dst.npi,
q_saddr, sms->src.ton, sms->src.npi);
@@ -1489,6 +1643,8 @@
/* FIXME: those should all be get_uchar, but sqlite3 is braindead */
sms->reply_path_req = dbi_result_get_ulonglong(result, 
"reply_path_req");
sms->status_rep_req = dbi_result_get_ulonglong(result, 
"status_rep_req");
+   sms->is_report = dbi_result_get_ulonglong(result, "is_report");
+   sms->msg_ref = dbi_result_get_ulonglong(result, "msg_ref");
sms->ud_hdr_ind = dbi_result_get_ulonglong(result, "ud_hdr_ind");
sms->protocol_id = dbi_result_get_ulonglong(result, "protocol_id");
sms->data_coding_scheme = dbi_result_get_ulonglong(result,
diff --git a/openbsc/tests/db/db_test.err b/openbsc/tests/db/db_test.err
index fa9a54c..27e5703 100644
--- a/openbsc/tests/db/db_test.err
+++ b/openbsc/tests/db/db_test.err
@@ -1,2 +1,3 @@
 Going to migrate from revision 3
+Going to migrate from revision 4
 
\ No newline at end of file

-- 
To view, visit https://gerrit.osmocom.org/3435
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newpatchset
Gerrit-Change-Id: I7276d356d805a83ebeec72b02c8563b7135ea0b6
Gerrit-PatchSet: 4
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Holger Freyther 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Keith Whyte 
Gerrit-Reviewer: Neels Hofmeyr 


[MERGED] openbsc[master]: libmsc: set registered_delivery field in SMPP 3.4 DELIVER_SM...

2017-08-09 Thread Pablo Neira Ayuso
Pablo Neira Ayuso has submitted this change and it was merged.

Change subject: libmsc: set registered_delivery field in SMPP 3.4 DELIVER_SM 
messages
..


libmsc: set registered_delivery field in SMPP 3.4 DELIVER_SM messages

Propagate the status report request field to the SMPP message through
the registered_delivery field, so the ESME knows that the mobile phone
is asking for explicit delivery acknowledgment is required. See SMPP 3.4
specs section 5.2.17.

Change-Id: I59af60fa89cd10ae973c5e122789e3e03e3728ee
---
M openbsc/src/libmsc/smpp_openbsc.c
1 file changed, 8 insertions(+), 1 deletion(-)

Approvals:
  Neels Hofmeyr: Looks good to me, but someone else must approve
  Harald Welte: Looks good to me, approved; Verified



diff --git a/openbsc/src/libmsc/smpp_openbsc.c 
b/openbsc/src/libmsc/smpp_openbsc.c
index 6b89df2..cf78676 100644
--- a/openbsc/src/libmsc/smpp_openbsc.c
+++ b/openbsc/src/libmsc/smpp_openbsc.c
@@ -602,6 +602,10 @@
return NULL;
 }
 
+/* See SMPP 3.4, Section 5.2.17. registered_delivery (1 byte field). */
+#define SMPP34_NO_DELIVERY_RECEIPT 0x0
+#define SMPP34_DELIVERY_RECEIPT_REQ0x1
+
 static int deliver_to_esme(struct osmo_esme *esme, struct gsm_sms *sms,
   struct gsm_subscriber_connection *conn)
 {
@@ -642,7 +646,10 @@
 
deliver.protocol_id = sms->protocol_id;
deliver.priority_flag   = 0;
-   deliver.registered_delivery = 0;
+   if (sms->status_rep_req)
+   deliver.registered_delivery = SMPP34_DELIVERY_RECEIPT_REQ;
+   else
+   deliver.registered_delivery = SMPP34_NO_DELIVERY_RECEIPT;
 
/* Figure out SMPP DCS from TP-DCS */
dcs = sms->data_coding_scheme;

-- 
To view, visit https://gerrit.osmocom.org/3428
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I59af60fa89cd10ae973c5e122789e3e03e3728ee
Gerrit-PatchSet: 2
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Holger Freyther 
Gerrit-Reviewer: Keith Whyte 
Gerrit-Reviewer: Neels Hofmeyr 
Gerrit-Reviewer: Pablo Neira Ayuso 
Gerrit-Reviewer: Pau Espin Pedrol 


[MERGED] openbsc[master]: libmsc: missing bit shift in status report flag when stored ...

2017-08-09 Thread Pablo Neira Ayuso
Pablo Neira Ayuso has submitted this change and it was merged.

Change subject: libmsc: missing bit shift in status report flag when stored in 
sms object
..


libmsc: missing bit shift in status report flag when stored in sms object

So we just store 0 or 1 depending on what the mobile phone requests.

Change-Id: Idb7d5594219c0e458ccb561383a59604bc1a4201
---
M openbsc/src/libmsc/gsm_04_11.c
1 file changed, 1 insertion(+), 1 deletion(-)

Approvals:
  Harald Welte: Looks good to me, approved
  Jenkins Builder: Verified



diff --git a/openbsc/src/libmsc/gsm_04_11.c b/openbsc/src/libmsc/gsm_04_11.c
index 7294153..1aed60e 100644
--- a/openbsc/src/libmsc/gsm_04_11.c
+++ b/openbsc/src/libmsc/gsm_04_11.c
@@ -366,7 +366,7 @@
/* invert those fields where 0 means active/present */
sms_mti = *smsp & 0x03;
sms_vpf = (*smsp & 0x18) >> 3;
-   gsms->status_rep_req = (*smsp & 0x20);
+   gsms->status_rep_req = (*smsp & 0x20) >> 5;
gsms->ud_hdr_ind = (*smsp & 0x40);
/*
 * Not evaluating MMS (More Messages to Send) because the

-- 
To view, visit https://gerrit.osmocom.org/3430
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Idb7d5594219c0e458ccb561383a59604bc1a4201
Gerrit-PatchSet: 2
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Holger Freyther 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Keith Whyte 
Gerrit-Reviewer: Pablo Neira Ayuso 


[MERGED] openbsc[master]: libmsc: report status report request flag from SMPP SUBMIT_SM

2017-08-09 Thread Pablo Neira Ayuso
Pablo Neira Ayuso has submitted this change and it was merged.

Change subject: libmsc: report status report request flag from SMPP SUBMIT_SM
..


libmsc: report status report request flag from SMPP SUBMIT_SM

Restore the sms status report request flag from SUBMIT_SM.

Change-Id: Iac05252253f8933a3875b4904599b7a225191a4b
---
M openbsc/src/libmsc/smpp_openbsc.c
1 file changed, 1 insertion(+), 0 deletions(-)

Approvals:
  Harald Welte: Looks good to me, approved
  Jenkins Builder: Verified
  Pablo Neira Ayuso: Verified



diff --git a/openbsc/src/libmsc/smpp_openbsc.c 
b/openbsc/src/libmsc/smpp_openbsc.c
index cf78676..a803763 100644
--- a/openbsc/src/libmsc/smpp_openbsc.c
+++ b/openbsc/src/libmsc/smpp_openbsc.c
@@ -129,6 +129,7 @@
sms = sms_alloc();
sms->source = SMS_SOURCE_SMPP;
sms->smpp.sequence_nr = submit->sequence_number;
+   sms->status_rep_req = submit->registered_delivery;
 
/* fill in the destination address */
sms->receiver = dest;

-- 
To view, visit https://gerrit.osmocom.org/3429
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Iac05252253f8933a3875b4904599b7a225191a4b
Gerrit-PatchSet: 3
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Holger Freyther 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Keith Whyte 
Gerrit-Reviewer: Neels Hofmeyr 
Gerrit-Reviewer: Pablo Neira Ayuso 


[MERGED] openbsc[master]: utils: smpp_mirror: temporarily munch SMPP delivery receipts

2017-08-09 Thread Pablo Neira Ayuso
Pablo Neira Ayuso has submitted this change and it was merged.

Change subject: utils: smpp_mirror: temporarily munch SMPP delivery receipts
..


utils: smpp_mirror: temporarily munch SMPP delivery receipts

Just munch and log SMPP delivery receipts by now, don't mirror this, it
is going to break things in openbsc.

Follow up patch removes this and mirrors this SMPP message as a
SUBMIT_SM with esm_class = Delivery Acknowledgement.

Change-Id: I78e93bc4034679e238c8642ccf6a0e844b1d6d8b
---
M openbsc/src/utils/smpp_mirror.c
1 file changed, 8 insertions(+), 0 deletions(-)

Approvals:
  Harald Welte: Looks good to me, approved
  Jenkins Builder: Verified



diff --git a/openbsc/src/utils/smpp_mirror.c b/openbsc/src/utils/smpp_mirror.c
index ec28f0a..edb40b5 100644
--- a/openbsc/src/utils/smpp_mirror.c
+++ b/openbsc/src/utils/smpp_mirror.c
@@ -112,6 +112,14 @@
 
PACK_AND_SEND(esme, &deliver_r);
 
+   /* This is a delivery receipt, temporarily munch it until we teach
+* openbsc what to do with this.
+*/
+   if (deliver.esm_class == 0x04) {
+   LOGP(DSMPP, LOGL_NOTICE, "%s\n", deliver.short_message);
+   return 0;
+   }
+
memset(&submit, 0, sizeof(submit));
submit.command_id = SUBMIT_SM;
submit.command_status = ESME_ROK;

-- 
To view, visit https://gerrit.osmocom.org/3432
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I78e93bc4034679e238c8642ccf6a0e844b1d6d8b
Gerrit-PatchSet: 2
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Holger Freyther 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Keith Whyte 
Gerrit-Reviewer: Pablo Neira Ayuso 


[MERGED] openbsc[master]: utils: smpp_mirror: set registered_delivery field in SMPP SU...

2017-08-09 Thread Pablo Neira Ayuso
Pablo Neira Ayuso has submitted this change and it was merged.

Change subject: utils: smpp_mirror: set registered_delivery field in SMPP 
SUBMIT_SM
..


utils: smpp_mirror: set registered_delivery field in SMPP SUBMIT_SM

To test delivery reports using this utility.

Change-Id: I0e477407531fdd4d906e53c9b5a48a79a239966f
---
M openbsc/src/utils/smpp_mirror.c
1 file changed, 1 insertion(+), 0 deletions(-)

Approvals:
  Harald Welte: Looks good to me, approved
  Jenkins Builder: Verified



diff --git a/openbsc/src/utils/smpp_mirror.c b/openbsc/src/utils/smpp_mirror.c
index 95df5f2..ec28f0a 100644
--- a/openbsc/src/utils/smpp_mirror.c
+++ b/openbsc/src/utils/smpp_mirror.c
@@ -130,6 +130,7 @@
 sizeof(deliver.destination_addr)));
 
submit.esm_class = deliver.esm_class;
+   submit.registered_delivery = deliver.registered_delivery;
submit.protocol_id = deliver.protocol_id;
submit.priority_flag = deliver.priority_flag;
memcpy(submit.schedule_delivery_time, deliver.schedule_delivery_time,

-- 
To view, visit https://gerrit.osmocom.org/3431
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I0e477407531fdd4d906e53c9b5a48a79a239966f
Gerrit-PatchSet: 2
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Holger Freyther 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Keith Whyte 
Gerrit-Reviewer: Pablo Neira Ayuso 


[MERGED] openbsc[master]: libmsc: add support for SMPP delivery receipts

2017-08-09 Thread Pablo Neira Ayuso
Pablo Neira Ayuso has submitted this change and it was merged.

Change subject: libmsc: add support for SMPP delivery receipts
..


libmsc: add support for SMPP delivery receipts

If the mobile phone requests a status report via SMS, send a DELIVER_SM
with esm_class = Delivery Receipt to ESME to indicate that the SMS has
been already delivered to its destination.

MSGSM 03.40   SMSC   SMPP 3.4   ESME
 | ||
 |   SMS-DELIVER   ||
 |<||
 | GSM 04.11 RP-ACK||
 |>||
 | |   DELIVER-SM   |
 | |  esm_class = Delivery Receipt  |
 | |--->|
 | | DELIVER-SM-RESP|
 | |<---|
 | ||

This patch implements "Appendix B. Delivery Receipt Format" as specified
in the SMPP 3.4 specs. This string is conveyed in the SMS message as
data, and it is only meaningful to the ESME, for logging purposes. The
"submit date" and "done date" are not yet set, and other fields are just
sent with dummy values, so they are left to be finished as future work.

The new SMPP TLV tag TLVID_user_message_reference is added to the SMPP
messages inconditionally now since this information is required by
delivery-reports to associate the status-report with the original SMS.

Change-Id: Ic1a9023074bfa938099377980b6aff9b262fab2a
---
M openbsc/include/openbsc/gsm_data.h
M openbsc/src/libmsc/gsm_04_11.c
M openbsc/src/libmsc/smpp_openbsc.c
M openbsc/src/libmsc/smpp_smsc.h
4 files changed, 76 insertions(+), 1 deletion(-)

Approvals:
  Harald Welte: Looks good to me, approved
  Jenkins Builder: Verified



diff --git a/openbsc/include/openbsc/gsm_data.h 
b/openbsc/include/openbsc/gsm_data.h
index 37a341c..6829d22 100644
--- a/openbsc/include/openbsc/gsm_data.h
+++ b/openbsc/include/openbsc/gsm_data.h
@@ -456,6 +456,7 @@
} smpp;
 
unsigned long validity_minutes;
+   bool is_report;
uint8_t reply_path_req;
uint8_t status_rep_req;
uint8_t ud_hdr_ind;
diff --git a/openbsc/src/libmsc/gsm_04_11.c b/openbsc/src/libmsc/gsm_04_11.c
index 1aed60e..0edbe0b 100644
--- a/openbsc/src/libmsc/gsm_04_11.c
+++ b/openbsc/src/libmsc/gsm_04_11.c
@@ -593,6 +593,57 @@
rpud_len, rp_ud);
 }
 
+static struct gsm_sms *sms_report_alloc(struct gsm_sms *sms)
+{
+   struct gsm_sms *sms_report;
+   int len;
+
+   sms_report = sms_alloc();
+   OSMO_ASSERT(sms_report);
+
+   sms_report->msg_ref = sms->msg_ref;
+   sms_report->protocol_id = sms->protocol_id;
+   sms_report->data_coding_scheme = GSM338_DCS__8BIT_DATA;
+
+   /* Invert address to send status report back to origin. */
+   sms_report->src = sms->dst;
+   sms_report->dst = sms->src;
+
+   /* As specified by Appendix B. Delivery Receipt Format.
+* TODO: Many fields in this string are just set with dummy values,
+*   revisit this.
+*/
+   len = snprintf((char *)sms_report->user_data,
+  sizeof(sms_report->user_data),
+  "id:%.08llu sub:000 dlvrd:000 submit date:YYMMDDhhmm 
done date:YYMMDDhhmm stat:DELIVRD err:000 text:%.20s",
+  sms->id, sms->user_data);
+   sms_report->user_data_len = len;
+   LOGP(DLSMS, LOGL_NOTICE, "%s\n", sms_report->user_data);
+
+   /* This represents a sms report. */
+   sms_report->is_report = true;
+
+   return sms_report;
+}
+
+static void sms_status_report(struct gsm_sms *gsms,
+ struct gsm_subscriber_connection *conn)
+{
+   struct gsm_sms *sms_report;
+   int rc;
+
+   sms_report = sms_report_alloc(gsms);
+
+   rc = sms_route_mt_sms(conn, sms_report);
+   if (rc < 0) {
+   LOGP(DLSMS, LOGL_ERROR,
+"Failed to send status report! err=%d\n", rc);
+   }
+   LOGP(DLSMS, LOGL_NOTICE, "Status report has been sent\n");
+
+   sms_free(sms_report);
+}
+
 /* Receive a 04.11 RP-ACK message (response to RP-DATA from us) */
 static int gsm411_rx_rp_ack(struct msgb *msg, struct gsm_trans *trans,
struct gsm411_rp_hdr *rph)
@@ -614,6 +665,9 @@
 
send_signal(S_SMS_DELIVERED, trans, sms, 0);
 
+   if (sms->status_rep_req)
+ 

[MERGED] openbsc[master]: utils: smpp_mirror: reflect message reference TLV

2017-08-09 Thread Pablo Neira Ayuso
Pablo Neira Ayuso has submitted this change and it was merged.

Change subject: utils: smpp_mirror: reflect message reference TLV
..


utils: smpp_mirror: reflect message reference TLV

Useful to test the delivery receipt support. This TLV contains the
GSM03.40 message reference.

Change-Id: I1b0abaa7e06ffe1bd2242c70813d8b70e9fa954f
---
M openbsc/src/utils/smpp_mirror.c
1 file changed, 23 insertions(+), 1 deletion(-)

Approvals:
  Neels Hofmeyr: Looks good to me, but someone else must approve
  Harald Welte: Looks good to me, approved
  Jenkins Builder: Verified



diff --git a/openbsc/src/utils/smpp_mirror.c b/openbsc/src/utils/smpp_mirror.c
index edb40b5..88545de 100644
--- a/openbsc/src/utils/smpp_mirror.c
+++ b/openbsc/src/utils/smpp_mirror.c
@@ -95,12 +95,23 @@
 }
 /* FIXME: merge with smpp_smsc.c */
 
+static struct tlv_t *find_tlv(struct tlv_t *head, uint16_t tag)
+{
+   struct tlv_t *t;
+
+   for (t = head; t != NULL; t = t->next) {
+   if (t->tag == tag)
+   return t;
+   }
+   return NULL;
+}
 
 static int smpp_handle_deliver(struct esme *esme, struct msgb *msg)
 {
struct deliver_sm_t deliver;
struct deliver_sm_resp_t deliver_r;
struct submit_sm_t submit;
+   tlv_t *t;
int rc;
 
memset(&deliver, 0, sizeof(deliver));
@@ -155,7 +166,18 @@
memcpy(submit.short_message, deliver.short_message,
OSMO_MIN(sizeof(submit.short_message),
 sizeof(deliver.short_message)));
-   /* FIXME: TLV? */
+
+   /* FIXME: More TLV? */
+   t = find_tlv(deliver.tlv, TLVID_user_message_reference);
+   if (t) {
+   tlv_t tlv;
+
+   memset(&tlv, 0, sizeof(tlv));
+   tlv.tag = TLVID_user_message_reference;
+   tlv.length = 2;
+   tlv.value.val16 = t->value.val16;
+   build_tlv(&submit.tlv, &tlv);
+   }
 
return PACK_AND_SEND(esme, &submit);
 }

-- 
To view, visit https://gerrit.osmocom.org/3433
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I1b0abaa7e06ffe1bd2242c70813d8b70e9fa954f
Gerrit-PatchSet: 2
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Holger Freyther 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Keith Whyte 
Gerrit-Reviewer: Neels Hofmeyr 
Gerrit-Reviewer: Pablo Neira Ayuso 


openbsc[master]: libmsc: update database to accomodate SMS status-report fields

2017-08-09 Thread Pablo Neira Ayuso

Patch Set 4: Verified+1

(1 comment)

https://gerrit.osmocom.org/#/c/3435/1/openbsc/src/libmsc/db.c
File openbsc/src/libmsc/db.c:

Line 375: /* Just like v3, but there is a new message reference field for 
status reports,
> "just like v5"?
Right, just like v3 actually.


-- 
To view, visit https://gerrit.osmocom.org/3435
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: I7276d356d805a83ebeec72b02c8563b7135ea0b6
Gerrit-PatchSet: 4
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Holger Freyther 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Keith Whyte 
Gerrit-Reviewer: Neels Hofmeyr 
Gerrit-Reviewer: Pablo Neira Ayuso 
Gerrit-HasComments: Yes


[MERGED] openbsc[master]: libmsc: update database to accomodate SMS status-report fields

2017-08-09 Thread Pablo Neira Ayuso
Pablo Neira Ayuso has submitted this change and it was merged.

Change subject: libmsc: update database to accomodate SMS status-report fields
..


libmsc: update database to accomodate SMS status-report fields

SMPP DELIVER_SM messages with esm_class = Delivery Receipt need to send
this message reference (that the mobile phone allocates) to the ESME.
Thus, the ESME propagates it via SUBMIT_SM with esm_class = Delivery
Acknoledgment so that the SMSC sends the GSM 03.40 status-report to the
origin including this. Given this field is useful for status-reports, we
need to store it in the HLR database.

Moreover, we need a new field that specifies if the entry represents a
SMS status-report, to do the right handling from the gsm411_send_sms() -
such new handling comes in a follow up patch entitled "libmsc: handle
delivery ack via SMPP SUBMIT SM / send GSM 03.40 status report".

This patch includes the migration routines to the new database schema
revision 5, it's quite a bit of dbi boilerplate code - copied-pasted and
adapted.

Change-Id: I7276d356d805a83ebeec72b02c8563b7135ea0b6
---
M openbsc/src/libmsc/db.c
M openbsc/tests/db/db_test.err
2 files changed, 163 insertions(+), 6 deletions(-)

Approvals:
  Harald Welte: Looks good to me, approved
  Pablo Neira Ayuso: Verified



diff --git a/openbsc/src/libmsc/db.c b/openbsc/src/libmsc/db.c
index 5fe2a3c..9945dca 100644
--- a/openbsc/src/libmsc/db.c
+++ b/openbsc/src/libmsc/db.c
@@ -50,7 +50,7 @@
 static char *db_dirname = NULL;
 static dbi_conn conn;
 
-#define SCHEMA_REVISION "4"
+#define SCHEMA_REVISION "5"
 
 enum {
SCHEMA_META,
@@ -124,6 +124,8 @@
"valid_until TIMESTAMP, "
"reply_path_req INTEGER NOT NULL, "
"status_rep_req INTEGER NOT NULL, "
+   "is_report INTEGER NOT NULL, "
+   "msg_ref INTEGER NOT NULL, "
"protocol_id INTEGER NOT NULL, "
"data_coding_scheme INTEGER NOT NULL, "
"ud_hdr_ind INTEGER NOT NULL, "
@@ -370,6 +372,152 @@
return -EINVAL;
 }
 
+/* Just like v3, but there is a new message reference field for status reports,
+ * that is set to zero for existing entries since there is no way we can infer
+ * this.
+ */
+static struct gsm_sms *sms_from_result_v4(dbi_result result)
+{
+   struct gsm_sms *sms = sms_alloc();
+   const unsigned char *user_data;
+   const char *text, *addr;
+
+   if (!sms)
+   return NULL;
+
+   sms->id = dbi_result_get_ulonglong(result, "id");
+
+   sms->reply_path_req = dbi_result_get_ulonglong(result, 
"reply_path_req");
+   sms->status_rep_req = dbi_result_get_ulonglong(result, 
"status_rep_req");
+   sms->ud_hdr_ind = dbi_result_get_ulonglong(result, "ud_hdr_ind");
+   sms->protocol_id = dbi_result_get_ulonglong(result, "protocol_id");
+   sms->data_coding_scheme = dbi_result_get_ulonglong(result,
+ "data_coding_scheme");
+
+   addr = dbi_result_get_string(result, "src_addr");
+   osmo_strlcpy(sms->src.addr, addr, sizeof(sms->src.addr));
+   sms->src.ton = dbi_result_get_ulonglong(result, "src_ton");
+   sms->src.npi = dbi_result_get_ulonglong(result, "src_npi");
+
+   addr = dbi_result_get_string(result, "dest_addr");
+   osmo_strlcpy(sms->dst.addr, addr, sizeof(sms->dst.addr));
+   sms->dst.ton = dbi_result_get_ulonglong(result, "dest_ton");
+   sms->dst.npi = dbi_result_get_ulonglong(result, "dest_npi");
+
+   sms->user_data_len = dbi_result_get_field_length(result, "user_data");
+   user_data = dbi_result_get_binary(result, "user_data");
+   if (sms->user_data_len > sizeof(sms->user_data))
+   sms->user_data_len = (uint8_t) sizeof(sms->user_data);
+   memcpy(sms->user_data, user_data, sms->user_data_len);
+
+   text = dbi_result_get_string(result, "text");
+   if (text)
+   osmo_strlcpy(sms->text, text, sizeof(sms->text));
+   return sms;
+}
+
+static int update_db_revision_4(void)
+{
+   dbi_result result;
+   struct gsm_sms *sms;
+
+   LOGP(DDB, LOGL_NOTICE, "Going to migrate from revision 4\n");
+
+   result = dbi_conn_query(conn, "BEGIN EXCLUSIVE TRANSACTION");
+   if (!result) {
+   LOGP(DDB, LOGL_ERROR,
+   "Failed to begin transaction (upgrade from rev 4)\n");
+   return -EINVAL;
+   }
+   dbi_result_free(result);
+
+   /* Rename old SMS table to be able create a new one */
+   res

openbsc[master]: utils: smpp_mirror: bounce Delivery Receipts as Delivery Ack...

2017-08-09 Thread Pablo Neira Ayuso

Patch Set 4: Verified+1

-- 
To view, visit https://gerrit.osmocom.org/3436
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: I877e228d8e174430f700631edbf9955972da7892
Gerrit-PatchSet: 4
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Holger Freyther 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Keith Whyte 
Gerrit-Reviewer: Neels Hofmeyr 
Gerrit-Reviewer: Pablo Neira Ayuso 
Gerrit-HasComments: No


[MERGED] openbsc[master]: utils: smpp_mirror: bounce Delivery Receipts as Delivery Ack...

2017-08-09 Thread Pablo Neira Ayuso
Pablo Neira Ayuso has submitted this change and it was merged.

Change subject: utils: smpp_mirror: bounce Delivery Receipts as Delivery 
Acknowledgments
..


utils: smpp_mirror: bounce Delivery Receipts as Delivery Acknowledgments

Simple patch to test the new status-report support code, remove previous
code before Delivery Acknowledgement support was in place. Use
LOGL_DEBUG for logging messages here as suggested by Neels and Harald.

Change-Id: I877e228d8e174430f700631edbf9955972da7892
---
M openbsc/src/utils/smpp_mirror.c
1 file changed, 8 insertions(+), 9 deletions(-)

Approvals:
  Harald Welte: Looks good to me, approved
  Pablo Neira Ayuso: Verified



diff --git a/openbsc/src/utils/smpp_mirror.c b/openbsc/src/utils/smpp_mirror.c
index 88545de..c570505 100644
--- a/openbsc/src/utils/smpp_mirror.c
+++ b/openbsc/src/utils/smpp_mirror.c
@@ -123,14 +123,6 @@
 
PACK_AND_SEND(esme, &deliver_r);
 
-   /* This is a delivery receipt, temporarily munch it until we teach
-* openbsc what to do with this.
-*/
-   if (deliver.esm_class == 0x04) {
-   LOGP(DSMPP, LOGL_NOTICE, "%s\n", deliver.short_message);
-   return 0;
-   }
-
memset(&submit, 0, sizeof(submit));
submit.command_id = SUBMIT_SM;
submit.command_status = ESME_ROK;
@@ -148,7 +140,14 @@
OSMO_MIN(sizeof(submit.source_addr),
 sizeof(deliver.destination_addr)));
 
-   submit.esm_class = deliver.esm_class;
+   /* Mirror delivery receipts as a delivery acknowledgements. */
+   if (deliver.esm_class == 0x04) {
+   LOGP(DSMPP, LOGL_DEBUG, "%s\n", deliver.short_message);
+   submit.esm_class = 0x08;
+   } else {
+   submit.esm_class = deliver.esm_class;
+   }
+
submit.registered_delivery = deliver.registered_delivery;
submit.protocol_id = deliver.protocol_id;
submit.priority_flag = deliver.priority_flag;

-- 
To view, visit https://gerrit.osmocom.org/3436
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I877e228d8e174430f700631edbf9955972da7892
Gerrit-PatchSet: 4
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Holger Freyther 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Keith Whyte 
Gerrit-Reviewer: Neels Hofmeyr 
Gerrit-Reviewer: Pablo Neira Ayuso 


openbsc[master]: libmsc: handle delivery ack via SMPP SUBMIT SM / send GSM 03...

2017-08-09 Thread Pablo Neira Ayuso

Patch Set 4: Verified+1

-- 
To view, visit https://gerrit.osmocom.org/3437
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ib70e534840308ed315f7add440351e649de3f907
Gerrit-PatchSet: 4
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Holger Freyther 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Keith Whyte 
Gerrit-Reviewer: Neels Hofmeyr 
Gerrit-Reviewer: Pablo Neira Ayuso 
Gerrit-HasComments: No


[MERGED] openbsc[master]: libmsc: handle delivery ack via SMPP SUBMIT SM / send GSM 03...

2017-08-09 Thread Pablo Neira Ayuso
Pablo Neira Ayuso has submitted this change and it was merged.

Change subject: libmsc: handle delivery ack via SMPP SUBMIT SM / send GSM 03.40 
status report
..


libmsc: handle delivery ack via SMPP SUBMIT SM / send GSM 03.40 status report

This patch adds gsm340_sms_send_status_report_tpdu() to build a
status-report. Moreover, set sms->report field if we see a SMPP
SUBMIT_SM with Delivery Acknowledgment esm_class, so this identifies
that this is a delivery report.

MSGSM 03.40   SMSC   SMPP 3.4   ESME
 | ||
 | |   SUBMIT-SM|
 | |esm_class = Delivery Ack|
 | |<---|
 | | SUBMIT-SM-RESP |
 | |--->|
 | ||
 | SMS-STATUS-REPORT   ||
 |<||
 | GSM 04.11 RP-ACK||
 |>||
 | ||

There is a FIXME message in this patch, that I just copied from
gsm340_gen_sms_deliver_tpdu() since TP-MMS is not supported by OpenBSC.

Change-Id: Ib70e534840308ed315f7add440351e649de3f907
---
M openbsc/src/libmsc/gsm_04_11.c
M openbsc/src/libmsc/smpp_openbsc.c
2 files changed, 54 insertions(+), 2 deletions(-)

Approvals:
  Harald Welte: Looks good to me, approved
  Pablo Neira Ayuso: Verified



diff --git a/openbsc/src/libmsc/gsm_04_11.c b/openbsc/src/libmsc/gsm_04_11.c
index 0edbe0b..80c3d77 100644
--- a/openbsc/src/libmsc/gsm_04_11.c
+++ b/openbsc/src/libmsc/gsm_04_11.c
@@ -277,6 +277,49 @@
return msg->len - old_msg_len;
 }
 
+/* As defined by GSM 03.40, Section 9.2.2.3. */
+static int gsm340_gen_sms_status_report_tpdu(struct msgb *msg,
+struct gsm_sms *sms)
+{
+   unsigned int old_msg_len = msg->len;
+   uint8_t oa_len = 0;
+   uint8_t oa[12]; /* max len per 03.40 */
+   uint8_t *smsp;
+
+   /* generate first octet with masked bits */
+   smsp = msgb_put(msg, 1);
+   /* TP-MTI (message type indicator) */
+   *smsp = GSM340_SMS_STATUS_REP_SC2MS;
+   /* TP-MMS (more messages to send) */
+   if (0 /* FIXME */)
+   *smsp |= 0x04;
+   /* TP-MR (message reference) */
+   smsp = msgb_put(msg, 1);
+   *smsp = sms->msg_ref;
+   /* generate recipient address */
+   oa_len = gsm340_gen_oa_sub(oa, sizeof(oa), &sms->dst);
+   smsp = msgb_put(msg, oa_len);
+   memcpy(smsp, oa, oa_len);
+
+   /* generate TP-SCTS (Service centre timestamp) */
+   smsp = msgb_put(msg, 7);
+   gsm340_gen_scts(smsp, time(NULL));
+
+   /* generate TP-DT (Discharge time, in TP-SCTS format). */
+   smsp = msgb_put(msg, 7);
+   gsm340_gen_scts(smsp, time(NULL));
+
+   /* TP-ST (status) */
+   smsp = msgb_put(msg, 1);
+   /* From GSM 03.40, Section 9.2.3.15, 0x00 means OK. */
+   *smsp = 0x00;
+
+   LOGP(DLSMS, LOGL_INFO, "sending status report for SMS reference %x\n",
+sms->msg_ref);
+
+   return msg->len - old_msg_len;
+}
+
 static int sms_route_mt_sms(struct gsm_subscriber_connection *conn,
struct gsm_sms *gsms)
 {
@@ -989,8 +1032,13 @@
/* obtain a pointer for the rp_ud_len, so we can fill it later */
rp_ud_len = (uint8_t *)msgb_put(msg, 1);
 
-   /* generate the 03.40 SMS-DELIVER TPDU */
-   rc = gsm340_gen_sms_deliver_tpdu(msg, sms);
+   if (sms->is_report) {
+   /* generate the 03.40 SMS-STATUS-REPORT TPDU */
+   rc = gsm340_gen_sms_status_report_tpdu(msg, sms);
+   } else {
+   /* generate the 03.40 SMS-DELIVER TPDU */
+   rc = gsm340_gen_sms_deliver_tpdu(msg, sms);
+   }
if (rc < 0) {
send_signal(S_SMS_UNKNOWN_ERROR, trans, sms, 0);
sms_free(sms);
diff --git a/openbsc/src/libmsc/smpp_openbsc.c 
b/openbsc/src/libmsc/smpp_openbsc.c
index c0aa89b..85de040 100644
--- a/openbsc/src/libmsc/smpp_openbsc.c
+++ b/openbsc/src/libmsc/smpp_openbsc.c
@@ -143,6 +143,10 @@
osmo_strlcpy(sms->src.addr, (char *)submit->source_addr,
 sizeof(sms->src.addr));
 
+   /* This is a Delivery Acknowledgment. */
+   if (submit->esm_class == 0x08)
+   sms->is_report = true;
+
if (submit->esm_class & 0x40)
sms->ud_hdr_ind = 1;
 


[MERGED] openbsc[master]: libmsc: support GSM 03.40 status report for nitb

2017-08-09 Thread Pablo Neira Ayuso
Pablo Neira Ayuso has submitted this change and it was merged.

Change subject: libmsc: support GSM 03.40 status report for nitb
..


libmsc: support GSM 03.40 status report for nitb

This patch adds support for GSM 03.40 in nitb mode.

  MS GSM 03.40  SMSC
   ||
   | SMS-SUBMIT |
   |--->|
   | GSM 04.11 RP-ACK   |
   |<---|
   | SMS-DELIVER|
   |<---|
   | GSM 04.11 RP-ACK   |
   |--->|
   | SMS-STATUS-REPORT  |
   |<---|
   | GSM 04.11 RP-ACK   |
   |--->|
   ||

Change-Id: I5cc7bb4ebadde0940f44d10c3df34707b0615160
---
M openbsc/src/libmsc/gsm_04_11.c
1 file changed, 5 insertions(+), 0 deletions(-)

Approvals:
  Keith Whyte: Verified
  Harald Welte: Looks good to me, approved



diff --git a/openbsc/src/libmsc/gsm_04_11.c b/openbsc/src/libmsc/gsm_04_11.c
index 80c3d77..73e0f55 100644
--- a/openbsc/src/libmsc/gsm_04_11.c
+++ b/openbsc/src/libmsc/gsm_04_11.c
@@ -682,6 +682,11 @@
LOGP(DLSMS, LOGL_ERROR,
 "Failed to send status report! err=%d\n", rc);
}
+
+   /* No route via SMPP, send the GSM 03.40 status-report now. */
+   if (gsms->receiver)
+   gsm340_rx_sms_submit(sms_report);
+
LOGP(DLSMS, LOGL_NOTICE, "Status report has been sent\n");
 
sms_free(sms_report);

-- 
To view, visit https://gerrit.osmocom.org/3438
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I5cc7bb4ebadde0940f44d10c3df34707b0615160
Gerrit-PatchSet: 4
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Holger Freyther 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Keith Whyte 
Gerrit-Reviewer: Neels Hofmeyr 
Gerrit-Reviewer: Pablo Neira Ayuso 


[PATCH] openbsc[master]: libmsc: gsm340_gen_oa_sub() may return negative value

2017-08-10 Thread Pablo Neira Ayuso

Review at  https://gerrit.osmocom.org/3461

libmsc: gsm340_gen_oa_sub() may return negative value

gsm340_gen_oa() returns a negative value if the output buffer that the
caller passes is too small, so we have to check the return value of this
function.

Fixes: CID 174178
Fixes: CID 174179
Change-Id: I47215d7d89771730a7f84efa8aeeb187a0911fdb
---
M openbsc/src/libmsc/gsm_04_11.c
1 file changed, 9 insertions(+), 2 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/openbsc refs/changes/61/3461/1

diff --git a/openbsc/src/libmsc/gsm_04_11.c b/openbsc/src/libmsc/gsm_04_11.c
index 73e0f55..8b4ffce 100644
--- a/openbsc/src/libmsc/gsm_04_11.c
+++ b/openbsc/src/libmsc/gsm_04_11.c
@@ -213,9 +213,9 @@
 {
uint8_t *smsp;
uint8_t oa[12]; /* max len per 03.40 */
-   uint8_t oa_len = 0;
uint8_t octet_len;
unsigned int old_msg_len = msg->len;
+   int oa_len;
 
/* generate first octet with masked bits */
smsp = msgb_put(msg, 1);
@@ -233,6 +233,9 @@
 
/* generate originator address */
oa_len = gsm340_gen_oa_sub(oa, sizeof(oa), &sms->src);
+   if (oa_len < 0)
+   return -ENOSPC;
+
smsp = msgb_put(msg, oa_len);
memcpy(smsp, oa, oa_len);
 
@@ -282,9 +285,9 @@
 struct gsm_sms *sms)
 {
unsigned int old_msg_len = msg->len;
-   uint8_t oa_len = 0;
uint8_t oa[12]; /* max len per 03.40 */
uint8_t *smsp;
+   int oa_len;
 
/* generate first octet with masked bits */
smsp = msgb_put(msg, 1);
@@ -296,8 +299,12 @@
/* TP-MR (message reference) */
smsp = msgb_put(msg, 1);
*smsp = sms->msg_ref;
+
/* generate recipient address */
oa_len = gsm340_gen_oa_sub(oa, sizeof(oa), &sms->dst);
+   if (oa_len < 0)
+   return -ENOSPC;
+
smsp = msgb_put(msg, oa_len);
memcpy(smsp, oa, oa_len);
 

-- 
To view, visit https://gerrit.osmocom.org/3461
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I47215d7d89771730a7f84efa8aeeb187a0911fdb
Gerrit-PatchSet: 1
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 


[PATCH] libsmpp34[master]: add smpp34_tlv_for_each() helper

2017-08-11 Thread Pablo Neira Ayuso

Review at  https://gerrit.osmocom.org/3469

add smpp34_tlv_for_each() helper

So we don't need to remember this is an opencoded list of TLVs.

Change-Id: I446929feed049d0411e1629ca263e2bc41f714cc
---
M src/smpp34_structs.h
1 file changed, 3 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/libsmpp34 refs/changes/69/3469/1

diff --git a/src/smpp34_structs.h b/src/smpp34_structs.h
index b9effb2..025109d 100644
--- a/src/smpp34_structs.h
+++ b/src/smpp34_structs.h
@@ -86,6 +86,9 @@
 OCTET16( inst, octet, size); \
 } par;
 
+#define smpp34_tlv_for_each(pos, head) \
+   for (pos = (head); pos != NULL; pos = pos->next)
+
 #define DAD( inst, par, do_dest_address ) dad_t *par;
 #define UU2( inst, par, size ) union { \
 struct { \

-- 
To view, visit https://gerrit.osmocom.org/3469
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I446929feed049d0411e1629ca263e2bc41f714cc
Gerrit-PatchSet: 1
Gerrit-Project: libsmpp34
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 


openbsc[master]: libmsc: update database to accomodate SMS status-report fields

2017-08-11 Thread Pablo Neira Ayuso

Patch Set 4:

When would it be good time to remove code for backward compatibility?

Holger added v3 by 2014-03-07, it's a bit more than 3 years now.

-- 
To view, visit https://gerrit.osmocom.org/3435
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: I7276d356d805a83ebeec72b02c8563b7135ea0b6
Gerrit-PatchSet: 4
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Holger Freyther 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Keith Whyte 
Gerrit-Reviewer: Neels Hofmeyr 
Gerrit-Reviewer: Pablo Neira Ayuso 
Gerrit-HasComments: No


[PATCH] openbsc[master]: libmsc: use smpp34_tlv_for_each() to avoid suboptimal TLV ha...

2017-08-11 Thread Pablo Neira Ayuso
s;
return ESME_ROK;

-- 
To view, visit https://gerrit.osmocom.org/3470
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I53a65164a6cc4abc6bf57d9a8dc275cf21c90222
Gerrit-PatchSet: 1
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 


[PATCH] openbsc[master]: libmsc: use smpp34_tlv_for_each() to avoid suboptimal TLV ha...

2017-08-11 Thread Pablo Neira Ayuso
org/3470
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newpatchset
Gerrit-Change-Id: I53a65164a6cc4abc6bf57d9a8dc275cf21c90222
Gerrit-PatchSet: 2
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 
Gerrit-Reviewer: Jenkins Builder


openbsc[master]: libmsc: update database to accomodate SMS status-report fields

2017-08-11 Thread Pablo Neira Ayuso

Patch Set 4:

Agreed.

So let it sink by when the NITB code becomes officially dead.

Thanks!

-- 
To view, visit https://gerrit.osmocom.org/3435
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: I7276d356d805a83ebeec72b02c8563b7135ea0b6
Gerrit-PatchSet: 4
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Holger Freyther 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Keith Whyte 
Gerrit-Reviewer: Neels Hofmeyr 
Gerrit-Reviewer: Pablo Neira Ayuso 
Gerrit-HasComments: No


[PATCH] libsmpp34[master]: add esm_class definitions

2017-08-11 Thread Pablo Neira Ayuso

Review at  https://gerrit.osmocom.org/3473

add esm_class definitions

Add special message attributes definitions that are associated with the
short message. Thus, we can get rid of magic numbers in our codebase.

Change-Id: I91afd8b462b8fd3b2c4c5b54f4eeb7ec5b730b65
---
M src/smpp34.h
1 file changed, 11 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/libsmpp34 refs/changes/73/3473/1

diff --git a/src/smpp34.h b/src/smpp34.h
index 5fb6395..b114ba7 100644
--- a/src/smpp34.h
+++ b/src/smpp34.h
@@ -204,4 +204,15 @@
 #define TLVID_its_reply_type  0x1380 /* CDMA */
 #define TLVID_its_session_info0x1383 /* CDMA */
 
+/* As defined by SMPP 3.4, Sect. 5.2.12 Parameter Definition esm_class. */
+enum smpp34_esm_class {
+   SMPP34_DATAGRAM_MODE= 0x01,
+   SMPP34_DELIVERY_RECEIPT = 0x04,
+   SMPP34_DELIVERY_ACK = 0x08,
+   SMPP34_UDHI_IND = 0x40,
+   SMPP34_REPLY_PATH   = 0x80,
+};
+
+#define SMPP34_MSG_MODE_MASK   0x03
+
 #endif

-- 
To view, visit https://gerrit.osmocom.org/3473
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I91afd8b462b8fd3b2c4c5b54f4eeb7ec5b730b65
Gerrit-PatchSet: 1
Gerrit-Project: libsmpp34
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 


openbsc[master]: libmsc: use smpp34_tlv_for_each() to avoid suboptimal TLV ha...

2017-08-11 Thread Pablo Neira Ayuso

Patch Set 2:

Build breaks because this patch depends on a patch in libsmpp34.

-- 
To view, visit https://gerrit.osmocom.org/3470
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: I53a65164a6cc4abc6bf57d9a8dc275cf21c90222
Gerrit-PatchSet: 2
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Pablo Neira Ayuso 
Gerrit-HasComments: No


[PATCH] openbsc[master]: libmsc: use new smpp34 esm_class definitions

2017-08-11 Thread Pablo Neira Ayuso

Review at  https://gerrit.osmocom.org/3474

libmsc: use new smpp34 esm_class definitions

Replace magic numbers by esm_class definitions.

Change-Id: I6c458690da60c8f3637680efbd718f6e8c6feb4c
---
M openbsc/src/libmsc/smpp_openbsc.c
1 file changed, 8 insertions(+), 10 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/openbsc refs/changes/74/3474/1

diff --git a/openbsc/src/libmsc/smpp_openbsc.c 
b/openbsc/src/libmsc/smpp_openbsc.c
index 7e23abd..ddb24b5 100644
--- a/openbsc/src/libmsc/smpp_openbsc.c
+++ b/openbsc/src/libmsc/smpp_openbsc.c
@@ -157,14 +157,13 @@
osmo_strlcpy(sms->src.addr, (char *)submit->source_addr,
 sizeof(sms->src.addr));
 
-   /* This is a Delivery Acknowledgment. */
-   if (submit->esm_class == 0x08)
+   if (submit->esm_class == SMPP34_DELIVERY_ACK)
sms->is_report = true;
 
-   if (submit->esm_class & 0x40)
+   if (submit->esm_class & SMPP34_UDHI_IND)
sms->ud_hdr_ind = 1;
 
-   if (submit->esm_class & 0x80) {
+   if (submit->esm_class & SMPP34_REPLY_PATH) {
sms->reply_path_req = 1;
 #warning Implement reply path
}
@@ -240,7 +239,7 @@
sms->smpp.esme = esme;
sms->protocol_id = submit->protocol_id;
 
-   switch (submit->esm_class & 3) {
+   switch (submit->esm_class & SMPP34_MSG_MODE_MASK) {
case 0: /* default */
case 1: /* datagram */
case 3: /* store-and-forward */
@@ -664,16 +663,15 @@
memcpy(deliver.destination_addr, sms->dst.addr,
sizeof(deliver.destination_addr));
 
-   /* Short message contains a delivery receipt? Sect. 5.2.12. */
if (sms->is_report)
-   deliver.esm_class = 0x04;
+   deliver.esm_class = SMPP34_DELIVERY_RECEIPT;
else
-   deliver.esm_class = 1;  /* datagram mode */
+   deliver.esm_class = SMPP34_DATAGRAM_MODE;
 
if (sms->ud_hdr_ind)
-   deliver.esm_class |= 0x40;
+   deliver.esm_class |= SMPP34_UDHI_IND;
if (sms->reply_path_req)
-   deliver.esm_class |= 0x80;
+   deliver.esm_class |= SMPP34_REPLY_PATH;
 
deliver.protocol_id = sms->protocol_id;
deliver.priority_flag   = 0;

-- 
To view, visit https://gerrit.osmocom.org/3474
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I6c458690da60c8f3637680efbd718f6e8c6feb4c
Gerrit-PatchSet: 1
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 


openbsc[master]: libmsc: use new smpp34 esm_class definitions

2017-08-11 Thread Pablo Neira Ayuso

Patch Set 1:

This jenkins build will fail too, because it depends on a patch in libsmpp34 
that I have just submitted.

-- 
To view, visit https://gerrit.osmocom.org/3474
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: I6c458690da60c8f3637680efbd718f6e8c6feb4c
Gerrit-PatchSet: 1
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Pablo Neira Ayuso 
Gerrit-HasComments: No


openbsc[master]: libmsc: use smpp34_tlv_for_each() to avoid suboptimal TLV ha...

2017-08-11 Thread Pablo Neira Ayuso

Patch Set 2:

OK, will include this info once patches for libsmpp34 get in. So this also 
helps re-kick Jenkins building.

-- 
To view, visit https://gerrit.osmocom.org/3470
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: I53a65164a6cc4abc6bf57d9a8dc275cf21c90222
Gerrit-PatchSet: 2
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Pablo Neira Ayuso 
Gerrit-Reviewer: Pau Espin Pedrol 
Gerrit-HasComments: No


openbsc[master]: libmsc: use smpp34_tlv_for_each() to avoid suboptimal TLV ha...

2017-08-11 Thread Pablo Neira Ayuso

Patch Set 2:

Oh, I forgot.

You can probably speed up the process if you give me +X to my libsmpp34 patches 
(if you're familiar with that code).

Thanks!

-- 
To view, visit https://gerrit.osmocom.org/3470
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: I53a65164a6cc4abc6bf57d9a8dc275cf21c90222
Gerrit-PatchSet: 2
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Pablo Neira Ayuso 
Gerrit-Reviewer: Pau Espin Pedrol 
Gerrit-HasComments: No


libsmpp34[master]: add esm_class definitions

2017-08-11 Thread Pablo Neira Ayuso

Patch Set 1:

Frankly, I would have used a define in first place. But I kind of understood 
enum is the policy for osmocom projects, so I followed this path.

-- 
To view, visit https://gerrit.osmocom.org/3473
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: I91afd8b462b8fd3b2c4c5b54f4eeb7ec5b730b65
Gerrit-PatchSet: 1
Gerrit-Project: libsmpp34
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Pablo Neira Ayuso 
Gerrit-HasComments: No


[MERGED] libsmpp34[master]: add smpp34_tlv_for_each() helper

2017-08-11 Thread Pablo Neira Ayuso
Pablo Neira Ayuso has submitted this change and it was merged.

Change subject: add smpp34_tlv_for_each() helper
..


add smpp34_tlv_for_each() helper

So we don't need to remember this is an opencoded list of TLVs.

Change-Id: I446929feed049d0411e1629ca263e2bc41f714cc
---
M src/smpp34_structs.h
1 file changed, 3 insertions(+), 0 deletions(-)

Approvals:
  Harald Welte: Looks good to me, approved
  Jenkins Builder: Verified



diff --git a/src/smpp34_structs.h b/src/smpp34_structs.h
index b9effb2..025109d 100644
--- a/src/smpp34_structs.h
+++ b/src/smpp34_structs.h
@@ -86,6 +86,9 @@
 OCTET16( inst, octet, size); \
 } par;
 
+#define smpp34_tlv_for_each(pos, head) \
+   for (pos = (head); pos != NULL; pos = pos->next)
+
 #define DAD( inst, par, do_dest_address ) dad_t *par;
 #define UU2( inst, par, size ) union { \
 struct { \

-- 
To view, visit https://gerrit.osmocom.org/3469
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I446929feed049d0411e1629ca263e2bc41f714cc
Gerrit-PatchSet: 1
Gerrit-Project: libsmpp34
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Pablo Neira Ayuso 


[PATCH] libsmpp34[master]: add esm_class definitions

2017-08-11 Thread Pablo Neira Ayuso
Hello Harald Welte, Jenkins Builder,

I'd like you to reexamine a change.  Please visit

https://gerrit.osmocom.org/3473

to look at the new patch set (#2).

add esm_class definitions

Add special message attributes definitions that are associated with the
short message. Thus, we can get rid of magic numbers in our codebase.

Change-Id: I91afd8b462b8fd3b2c4c5b54f4eeb7ec5b730b65
---
M src/smpp34.h
1 file changed, 8 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/libsmpp34 refs/changes/73/3473/2

diff --git a/src/smpp34.h b/src/smpp34.h
index 5fb6395..9d51a4a 100644
--- a/src/smpp34.h
+++ b/src/smpp34.h
@@ -204,4 +204,12 @@
 #define TLVID_its_reply_type  0x1380 /* CDMA */
 #define TLVID_its_session_info0x1383 /* CDMA */
 
+/* As defined by SMPP 3.4, Sect. 5.2.12 Parameter Definition esm_class. */
+#define SMPP34_DATAGRAM_MODE   0x01
+#define SMPP34_MSG_MODE_MASK   0x03
+#define SMPP34_DELIVERY_RECEIPT0x04
+#define SMPP34_DELIVERY_ACK0x08
+#define SMPP34_UDHI_IND0x40
+#define SMPP34_REPLY_PATH  0x80
+
 #endif

-- 
To view, visit https://gerrit.osmocom.org/3473
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newpatchset
Gerrit-Change-Id: I91afd8b462b8fd3b2c4c5b54f4eeb7ec5b730b65
Gerrit-PatchSet: 2
Gerrit-Project: libsmpp34
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Pablo Neira Ayuso 


[PATCH] openbsc[master]: libmsc: use smpp34_tlv_for_each() to avoid suboptimal TLV ha...

2017-08-11 Thread Pablo Neira Ayuso
(submit->tlv, TLVID_user_message_reference);
-   if (t)
-   sms->msg_ref = ntohs(t->value.val16);
 
*psms = sms;
return ESME_ROK;

-- 
To view, visit https://gerrit.osmocom.org/3470
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newpatchset
Gerrit-Change-Id: I53a65164a6cc4abc6bf57d9a8dc275cf21c90222
Gerrit-PatchSet: 3
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Pablo Neira Ayuso 
Gerrit-Reviewer: Pau Espin Pedrol 


openbsc[master]: mgcp_osmux: Remove unused parameter

2017-08-11 Thread Pablo Neira Ayuso

Patch Set 1: Code-Review+1

-- 
To view, visit https://gerrit.osmocom.org/3483
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Icb1e7cb15fe04642578f5292124ebc1eac9c9aa3
Gerrit-PatchSet: 1
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Pau Espin Pedrol 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Pablo Neira Ayuso 
Gerrit-HasComments: No


osmo-gsm-manuals[master]: osmux: Fix description for Dummy frames FT field

2017-08-11 Thread Pablo Neira Ayuso

Patch Set 1: Code-Review+1

-- 
To view, visit https://gerrit.osmocom.org/3478
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ia421655bd1be45101da3db2a0af44fbb3cc111c1
Gerrit-PatchSet: 1
Gerrit-Project: osmo-gsm-manuals
Gerrit-Branch: master
Gerrit-Owner: Pau Espin Pedrol 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Pablo Neira Ayuso 
Gerrit-HasComments: No


osmo-msc[master]: 04.08: log protocol discriminators and message types by name

2017-08-11 Thread Pablo Neira Ayuso

Patch Set 6: Code-Review+1

-- 
To view, visit https://gerrit.osmocom.org/3350
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ida205d217e304337d816b14fd15e2ee435e7397d
Gerrit-PatchSet: 6
Gerrit-Project: osmo-msc
Gerrit-Branch: master
Gerrit-Owner: Neels Hofmeyr 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Neels Hofmeyr 
Gerrit-Reviewer: Pablo Neira Ayuso 
Gerrit-HasComments: No


[PATCH] libsmpp34[master]: add delivery receipt definitions

2017-08-14 Thread Pablo Neira Ayuso

Review at  https://gerrit.osmocom.org/3513

add delivery receipt definitions

The registered_delivery field in SMPP message is a toggle on/off, this
patch adds two new definition so we don't have to use magic numbers from
the code.

Change-Id: I5b3afff1b3b77cccd949e0606914c7ac3ba6114c
---
M src/smpp34.h
1 file changed, 4 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/libsmpp34 refs/changes/13/3513/1

diff --git a/src/smpp34.h b/src/smpp34.h
index 9d51a4a..b66d47f 100644
--- a/src/smpp34.h
+++ b/src/smpp34.h
@@ -212,4 +212,8 @@
 #define SMPP34_UDHI_IND0x40
 #define SMPP34_REPLY_PATH  0x80
 
+/* Sect. 5.2.17 registered_delivery. */
+#define SMPP34_DELIVERY_RECEIPT_OFF0x00
+#define SMPP34_DELIVERY_RECEIPT_ON 0x01
+
 #endif

-- 
To view, visit https://gerrit.osmocom.org/3513
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I5b3afff1b3b77cccd949e0606914c7ac3ba6114c
Gerrit-PatchSet: 1
Gerrit-Project: libsmpp34
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 


[PATCH] openbsc[master]: libmsc: use SMPP34_DELIVERY_RECEIPT_* in libsmpp34

2017-08-14 Thread Pablo Neira Ayuso

Review at  https://gerrit.osmocom.org/3515

libmsc: use SMPP34_DELIVERY_RECEIPT_* in libsmpp34

Use new definitions for the registered_delivery field in libsmpp34 with
I5b3afff1b3b77cccd949e0606914c7ac3ba6114c.

Moreover, do not set this header field to zero if status reports are
off, the deliver_t structure has been already zeroed so this not
required.

Change-Id: Ie78e17323796120f576b9c0e1bc5ccc32da8ee12
---
M openbsc/src/libmsc/smpp_openbsc.c
1 file changed, 1 insertion(+), 7 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/openbsc refs/changes/15/3515/1

diff --git a/openbsc/src/libmsc/smpp_openbsc.c 
b/openbsc/src/libmsc/smpp_openbsc.c
index ddb24b5..f2a036d 100644
--- a/openbsc/src/libmsc/smpp_openbsc.c
+++ b/openbsc/src/libmsc/smpp_openbsc.c
@@ -627,10 +627,6 @@
return NULL;
 }
 
-/* See SMPP 3.4, Section 5.2.17. registered_delivery (1 byte field). */
-#define SMPP34_NO_DELIVERY_RECEIPT 0x0
-#define SMPP34_DELIVERY_RECEIPT_REQ0x1
-
 static int deliver_to_esme(struct osmo_esme *esme, struct gsm_sms *sms,
   struct gsm_subscriber_connection *conn)
 {
@@ -676,9 +672,7 @@
deliver.protocol_id = sms->protocol_id;
deliver.priority_flag   = 0;
if (sms->status_rep_req)
-   deliver.registered_delivery = SMPP34_DELIVERY_RECEIPT_REQ;
-   else
-   deliver.registered_delivery = SMPP34_NO_DELIVERY_RECEIPT;
+   deliver.registered_delivery = SMPP34_DELIVERY_RECEIPT_ON;
 
/* Figure out SMPP DCS from TP-DCS */
dcs = sms->data_coding_scheme;

-- 
To view, visit https://gerrit.osmocom.org/3515
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ie78e17323796120f576b9c0e1bc5ccc32da8ee12
Gerrit-PatchSet: 1
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 


openbsc[master]: libmsc: use SMPP34_DELIVERY_RECEIPT_* in libsmpp34

2017-08-14 Thread Pablo Neira Ayuso

Patch Set 1:

Just for the record, this patch depends on:

https://gerrit.osmocom.org/#/c/3513/

that's why Jenkins fails to build this.

-- 
To view, visit https://gerrit.osmocom.org/3515
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ie78e17323796120f576b9c0e1bc5ccc32da8ee12
Gerrit-PatchSet: 1
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Pablo Neira Ayuso 
Gerrit-HasComments: No


libsmpp34[master]: add delivery receipt definitions

2017-08-14 Thread Pablo Neira Ayuso

Patch Set 1:

My queue is now empty :-), unless someone needs any more cleanups ;-)

-- 
To view, visit https://gerrit.osmocom.org/3513
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: I5b3afff1b3b77cccd949e0606914c7ac3ba6114c
Gerrit-PatchSet: 1
Gerrit-Project: libsmpp34
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Pablo Neira Ayuso 
Gerrit-HasComments: No


[MERGED] libsmpp34[master]: add delivery receipt definitions

2017-08-14 Thread Pablo Neira Ayuso
Pablo Neira Ayuso has submitted this change and it was merged.

Change subject: add delivery receipt definitions
..


add delivery receipt definitions

The registered_delivery field in SMPP message is a toggle on/off, this
patch adds two new definition so we don't have to use magic numbers from
the code.

Change-Id: I5b3afff1b3b77cccd949e0606914c7ac3ba6114c
---
M src/smpp34.h
1 file changed, 4 insertions(+), 0 deletions(-)

Approvals:
  Harald Welte: Looks good to me, approved
  Jenkins Builder: Verified



diff --git a/src/smpp34.h b/src/smpp34.h
index 9d51a4a..b66d47f 100644
--- a/src/smpp34.h
+++ b/src/smpp34.h
@@ -212,4 +212,8 @@
 #define SMPP34_UDHI_IND0x40
 #define SMPP34_REPLY_PATH  0x80
 
+/* Sect. 5.2.17 registered_delivery. */
+#define SMPP34_DELIVERY_RECEIPT_OFF0x00
+#define SMPP34_DELIVERY_RECEIPT_ON 0x01
+
 #endif

-- 
To view, visit https://gerrit.osmocom.org/3513
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I5b3afff1b3b77cccd949e0606914c7ac3ba6114c
Gerrit-PatchSet: 1
Gerrit-Project: libsmpp34
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Pablo Neira Ayuso 


openbsc[master]: LIBMSC: Place correct dst address in status report

2017-08-14 Thread Pablo Neira Ayuso

Patch Set 2: Code-Review+1

Thanks for fixing up this!

-- 
To view, visit https://gerrit.osmocom.org/3516
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: I2d4f87ac777465de9bfb5a775a789a2691755ee9
Gerrit-PatchSet: 2
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Keith Whyte 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Pablo Neira Ayuso 
Gerrit-HasComments: No


openbsc[master]: LIBMSC: Use sms->text, not sms->user_data to construct repor...

2017-08-14 Thread Pablo Neira Ayuso

Patch Set 3: Code-Review+1

LGTM. Thanks for fixing up this issue too.

-- 
To view, visit https://gerrit.osmocom.org/3517
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Id51bc9483ad6f52d6da74135605cfd12434c7c96
Gerrit-PatchSet: 3
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Keith Whyte 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Pablo Neira Ayuso 
Gerrit-HasComments: No


[MERGED] openbsc[master]: libmsc: use GSM411_RP_CAUSE_MO_NUM_UNASSIGNED as return value

2017-05-08 Thread Pablo Neira Ayuso
Pablo Neira Ayuso has submitted this change and it was merged.

Change subject: libmsc: use GSM411_RP_CAUSE_MO_NUM_UNASSIGNED as return value
..


libmsc: use GSM411_RP_CAUSE_MO_NUM_UNASSIGNED as return value

Instead of hardcoded value of 1 plus comment of the right hand side of
the statement.

Change-Id: I865bdbd6da17a0389044a8e749dbcb9cae06
---
M openbsc/src/libmsc/gsm_04_11.c
M openbsc/src/libmsc/smpp_openbsc.c
2 files changed, 5 insertions(+), 6 deletions(-)

Approvals:
  Harald Welte: Looks good to me, approved
  Jenkins Builder: Verified



diff --git a/openbsc/src/libmsc/gsm_04_11.c b/openbsc/src/libmsc/gsm_04_11.c
index 6164a08..a94b971 100644
--- a/openbsc/src/libmsc/gsm_04_11.c
+++ b/openbsc/src/libmsc/gsm_04_11.c
@@ -293,7 +293,7 @@
 */
if (smpp_first) {
rc = smpp_try_deliver(gsms, conn);
-   if (rc == 1)
+   if (rc == GSM411_RP_CAUSE_MO_NUM_UNASSIGNED)
goto try_local;
if (rc < 0) {
LOGP(DLSMS, LOGL_ERROR, "%s: SMS delivery error: %d.",
@@ -317,12 +317,11 @@
/* Avoid a second look-up */
if (smpp_first) {

rate_ctr_inc(&conn->network->msc_ctrs->ctr[MSC_CTR_SMS_NO_RECEIVER]);
-   return 1; /* cause 1: unknown subscriber */
+   return GSM411_RP_CAUSE_MO_NUM_UNASSIGNED;
}
 
rc = smpp_try_deliver(gsms, conn);
-   if (rc == 1) {
-   rc = 1; /* cause 1: unknown subscriber */
+   if (rc == GSM411_RP_CAUSE_MO_NUM_UNASSIGNED) {

rate_ctr_inc(&conn->network->msc_ctrs->ctr[MSC_CTR_SMS_NO_RECEIVER]);
} else if (rc < 0) {
LOGP(DLSMS, LOGL_ERROR, "%s: SMS delivery error: %d.",
@@ -333,7 +332,7 @@
MSC_CTR_SMS_DELIVER_UNKNOWN_ERROR]);
}
 #else
-   rc = 1; /* cause 1: unknown subscriber */
+   rc = GSM411_RP_CAUSE_MO_NUM_UNASSIGNED;

rate_ctr_inc(&conn->network->msc_ctrs->ctr[MSC_CTR_SMS_NO_RECEIVER]);
 #endif
return rc;
diff --git a/openbsc/src/libmsc/smpp_openbsc.c 
b/openbsc/src/libmsc/smpp_openbsc.c
index 1671a62..ec9dda3 100644
--- a/openbsc/src/libmsc/smpp_openbsc.c
+++ b/openbsc/src/libmsc/smpp_openbsc.c
@@ -559,7 +559,7 @@
 
esme = smpp_route(g_smsc, &dst);
if (!esme)
-   return 1; /* unknown subscriber */
+   return GSM411_RP_CAUSE_MO_NUM_UNASSIGNED;
 
return deliver_to_esme(esme, sms, conn);
 }

-- 
To view, visit https://gerrit.osmocom.org/2487
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I865bdbd6da17a0389044a8e749dbcb9cae06
Gerrit-PatchSet: 2
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Holger Freyther 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Keith Whyte 
Gerrit-Reviewer: Pablo Neira Ayuso 


[PATCH] openbsc[master]: libmsc: send RP-ACK to MS after ESME sends SMPP DELIVER-SM-RESP

2017-05-08 Thread Pablo Neira Ayuso
bmsc/smpp_smsc.h
+++ b/openbsc/src/libmsc/smpp_smsc.h
@@ -7,6 +7,7 @@
 #include 
 #include 
 #include 
+#include 
 
 #include 
 #include 
@@ -36,6 +37,8 @@
struct smsc *smsc;
struct osmo_smpp_acl *acl;
int use;
+
+   struct llist_head smpp_cmd_list;
 
uint32_t own_seq_nr;
 
@@ -83,6 +86,19 @@
} u;
 };
 
+struct osmo_smpp_cmd {
+   struct llist_head   list;
+   struct gsm_subscriber   *subscr;
+   struct gsm_sms  *sms;
+   uint32_tsequence_nr;
+   struct osmo_timer_list  response_timer;
+};
+
+struct osmo_smpp_cmd *smpp_cmd_find_by_seqnum(struct osmo_esme *esme,
+ uint32_t sequence_number);
+void smpp_cmd_ack(struct osmo_smpp_cmd *cmd);
+void smpp_cmd_err(struct osmo_smpp_cmd *cmd);
+void smpp_cmd_flush_pending(struct osmo_esme *esme);
 
 struct smsc {
struct osmo_fd listen_ofd;
@@ -146,5 +162,5 @@
 int smpp_route_smpp_first(struct gsm_sms *sms,
struct gsm_subscriber_connection *conn);
 int smpp_try_deliver(struct gsm_sms *sms,
-   struct gsm_subscriber_connection *conn);
+struct gsm_subscriber_connection *conn, bool *deferred);
 #endif

-- 
To view, visit https://gerrit.osmocom.org/2488
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newpatchset
Gerrit-Change-Id: I0d5bd5693fed6d4f4bd2951711c7888712507bfd
Gerrit-PatchSet: 3
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Holger Freyther 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Keith Whyte 


[PATCH] libosmocore[master]: timer: add osmo_timer_setup()

2017-05-08 Thread Pablo Neira Ayuso
f..3ccd065 100644
--- a/src/rate_ctr.c
+++ b/src/rate_ctr.c
@@ -147,7 +147,7 @@
 int rate_ctr_init(void *tall_ctx)
 {
tall_rate_ctr_ctx = tall_ctx;
-   rate_ctr_timer.cb = rate_ctr_timer_cb;
+   osmo_timer_setup(&rate_ctr_timer, rate_ctr_timer_cb, NULL);
osmo_timer_schedule(&rate_ctr_timer, 1, 0);
 
return 0;
diff --git a/src/stats.c b/src/stats.c
index 1efc8cd..dee5d81 100644
--- a/src/stats.c
+++ b/src/stats.c
@@ -107,7 +107,7 @@
if (!is_initialised)
return -ESRCH;
 
-   osmo_stats_timer.cb = osmo_stats_timer_cb;
+   osmo_timer_setup(&osmo_stats_timer, osmo_stats_timer_cb, NULL);
osmo_timer_schedule(&osmo_stats_timer, 0, 1);
 
return 0;
diff --git a/src/timer.c b/src/timer.c
index cc6d5cc..47d1786 100644
--- a/src/timer.c
+++ b/src/timer.c
@@ -65,6 +65,18 @@
 rb_insert_color(&timer->node, &timer_root);
 }
 
+/*! \brief set up timer callback and data
+ *  \param[in] timer the timer that should be added
+ *  \param[in] callback function to be called when timer expires
+ *  \param[in] pointer to data that passed to the callback function
+ */
+void osmo_timer_setup(struct osmo_timer_list *timer, void (*cb)(void *data),
+ void *data)
+{
+   timer->cb   = cb;
+   timer->data = data;
+}
+
 /*! \brief add a new timer to the timer management
  *  \param[in] timer the timer that should be added
  */
diff --git a/tests/timer/timer_test.c b/tests/timer/timer_test.c
index 066dc72..d2b0204 100644
--- a/tests/timer/timer_test.c
+++ b/tests/timer/timer_test.c
@@ -39,10 +39,7 @@
 static void secondary_timer_fired(void *data);
 
 static unsigned int main_timer_step = 0;
-static struct osmo_timer_list main_timer = {
-   .cb = main_timer_fired,
-   .data = &main_timer_step,
-};
+static struct osmo_timer_list main_timer;
 
 static LLIST_HEAD(timer_test_list);
 
@@ -92,8 +89,7 @@
return;
}
osmo_gettimeofday(&v->start, NULL);
-   v->timer.cb = secondary_timer_fired;
-   v->timer.data = v;
+   osmo_timer_setup(&v->timer, secondary_timer_fired, v);
unsigned int seconds = (i & 0x7) + 1;
v->stop.tv_sec = v->start.tv_sec + seconds;
v->stop.tv_usec = v->start.tv_usec;
@@ -195,6 +191,7 @@
   " %d steps of %d msecs each\n",
   timer_nsteps, steps, TIME_BETWEEN_TIMER_CHECKS / 1000);
 
+   osmo_timer_setup(&main_timer, main_timer_fired, &main_timer_step);
osmo_timer_schedule(&main_timer, 1, 0);
 
 #ifdef HAVE_SYS_SELECT_H

-- 
To view, visit https://gerrit.osmocom.org/2542
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I2fa49972ecaab3748b25168b26d92034e9145666
Gerrit-PatchSet: 1
Gerrit-Project: libosmocore
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 


[PATCH] libosmocore[master]: timer: add osmo_timer_setup()

2017-05-08 Thread Pablo Neira Ayuso
,7 +147,7 @@
 int rate_ctr_init(void *tall_ctx)
 {
tall_rate_ctr_ctx = tall_ctx;
-   rate_ctr_timer.cb = rate_ctr_timer_cb;
+   osmo_timer_setup(&rate_ctr_timer, rate_ctr_timer_cb, NULL);
osmo_timer_schedule(&rate_ctr_timer, 1, 0);
 
return 0;
diff --git a/src/stats.c b/src/stats.c
index 1efc8cd..dee5d81 100644
--- a/src/stats.c
+++ b/src/stats.c
@@ -107,7 +107,7 @@
if (!is_initialised)
return -ESRCH;
 
-   osmo_stats_timer.cb = osmo_stats_timer_cb;
+   osmo_timer_setup(&osmo_stats_timer, osmo_stats_timer_cb, NULL);
osmo_timer_schedule(&osmo_stats_timer, 0, 1);
 
return 0;
diff --git a/src/timer.c b/src/timer.c
index cc6d5cc..47d1786 100644
--- a/src/timer.c
+++ b/src/timer.c
@@ -65,6 +65,18 @@
 rb_insert_color(&timer->node, &timer_root);
 }
 
+/*! \brief set up timer callback and data
+ *  \param[in] timer the timer that should be added
+ *  \param[in] callback function to be called when timer expires
+ *  \param[in] pointer to data that passed to the callback function
+ */
+void osmo_timer_setup(struct osmo_timer_list *timer, void (*cb)(void *data),
+ void *data)
+{
+   timer->cb   = cb;
+   timer->data = data;
+}
+
 /*! \brief add a new timer to the timer management
  *  \param[in] timer the timer that should be added
  */
diff --git a/tests/timer/timer_test.c b/tests/timer/timer_test.c
index 066dc72..d2b0204 100644
--- a/tests/timer/timer_test.c
+++ b/tests/timer/timer_test.c
@@ -39,10 +39,7 @@
 static void secondary_timer_fired(void *data);
 
 static unsigned int main_timer_step = 0;
-static struct osmo_timer_list main_timer = {
-   .cb = main_timer_fired,
-   .data = &main_timer_step,
-};
+static struct osmo_timer_list main_timer;
 
 static LLIST_HEAD(timer_test_list);
 
@@ -92,8 +89,7 @@
return;
}
osmo_gettimeofday(&v->start, NULL);
-   v->timer.cb = secondary_timer_fired;
-   v->timer.data = v;
+   osmo_timer_setup(&v->timer, secondary_timer_fired, v);
unsigned int seconds = (i & 0x7) + 1;
v->stop.tv_sec = v->start.tv_sec + seconds;
v->stop.tv_usec = v->start.tv_usec;
@@ -195,6 +191,7 @@
   " %d steps of %d msecs each\n",
   timer_nsteps, steps, TIME_BETWEEN_TIMER_CHECKS / 1000);
 
+   osmo_timer_setup(&main_timer, main_timer_fired, &main_timer_step);
osmo_timer_schedule(&main_timer, 1, 0);
 
 #ifdef HAVE_SYS_SELECT_H

-- 
To view, visit https://gerrit.osmocom.org/2542
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newpatchset
Gerrit-Change-Id: I2fa49972ecaab3748b25168b26d92034e9145666
Gerrit-PatchSet: 2
Gerrit-Project: libosmocore
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 
Gerrit-Reviewer: Jenkins Builder


[MERGED] openbsc[master]: libmsc: send RP-ACK to MS after ESME sends SMPP DELIVER-SM-RESP

2017-05-08 Thread Pablo Neira Ayuso
Pablo Neira Ayuso has submitted this change and it was merged.

Change subject: libmsc: send RP-ACK to MS after ESME sends SMPP DELIVER-SM-RESP
..


libmsc: send RP-ACK to MS after ESME sends SMPP DELIVER-SM-RESP

Hold on with the GSM 04.11 RP-ACK/RP-ERROR that we send to the MS until
we get a confirmation from the ESME, via SMPP DELIVER-SM-RESP, that we
can route this sms somewhere we can reach indeed.

After this change, the conversation looks like this:

MSGSM 03.40  SMSC   SMPP 3.4   ESME
 || |
 |   SMS-SUBMIT   | |
 |--->| |
 ||DELIVER-SM   |
 ||>|
 || |
 || DELIVER-SM-RESP |
 ||<|
 |  GSM 04.11 RP-ACK  | |
 |<---| |
 || |

Before this patch, the RP-ACK was sent back straight forward to the MS,
no matter if the sms can be route by the ESME or not. Thus, the user
ends up getting a misleading "message delivered" in their phone screen,
when the message may just be unroutable by the ESME hence silently
dropped.

If we get no reply from the ESME, there is a hardcoded timer that will
expire to send back an RP-ERROR to the MS indicating that network is
out-of-order. Currently this timer is arbitrarily set to 5 seconds. I
found no specific good default value on the SMPP 3.4 specs, section 7.2,
where the response_timer is described. There must be a place that
describes a better default value for this. We could also expose this
timer through VTY for configurability reasons, to be done later.

Given all this needs to happen asyncronously, ie. block the SMSC, this
patch extends the gsm_sms structure with two new fields to annotate
useful information to send the RP-ACK/RP-ERROR back to the MS of origin.
These new fields are:

* the GSM 04.07 transaction id, to look up for the gsm_trans object.

* the GSM 04.11 message reference so the MS of origin can correlate this
  response to its original request.

Tested here using python-libsmpp script that replies with
DELIVER_SM_RESP and status code 0x0b (Invalid Destination). I can see
here on my motorola C155 that message cannot be delivered. I have tested
with the success status code in the SMPP DELIVER_SM_RESP too.

Change-Id: I0d5bd5693fed6d4f4bd2951711c7888712507bfd
---
M openbsc/include/openbsc/gsm_04_11.h
M openbsc/include/openbsc/gsm_data.h
M openbsc/src/libmsc/gsm_04_11.c
M openbsc/src/libmsc/smpp_openbsc.c
M openbsc/src/libmsc/smpp_smsc.c
M openbsc/src/libmsc/smpp_smsc.h
6 files changed, 184 insertions(+), 17 deletions(-)

Approvals:
  Harald Welte: Looks good to me, approved
  Jenkins Builder: Verified



diff --git a/openbsc/include/openbsc/gsm_04_11.h 
b/openbsc/include/openbsc/gsm_04_11.h
index 149de90..017c887 100644
--- a/openbsc/include/openbsc/gsm_04_11.h
+++ b/openbsc/include/openbsc/gsm_04_11.h
@@ -39,4 +39,9 @@
 void gsm411_sapi_n_reject(struct gsm_subscriber_connection *conn);
 
 uint8_t sms_next_rp_msg_ref(uint8_t *next_rp_ref);
+
+int gsm411_send_rp_ack(struct gsm_trans *trans, uint8_t msg_ref);
+int gsm411_send_rp_error(struct gsm_trans *trans, uint8_t msg_ref,
+uint8_t cause);
+
 #endif
diff --git a/openbsc/include/openbsc/gsm_data.h 
b/openbsc/include/openbsc/gsm_data.h
index 1d90eee..6d814c8 100644
--- a/openbsc/include/openbsc/gsm_data.h
+++ b/openbsc/include/openbsc/gsm_data.h
@@ -429,6 +429,11 @@
enum gsm_sms_source_id source;
 
struct {
+   uint8_t transaction_id;
+   uint32_t msg_ref;
+   } gsm411;
+
+   struct {
struct osmo_esme *esme;
uint32_t sequence_nr;
int transaction_mode;
diff --git a/openbsc/src/libmsc/gsm_04_11.c b/openbsc/src/libmsc/gsm_04_11.c
index a94b971..aa2030f 100644
--- a/openbsc/src/libmsc/gsm_04_11.c
+++ b/openbsc/src/libmsc/gsm_04_11.c
@@ -278,7 +278,7 @@
 }
 
 int sms_route_mt_sms(struct gsm_subscriber_connection *conn, struct msgb *msg,
-   struct gsm_sms *gsms, uint8_t sms_mti)
+struct gsm_sms *gsms, uint8_t sms_mti, bool *deferred)
 {
int rc;
 
@@ -292,7 +292,7 @@
 * delivery of the SMS.
 */
if (smpp_first) {
-   rc = smpp_try_deliver(gsms, conn);
+   rc = smpp_try_deliver(gsms, conn, deferred);
if (rc == GSM411_RP_CAUSE_MO_NUM_UNASSIGNED)
goto try_local;
if (rc < 0) {
@@ -320,7 +320,7 @@
return GSM411_RP_CAUSE_MO_NUM_UNASSIGNED;
}
 
-   rc = smpp_try_deliver(gsms, conn);
+   rc = smpp_try_deliver(gsms, conn, deferred

[PATCH] libosmocore[master]: timer: add osmo_timer_setup()

2017-05-08 Thread Pablo Neira Ayuso
 dl->t200.cb = &lapd_t200_cb;
+   osmo_timer_setup(&dl->t200, lapd_t200_cb, dl);
dl->t203_sec = 10;
dl->t203_usec = 0;
-   dl->t203.data = dl;
-   dl->t203.cb = &lapd_t203_cb;
+   osmo_timer_setup(&dl->t203, lapd_t203_cb, dl);
dl->maxf = maxf;
if (k > v_range - 1)
k = v_range - 1;
diff --git a/src/rate_ctr.c b/src/rate_ctr.c
index f995f3f..3ccd065 100644
--- a/src/rate_ctr.c
+++ b/src/rate_ctr.c
@@ -147,7 +147,7 @@
 int rate_ctr_init(void *tall_ctx)
 {
tall_rate_ctr_ctx = tall_ctx;
-   rate_ctr_timer.cb = rate_ctr_timer_cb;
+   osmo_timer_setup(&rate_ctr_timer, rate_ctr_timer_cb, NULL);
osmo_timer_schedule(&rate_ctr_timer, 1, 0);
 
return 0;
diff --git a/src/stats.c b/src/stats.c
index 1efc8cd..dee5d81 100644
--- a/src/stats.c
+++ b/src/stats.c
@@ -107,7 +107,7 @@
if (!is_initialised)
return -ESRCH;
 
-   osmo_stats_timer.cb = osmo_stats_timer_cb;
+   osmo_timer_setup(&osmo_stats_timer, osmo_stats_timer_cb, NULL);
osmo_timer_schedule(&osmo_stats_timer, 0, 1);
 
return 0;
diff --git a/tests/timer/timer_test.c b/tests/timer/timer_test.c
index 066dc72..d2b0204 100644
--- a/tests/timer/timer_test.c
+++ b/tests/timer/timer_test.c
@@ -39,10 +39,7 @@
 static void secondary_timer_fired(void *data);
 
 static unsigned int main_timer_step = 0;
-static struct osmo_timer_list main_timer = {
-   .cb = main_timer_fired,
-   .data = &main_timer_step,
-};
+static struct osmo_timer_list main_timer;
 
 static LLIST_HEAD(timer_test_list);
 
@@ -92,8 +89,7 @@
return;
}
osmo_gettimeofday(&v->start, NULL);
-   v->timer.cb = secondary_timer_fired;
-   v->timer.data = v;
+   osmo_timer_setup(&v->timer, secondary_timer_fired, v);
unsigned int seconds = (i & 0x7) + 1;
v->stop.tv_sec = v->start.tv_sec + seconds;
v->stop.tv_usec = v->start.tv_usec;
@@ -195,6 +191,7 @@
   " %d steps of %d msecs each\n",
   timer_nsteps, steps, TIME_BETWEEN_TIMER_CHECKS / 1000);
 
+   osmo_timer_setup(&main_timer, main_timer_fired, &main_timer_step);
osmo_timer_schedule(&main_timer, 1, 0);
 
 #ifdef HAVE_SYS_SELECT_H

-- 
To view, visit https://gerrit.osmocom.org/2542
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newpatchset
Gerrit-Change-Id: I2fa49972ecaab3748b25168b26d92034e9145666
Gerrit-PatchSet: 3
Gerrit-Project: libosmocore
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Holger Freyther 
Gerrit-Reviewer: Jenkins Builder


libosmocore[master]: timer: add osmo_timer_setup()

2017-05-09 Thread Pablo Neira Ayuso

Patch Set 3:

(1 comment)

Sorry. I misunderstood. I'm recovering the previous version, I missed that you 
added Code Review+2 there.

So you seem to be fine with the previous version. Thanks!

https://gerrit.osmocom.org/#/c/2542/2/src/timer.c
File src/timer.c:

Line 73:osmo_timer_del(timer);
> one could argue that could be an inline (it's basically just two unconditio
Yes, that would be definitely faster. I'm going to follow that path, this timer 
interface has proven to be quite stable, so placing this in the library header 
file shouldn't be much of a problem.


-- 
To view, visit https://gerrit.osmocom.org/2542
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: I2fa49972ecaab3748b25168b26d92034e9145666
Gerrit-PatchSet: 3
Gerrit-Project: libosmocore
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Holger Freyther 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Pablo Neira Ayuso 
Gerrit-HasComments: Yes


[PATCH] libosmocore[master]: timer: add osmo_timer_setup()

2017-05-09 Thread Pablo Neira Ayuso
v_range - 1)
k = v_range - 1;
diff --git a/src/rate_ctr.c b/src/rate_ctr.c
index f995f3f..3ccd065 100644
--- a/src/rate_ctr.c
+++ b/src/rate_ctr.c
@@ -147,7 +147,7 @@
 int rate_ctr_init(void *tall_ctx)
 {
tall_rate_ctr_ctx = tall_ctx;
-   rate_ctr_timer.cb = rate_ctr_timer_cb;
+   osmo_timer_setup(&rate_ctr_timer, rate_ctr_timer_cb, NULL);
osmo_timer_schedule(&rate_ctr_timer, 1, 0);
 
return 0;
diff --git a/src/stats.c b/src/stats.c
index 1efc8cd..dee5d81 100644
--- a/src/stats.c
+++ b/src/stats.c
@@ -107,7 +107,7 @@
if (!is_initialised)
return -ESRCH;
 
-   osmo_stats_timer.cb = osmo_stats_timer_cb;
+   osmo_timer_setup(&osmo_stats_timer, osmo_stats_timer_cb, NULL);
osmo_timer_schedule(&osmo_stats_timer, 0, 1);
 
return 0;
diff --git a/src/timer.c b/src/timer.c
index cc6d5cc..47d1786 100644
--- a/src/timer.c
+++ b/src/timer.c
@@ -65,6 +65,18 @@
 rb_insert_color(&timer->node, &timer_root);
 }
 
+/*! \brief set up timer callback and data
+ *  \param[in] timer the timer that should be added
+ *  \param[in] callback function to be called when timer expires
+ *  \param[in] pointer to data that passed to the callback function
+ */
+void osmo_timer_setup(struct osmo_timer_list *timer, void (*cb)(void *data),
+ void *data)
+{
+   timer->cb   = cb;
+   timer->data = data;
+}
+
 /*! \brief add a new timer to the timer management
  *  \param[in] timer the timer that should be added
  */
diff --git a/tests/timer/timer_test.c b/tests/timer/timer_test.c
index 066dc72..d2b0204 100644
--- a/tests/timer/timer_test.c
+++ b/tests/timer/timer_test.c
@@ -39,10 +39,7 @@
 static void secondary_timer_fired(void *data);
 
 static unsigned int main_timer_step = 0;
-static struct osmo_timer_list main_timer = {
-   .cb = main_timer_fired,
-   .data = &main_timer_step,
-};
+static struct osmo_timer_list main_timer;
 
 static LLIST_HEAD(timer_test_list);
 
@@ -92,8 +89,7 @@
return;
}
osmo_gettimeofday(&v->start, NULL);
-   v->timer.cb = secondary_timer_fired;
-   v->timer.data = v;
+   osmo_timer_setup(&v->timer, secondary_timer_fired, v);
unsigned int seconds = (i & 0x7) + 1;
v->stop.tv_sec = v->start.tv_sec + seconds;
v->stop.tv_usec = v->start.tv_usec;
@@ -195,6 +191,7 @@
   " %d steps of %d msecs each\n",
   timer_nsteps, steps, TIME_BETWEEN_TIMER_CHECKS / 1000);
 
+   osmo_timer_setup(&main_timer, main_timer_fired, &main_timer_step);
osmo_timer_schedule(&main_timer, 1, 0);
 
 #ifdef HAVE_SYS_SELECT_H

-- 
To view, visit https://gerrit.osmocom.org/2542
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newpatchset
Gerrit-Change-Id: I2fa49972ecaab3748b25168b26d92034e9145666
Gerrit-PatchSet: 5
Gerrit-Project: libosmocore
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Holger Freyther 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Pablo Neira Ayuso 


libosmocore[master]: timer: add osmo_timer_setup()

2017-05-09 Thread Pablo Neira Ayuso

Patch Set 5:

I seem to be puzzling a bit with Gerrit, still getting used to it :)

-- 
To view, visit https://gerrit.osmocom.org/2542
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: I2fa49972ecaab3748b25168b26d92034e9145666
Gerrit-PatchSet: 5
Gerrit-Project: libosmocore
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Holger Freyther 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Pablo Neira Ayuso 
Gerrit-HasComments: No


libosmocore[master]: timer: add osmo_timer_setup()

2017-05-10 Thread Pablo Neira Ayuso

Patch Set 6:

Reason for upstreaming this non-inlined version is the following: This new 
osmo_timer_setup() should be called from the configuration path once and never 
ever again to set up the callback and data. So this is not fast path at all. 
Using a function instead for slow path code is good so we reduce pressure on 
the i-cache.

-- 
To view, visit https://gerrit.osmocom.org/2542
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: I2fa49972ecaab3748b25168b26d92034e9145666
Gerrit-PatchSet: 6
Gerrit-Project: libosmocore
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Holger Freyther 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Pablo Neira Ayuso 
Gerrit-HasComments: No


[MERGED] libosmocore[master]: timer: add osmo_timer_setup()

2017-05-10 Thread Pablo Neira Ayuso
Pablo Neira Ayuso has submitted this change and it was merged.

Change subject: timer: add osmo_timer_setup()
..


timer: add osmo_timer_setup()

Add a new function timer function to set up the timer, similar to what
we have in the Linux kernel. This patch also converts existing opencoded
timer setup in the libosmocore tree as initial client of this new
function.

This patch implicitly removes function callback passed by reference that
defeat compile time type validation.

Compile-tested only, but I ran make check that reports success when
testing timer infrastructure.

Change-Id: I2fa49972ecaab3748b25168b26d92034e9145666
---
M include/osmocom/core/timer.h
M src/fsm.c
M src/gb/gprs_bssgp.c
M src/gb/gprs_ns.c
M src/gsm/gsm0411_smc.c
M src/gsm/gsm0411_smr.c
M src/gsm/lapd_core.c
M src/rate_ctr.c
M src/stats.c
M src/timer.c
M tests/timer/timer_test.c
11 files changed, 26 insertions(+), 22 deletions(-)

Approvals:
  Harald Welte: Looks good to me, approved
  Jenkins Builder: Verified



diff --git a/include/osmocom/core/timer.h b/include/osmocom/core/timer.h
index dbda13f..48e7d8d 100644
--- a/include/osmocom/core/timer.h
+++ b/include/osmocom/core/timer.h
@@ -65,6 +65,8 @@
  * timer management
  */
 
+void osmo_timer_setup(struct osmo_timer_list *timer, void (*cb)(void *data), 
void *data);
+
 void osmo_timer_add(struct osmo_timer_list *timer);
 
 void osmo_timer_schedule(struct osmo_timer_list *timer, int seconds, int 
microseconds);
diff --git a/src/fsm.c b/src/fsm.c
index 9e6ef15..5e74482 100644
--- a/src/fsm.c
+++ b/src/fsm.c
@@ -206,8 +206,7 @@
fi->fsm = fsm;
fi->priv = priv;
fi->log_level = log_level;
-   fi->timer.data = fi;
-   fi->timer.cb = fsm_tmr_cb;
+   osmo_timer_setup(&fi->timer, fsm_tmr_cb, fi);
if (id)
fi->id = talloc_strdup(fi, id);
 
diff --git a/src/gb/gprs_bssgp.c b/src/gb/gprs_bssgp.c
index dba4d5c..fdbf788 100644
--- a/src/gb/gprs_bssgp.c
+++ b/src/gb/gprs_bssgp.c
@@ -640,8 +640,7 @@
msecs = (fcqe->llc_pdu_len * 1000) / fc->bucket_leak_rate;
/* FIXME: add that time to fc->time_last_pdu and subtract it 
from
 * current time */
-   fc->timer.data = fc;
-   fc->timer.cb = &fc_timer_cb;
+   osmo_timer_setup(&fc->timer, fc_timer_cb, fc);
osmo_timer_schedule(&fc->timer, msecs / 1000, (msecs % 1000) * 
1000);
} else {
/* If the PCU is telling us to not send any more data at all,
diff --git a/src/gb/gprs_ns.c b/src/gb/gprs_ns.c
index 7b497c2..9a2a114 100644
--- a/src/gb/gprs_ns.c
+++ b/src/gb/gprs_ns.c
@@ -238,8 +238,7 @@
/* before RESET procedure: BLOCKED and DEAD */
nsvc->state = NSE_S_BLOCKED;
nsvc->nsi = nsi;
-   nsvc->timer.cb = gprs_ns_timer_cb;
-   nsvc->timer.data = nsvc;
+   osmo_timer_setup(&nsvc->timer, gprs_ns_timer_cb, nsvc);
nsvc->ctrg = rate_ctr_group_alloc(nsvc, &nsvc_ctrg_desc, nsvci);
nsvc->statg = osmo_stat_item_group_alloc(nsvc, &nsvc_statg_desc, nsvci);
 
diff --git a/src/gsm/gsm0411_smc.c b/src/gsm/gsm0411_smc.c
index c44423d..4c08365 100644
--- a/src/gsm/gsm0411_smc.c
+++ b/src/gsm/gsm0411_smc.c
@@ -184,8 +184,7 @@
/* 5.2.3.1.2: enter MO-wait for CP-ACK */
/* 5.2.3.2.3: enter MT-wait for CP-ACK */
new_cp_state(inst, GSM411_CPS_WAIT_CP_ACK);
-   inst->cp_timer.data = inst;
-   inst->cp_timer.cb = cp_timer_expired;
+   osmo_timer_setup(&inst->cp_timer, cp_timer_expired, inst);
/* 5.3.2.1: Set Timer TC1A */
osmo_timer_schedule(&inst->cp_timer, inst->cp_tc1, 0);
/* clone cp_msg */
diff --git a/src/gsm/gsm0411_smr.c b/src/gsm/gsm0411_smr.c
index a1ee980..6d7fb8b 100644
--- a/src/gsm/gsm0411_smr.c
+++ b/src/gsm/gsm0411_smr.c
@@ -77,8 +77,7 @@
inst->rp_state = GSM411_RPS_IDLE;
inst->rl_recv = rl_recv;
inst->mn_send = mn_send;
-   inst->rp_timer.data = inst;
-   inst->rp_timer.cb = rp_timer_expired;
+   osmo_timer_setup(&inst->rp_timer, rp_timer_expired, inst);
 
LOGP(DLSMS, LOGL_INFO,
SMR_LOG_STR "instance created for %s.\n",
diff --git a/src/gsm/lapd_core.c b/src/gsm/lapd_core.c
index e0bbcab..c81b2a0 100644
--- a/src/gsm/lapd_core.c
+++ b/src/gsm/lapd_core.c
@@ -267,12 +267,10 @@
dl->n200 = 3;
dl->t200_sec = 1;
dl->t200_usec = 0;
-   dl->t200.data = dl;
-   dl->t200.cb = &lapd_t200_cb;
+   osmo_timer_setup(&dl->t200, lapd_t200_cb, dl);
dl->t203_sec = 10;
dl->t203_usec = 0;
-   dl->t203.data = dl;
-   dl->t203.cb = &lapd_t203_cb;
+   osmo_timer_setup(&dl->t203, lapd_t203_cb, dl);
dl->maxf = max

[PATCH] openbsc[master]: src: use osmo_timer_setup()

2017-05-10 Thread Pablo Neira Ayuso
/* Setup the timeout */
-   pending->timeout.data = pending;
-   pending->timeout.cb = pending_timeout_cb;
+   osmo_timer_setup(&pending->timeout, pending_timeout_cb,
+pending);
/* TODO: Make timeout configurable */
osmo_timer_schedule(&pending->timeout, 10, 0);
llist_add_tail(&pending->list_entry, &bsc->cmd_pending);
diff --git a/openbsc/src/osmo-bsc_nat/bsc_ussd.c 
b/openbsc/src/osmo-bsc_nat/bsc_ussd.c
index 2f68381..0ba6327 100644
--- a/openbsc/src/osmo-bsc_nat/bsc_ussd.c
+++ b/openbsc/src/osmo-bsc_nat/bsc_ussd.c
@@ -216,8 +216,7 @@
 {
struct msgb *msg;
 
-   conn->auth_timeout.data = conn;
-   conn->auth_timeout.cb = ussd_auth_cb;
+   osmo_timer_setup(&conn->auth_timeout, ussd_auth_cb, conn);
osmo_timer_schedule(&conn->auth_timeout, conn->nat->auth_timeout, 0);
 
msg = msgb_alloc_headroom(4096, 128, "auth message");
diff --git a/openbsc/src/osmo-nitb/bsc_hack.c b/openbsc/src/osmo-nitb/bsc_hack.c
index d8029cd..17b23b2 100644
--- a/openbsc/src/osmo-nitb/bsc_hack.c
+++ b/openbsc/src/osmo-nitb/bsc_hack.c
@@ -369,13 +369,12 @@
    printf("DB: Database prepared.\n");
 
/* setup the timer */
-   db_sync_timer.cb = db_sync_timer_cb;
-   db_sync_timer.data = NULL;
+   osmo_timer_setup(&db_sync_timer, db_sync_timer_cb, NULL);
if (use_db_counter)
osmo_timer_schedule(&db_sync_timer, DB_SYNC_INTERVAL);
 
-   bsc_gsmnet->subscr_expire_timer.cb = subscr_expire_cb;
-   bsc_gsmnet->subscr_expire_timer.data = NULL;
+   osmo_timer_setup(&bsc_gsmnet->subscr_expire_timer, subscr_expire_cb,
+NULL);
osmo_timer_schedule(&bsc_gsmnet->subscr_expire_timer, EXPIRE_INTERVAL);
 
signal(SIGINT, &signal_handler);
diff --git a/openbsc/src/utils/bs11_config.c b/openbsc/src/utils/bs11_config.c
index 8b05637..a0f3cb7 100644
--- a/openbsc/src/utils/bs11_config.c
+++ b/openbsc/src/utils/bs11_config.c
@@ -940,7 +940,7 @@
abis_nm_bs11_factory_logon(g_bts, 1);
//abis_nm_bs11_get_serno(g_bts);
 
-   status_timer.cb = status_timer_cb;
+   osmo_timer_setup(&status_timer, status_timer_cb, NULL);
 
while (1) {
if (osmo_select_main(0) < 0)

-- 
To view, visit https://gerrit.osmocom.org/2549
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ibcfd915688e97d370a88a83a7c95cbe16819
Gerrit-PatchSet: 1
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso 


openbsc[master]: libmsc: Map SMPP command status to GSM 04.11 cause

2017-05-14 Thread Pablo Neira Ayuso

Patch Set 1: Code-Review-1

(6 comments)

https://gerrit.osmocom.org/#/c/2589/1/openbsc/src/libmsc/smpp_openbsc.c
File openbsc/src/libmsc/smpp_openbsc.c:

Line 464: #define SMPP_TO_GSM411_MAX 4
> You're defining this value but not using it the array definition... (s.b.)
Right. Keith, if you use ARRAY_SIZE() then we can skip this macro definition.


Line 466: struct x {
> (no x here please)
Keith, just remove this x. Keep it:

struct {
  ...


Line 477:   .smpp_status_code = ESME_RSYSERR,
> could omit the explicit names, just { ESME_X, GSM411_X }, ...
This is C99 structure initialization... which is actually a good idea since it 
makes code more readable and maintainable. Please keep it there.


PS1, Line 481: .
Add indent here, and everywhere inside the curly braces.


Line 502:   }
> (wrong indent)
That's equivalent... Fair enough.


Line 574:gsm411_cause);
This fits into the line, so no need to break it.


-- 
To view, visit https://gerrit.osmocom.org/2589
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: I61fb2d9ef4f2d2eabdc49b53d9966ad328d15e51
Gerrit-PatchSet: 1
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Keith Whyte 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Neels Hofmeyr 
Gerrit-Reviewer: Pablo Neira Ayuso 
Gerrit-HasComments: Yes


  1   2   >