#
# splitdns.config
#
# Documentation:
#    https://docs.trafficserver.apache.org/en/latest/admin-guide/files/splitdns.config.en.html
#
# The purpose of this file is to specify the dns server for
#   specific objects or sets of objects.
#
# Each line consists of a set of tag value pairs.  The pairs
#   are in the format  <tag>=<value>. Please note that there
#   should not be any spaces in the specifiers.
#
# Each line must include exactly one primary specifier
#
#   Primary destination specifiers are
#     dest_domain=
#     dest_host=
#     url_regex=
#
#
# Available server directives are:
# Required:
#     named=       ( required; a DNS server; port may be included,
#                    separated by ':'. If none provided, the default
#                    port used is 53. Multiple DNS server may be
#                    specified, separated by spaces or ';'. The
#                    DNS servers are required to be in ip address
#                    format )
#
# Optional:
#     def_domain=  ( optional;  when provided, only one default
#                    may be listed on the line )
#
#     search_list= ( optional; however, if provided, requires at
#                    least one search domain. If an organization
#                    has multiple zones, they may be specified,
#                    separated by spaces or ';'.  )
#
# Each line must include at least a named= directive with an IP address
# in the "dot" format. "def_domain=" and "search_list=" are optional.
#
# Additional notes:
#
# For improved performance, the system has a 'fast path', which is activated
# when all the primary destination specifiers are of the type
# 'dest_domain' or 'dest_host'. It also requires that the number of rules
# not exceed four (4). One of the side effect of this is, the first match
# will terminate the search.
#
# If a host name is not fully qualified, i.e. does not have the domain
# specifier (ex. 'internal' instead of internal.example.com'), then
# there is no rule using the primary destination specifier 'url_regex'.
#
#
# Example:
#
#dest_domain=int.ik.com named="255.257..." def_domain="int.ik.com" search_list="int.ik.com mkt.ik.com"
#dest_domain=!int.ik.com named="255.25..." def_domain="ik.com"

