This commit is contained in:
anlicheng 2026-04-13 15:05:13 +08:00
parent 98f2078dea
commit e6163c06cc

View File

@ -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>>.