That's clear. So what does Integer mean here? Network byte order? Or the other way around. In case the field is defined as C-string, then I presume printable ascii character. But maybe I am wrong here. This because, reading the specs they mean the first "Integer" is one octet and the second "Integer" two octets.
But still (also according to your own reasoning) I think Alex is right. == Rene -----Original Message----- From: [email protected] [mailto:[email protected]] On Behalf Of Victor Luchitz Sent: Wednesday, 04 August, 2010 17:00 To: Kannel Devel Subject: Re: Re: SMPP's network_error_code TLV The term "octet" is used to avoid usage of the vague term "byte", which is architecture/machine dependent. One can define "byte" as 5 oits and that'd be perfectly valid. What I'm trying to say is that "octet" != "printable ascii character" 2010/8/4 Rene Kluwen <[email protected]>: > Victor, > > I think the "Integer" types that you write below are an error in de SMPP > specification. > Even you wrote yourself (see below): " single-octet network code and > two-octets error code". > > So it should contain (copied from specs): > > The _first octet_ indicates the network type. > The following values are defined: > 1 = ANSI-136 > 2 = IS-95 > 3 = GSM > 4 = Reserved > All other values reserved. > The remaining _two octets_ specify the actual > network error code appropriate to the > network type. > > So I tend to agree with Alex more. > > Now what strikes me is that the value is defines as a C-string. Which leaves > no space anymore for the terminating '\0'! > > =-= Rene > > > -----Original Message----- > From: [email protected] [mailto:[email protected]] On Behalf Of > Victor Luchitz > Sent: Wednesday, 04 August, 2010 15:33 > To: Kannel Devel > Subject: Re: Re: SMPP's network_error_code TLV > > Nope, I think do understand the SMPP spec correctly. > > Description for this field (page 152 of SMPP v3.4 Issue 2 spec) says > the following: > > Sub-field Size Type > Network Type 1 Integer > Error Code 2 Integer > > Note that the spec explicitly defines those subfields as integers, not > octet strings. Besides the "3ff" representation is vague since the > spec doesn't mention the integer values are allowed to be passed in > hex format. And how would you transmit an error code > 0xff if you > still reserved to using octet strings? > > All of the above wouldn't matter if we didn't have at least one client > expecting the network_error_code to contain proper integer values. > > 2010/8/4 Alexander Malysh <[email protected]>: >> Hi Victor, >> >> seems you misunderstand SMPP spec. >> >> network_error_code is Octetstring with a size of 3. >> The first Octet is network type and the rest is error code. >> >> So for you example (GSM and error code 0xff)m it would be: 3ff >> >> Thanks, >> Alexander Malysh >> >> Am 02.08.2010 um 09:37 schrieb Victor Luchitz: >> >>> Hello. >>> >>> SMPP smsc handles the network_error_code TLV as 3-octets C-string, >>> which seems to be in accordance with the spec, at least at the first >>> glance. However, the spec also further refines this tag is a set of >>> two independent integer values: single-octet network code and >>> two-octets error code. >>> For example, a value of 0x0300ff (in hex) is a perfectly valid value >>> for this tag, representing an error with code 0xff in a GSM network. >>> I'm not 100% sure bearerbox wouldn't choke on reading such a value >>> (since the supposed string is prematurely terminated), but what I am >>> sure is that one can't write a value such as 0x0300ff into this tag if >>> it's represented as a C-string. So, to able to fully use this TLV in >>> say, smppbox, this TLV has to be represented as a 3-octets integer >>> value. That renders this tag unusable for the err: field in SMPP >>> delivery receipts but it was never intended to be used as such despite >>> bearing a similar name. >>> >>> So I'm attaching a patch that changes representation of the >>> network_error_code TLV to a 3-octets integer and removes its usage for >>> in handle_dlr. >>> >>> -- >>> Best regards, >>> Victor Luchitz >>> <network_error_code.patch> >> >> > > > > -- > Best regards, > Victor Luchitz > > > > -- > Best regards, > Victor Luchitz > > > > -- Best regards, Victor Luchitz
