SMPP Data Coding Setter
Problem this snippet solves:
Hello, We have some platform that does not have flexible parameters for SMPP Data Coding (DC). When sending SMS from client platform to the SMS-C, it is important that the DC of the SMS text inside the SMPP PDU Field is supported by the SMS-C and defined in such a way that the SMSC is able to interpret it. Otherwise, all SMS may be dropped by the SMS-C server.
This iRule set the DataCoding to 0x00.
- SMSC default alphabet => DC=0x00 - CharSet:GSM - Length Max: 160
- LATIN-1 => DC=0x03 - CharSet: GSM - Length Max: 160
- UCS2 => DC=0x08 - CharSet: UCS2 - Length Max:70
Please consult the smpp v3.4 specification http://opensmpp.org/specs/smppv34_gsmumts_ig_v10.pdf
Code :
when CLIENT_ACCEPTED {
TCP::collect
}
when CLIENT_DATA {
while { [TCP::payload length] > 16 } {
#Get header
binary scan [TCP::payload] IH8IIa* length operation status sequence p
#log local0. "Request: $operation"
if { [TCP::payload length] < $length } {
TCP::collect $length
return
}
switch -glob $operation {
00000004 {
# If submit_sm
set all [TCP::payload length]
#log local0. "Request: $operation - $all"
set p [string range $p [expr [string first \x00 $p]+1] end]
binary scan $p ccA* sourTon sourNpi p
#log local0. "Request: $operation - $sourTon - $sourNpi"
set p [string range $p [expr [string first \x00 $p]+1] end]
binary scan $p ccA* destTon destNpi p
#log local0. "Request: $operation - $destTon - $destNpi"
set p [string range $p [expr [string first \x00 $p]+1] end]
binary scan $p ccccA* esm protID pFlag schedTime p
#log local0. "Request: $operation - $esm - $protID - $pFlag - $schedTime"
set p [string range $p [expr [string first \x00 $p]+1] end]
binary scan $p cccA* registDel replIfPres dataCoding p
#log local0. "Request: $operation - $registDel - $replIfPres - $dataCoding "
set lastindexDCex [string length $p]
#log local0. "Request: $operation - $lastindexDCex "
set indexDC [expr {$all - $lastindexDCex - 1}]
#log local0. "Request: $operation - $indexDC "
TCP::payload replace $indexDC 1 [binary format c 0]
}
}
TCP::release $length
TCP::notify request
}
TCP::collect
}Published Jan 16, 2018
Version 1.0JJMan
Nimbostratus
Joined March 12, 2021
JJMan
Nimbostratus
Joined March 12, 2021
No CommentsBe the first to comment
Help guide the future of your DevCentral Community!
What tools do you use to collaborate? (1min - anonymous)