fix
This commit is contained in:
parent
e8a1b15f8f
commit
3b83b7dfee
@ -13,8 +13,9 @@
|
|||||||
|
|
||||||
-define(DEFAULT_PASS, <<"`encrypt!`">>).
|
-define(DEFAULT_PASS, <<"`encrypt!`">>).
|
||||||
|
|
||||||
-define(PACKET_EMPTY, 16#00).
|
%% 一级分类,包类型分类,占一个字节
|
||||||
|
|
||||||
|
-define(PACKET_EMPTY, 16#00).
|
||||||
%% 注册相关
|
%% 注册相关
|
||||||
-define(PACKET_REGISTER_SUPER, 16#01).
|
-define(PACKET_REGISTER_SUPER, 16#01).
|
||||||
-define(PACKET_REGISTER_SUPER_ACK, 16#02).
|
-define(PACKET_REGISTER_SUPER_ACK, 16#02).
|
||||||
@ -32,23 +33,6 @@
|
|||||||
%% 推送的事件信息, 不需要返回值
|
%% 推送的事件信息, 不需要返回值
|
||||||
-define(PACKET_EVENT, 16#10).
|
-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).
|
-define(PACKET_FLOW_TRACER, 16#15).
|
||||||
|
|
||||||
@ -56,7 +40,6 @@
|
|||||||
-define(PACKET_REGISTER_ACK, 16#21).
|
-define(PACKET_REGISTER_ACK, 16#21).
|
||||||
|
|
||||||
%% stun相关的请求
|
%% stun相关的请求
|
||||||
|
|
||||||
%% 请求
|
%% 请求
|
||||||
-define(PACKET_STUN_REQUEST, 16#30).
|
-define(PACKET_STUN_REQUEST, 16#30).
|
||||||
%% 响应
|
%% 响应
|
||||||
@ -74,18 +57,22 @@
|
|||||||
-define(PACKET_POLICY_REQUEST, 16#b0).
|
-define(PACKET_POLICY_REQUEST, 16#b0).
|
||||||
-define(PACKET_POLICY_REPLY, 16#b1).
|
-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_WELCOME, 16#4F).
|
||||||
|
|
||||||
%% 数据转发
|
%% 数据转发
|
||||||
-define(PACKET_STUN_DATA, 16#FF).
|
-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}),
|
{ok, _} = quicer:async_accept_stream(Conn, #{active => true}),
|
||||||
{next_state, waiting_stream, State};
|
{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]),
|
logger:debug("[sdlan_quic_channel] call new_stream: ~p, opts: ~p", [Stream, Opts]),
|
||||||
%% 发送欢迎消息
|
%% 发送欢迎消息
|
||||||
WelcomePkt = sdlan_pb:encode_msg(#sdl_welcome{
|
WelcomePkt = sdlan_pb:encode_msg(#sdl_welcome{
|
||||||
|
|||||||
@ -197,7 +197,7 @@ handle_call({attach, ChannelPid, ClientId, Mac, Ip, Hostname}, _From,
|
|||||||
ip = Ip
|
ip = Ip
|
||||||
}),
|
}),
|
||||||
broadcast(fun(#endpoint{channel_pid = ChannelPid0}) ->
|
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),
|
end, [Mac], Endpoints),
|
||||||
|
|
||||||
%% 清理就的绑定关系
|
%% 清理就的绑定关系
|
||||||
@ -251,7 +251,7 @@ handle_call({peer_info, SrcMac, DstMac}, _From, State = #state{endpoints = Endpo
|
|||||||
nat_port = SrcNatPort,
|
nat_port = SrcNatPort,
|
||||||
v6_info = SrcV6Info
|
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,
|
end,
|
||||||
{reply, {ok, {DstNatPeer, DstNatType}, DstV6Info}, State};
|
{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]),
|
logger:debug("[sdlan_network] client_id: ~p(~p), hole changed", [ClientId, Ip]),
|
||||||
broadcast(fun(#endpoint{channel_pid = ChannelPid}) ->
|
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, [Mac], Endpoints)
|
||||||
end,
|
end,
|
||||||
NEndpoint = Endpoint0#endpoint{hole = NHole, v6_info = V6Info, last_seen = erlang:monotonic_time(second)},
|
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{
|
NetworkShutdownEvent = sdlan_pb:encode_msg(#sdl_network_shutdown_event{
|
||||||
message = <<"Network shutdown">>
|
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);
|
sdlan_quic_channel:stop(ChannelPid, normal);
|
||||||
false ->
|
false ->
|
||||||
ok
|
ok
|
||||||
|
|||||||
@ -14,8 +14,7 @@ message SDLV6Info {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 和super之间采用了quic协议通讯
|
// 和super之间采用了quic协议通讯
|
||||||
// 传输层采用: <<Len:16, Data/binary>>
|
// 传输层采用: <<Len:16, PacketType:8, Payload/binary>>
|
||||||
// 数据层采用: <<PacketType:8, Payload/binary>>
|
|
||||||
|
|
||||||
message SDLWelcome {
|
message SDLWelcome {
|
||||||
uint32 version = 1;
|
uint32 version = 1;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user