[Asterisk-Dev] chan_zap bug with hidecallerid?

Andrea Venturi andrea.venturi at tin.it
Thu May 8 08:13:10 MST 2003

Pauline Middelink ha scritto:
> On Wed, 07 May 2003 around 11:07:45 -0500, Martin Pycko wrote:
>>Well I looked at the code and with pri_call thereis no hidecallerid.
>>There is l that contains either the callerid number or is empty.
>>I added checking for hidecallerid when initializing the l variable
>>and that should fix this problem. It's in CVS.
> Our telco gives out an warning for an empty CALLER ID. I would
> prefer for libpri to setup a call WITHOUT callerid if it detects
> the callerid is empty.

i believe there's a misunderstanding WRT hide caller id in an outbound 
call from an host with an E100P to PSTN thru an EUROISDN E1 link.

let's use this doc as reference:


this is our italian experience:

we are forming a call setup packet. in the Q931 call setup packet there 
are a bunch of information elements (IE). we speak WRT "calling party 
number" (paragraph 4.5.10 in the doc)

if the Q931 "calling party number" IE is missing, our italian telco will 
add (with "network provided" flag so it's visible to the called party!) 
our real calling number.

if the Q931 "calling party number" IE is present but empty WRT number, 
the telco will replace the empty number with the real one without taking 
care to respect our "presentation indicator" flag  (octet 3a)

so, in our experience the real solution to this problem:

   hide the calling party number to the remote called party


1. fill the calling party number with (one of) the real number(s)

2. fill the octet 3a with Presentation Indicator flag 01 (bit 7-6) see 
Table 4-1/Q931 in the previous .pdf

so, actually, to hide a number, you have to put something like 0x20 in 
this octet 3a i.e:


and not the actual:

libpri.h:#define PRES_NUMBER_NOT_AVAILABLE              0x43

who means "calling party number unavailable due to interworking and 
screened by the network.."

maybe the situation (the semantics) is different in other countries! i 
smell one of the many little usual EUROISDN flavours ;-)

anyway, we can tweak the actual CVS to hide or show the callerid on a E1 
link basis (in zapata.conf) but we'd like to set in on a per call 
basis.. the stuff could /should be implemented with some flag passed 
down from zt_call() to pri_call()

what do you think?


andrea venturi

>>On Wed, 7 May 2003, Lorenzo Pallara wrote:
>>>Hi all!
>>>    We are taking care of hiding caller ids on E400P and we have a couple of
>>>problems to solve:
>>>In chan_zap.c the zt_call() passes the following argument to the pri_call():
>>>but the logic is the opposite, isn't it?
>>>hidecallerid ? PRES_NUMBER_NOT_AVAILABLE :
>>>anyway the correct line for q931, tested in Italy, looks like:
>>>The value of hidecallerid is specified from zapata.conf but we need to
>>>overwrite it at runtime per call basis, is there already a way or is it
>>>necessary to add information to the ast_channel structure or to the
>>>ast_call() function?
>>>    Lorenzo Pallara
>>>Asterisk-Dev mailing list
>>>Asterisk-Dev at lists.digium.com
>>Asterisk-Dev mailing list
>>Asterisk-Dev at lists.digium.com
>     Met vriendelijke groet,
>         Pauline Middelink

More information about the asterisk-dev mailing list