Kannel Patch - LMT Latvia - Custom PDUThanks, I am impressed, you said you were no C programmer. However, these are just the definitions. Implementation means you have to create a flow for them. How does kannel respond when receiving such a PDU? Most likely it will panic - or just ignore it if it receives an unknown PDU, depending on its state. Have you tested them?
The big reason that noone wants to deal with them, is that without the architectural documents describing the flow of these PDUs, you cannot use them. Another reason is that you have to be able to test the portions of code as you build it, and noone has access. I have no doubt that meta-data works, and doesn't even need the PDU definitions, but what about the rest? I have the feeling that Illimar didn't have this in mind. BR, Nikos ----- Original Message ----- From: [email protected] To: [email protected] Sent: Friday, October 02, 2009 10:36 PM Subject: Kannel Patch - LMT Latvia - Custom PDU Patch for LMT Operator in LATVIA. This will add support for custom PDU into Kannel Description: LMT Operator has custom PDU in SMPP server answers: LMT_REPORT 0x00010000 LMT_REPORT_RESP 0x80010000 LMT_GEN_CODE 0x00010001 LMT_GEN_CODE_RESP 0x80010001 LMT_VERIFY_CODE 0x00010002 LMT_VERIFY_CODE_RESP 0x80010002 I wrote this patch for my self and every one. File: gw/smsc/smpp_pdu.def // // LMT // PDU(LMT_REPORT, 0x00010000, HEADER OPTIONAL_BEGIN TLV_OCTETS(lmt_created_ts, 14, 14) TLV_INTEGER(lmt_report_type, 1) TLV_OCTETS(lmt_message_id, 1, 65) TLV_OCTETS(lmt_subscriber_id, 1, 20) OPTIONAL_END ) PDU(LMT_REPORT_RESP, 0x80010000, HEADER ) PDU(LMT_GEN_CODE, 0x00010001, HEADER INTEGER(source_addr_ton, 1) NULTERMINATED(source_addr, 21) INTEGER(dest_addr_ton, 1) NULTERMINATED(destination_addr, 21) NULTERMINATED(validity_period, 17) INTEGER(data_coding, 1) OPTIONAL_BEGIN TLV_OCTETS(message_payload, 0, 65536) OPTIONAL_END ) PDU(LMT_GEN_CODE_RESP, 0x80010001, HEADER NULTERMINATED(message_id, 65) ) PDU(LMT_VERIFY_CODE, 0x00010002, HEADER OPTIONAL_BEGIN TLV_OCTETS(message_payload, 0, 65536) OPTIONAL_END ) PDU(LMT_VERIFY_CODE_RESP, 0x80010002, HEADER INTEGER(source_addr_ton, 1) NULTERMINATED(source_addr, 21) NULTERMINATED(message_id, 65) OPTIONAL_BEGIN TLV_OCTETS(lmt_subscriber_id, 1, 20) OPTIONAL_END ) // // END OF LMT // File: gw/smsc/smpp_pdu_opt.def // // LMT // #define SMPP_lmt_created_ts 0x1500 #define SMPP_lmt_subscriber_id 0x1501 #define SMPP_lmt_response_till 0x1502 #define SMPP_lmt_tariff_class 0x1503 #define SMPP_lmt_more_messages_to_send 0x1504 #define SMPP_lmt_service_desc 0x1505 #define SMPP_lmt_message_id 0x1506 #define SMPP_lmt_report_type 0x1508 #define SMPP_lmt_transaction_id 0x1509 #define SMPP_lmt_addr 0x1510 #define SMPP_lmt_addr_ton 0x1511 // // END OF LMT // LMT also have big amount of TLV variables ( for kannel.conf ) group = smpp-tlv name = lmt_created_ts tag = 0x1500 type = octetstring length = 14 smsc-id = LMT group = smpp-tlv name = lmt_subscriber_id tag = 0x1501 type = octetstring length = 20 smsc-id = LMT group = smpp-tlv name = lmt_response_till tag = 0x1502 type = octetstring length = 20 smsc-id = LMT group = smpp-tlv name = lmt_tariff_class tag = 0x1503 type = integer length = 2 smsc-id = LMT group = smpp-tlv name = lmt_more_messages_to_send tag = 0x1504 type = integer length = 1 smsc-id = LMT group = smpp-tlv name = lmt_service_desc tag = 0x1505 type = octetstring length = 40 smsc-id = LMT group = smpp-tlv name = lmt_message_id tag = 0x1506 type = octetstring length = 65 smsc-id = LMT group = smpp-tlv name = lmt_report_type tag = 0x1508 type = integer length = 1 smsc-id = LMT group = smpp-tlv name = lmt_transaction_id tag = 0x1509 type = integer length = 4 smsc-id = LMT group = smpp-tlv name = lmt_addr tag = 0x1510 type = octetstring length = 20 smsc-id = LMT group = smpp-tlv name = lmt_addr_ton tag = 0x1511 type = integer length = 1 smsc-id = LMT p.s. I wrote this, because no one does, and only one person has his own patch: Illimar Reinbusch <illimar [at] telejazz.com> , and he told me that he will only sell it. So fuck off asshole!
