pbx_dundi: added IPv4/IPv6 dual bind support to DUNDi
[asterisk/asterisk.git] / configs / samples / dundi.conf.sample
1 ;
2 ; DUNDi configuration file
3 ;
4 ; For more information about DUNDi, see http://www.dundi.com
5 ;
6 ;
7 [general]
8 ;
9 ; The "general" section contains general parameters relating
10 ; to the operation of the dundi client and server.
11 ;
12 ; The first part should be your complete contact information
13 ; should someone else in your peer group need to contact you.
14 ;
15 ;department=Your Department
16 ;organization=Your Company, Inc.
17 ;locality=Your City
18 ;stateprov=ST
19 ;country=US
20 ;email=your@email.com
21 ;phone=+12565551212
22 ;
23 ;
24 ; Specify bind address. IPv6 addresses are accepted. Default is 0.0.0.0
25 ; You can specify 'bindaddr2' to bind to another address however
26 ; 'bindaddr and 'bindaddr2' need to be different IP protocols.
27 ; Specify port number. Default is 4520.
28 ;
29 ;bindaddr=0.0.0.0
30 ;port=4520
31 ;
32 ; See https://wiki.asterisk.org/wiki/display/AST/IP+Quality+of+Service for a description of the tos parameter.
33 ;tos=ef
34 ;
35 ; Our entity identifier.  (It should generally be the MAC address of the
36 ; machine it's running on.  Defaults to the first eth address, but you
37 ; can override it here, as long as you set it to the MAC of *something*
38 ; you own!)  The EID can be overridden by a setting in asterisk.conf
39 ; or by setting this option.
40 ;
41 ;entityid=00:07:E9:3B:76:60
42 ;
43 ; Peers shall cache our query responses for the specified time
44 ; in seconds. Default is 3600.
45 ;
46 ;cachetime=3600
47 ;
48 ; This defines the max depth (hops) in which to search the DUNDi system.
49 ; Note that the maximum time that we will wait for a response is
50 ; (2000 + 200 * ttl) ms.
51 ;
52 ttl=32
53 ;
54 ; If we don't get ACK to our DPDISCOVER within 2000ms and autokill is set
55 ; to yes then we cancel the whole thing (that's enough time for one
56 ; retransmission only).  This is used to keep things from stalling for a long
57 ; time for a host that is not available, but would be ill advised for bad
58 ; connections.  In addition to 'yes' or 'no' you can also specify a number
59 ; of milliseconds.  See 'qualify' for individual peers to turn on for just
60 ; a specific peer.
61 ;
62 autokill=yes
63 ;
64 ; pbx_dundi creates a rotating key called "secret", under the family
65 ; 'secretpath'.  The default family is dundi (resulting in
66 ; the key being held at dundi/secret).
67 ;
68 ;secretpath=dundi
69 ;
70 ; The 'storehistory' option (also changeable at runtime with
71 ; 'dundi store history on' and 'dundi store history off') will
72 ; cause the DUNDi engine to keep track of the last several
73 ; queries and the amount of time each query took to execute
74 ; for the purpose of tracking slow nodes.  This option is
75 ; off by default due to performance impacts.
76 ;
77 ;storehistory=yes
78
79 [mappings]
80 ;
81 ; The "mappings" section maps DUNDi contexts
82 ; to contexts on the local asterisk system.  Remember
83 ; that numbers that are made available under the e164
84 ; DUNDi context are regulated by the DUNDi General Peering
85 ; Agreement (GPA) if you are a member of the DUNDi E.164
86 ; Peering System.
87 ;
88 ; dundi_context => [local_context,weight,tech,dest{,options}]
89 ;
90 ; 'dundi_context' is the name of the context being requested
91 ; within the DUNDi request
92 ;
93 ; 'local_context' is the name of the context on the local system
94 ; in which numbers can be looked up for which responses shall be given.
95 ;
96 ; 'weight' is the weight to use for the responses provided from this
97 ; mapping.  The number must be >= 0 and < 60000.  Since it is totally
98 ; valid to receive multiple responses to a query, responses received
99 ; with a lower weight are tried first.  Note that the weight has a
100 ; special meaning in the e164 context - see the GPA for more details.
101 ;
102 ; 'tech' is the technology to use (IAX2, SIP, H323)
103 ;
104 ; 'dest' is the Dial application's channel technology resource destination
105 ; to supply for reaching that number.  The following variables can be used
106 ; in the destination string and will be automatically substituted:
107 ; ${NUMBER}: The number being requested
108 ; ${IPADDR}: The IP address to connect to
109 ; ${SECRET}: The current IAX2 rotating secret key to be used
110 ;
111 ; Further options may include:
112 ;
113 ; nounsolicited:  No unsolicited calls of any type permitted via this
114 ;                 route
115 ; nocomunsolicit: No commercial unsolicited calls permitted via
116 ;                 this route
117 ; residential:    This number is known to be a residence
118 ; commercial:     This number is known to be a business
119 ; mobile:         This number is known to be a mobile phone
120 ; nocomunsolicit: No commercial unsolicited calls permitted via
121 ;                 this route
122 ; nopartial:      Do not search for partial matches
123 ;
124 ; There *must* exist an entry in mappings for DUNDi to respond
125 ; to any request, although it may be empty.
126 ;
127 ;empty_context =>
128 ;
129 ;e164 => dundi-e164-canonical,0,IAX2,dundi:${SECRET}@${IPADDR}/${NUMBER},nounsolicited,nocomunsolicit,nopartial
130 ;e164 => dundi-e164-customers,100,IAX2,dundi:${SECRET}@${IPADDR}/${NUMBER},nounsolicited,nocomunsolicit,nopartial
131 ;e164 => dundi-e164-via-pstn,400,IAX2,dundi:${SECRET}@${IPADDR}/${NUMBER},nounsolicited,nocomunsolicit,nopartial
132 ;
133 ;digexten => default,0,IAX2,guest@lappy/${NUMBER}
134
135 ;
136 ; Weights for mappings can be set a few different ways:
137 ;
138 ; 1) It can be set as a static number.
139 ;testmap1 => context1,222,IAX2,guest@peer1/${NUMBER}
140 ;
141 ; 2) It can be an Asterisk global variable.
142 ;testmap2 => context2,${DUNDITESTVAR},IAX2,guest@peer2${NUMBER}
143 ;
144 ; 3) It can be retrieved using a dialplan function.  This can be extremely
145 ;    useful if you want to let an external script decide what the weight
146 ;    in a response should be.
147 ;testmap3 => context3,${SHELL(echo 123)},IAX2,guest@peer3/${NUMBER}
148 ;
149 ; The built in variables ${SECRET}, ${IPADDR} and ${NUMBER} can also be
150 ; passed to the weight. For example, you could pass the ${NUMBER} value
151 ; to your SHELL() script and use that to dynamically return a weight.
152 ;
153 ; Note when using a global variable or dialplan function to set the
154 ; weight for a mapping that response caching should be disabled if you
155 ; plan for these values to change frequently at all.  If the results are
156 ; cached then any change in value will not take effect until the cache
157 ; has expired.
158 ;
159
160 ;
161 ; The remaining sections represent the peers that we fundamentally trust.
162 ; The section name specifies the peer's entityid.  You can specify which
163 ; DUNDi contexts with which you want the trust to be established.
164 ;
165 ; inkey - What key they will be authenticating to us with
166 ;
167 ; outkey - What key we use to authenticate to them
168 ;
169 ; host - What their host is (DNS name, IP address, or dynamic)
170 ;
171 ; port - The port where their host is listening (default: 4520)
172 ;
173 ; ustothem - Explicitly specify the entityid we use with this peer.
174 ;
175 ; order - What search order to use.  May be 'primary', 'secondary',
176 ;         'tertiary' or 'quartiary'.  In large systems, it is beneficial
177 ;         to only query one up-stream host in order to maximize caching
178 ;         value.  Adding one with primary and one with secondary gives you
179 ;         redundancy without sacrificing performance.
180 ;
181 ; include - Includes this peer when searching a particular context
182 ;           for lookup (set "all" to perform all lookups with that
183 ;           host.  This is also the context in which peers are permitted
184 ;           to precache.
185 ;
186 ; noinclude - Disincludes this peer when searching a particular context
187 ;             for lookup (set "all" to perform no lookups with that
188 ;             host.
189 ;
190 ; permit - Permits this peer to search a given DUNDi context on
191 ;          the local system.  Set "all" to permit this host to
192 ;          lookup all contexts.  This is also a context for which
193 ;          we will create/forward PRECACHE commands.
194 ;
195 ; deny -   Denies this peer to search a given DUNDi context on
196 ;          the local system.  Set "all" to deny this host to
197 ;          lookup all contexts.
198 ;
199 ; model - inbound, outbound, or symmetric for whether we receive
200 ;         requests only, transmit requests only, or do both.
201 ;
202 ; precache - Utilize/Permit precaching with this peer (to pre
203 ;            cache means to provide an answer when no request
204 ;            was made and is used so that machines with few
205 ;            routes can push those routes up to a higher level).
206 ;            outgoing means we send precache routes to this peer,
207 ;            incoming means we permit this peer to send us
208 ;            precache routes.  symmetric means we do both.
209 ;
210 ; Note: You cannot mix symmetric/outbound model with symmetric/inbound
211 ; precache, nor can you mix symmetric/inbound model with symmetric/outbound
212 ; precache.
213 ;
214 ; qualify - Enable qualifying the peer to determine reachable status.
215 ;           Set to yes, no, or number of milliseconds for qualifying
216 ;           the peer's reachable status.
217 ;
218 ; register - Enable registering with the peer.  This presupposes that the
219 ;            peer's host option for us is dynamic.  (yes/no value)
220 ;
221 ; The '*' peer is special and matches an unspecified entity
222 ;
223
224 ;
225 ; Sample Primary e164 DUNDi peer
226 ;
227 ;[00:50:8B:F3:75:BB]
228 ;model = symmetric
229 ;host = 64.215.96.114
230 ;inkey = digium
231 ;outkey = misery
232 ;include = e164
233 ;permit = e164
234 ;qualify = yes
235
236 ;
237 ; Sample Secondary e164 DUNDi peer
238 ;
239 ;[00:A0:C9:96:92:84]
240 ;model = symmetric
241 ;host = misery.digium.com
242 ;inkey = misery
243 ;outkey = ourkey
244 ;include = e164
245 ;permit = e164
246 ;qualify = yes
247 ;order = secondary
248
249 ;
250 ; Sample "push mode" downstream host
251 ;
252 ;[00:0C:76:96:75:28]
253 ;model = inbound
254 ;host = dynamic
255 ;precache = inbound
256 ;inkey = littleguy
257 ;outkey = ourkey
258 ;include = e164 ; In this case used only for precaching
259 ;permit = e164
260 ;qualify = yes
261
262 ;
263 ; Sample "push mode" upstream host
264 ;
265 ;[00:07:E9:3B:76:60]
266 ;model = outbound
267 ;precache = outbound
268 ;host = 216.207.245.34
269 ;register = yes
270 ;inkey = dhcp34
271 ;permit = all ; In this case used only for precaching
272 ;include = all
273 ;qualify = yes
274 ;outkey=foo
275
276 ;[*]
277 ;