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
error ->
logger:debug("[sdlan_channel] network: ~p, arp_request target_ip: ~p, mac not found", [NetworkId, TargetIp]),
EmptyResponse = sdlan_pb:encode_msg(#sdl_empty{
pkt_id = PktId
EmptyArpResponsePkt = sdlan_pb:encode_msg(#sdl_arp_response{
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;
{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)]),
PeerInfo = sdlan_pb:encode_msg(#sdl_arp_response{
ArpResponsePkt = sdlan_pb:encode_msg(#sdl_arp_response{
pkt_id = PktId,
target_ip = TargetIp,
target_mac = Mac
}),
quic_send(Stream, <<?PACKET_PEER_INFO, PeerInfo/binary>>),
quic_send(Stream, <<?PACKET_ARP_RESPONSE, ArpResponsePkt/binary>>),
keep_state_and_data
end;