This commit is contained in:
anlicheng 2026-02-24 15:50:43 +08:00
parent e8a1b15f8f
commit 3b83b7dfee
4 changed files with 21 additions and 35 deletions

View File

@ -13,8 +13,9 @@
-define(DEFAULT_PASS, <<"`encrypt!`">>).
-define(PACKET_EMPTY, 16#00).
%%
-define(PACKET_EMPTY, 16#00).
%%
-define(PACKET_REGISTER_SUPER, 16#01).
-define(PACKET_REGISTER_SUPER_ACK, 16#02).
@ -32,23 +33,6 @@
%% ,
-define(PACKET_EVENT, 16#10).
%%
-define(PACKET_EVENT_KNOWN_IP, 16#01).
-define(PACKET_EVENT_DROP_IP, 16#02).
-define(PACKET_EVENT_NAT_CHANGED, 16#03).
-define(PACKET_EVENT_SEND_REGISTER, 16#04).
%%
-define(PACKET_EVENT_NETWORK_SHUTDOWN, 16#FF).
%% ,
-define(PACKET_COMMAND, 16#11).
-define(PACKET_COMMAND_ACK, 16#12).
%%
-define(PACKET_COMMAND_CHANGE_NETWORK, 16#01).
-define(PACKET_COMMAND_UPGRADE, 16#02).
%%
-define(PACKET_FLOW_TRACER, 16#15).
@ -56,7 +40,6 @@
-define(PACKET_REGISTER_ACK, 16#21).
%% stun相关的请求
%%
-define(PACKET_STUN_REQUEST, 16#30).
%%
@ -74,18 +57,22 @@
-define(PACKET_POLICY_REQUEST, 16#b0).
-define(PACKET_POLICY_REPLY, 16#b1).
%% stun请求的attr
-define(STUN_ATTR_CHANGE_NONE, 0).
-define(STUN_ATTR_CHANGE_PORT, 1).
-define(STUN_ATTR_CHANGE_PEER, 2).
%%
-define(PACKET_WELCOME, 16#4F).
%%
-define(PACKET_STUN_DATA, 16#FF).
-record(id_generator, {
tab :: atom(),
increment_id = 0 :: integer()
}).
%%
%%
-define(EVENT_KNOWN_IP, 16#01).
-define(EVENT_DROP_IP, 16#02).
-define(EVENT_NAT_CHANGED, 16#03).
-define(EVENT_SEND_REGISTER, 16#04).
-define(EVENT_NETWORK_SHUTDOWN, 16#FF).
%% stun请求的attr
-define(STUN_ATTR_CHANGE_NONE, 0).
-define(STUN_ATTR_CHANGE_PORT, 1).
-define(STUN_ATTR_CHANGE_PEER, 2).

View File

@ -99,7 +99,7 @@ handle_event(internal, do_init, initializing, State=#state{conn = Conn}) ->
{ok, _} = quicer:async_accept_stream(Conn, #{active => true}),
{next_state, waiting_stream, State};
handle_event(info, {quic, new_stream, Stream, Opts}, waiting_stream, State=#state{conn = Conn, max_packet_size = MaxPacketSize, heartbeat_sec = HeartbeatSec}) ->
handle_event(info, {quic, new_stream, Stream, Opts}, waiting_stream, State=#state{max_packet_size = MaxPacketSize, heartbeat_sec = HeartbeatSec}) ->
logger:debug("[sdlan_quic_channel] call new_stream: ~p, opts: ~p", [Stream, Opts]),
%%
WelcomePkt = sdlan_pb:encode_msg(#sdl_welcome{

View File

@ -197,7 +197,7 @@ handle_call({attach, ChannelPid, ClientId, Mac, Ip, Hostname}, _From,
ip = Ip
}),
broadcast(fun(#endpoint{channel_pid = ChannelPid0}) ->
sdlan_quic_channel:send_event(ChannelPid0, ?PACKET_EVENT_NAT_CHANGED, NatChangedEvent)
sdlan_quic_channel:send_event(ChannelPid0, ?EVENT_NAT_CHANGED, NatChangedEvent)
end, [Mac], Endpoints),
%%
@ -251,7 +251,7 @@ handle_call({peer_info, SrcMac, DstMac}, _From, State = #state{endpoints = Endpo
nat_port = SrcNatPort,
v6_info = SrcV6Info
}),
sdlan_quic_channel:send_event(DstChannelPid, ?PACKET_EVENT_SEND_REGISTER, RegisterEvent)
sdlan_quic_channel:send_event(DstChannelPid, ?EVENT_SEND_REGISTER, RegisterEvent)
end,
{reply, {ok, {DstNatPeer, DstNatType}, DstV6Info}, State};
_ ->
@ -350,7 +350,7 @@ handle_cast({update_hole, SessionToken, ClientId, Mac, Peer, NatType, V6Info}, S
}),
logger:debug("[sdlan_network] client_id: ~p(~p), hole changed", [ClientId, Ip]),
broadcast(fun(#endpoint{channel_pid = ChannelPid}) ->
sdlan_quic_channel:send_event(ChannelPid, ?PACKET_EVENT_NAT_CHANGED, NatChangedEvent)
sdlan_quic_channel:send_event(ChannelPid, ?EVENT_NAT_CHANGED, NatChangedEvent)
end, [Mac], Endpoints)
end,
NEndpoint = Endpoint0#endpoint{hole = NHole, v6_info = V6Info, last_seen = erlang:monotonic_time(second)},
@ -392,7 +392,7 @@ terminate(Reason, #state{network_id = NetworkId, endpoints = Endpoints}) ->
NetworkShutdownEvent = sdlan_pb:encode_msg(#sdl_network_shutdown_event{
message = <<"Network shutdown">>
}),
sdlan_quic_channel:send_event(ChannelPid, ?PACKET_EVENT_NETWORK_SHUTDOWN, NetworkShutdownEvent),
sdlan_quic_channel:send_event(ChannelPid, ?EVENT_NETWORK_SHUTDOWN, NetworkShutdownEvent),
sdlan_quic_channel:stop(ChannelPid, normal);
false ->
ok

View File

@ -14,8 +14,7 @@ message SDLV6Info {
}
// super之间采用了quic协议通讯
// : <<Len:16, Data/binary>>
// : <<PacketType:8, Payload/binary>>
// : <<Len:16, PacketType:8, Payload/binary>>
message SDLWelcome {
uint32 version = 1;