fix dns
This commit is contained in:
parent
98f2078dea
commit
e6163c06cc
@ -53,7 +53,7 @@ resolve(IpPacket) when is_binary(IpPacket) ->
|
||||
resolve0(QueryMsg = #dns_message{qc = 1, questions = [#dns_query{name = QName, type = QType, class = QClass}|_]}) ->
|
||||
%% 查找是否是内置的域名
|
||||
case sdlan_hostname_regedit:lookup(QName) of
|
||||
{ok, Ip} ->
|
||||
{ok, Ip} when QType =:= ?DNS_TYPE_A, QClass =:= ?DNS_CLASS_IN ->
|
||||
Answer = #dns_rr {
|
||||
name = QName,
|
||||
type = QType,
|
||||
@ -75,6 +75,8 @@ resolve0(QueryMsg = #dns_message{qc = 1, questions = [#dns_query{name = QName, t
|
||||
},
|
||||
logger:debug("[dns_resolver] punchnet inbuilt qnanme: ~p, ip: ~p", [QName, Ip]),
|
||||
{ok, dns:encode_message(RespMsg)};
|
||||
{ok, _Ip} ->
|
||||
{ok, dns:encode_message(build_empty_response(QueryMsg))};
|
||||
error ->
|
||||
case sdlan_domain_regedit:maybe_domain(QName) of
|
||||
true ->
|
||||
@ -87,6 +89,21 @@ resolve0(QueryMsg = #dns_message{qc = 1, questions = [#dns_query{name = QName, t
|
||||
resolve0(Error) ->
|
||||
{error, Error}.
|
||||
|
||||
-spec build_empty_response(QueryMsg :: #dns_message{}) -> EmptyResp :: #dns_message{}.
|
||||
build_empty_response(QueryMsg) ->
|
||||
QueryMsg#dns_message{
|
||||
qr = true,
|
||||
aa = true,
|
||||
ra = true,
|
||||
rc = ?DNS_RCODE_NOERROR,
|
||||
anc = 0,
|
||||
auc = 0,
|
||||
adc = 0,
|
||||
answers = [],
|
||||
authority = [],
|
||||
additional = []
|
||||
}.
|
||||
|
||||
-spec build_nxdomain_response(QueryMsg :: #dns_message{}) -> EmptyResp :: #dns_message{}.
|
||||
build_nxdomain_response(QueryMsg) ->
|
||||
QueryMsg#dns_message{
|
||||
@ -127,4 +144,4 @@ build_ip_packet(SAddr, DAddr, SPort, DPort, UdpPayload) when is_integer(SPort),
|
||||
IpCheckSum = dns_utils:ip_checksum(IpPacket0),
|
||||
IpHeader = pkt:ipv4(IpPacket0#ipv4{sum = IpCheckSum}),
|
||||
|
||||
<<IpHeader/binary, IpPayload/binary>>.
|
||||
<<IpHeader/binary, IpPayload/binary>>.
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user