The config group for smsc looks like this:

group = smsc
smsc = smpp
host = "xxxxxx"
port = "xxxx"
smsc-id = "xxxxx"
throughput = 40
denied-smsc-id = "*"
allowed-smsc-id = "xxxxx"
smsc-username = "xxxxxx"
smsc-password = "xxxxxxx"
system-type = "xxxxxxx"
connect-allow-ip = "*.*.*.*"
transceiver-mode = true
reconnect-delay = 10
max-pending-submits=5
# validityperiod=720
validityperiod=60
# connection-timeout = 0
esm_class=3 # default 0

The "esm_class" define the ESM CLASS value, if not present, will assume the default value 0x00000000. I have working this perfectly..

BEGIN DIFF
******************************************************************************

diff -ruh /Users/alvaro/Desktop/gateway-1.4.3/gw/smsc/smsc_smpp.c / Users/alvaro/Desktop/gateway-1.4.3-0.3/gw/smsc/smsc_smpp.c --- /Users/alvaro/Desktop/gateway-1.4.3/gw/smsc/smsc_smpp.c 2009-01-12 13:46:50.000000000 -0300 +++ /Users/alvaro/Desktop/gateway-1.4.3-0.3/gw/smsc/smsc_smpp.c 2009-03-18 15:16:56.000000000 -0400
@@ -165,6 +165,7 @@
     long connection_timeout;
     long wait_ack;
     int wait_ack_action;
+       int esm_class_default;
     SMSCConn *conn;
 } SMPP;

@@ -217,7 +218,7 @@
                          Octstr *my_number, int smpp_msg_id_type,
int autodetect_addr, Octstr *alt_charset, Octstr *alt_addr_charset, Octstr *service_type, long connection_timeout,
-                         long wait_ack, int wait_ack_action)
+ long wait_ack, int wait_ack_action, int esm_class_default)
 {
     SMPP *smpp;

@@ -258,6 +259,7 @@
     smpp->connection_timeout = connection_timeout;
     smpp->wait_ack = wait_ack;
     smpp->wait_ack_action = wait_ack_action;
+       smpp->esm_class_default = esm_class_default;
     smpp->bind_addr_ton = 0;
     smpp->bind_addr_npi = 0;

@@ -846,9 +848,13 @@

     /*
      * set the esm_class field
-     * default is store and forward, plus udh and rpi if requested
-     */
- pdu->u.submit_sm.esm_class = ESM_CLASS_SUBMIT_STORE_AND_FORWARD_MODE;
+        * Alvaro Talavera - [email protected]
+        * (original)
+ * pdu->u.submit_sm.esm_class = ESM_CLASS_SUBMIT_STORE_AND_FORWARD_MODE;
+        */
+       
+ debug("bb.sms.smpp",0,"esm_class set in: %i", smpp- >esm_class_default);
+       pdu->u.submit_sm.esm_class = smpp->esm_class_default;
     if (octstr_len(msg->sms.udhdata))
         pdu->u.submit_sm.esm_class = pdu->u.submit_sm.esm_class |
             ESM_CLASS_SUBMIT_UDH_INDICATOR;
@@ -2007,6 +2013,7 @@
     Octstr *alt_charset;
     Octstr *alt_addr_charset;
     long connection_timeout, wait_ack, wait_ack_action;
+    int esm_class_default;

     my_number = alt_addr_charset = alt_charset = NULL;
     transceiver_mode = 0;
@@ -2138,6 +2145,10 @@

     if (wait_ack_action > 0x03 || wait_ack_action < 0)
panic(0, "SMPP: Invalid wait-ack-expire directive in configuration.");
+       
+       /* check for esm_class */
+ if (cfg_get_integer(&esm_class_default, grp, octstr_imm("esm_class")) == -1)
+        esm_class_default = ESM_CLASS_SUBMIT_DEFAULT_SMSC_MODE;

     smpp = smpp_create(conn, host, port, receive_port, system_type,
                       username, password, address_range,
@@ -2145,7 +2156,7 @@
                        dest_addr_npi, enquire_link_interval,
max_pending_submits, version, priority, validity, my_number, smpp_msg_id_type, autodetect_addr, alt_charset, alt_addr_charset, - service_type, connection_timeout, wait_ack, wait_ack_action); + service_type, connection_timeout, wait_ack, wait_ack_action, esm_class_default);

cfg_get_integer(&smpp->bind_addr_ton, grp, octstr_imm("bind-addr- ton")); cfg_get_integer(&smpp->bind_addr_npi, grp, octstr_imm("bind-addr- npi"));


diff -ruh /Users/alvaro/Desktop/gateway-1.4.3/gwlib/cfg.def /Users/ alvaro/Desktop/gateway-1.4.3-0.3/gwlib/cfg.def --- /Users/alvaro/Desktop/gateway-1.4.3/gwlib/cfg.def 2009-01-12 13:46:55.000000000 -0300 +++ /Users/alvaro/Desktop/gateway-1.4.3-0.3/gwlib/cfg.def 2009-03-18 11:55:31.000000000 -0400
@@ -342,6 +342,7 @@
     OCTSTR(flow-control)
     OCTSTR(wait-ack)
     OCTSTR(wait-ack-expire)
+    OCTSTR(esm_class)
     OCTSTR(no-sender)
     OCTSTR(no-coding)
     OCTSTR(window)


******************************************************************************
END DIFF

Reply via email to