summaryrefslogtreecommitdiff
path: root/pjsip/src
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2006-09-14 16:07:49 +0000
committerBenny Prijono <bennylp@teluu.com>2006-09-14 16:07:49 +0000
commite015ebe064c6f5120ef2af2b73ce52796a06f790 (patch)
tree0b3ed8be366ec88d571195568bb2aa6002f2e18b /pjsip/src
parentf5ee360b0b649ef24fe671b6e37006badce0634d (diff)
Added pjsip_transport_register_type() API to register new transport type.
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@720 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip/src')
-rw-r--r--pjsip/src/pjsip/sip_transport.c41
1 files changed, 39 insertions, 2 deletions
diff --git a/pjsip/src/pjsip/sip_transport.c b/pjsip/src/pjsip/sip_transport.c
index e18a9048..909632e8 100644
--- a/pjsip/src/pjsip/sip_transport.c
+++ b/pjsip/src/pjsip/sip_transport.c
@@ -97,13 +97,14 @@ struct transport_key
/*
* Transport names.
*/
-const struct
+struct
{
pjsip_transport_type_e type;
pj_uint16_t port;
pj_str_t name;
unsigned flag;
-} transport_names[] =
+ char name_buf[16];
+} transport_names[16] =
{
{ PJSIP_TRANSPORT_UNSPECIFIED, 0, {"Unspecified", 11}, 0},
{ PJSIP_TRANSPORT_UDP, 5060, {"UDP", 3}, PJSIP_TRANSPORT_DATAGRAM},
@@ -116,6 +117,42 @@ const struct
/*
+ * Register new transport type to PJSIP.
+ */
+PJ_DECL(pj_status_t) pjsip_transport_register_type(unsigned tp_flag,
+ const char *tp_name,
+ int def_port,
+ int *p_tp_type)
+{
+ unsigned i;
+
+ PJ_ASSERT_RETURN(tp_flag && tp_name && def_port, PJ_EINVAL);
+ PJ_ASSERT_RETURN(pj_ansi_strlen(tp_name) <
+ PJ_ARRAY_SIZE(transport_names[0].name_buf),
+ PJ_ENAMETOOLONG);
+
+ for (i=1; i<PJ_ARRAY_SIZE(transport_names); ++i) {
+ if (transport_names[i].type == 0)
+ break;
+ }
+
+ if (i == PJ_ARRAY_SIZE(transport_names))
+ return PJ_ETOOMANY;
+
+ transport_names[i].type = (pjsip_transport_type_e)i;
+ transport_names[i].port = (pj_uint16_t)def_port;
+ pj_ansi_strcpy(transport_names[i].name_buf, tp_name);
+ transport_names[i].name = pj_str(transport_names[i].name_buf);
+ transport_names[i].flag = tp_flag;
+
+ if (p_tp_type)
+ *p_tp_type = i;
+
+ return PJ_SUCCESS;
+}
+
+
+/*
* Get transport type from name.
*/
PJ_DEF(pjsip_transport_type_e)