I think you're misreading the code. The mask values are not passed to the
SMPP driver as-is, but are just a way to tell the driver what to
send/request. In this case, the 0x20 value means that kannel should ask for
intermediate dlrs. This is not necessarily only for SMPP, other drivers
might implement it as well, using their respective values.
Check on gw/smsc/smsc_smpp.c, 16 (0x10) is used over the SMPP bind if the
mask has 0x20 in it:
if (DLR_IS_INTERMEDIATE(msg->sms.dlr_mask))
pdu->u.submit_sm.registered_delivery += 16;
Kannel's dlr-mask values doesn't necessarily match the values being sent
over the wire. In fact, values may differ from driver to driver, so even if
it could match for SMPP, might not for other drivers anyway.
Regards,
Alex
2010/1/15 Nikos Balkanas <[email protected]>
> Hi,
>
> There seems to be an incompatibility between kannel's DLR implementation
> and SMPP 5.0 spec. For example in the spec, Intermediate DLRs are defined as
> 0x10 (p 130), whereas in kannel Intermediate DLRs have the value 0x20, and
> so forth. Why this discrepancy? Some SMScs claim that it is out of spec to
> use dlr-mask 63 and don't send DLRs in such cases.
>
> BR,
> Nikos
>