Index: smpp_pdu.c
===================================================================
RCS file: /home/cvs/gateway/gw/smsc/smpp_pdu.c,v
retrieving revision 1.28.2.2
diff -u -r1.28.2.2 smpp_pdu.c
--- smpp_pdu.c	24 Jan 2008 16:47:04 -0000	1.28.2.2
+++ smpp_pdu.c	26 Nov 2008 04:54:15 -0000
@@ -467,6 +467,13 @@
                         continue; \
                     } \
                     INTEGER(name, opt_len); \
+                    Octstr *tmp = octstr_create(#name); \
+                    struct smpp_tlv *tlv = dict_get(tlv_by_name, tmp); \
+                    if (tlv != NULL) {\
+                        Octstr *val = octstr_format("%ld", p->name); \
+                        dict_put(p->tlv, tmp, val); \
+                    } \
+                    octstr_destroy(tmp); \
                 } else
     #define TLV_NULTERMINATED(name, max_len) \
                 if (SMPP_##name == opt_tag) { \
@@ -477,6 +484,13 @@
                         continue; \
                     } \
                     copy_until_nul(#name, data_without_len, &pos, opt_len, &p->name); \
+                    Octstr *tmp = octstr_create(#name); \
+                    struct smpp_tlv *tlv = dict_get(tlv_by_name, tmp); \
+                    if (tlv != NULL) {\
+                        Octstr *val = octstr_duplicate(p->name); \
+                        dict_put(p->tlv, tmp, val); \
+                    } \
+                    octstr_destroy(tmp); \
                 } else
     #define TLV_OCTETS(name, min_len, max_len) \
                 if (SMPP_##name == opt_tag) { \
@@ -488,6 +502,13 @@
                         continue; \
                     } \
                     p->name = octstr_copy(data_without_len, pos, opt_len); \
+                    Octstr *tmp = octstr_create(#name); \
+                    struct smpp_tlv *tlv = dict_get(tlv_by_name, tmp); \
+                    if (tlv != NULL) {\
+                        Octstr *val = octstr_duplicate(p->name); \
+                        dict_put(p->tlv, tmp, val); \
+                    } \
+                    octstr_destroy(tmp); \
                     pos += opt_len; \
                 } else
     #define OPTIONAL_END \
