Documentation ¶
Overview ¶
Package autopath implements autopathing. This is a hack; it shortcuts the client's search path resolution by performing these lookups on the server...
The server has a copy (via AutoPathFunc) of the client's search path and on receiving a query it first establishes if the suffix matches the FIRST configured element. If no match can be found the query will be forwarded up the plugin chain without interference (if, and only if, 'fallthrough' has been set).
If the query is deemed to fall in the search path the server will perform the queries with each element of the search path appended in sequence until a non-NXDOMAIN answer has been found. That reply will then be returned to the client - with some CNAME hackery to let the client accept the reply.
If all queries return NXDOMAIN we return the original as-is and let the client continue searching. The client will go to the next element in the search path, but we won’t do any more autopathing. It means that in the failure case, you do more work, since the server looks it up, then the client still needs to go through the search path.
It is assume the search path ordering is identical between server and client.
Plugins implementing autopath, must have a function called `AutoPath` of type autopath.Func. Note the searchpath must be ending with the empty string.
I.e:
func (m Plugins ) AutoPath(state request.Request) []string { return []string{"first", "second", "last", ""} }
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AutoPath ¶
type AutoPath struct { Next plugin.Handler Zones []string // contains filtered or unexported fields }
AutoPath performs autopath: service side search path completion.
type AutoPather ¶
AutoPather defines the interface that a plugin should implement in order to be used by AutoPath.