Thanks Marian, it will take me some time this digest that fully. Do I understand correctly that the advantage of using the cdrbuild module is that any custom parameter I set in routing will be available in cdr.call/finalize? Do I need to keep track of the number of calls using a line myself or is there some trick I can use?

Thanks for the reply. We have our wires crossed I think. I have my outbound only providers set up as lines in accfile.conf rather than what I think you are referring to, (dynamic) SIP targets set by a routing module.

I don't know whether I would go so far to call my outbound only providers "registered lines" as I have omitted the registrar parameter from these lines to prevent registration.

In Yate 6.0 these also send keep-alives regardless of whether there is a call active or not which is pointless in perhaps the majority of NAT configurations so I would like to prevent that.

Looking at message traces, I think a workaround might be to duplicate accfile's behaviour in sending user.login messages but only in response to a call.route message for that line, and send a user.logoff when there no more calls using that line. If globals can't be modified from regexroute than I assume I would need to write an extmodule. I think it would be more sensible to modify ysipchan if the current software can't be configured to behave the way I desire.

BTW, I would have thought that most of the static parameters for a SIP line entry would be able to be supplied as parameters to a call.route message with a SIP destination as a target and vice versa but it seems this is not the case.

I can't help you with Yate but maybe your provider will support a different configuration, i.e. a trunk so you don't need a large number of accounts. Do you really need to use TCP (if that makes a difference)? None of my providers even support SIP over TCP.

Hello Yate developers, thank you for developing such powerful and flexible software.

I'm using mobile broadband which unfortunately is NATed and have accounts with multiple providers. Since I'm cheap and mobile data cost$ I want Yate to use as little data as possible, so first question:

How can I configure or modify Yate to only send keepalives while I have a call? For the providers I use for outbound calls only, I would prefer to eliminate unnecessary keepalives. Since my providers won't send (re-)INVITEs outside of a call there is no need to maintain a NAT binding outside of a call. For those of us stuck behind many if not most types of NAT this is the desirable default behaviour for any provider that doesn't need registration.

I appreciate each keep alive uses little data but it will add up with multiple providers and a system running 24x7.