Re: [PATCH] SMPP Optional params

2003-03-04 Thread Stipe Tolj
Hi Nisan,

could you please attach the patch files to the mail?! Text formating
breaks in some cases when you simply inline the patch file to the mail
body.

Thanks in advance.

Stipe

[EMAIL PROTECTED]
---
Wapme Systems AG

Vogelsanger Weg 80
40470 Düsseldorf

Tel: +49-211-74845-0
Fax: +49-211-74845-299

E-Mail: [EMAIL PROTECTED]
Internet: http://www.wapme-systems.de
---
wapme.net - wherever you are



[PATCH] SMPP Optional params

2003-03-03 Thread Nisan Bloch
Hi All

A small patch to get the values of the optional SMPP params.
Added: smpp_pdu_get_opt(SMPP_PDU *pdu, unsigned long opt_tag);
Nisan

--- ../cvs/gateway/gw/smsc/smpp_pdu.h   Tue Mar  4 08:18:51 2003
+++ ../gateway-click/gw/smsc/smpp_pdu.h Tue Mar  4 07:49:10 2003
@@ -95,6 +95,7 @@
 long smpp_pdu_read_len(Connection *conn);
 Octstr *smpp_pdu_read_data(Connection *conn, long len);
+Octstr *smpp_pdu_get_opt(SMPP_PDU *pdu, unsigned long opt_tag);
 #endif

--- ../cvs/gateway/gw/smsc/smpp_pdu.c   Tue Mar  4 08:18:19 2003
+++ ../gateway-click/gw/smsc/smpp_pdu.c Tue Mar  4 07:48:22 2003
@@ -275,6 +275,50 @@
 return pdu;
 }
+Octstr *smpp_pdu_get_opt(SMPP_PDU *pdu, unsigned long opt_tag)
+{
+
+Octstr *ret=NULL;
+
+debug("sms.smpp", 0, "SMPP PDU %p get_opt:", (void *) pdu);
+debug("sms.smpp", 0, "  type_name: %s", pdu->type_name);
+
+switch (pdu->type) {
+#define OPTIONAL_BEGIN(num_expected) \
+if (p->optional_parameters != NULL) { \
+Octstr *key = NULL, *tag_val = NULL;
+unsigned long id;
+#define TLV(tag_id, min_len, max_len) \
+id = tag_id; \
+if (opt_tag == id) \
+{ \
+key = octstr_create_from_data((char*)&id, 2); \
+tag_val = dict_get(p->optional_parameters, key); \
+if (tag_val != NULL) \
+ret = octstr_duplicate(tag_val); \
+else \
+ret = NULL; \
+octstr_destroy(key); \
+}
+#define OPTIONAL_END \
+}
+#define INTEGER(name, octets)
+#define NULTERMINATED(name, max_octets)
+#define OCTETS(name, field_giving_octets)
+
+#define PDU(name, id, fields) \
+case id: { struct name *p = &pdu->u.name; fields } break;
+#include "smpp_pdu.def"
+default:
+break;
+
+}
+
+debug("sms.smpp", 0, "SMPP PDU get_opt ends.");
+return ret;
+
+}
+
 void smpp_pdu_dump(SMPP_PDU *pdu)
 {