[PATCH] this patch allows to specify our port to SMPP smsc.

Vincent CHAVANIS <[email protected]>
Newsgroups gmane.comp.mobile.kannel.devel
Message-ID <[email protected]>
Ok this patch have a year old
But now with the missing userguide ! :-)

comments please

regards

Vincent
SMPP_ourport_patch.txt (text/plain, 5.8 KB)
diff -rauw -x CVS -x '*.cvsignore' /gateway-cvs/gw/smsc/smsc_smpp.c /gateway/gw/smsc/smsc_smpp.c
--- /gateway-cvs/gw/smsc/smsc_smpp.c    2013-10-11 10:50:35.615918588 +0200
+++ /gateway/gw/smsc/smsc_smpp.c        2013-10-18 15:37:41.559002213 +0200
@@ -149,6 +149,8 @@
     int source_addr_npi;
     int dest_addr_ton;
     int dest_addr_npi;
+    int our_port;
+    int our_receiver_port;
     long bind_addr_ton;
     long bind_addr_npi;
     int transmit_port;
@@ -213,7 +215,7 @@
 
 
 static SMPP *smpp_create(SMSCConn *conn, Octstr *host, int transmit_port,
-                         int receive_port, Octstr *system_type,
+                         int receive_port, int our_port, int our_receiver_port, Octstr *system_type,
                          Octstr *username, Octstr *password,
                          Octstr *address_range,
                          int source_addr_ton, int source_addr_npi,
@@ -238,6 +240,8 @@
     counter_increase(smpp->message_id_counter);
     smpp->host = octstr_duplicate(host);
     smpp->system_type = octstr_duplicate(system_type);
+    smpp->our_port = our_port;
+    smpp->our_receiver_port = our_receiver_port;
     smpp->username = octstr_duplicate(username);
     smpp->password = octstr_duplicate(password);
     smpp->address_range = octstr_duplicate(address_range);
@@ -736,7 +740,7 @@
         case 0x00: /* default SMSC alphabet */
             /*
              * try to convert from something interesting if specified so
-             * unless it was specified binary, ie. UDH indicator was detected
+             * unless it was specified binary, i.e. UDH indicator was detected
              */
             if (smpp->alt_charset && msg->sms.coding != DC_8BIT) {
                 if (charset_convert(msg->sms.msgdata, octstr_get_cstr(smpp->alt_charset), SMPP_DEFAULT_CHARSET) != 0)
@@ -1189,7 +1193,12 @@
         conn = conn_open_ssl(smpp->host, smpp->transmit_port, smpp->ssl_client_certkey_file, smpp->conn->our_host);
     else
 #endif
+
+    if (smpp->our_port > 0)
+        conn = conn_open_tcp_with_port(smpp->host, smpp->transmit_port, smpp->our_port, smpp->conn->our_host );
+    else
         conn = conn_open_tcp(smpp->host, smpp->transmit_port, smpp->conn->our_host);
+
     if (conn == NULL) {
         error(0, "SMPP[%s]: Couldn't connect to server.",
               octstr_get_cstr(smpp->conn->id));
@@ -1237,7 +1246,12 @@
         conn = conn_open_ssl(smpp->host, smpp->transmit_port, smpp->ssl_client_certkey_file, smpp->conn->our_host);
     else
 #endif
+
+    if (smpp->our_port > 0)
+       conn = conn_open_tcp_with_port(smpp->host, smpp->transmit_port, smpp->our_port, smpp->conn->our_host );  
+    else
         conn = conn_open_tcp(smpp->host, smpp->transmit_port, smpp->conn->our_host);
+
     if (conn == NULL) {
        error(0, "SMPP[%s]: Couldn't connect to server.",
              octstr_get_cstr(smpp->conn->id));
@@ -1283,7 +1297,12 @@
         conn = conn_open_ssl(smpp->host, smpp->receive_port, smpp->ssl_client_certkey_file, smpp->conn->our_host);
     else
 #endif
+
+    if (smpp->our_receiver_port > 0)
+        conn = conn_open_tcp_with_port(smpp->host, smpp->receive_port, smpp->our_receiver_port, smpp->conn->our_host);
+    else
         conn = conn_open_tcp(smpp->host, smpp->receive_port, smpp->conn->our_host);
+
     if (conn == NULL) {
         error(0, "SMPP[%s]: Couldn't connect to server.",
               octstr_get_cstr(smpp->conn->id));
@@ -2322,6 +2341,8 @@
     long source_addr_npi;
     long dest_addr_ton;
     long dest_addr_npi;
+    long our_port;
+    long our_receiver_port;
     Octstr *my_number;
     Octstr *service_type;
     SMPP *smpp;
@@ -2349,6 +2370,12 @@
         port = 0;
     if (cfg_get_integer(&receive_port, grp, octstr_imm("receive-port")) == -1)
         receive_port = 0;
+
+    if (cfg_get_integer(&our_port, grp, octstr_imm("our-port")) == -1)
+        our_port = 0;
+    if (cfg_get_integer(&our_receiver_port, grp, octstr_imm("our-receiver-port")) == -1)
+        our_receiver_port = 0;
+
     cfg_get_bool(&transceiver_mode, grp, octstr_imm("transceiver-mode"));
     username = cfg_get(grp, octstr_imm("smsc-username"));
     password = cfg_get(grp, octstr_imm("smsc-password"));
@@ -2483,7 +2510,7 @@
         esm_class = ESM_CLASS_SUBMIT_STORE_AND_FORWARD_MODE;
     }
 
-    smpp = smpp_create(conn, host, port, receive_port, system_type,
+    smpp = smpp_create(conn, host, port, receive_port, our_port, our_receiver_port, system_type,
                        username, password, address_range,
                        source_addr_ton, source_addr_npi, dest_addr_ton,
                        dest_addr_npi, enquire_link_interval,

diff -rauw -x CVS -x '*.cvsignore' /gateway-cvs/gwlib/cfg.def /gateway/gwlib/cfg.def
--- /gateway-cvs/gwlib/cfg.def  2013-09-04 11:18:47.547169157 +0200
+++ /gateway/gwlib/cfg.def      2013-10-18 17:10:46.153000795 +0200
@@ -337,6 +337,7 @@
     OCTSTR(validityperiod)
     OCTSTR(our-port)
     OCTSTR(receive-port)
+    OCTSTR(our-receiver-port)
     OCTSTR(connect-allow-ip)
     OCTSTR(system-id)
     OCTSTR(system-type)

diff -rauw -x CVS -x '*.cvsignore' /gateway-cvs/doc/userguide/userguide.xml /gateway/doc/userguide/userguide.xml
--- /gateway-cvs/doc/userguide/userguide.xml    2013-09-04 11:18:47.678169158 +0200
+++ /gateway/doc/userguide/userguide.xml        2013-10-21 12:41:20.035861902 +0200
@@ -3144,6 +3144,13 @@
      end. TCP/IP connection only.
      </entry></row>
 
+   <row><entry><literal>our-receiver-port</literal></entry>
+     <entry><literal>port-number</literal></entry>
+     <entry valign="bottom">
+       Optional port number allowing to specify our port when connecting
+       an SMSC. TCP/IP connection only.
+     </entry></row>
+
    <row><entry><literal>receive-port</literal></entry>
      <entry><literal>port-number</literal></entry>
      <entry valign="bottom">
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.