normalized request qtype
for some reason, all untyped requests are `a` records, even when the request family is ipv6
This commit is contained in:
+19
-2
@@ -57,7 +57,8 @@ func (netboxdns *NetboxDNS) ServeDNS(
|
|||||||
) (int, error) {
|
) (int, error) {
|
||||||
state := request.Request{W: respWriter, Req: reqMsg}
|
state := request.Request{W: respWriter, Req: reqMsg}
|
||||||
qname := state.QName()
|
qname := state.QName()
|
||||||
qtype := state.QType()
|
family := state.Family()
|
||||||
|
qtype := fixQType(state.QType(), family)
|
||||||
|
|
||||||
// check if plugin is configured to respond to the requested zone
|
// check if plugin is configured to respond to the requested zone
|
||||||
respondingZone := plugin.Zones(netboxdns.zones).Matches(qname)
|
respondingZone := plugin.Zones(netboxdns.zones).Matches(qname)
|
||||||
@@ -65,7 +66,7 @@ func (netboxdns *NetboxDNS) ServeDNS(
|
|||||||
return netboxdns.nextOrFailure(reqContext, respWriter, reqMsg)
|
return netboxdns.nextOrFailure(reqContext, respWriter, reqMsg)
|
||||||
}
|
}
|
||||||
|
|
||||||
response, err := netboxdns.lookup(qname, qtype, state.Family())
|
response, err := netboxdns.lookup(qname, qtype, family)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return dns.RcodeServerFailure, err
|
return dns.RcodeServerFailure, err
|
||||||
}
|
}
|
||||||
@@ -107,3 +108,19 @@ func (netboxdns *NetboxDNS) nextOrFailure(
|
|||||||
request,
|
request,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func fixQType(stateQtype uint16, family int) uint16 {
|
||||||
|
var qtype uint16
|
||||||
|
switch stateQtype {
|
||||||
|
case dns.TypeA, dns.TypeAAAA:
|
||||||
|
switch family {
|
||||||
|
case 1:
|
||||||
|
qtype = dns.TypeA
|
||||||
|
case 2:
|
||||||
|
qtype = dns.TypeAAAA
|
||||||
|
}
|
||||||
|
return qtype
|
||||||
|
default:
|
||||||
|
return stateQtype
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user