fix
This commit is contained in:
parent
e8a1b15f8f
commit
3b83b7dfee
@ -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).
|
||||
@ -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{
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user