diff -Nru gateway-1.4.1.orig/gw/bb_udp.c gateway-1.4.1/gw/bb_udp.c
--- gateway-1.4.1.orig/gw/bb_udp.c 2005-02-11 17:35:48.000000000 +0200
+++ gateway-1.4.1/gw/bb_udp.c 2006-11-16 00:28:56.346802750 +0200
@@ -78,7 +78,7 @@
#include "gwlib/gwlib.h"
#include "msg.h"
#include "bearerbox.h"
-
+#include "custports.h"
/* passed from bearerbox core */
extern volatile sig_atomic_t bb_status;
@@ -352,13 +352,13 @@
while (gwlist_len(ifs) > 0) {
iface = gwlist_extract_first(ifs);
info(0, "Adding interface %s", octstr_get_cstr(iface));
- add_service(9200, octstr_get_cstr(iface)); /* wsp */
- add_service(9201, octstr_get_cstr(iface)); /* wsp/wtp */
+ add_service(port_wsp, octstr_get_cstr(iface)); /* wsp */
+ add_service(port_wtp, octstr_get_cstr(iface)); /* wsp/wtp */
#ifdef HAVE_WTLS_OPENSSL
if (allow_wtls) {
- add_service(9202, octstr_get_cstr(iface)); /* wsp/wtls */
- add_service(9203, octstr_get_cstr(iface)); /* wsp/wtp/wtls */
+ add_service(port_wsps, octstr_get_cstr(iface)); /* wsp/wtls */
+ add_service(port_wtps, octstr_get_cstr(iface)); /* wsp/wtp/wtls */
}
#else
if (allow_wtls)
diff -Nru gateway-1.4.1.orig/gw/bearerbox.c gateway-1.4.1/gw/bearerbox.c
--- gateway-1.4.1.orig/gw/bearerbox.c 2006-05-09 08:44:31.000000000 +0300
+++ gateway-1.4.1/gw/bearerbox.c 2006-11-16 00:28:56.346802750 +0200
@@ -77,6 +77,7 @@
#include "bearerbox.h"
#include "shared.h"
#include "dlr.h"
+#include "custports.h"
/* global variables; included to other modules as needed */
@@ -280,7 +281,6 @@
{
static int started = 0;
if (started) return 0;
-
udp_start(cfg);
start_wap(cfg);
@@ -353,6 +353,7 @@
int ssl_enabled = 0;
#endif /* HAVE_LIBSSL */
+ ReadCustomPorts(cfg);
/* defaults: use localtime and markers for access-log */
lf = m = 1;
diff -Nru gateway-1.4.1.orig/gw/custports.c gateway-1.4.1/gw/custports.c
--- gateway-1.4.1.orig/gw/custports.c 1970-01-01 02:00:00.000000000 +0200
+++ gateway-1.4.1/gw/custports.c 2006-11-16 00:28:56.346802750 +0200
@@ -0,0 +1,88 @@
+/* ====================================================================
+ * The Kannel Software License, Version 1.0
+ *
+ * Copyright (c) 2001-2004 Kannel Group
+ * Copyright (c) 1998-2001 WapIT Ltd.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Kannel Group (http://www.kannel.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Kannel" and "Kannel Group" must not be used to
+ * endorse or promote products derived from this software without
+ * prior written permission. For written permission, please
+ * contact org@kannel.org.
+ *
+ * 5. Products derived from this software may not be called "Kannel",
+ * nor may "Kannel" appear in their name, without prior written
+ * permission of the Kannel Group.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE KANNEL GROUP OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+ * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+ * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Kannel Group. For more information on
+ * the Kannel Group, please see .
+ *
+ * Portions of this software are based upon software originally written at
+ * WapIT Ltd., Helsinki, Finland for the Kannel project.
+ */
+
+/*
+ * gw/custports.c
+ *
+ * Implementation of reading custom UDP ports used by wapbox
+ *
+ * Lubor Kolar , 14.03.2006
+ */
+
+#include
+
+long port_wsp = 9200; // connectionless default
+long port_wtp = 9201; // connection-oriented default
+long port_wsps = 9202; // connectionless secure default
+long port_wtps = 9203; // connection-oriented secure
+
+
+void ReadCustomPorts(Cfg *config)
+{
+ CfgGroup *grp;
+ grp = cfg_get_single_group(config, octstr_imm("wapbox"));
+ if(grp == NULL)
+ return;
+
+ if(cfg_get_integer(&port_wsp, grp, octstr_imm("wsp-port")) != -1)
+ info(0, "Using custom WSP port %ld", port_wsp);
+ if(cfg_get_integer(&port_wtp, grp, octstr_imm("wtp-port")) != -1)
+ info(0, "Using custom WSP/WTP port %ld", port_wtp);
+ if(cfg_get_integer(&port_wsps, grp, octstr_imm("wsps-port")) != -1)
+ info(0, "Using custom WSP/WTLS port %ld", port_wsps);
+ if(cfg_get_integer(&port_wtps, grp, octstr_imm("wtps-port")) != -1)
+ info(0, "Using custom WSP/WTP/WTLS port %ld", port_wtps);
+}
diff -Nru gateway-1.4.1.orig/gw/custports.h gateway-1.4.1/gw/custports.h
--- gateway-1.4.1.orig/gw/custports.h 1970-01-01 02:00:00.000000000 +0200
+++ gateway-1.4.1/gw/custports.h 2006-11-16 00:28:56.346802750 +0200
@@ -0,0 +1,77 @@
+/* ====================================================================
+ * The Kannel Software License, Version 1.0
+ *
+ * Copyright (c) 2001-2004 Kannel Group
+ * Copyright (c) 1998-2001 WapIT Ltd.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Kannel Group (http://www.kannel.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Kannel" and "Kannel Group" must not be used to
+ * endorse or promote products derived from this software without
+ * prior written permission. For written permission, please
+ * contact org@kannel.org.
+ *
+ * 5. Products derived from this software may not be called "Kannel",
+ * nor may "Kannel" appear in their name, without prior written
+ * permission of the Kannel Group.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE KANNEL GROUP OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+ * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
+ * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+ * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Kannel Group. For more information on
+ * the Kannel Group, please see .
+ *
+ * Portions of this software are based upon software originally written at
+ * WapIT Ltd., Helsinki, Finland for the Kannel project.
+ */
+
+/*
+ * gw/custports.h
+ *
+ * Implementation of wapbox custom UDP ports)
+ *
+ * Lubor Kolar , 14.03.2006
+ */
+
+#ifndef CUSTPORTS_H
+#define CUSTPORTS_H
+
+#include "gwlib/gwlib.h"
+
+extern long port_wsp; // connectionless
+extern long port_wtp; // connection-oriented
+extern long port_wsps; // connectionless secure
+extern long port_wtps; // connection-oriented secure
+
+void ReadCustomPorts(Cfg *config);
+#endif /* CUSTPORTS_H */
+
diff -Nru gateway-1.4.1.orig/gw/wapbox.c gateway-1.4.1/gw/wapbox.c
--- gateway-1.4.1.orig/gw/wapbox.c 2006-03-28 15:00:19.000000000 +0300
+++ gateway-1.4.1/gw/wapbox.c 2006-11-16 00:28:56.350803000 +0200
@@ -84,17 +84,11 @@
#include "gwlib/pki.h"
#endif
#include "radius/radius_acct.h"
+#include "custports.h"
static void config_reload(int reload);
static long logfilelevel=-1;
-enum {
- CONNECTIONLESS_PORT = 9200,
- CONNECTION_ORIENTED_PORT = 9201,
- WTLS_CONNECTIONLESS_PORT = 9202,
- WTLS_CONNECTION_ORIENTED_PORT = 9203
-};
-
enum { DEFAULT_TIMER_FREQ = 1};
static Octstr *bearerbox_host;
@@ -131,6 +125,8 @@
cfg_dump(cfg);
+ ReadCustomPorts(cfg);
+
/*
* Extract info from the core group.
*/
@@ -772,9 +768,9 @@
* XXXX here should be suspend/resume, add RSN
*/
} else if (msg_type(msg) == wdp_datagram) {
- switch (msg->wdp_datagram.destination_port) {
- case CONNECTIONLESS_PORT:
- case CONNECTION_ORIENTED_PORT:
+ if(msg->wdp_datagram.destination_port == port_wsp
+ || msg->wdp_datagram.destination_port == port_wtp)
+ {
dgram = wap_event_create(T_DUnitdata_Ind);
dgram->u.T_DUnitdata_Ind.addr_tuple = wap_addr_tuple_create(
msg->wdp_datagram.source_address,
@@ -785,19 +781,22 @@
msg->wdp_datagram.user_data = NULL;
wap_dispatch_datagram(dgram);
- break;
- case WTLS_CONNECTIONLESS_PORT:
- case WTLS_CONNECTION_ORIENTED_PORT:
+ }
+ else
+ if(msg->wdp_datagram.destination_port == port_wsps
+ || msg->wdp_datagram.destination_port == port_wtps)
+ {
#if (HAVE_WTLS_OPENSSL)
dgram = wtls_unpack_wdp_datagram(msg);
if (dgram != NULL)
wtls_dispatch_event(dgram);
#endif
- break;
- default:
+ }
+ else
+ {
panic(0,"Bad packet received! This shouldn't happen!");
break;
- }
+ }
} else {
warning(0, "Received other message than wdp/admin, ignoring!");
}
diff -Nru gateway-1.4.1.orig/gw/wap_push_ppg.c gateway-1.4.1/gw/wap_push_ppg.c
--- gateway-1.4.1.orig/gw/wap_push_ppg.c 2005-10-06 15:48:26.000000000 +0300
+++ gateway-1.4.1/gw/wap_push_ppg.c 2006-11-16 00:28:56.350803000 +0200
@@ -88,6 +88,7 @@
#include "wap_push_pap_compiler.h"
#include "wap_push_pap_mime.h"
#include "wap_push_ppg_pushuser.h"
+#include "custports.h"
enum {
TIME_EXPIRED = 0,
@@ -1768,10 +1769,10 @@
if (!cless_accepted) {
cliport = CONNECTED_CLIPORT;
- servport = CONNECTED_SERVPORT;
+ servport = port_wtp;
} else {
cliport = CONNECTIONLESS_PUSH_CLIPORT;
- servport = CONNECTIONLESS_SERVPORT;
+ servport = port_wsp;
}
address_type = (**e).u.Push_Message.address_type;
diff -Nru gateway-1.4.1.orig/gw/wap_push_ppg.h gateway-1.4.1/gw/wap_push_ppg.h
--- gateway-1.4.1.orig/gw/wap_push_ppg.h 2005-02-11 17:35:48.000000000 +0200
+++ gateway-1.4.1/gw/wap_push_ppg.h 2006-11-16 00:28:56.350803000 +0200
@@ -167,9 +167,7 @@
*/
enum {
CONNECTIONLESS_PUSH_CLIPORT = 2948,
- CONNECTIONLESS_SERVPORT = 9200,
CONNECTED_CLIPORT = 9209,
- CONNECTED_SERVPORT = 9201
};
struct PPGSessionMachine {
diff -Nru gateway-1.4.1.orig/gwlib/cfg.def gateway-1.4.1/gwlib/cfg.def
--- gateway-1.4.1.orig/gwlib/cfg.def 2006-08-28 15:06:13.000000000 +0300
+++ gateway-1.4.1/gwlib/cfg.def 2006-11-16 00:30:55.042220750 +0200
@@ -153,6 +153,10 @@
OCTSTR(concatenation)
OCTSTR(max-messages)
OCTSTR(wml-strict)
+ OCTSTR(wsp-port)
+ OCTSTR(wtp-port)
+ OCTSTR(wsps-port)
+ OCTSTR(wtps-port)
)