Index: smppbox.c
===================================================================
--- smppbox.c	(revision 17)
+++ smppbox.c	(working copy)
@@ -77,6 +77,7 @@
 #include "gw/sms.h"
 #include "gw/dlr.h"
 #include "gw/heartbeat.h"
+#include "gw/meta_data.h"
 
 /* our config */
 static Cfg *cfg;
@@ -782,6 +783,7 @@
 	else {
 		pdu2->u.deliver_sm.short_message = octstr_duplicate(msg2->sms.msgdata);
 	}
+	pdu2->u.deliver_sm.tlv = meta_data_get_values(msg->sms.meta_data, "smpp");
 	gwlist_append(pdulist, pdu2);
 	msg_destroy(msg2);
     }
@@ -957,6 +959,10 @@
 	msg->sms.sms_type = report_mo;
     }
 
+    if (msg->sms.meta_data == NULL)
+        msg->sms.meta_data = octstr_create("");
+    meta_data_set_values(msg->sms.meta_data, pdu->u.submit_sm.tlv, "smpp", 1);
+
     return msg;
 
 error:
@@ -1103,6 +1109,10 @@
             }
     }
 
+    if (msg->sms.meta_data == NULL)
+        msg->sms.meta_data = octstr_create("");
+    meta_data_set_values(msg->sms.meta_data, pdu->u.data_sm.tlv, "smpp", 1);
+
     return msg;
 
 error:
@@ -1811,6 +1821,10 @@
 	/* init dlr storage */
 	dlr_init(cfg);
 
+	/* initialize low level PDUs */
+	if (smpp_pdu_init(cfg) == -1)
+    	    panic(0, "Connot start with PDU init failed.");
+
 	/*
 	 * first we take the port number in bearerbox and other values from the
 	 * smppbox group in configuration file
