arp request

This commit is contained in:
anlicheng 2026-03-06 11:26:23 +08:00
parent 899561e94a
commit 24cbbe0940

View File

@ -257,19 +257,21 @@ handle_event(internal, {frame, <<?PACKET_ARP_REQUEST, Body/binary>>}, registered
case sdlan_network:arp_request(NetworkPid, TargetIp) of case sdlan_network:arp_request(NetworkPid, TargetIp) of
error -> error ->
logger:debug("[sdlan_channel] network: ~p, arp_request target_ip: ~p, mac not found", [NetworkId, TargetIp]), logger:debug("[sdlan_channel] network: ~p, arp_request target_ip: ~p, mac not found", [NetworkId, TargetIp]),
EmptyResponse = sdlan_pb:encode_msg(#sdl_empty{ EmptyArpResponsePkt = sdlan_pb:encode_msg(#sdl_arp_response{
pkt_id = PktId pkt_id = PktId,
target_ip = TargetIp,
target_mac = <<>>
}), }),
quic_send(Stream, <<?PACKET_ARP_RESPONSE, EmptyResponse/binary>>), quic_send(Stream, <<?PACKET_ARP_RESPONSE, EmptyArpResponsePkt/binary>>),
keep_state_and_data; keep_state_and_data;
{ok, Mac} -> {ok, Mac} ->
logger:debug("[sdlan_channel] network: ~p, arp_request target_ip: ~p, mac: ~p", [NetworkId, sdlan_util:int_to_ipv4(TargetIp), sdlan_util:format_mac(Mac)]), logger:debug("[sdlan_channel] network: ~p, arp_request target_ip: ~p, mac: ~p", [NetworkId, sdlan_util:int_to_ipv4(TargetIp), sdlan_util:format_mac(Mac)]),
PeerInfo = sdlan_pb:encode_msg(#sdl_arp_response{ ArpResponsePkt = sdlan_pb:encode_msg(#sdl_arp_response{
pkt_id = PktId, pkt_id = PktId,
target_ip = TargetIp, target_ip = TargetIp,
target_mac = Mac target_mac = Mac
}), }),
quic_send(Stream, <<?PACKET_PEER_INFO, PeerInfo/binary>>), quic_send(Stream, <<?PACKET_ARP_RESPONSE, ArpResponsePkt/binary>>),
keep_state_and_data keep_state_and_data
end; end;