[Asterisk-Dev] [Bounty] IPv6 support in Asterisk
Kevin P. Fleming
kpfleming at digium.com
Sat Jun 4 21:05:52 MST 2005
David Woodhouse wrote:
(re-opening an old thread)
> All address lookups for _all_ network connections should be done
> according to RFC3484. There's a bunch of rules which determine the order
> in which candidate addresses should be prioritised, and the results of
> getaddrinfo() will be sorted accordingly. Any recent libc ought to get
> this right.
> Unfortunately, Asterisk isn't actually using getaddrinfo(); it's still
> using the old functions which can only return a single result.
The "DNS manager" I added to CVS HEAD back in March is the plan for this
sort of thing; I want to make it able to hide most (or all) of this
complexity from the DNS-using modules, in addition to providing
asynchronous lookups and background refreshes.
I've got a plan in my head for how to handle the IPV4 stuff, selection
of SRV records and such, but I've not yet thought seriously about adding
IPV6 support to it.
Let's get some ideas posted here on what the API to the DNS manager
should be for all this stuff; essentially, I want a DNS-using module to
be able to instantiate a "manager" for any given DNS domain (which might
be a hostname, the name of a SRV record, or anything else), and give
that manager a pointer to the place where the selected (and current) IP
address should be stored. The manager will also have the ability to
place a callback (or wake up a thread, or something else) to let the
module know that there is a new address available, which may have
happened due to DNS record changes or anything else.
What I haven't yet figured out is how the DNS-using module is going to
be able to tell the manager to select a lower-preference entry, when the
higher-preference one is not working (the server is not responding,
etc.) If we can figure out a method for that, we can then start properly
supporting SRV records in chan_sip, with automatic fallback to
lower-preference records when appropriate (and fallforward to higher
preference ones when they become available).
Let's start by trying to document all the different types of lookups
that an Asterisk module may need... obviously there are simple A record
lookups and ENUM lookups, but there are also SRV lookups (with fallback
to A lookups) which are more complicated.
More information about the asterisk-dev