Compare commits
11 Commits
main
...
policy_mst
| Author | SHA1 | Date | |
|---|---|---|---|
| 153d8e7ec5 | |||
| a405691cbd | |||
| 2a500cb421 | |||
| f1fcce9603 | |||
| bed29d89da | |||
| 94f0476dee | |||
| 9ede6aaa40 | |||
| 5138a18364 | |||
| f6e1cd7c5e | |||
| 07bdfb5f31 | |||
| a7f43b7260 |
18
API.md
18
API.md
@ -140,7 +140,23 @@ url: /node/disable
|
|||||||
method: post
|
method: post
|
||||||
params:
|
params:
|
||||||
network_id: int
|
network_id: int
|
||||||
client_id: int
|
client_id: string
|
||||||
|
|
||||||
|
return:
|
||||||
|
|
||||||
|
{"result": "success"}
|
||||||
|
{"error": {"code": 1, "message": "错误描述"}}
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 2. 节点导出的服务发生变化
|
||||||
|
|
||||||
|
```text
|
||||||
|
url: /node/acl_changed
|
||||||
|
method: post
|
||||||
|
params:
|
||||||
|
network_id: int
|
||||||
|
client_id: string
|
||||||
|
|
||||||
return:
|
return:
|
||||||
|
|
||||||
|
|||||||
960
Protocol.md
960
Protocol.md
File diff suppressed because it is too large
Load Diff
@ -28,7 +28,7 @@
|
|||||||
|
|
||||||
{ssl_server, [
|
{ssl_server, [
|
||||||
{port, 1443},
|
{port, 1443},
|
||||||
{acceptors, 500},
|
{acceptors, 10},
|
||||||
{max_connections, 10240},
|
{max_connections, 10240},
|
||||||
{backlog, 10240},
|
{backlog, 10240},
|
||||||
{limits, [
|
{limits, [
|
||||||
@ -67,7 +67,7 @@
|
|||||||
{mysql_sdlan,
|
{mysql_sdlan,
|
||||||
[{size, 10}, {max_overflow, 20}, {worker_module, mysql}],
|
[{size, 10}, {max_overflow, 20}, {worker_module, mysql}],
|
||||||
[
|
[
|
||||||
{host, {118, 178, 229, 213}},
|
{host, {47, 111, 101, 3}},
|
||||||
{port, 3306},
|
{port, 3306},
|
||||||
{user, "punchnetuser"},
|
{user, "punchnetuser"},
|
||||||
{connect_mode, lazy},
|
{connect_mode, lazy},
|
||||||
@ -79,8 +79,8 @@
|
|||||||
}
|
}
|
||||||
]},
|
]},
|
||||||
|
|
||||||
{api_url, "http://127.0.0.1:18082/test/"}
|
%{api_url, "http://127.0.0.1:18082/test/"}
|
||||||
|
{api_url, "https://test.punchsky.com/api/"}
|
||||||
]},
|
]},
|
||||||
|
|
||||||
{throttle, [
|
{throttle, [
|
||||||
|
|||||||
@ -61,6 +61,9 @@
|
|||||||
-define(PACKET_POLICY_REQUEST, 16#b0).
|
-define(PACKET_POLICY_REQUEST, 16#b0).
|
||||||
-define(PACKET_POLICY_REPLY, 16#b1).
|
-define(PACKET_POLICY_REPLY, 16#b1).
|
||||||
|
|
||||||
|
-define(PACKET_EXPOSED_SERVICE_REQUEST, 16#b2).
|
||||||
|
-define(PACKET_EXPOSED_SERVICE_RESPONSE, 16#b3).
|
||||||
|
|
||||||
%% 欢迎消息
|
%% 欢迎消息
|
||||||
-define(PACKET_WELCOME, 16#4F).
|
-define(PACKET_WELCOME, 16#4F).
|
||||||
|
|
||||||
|
|||||||
@ -137,6 +137,22 @@
|
|||||||
}).
|
}).
|
||||||
-endif.
|
-endif.
|
||||||
|
|
||||||
|
-ifndef('SDLEXPOSEDSERVICEREQUEST_PB_H').
|
||||||
|
-define('SDLEXPOSEDSERVICEREQUEST_PB_H', true).
|
||||||
|
-record('SDLExposedServiceRequest',
|
||||||
|
{version = 0 :: non_neg_integer() | undefined % = 1, optional, 32 bits
|
||||||
|
}).
|
||||||
|
-endif.
|
||||||
|
|
||||||
|
-ifndef('SDLEXPOSEDSERVICERESPONSE_PB_H').
|
||||||
|
-define('SDLEXPOSEDSERVICERESPONSE_PB_H', true).
|
||||||
|
-record('SDLExposedServiceResponse',
|
||||||
|
{version = 0 :: non_neg_integer() | undefined, % = 1, optional, 32 bits
|
||||||
|
tcp_ports = [] :: [non_neg_integer()] | undefined, % = 2, repeated, 32 bits
|
||||||
|
udp_ports = [] :: [non_neg_integer()] | undefined % = 3, repeated, 32 bits
|
||||||
|
}).
|
||||||
|
-endif.
|
||||||
|
|
||||||
-ifndef('SDLEVENT.NATCHANGED_PB_H').
|
-ifndef('SDLEVENT.NATCHANGED_PB_H').
|
||||||
-define('SDLEVENT.NATCHANGED_PB_H', true).
|
-define('SDLEVENT.NATCHANGED_PB_H', true).
|
||||||
-record('SDLEvent.NatChanged',
|
-record('SDLEvent.NatChanged',
|
||||||
@ -156,6 +172,13 @@
|
|||||||
}).
|
}).
|
||||||
-endif.
|
-endif.
|
||||||
|
|
||||||
|
-ifndef('SDLEVENT.EXPOSEDSERVICECHANGED_PB_H').
|
||||||
|
-define('SDLEVENT.EXPOSEDSERVICECHANGED_PB_H', true).
|
||||||
|
-record('SDLEvent.ExposedServiceChanged',
|
||||||
|
{
|
||||||
|
}).
|
||||||
|
-endif.
|
||||||
|
|
||||||
-ifndef('SDLEVENT.NETWORKSHUTDOWN_PB_H').
|
-ifndef('SDLEVENT.NETWORKSHUTDOWN_PB_H').
|
||||||
-define('SDLEVENT.NETWORKSHUTDOWN_PB_H', true).
|
-define('SDLEVENT.NETWORKSHUTDOWN_PB_H', true).
|
||||||
-record('SDLEvent.NetworkShutdown',
|
-record('SDLEvent.NetworkShutdown',
|
||||||
@ -166,7 +189,7 @@
|
|||||||
-ifndef('SDLEVENT_PB_H').
|
-ifndef('SDLEVENT_PB_H').
|
||||||
-define('SDLEVENT_PB_H', true).
|
-define('SDLEVENT_PB_H', true).
|
||||||
-record('SDLEvent',
|
-record('SDLEvent',
|
||||||
{event :: {nat_changed, sdlan_pb:'SDLEvent.NatChanged'()} | {send_register, sdlan_pb:'SDLEvent.SendRegister'()} | {shutdown, sdlan_pb:'SDLEvent.NetworkShutdown'()} | undefined % oneof
|
{event :: {nat_changed, sdlan_pb:'SDLEvent.NatChanged'()} | {send_register, sdlan_pb:'SDLEvent.SendRegister'()} | {shutdown, sdlan_pb:'SDLEvent.NetworkShutdown'()} | {exposed_service_changed, sdlan_pb:'SDLEvent.ExposedServiceChanged'()} | undefined % oneof
|
||||||
}).
|
}).
|
||||||
-endif.
|
-endif.
|
||||||
|
|
||||||
|
|||||||
@ -117,6 +117,16 @@ message SDLPolicyResponse {
|
|||||||
bytes rules = 4;
|
bytes rules = 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
message SDLExposedServiceRequest {
|
||||||
|
uint32 version = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
message SDLExposedServiceResponse {
|
||||||
|
uint32 version = 1;
|
||||||
|
repeated uint32 tcp_ports = 2;
|
||||||
|
repeated uint32 udp_ports = 3;
|
||||||
|
}
|
||||||
|
|
||||||
// 事件定义
|
// 事件定义
|
||||||
|
|
||||||
message SDLEvent {
|
message SDLEvent {
|
||||||
@ -135,6 +145,10 @@ message SDLEvent {
|
|||||||
optional SDLV6Info v6_info = 5;
|
optional SDLV6Info v6_info = 5;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
message ExposedServiceChanged {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
// 网络关闭
|
// 网络关闭
|
||||||
message NetworkShutdown {
|
message NetworkShutdown {
|
||||||
string message = 1;
|
string message = 1;
|
||||||
@ -144,6 +158,7 @@ message SDLEvent {
|
|||||||
NatChanged nat_changed = 1;
|
NatChanged nat_changed = 1;
|
||||||
SendRegister send_register = 2;
|
SendRegister send_register = 2;
|
||||||
NetworkShutdown shutdown = 3;
|
NetworkShutdown shutdown = 3;
|
||||||
|
ExposedServiceChanged exposed_service_changed = 4;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -23,6 +23,15 @@ handle_request("POST", "/node/disable", _, #{<<"network_id">> := NetworkId, <<"c
|
|||||||
{ok, 200, sdlan_util:json_data(<<"success">>)}
|
{ok, 200, sdlan_util:json_data(<<"success">>)}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
handle_request("POST", "/node/acl_changed", _, #{<<"network_id">> := NetworkId, <<"client_ids">> := ClientIds}) when NetworkId > 0 ->
|
||||||
|
case sdlan_network:get_pid(NetworkId) of
|
||||||
|
undefined ->
|
||||||
|
{ok, 200, sdlan_util:json_error(-1, <<"network not found">>)};
|
||||||
|
Pid ->
|
||||||
|
ok = sdlan_network:exposed_service_changed(Pid, ClientIds),
|
||||||
|
{ok, 200, sdlan_util:json_data(<<"success">>)}
|
||||||
|
end;
|
||||||
|
|
||||||
handle_request(_, Path, _, _) ->
|
handle_request(_, Path, _, _) ->
|
||||||
Path1 = list_to_binary(Path),
|
Path1 = list_to_binary(Path),
|
||||||
{ok, 200, sdlan_util:json_error(-1, <<"url: ", Path1/binary, " not found">>)}.
|
{ok, 200, sdlan_util:json_error(-1, <<"url: ", Path1/binary, " not found">>)}.
|
||||||
|
|||||||
@ -1,48 +0,0 @@
|
|||||||
%%%-------------------------------------------------------------------
|
|
||||||
%%% @author anlicheng
|
|
||||||
%%% @copyright (C) 2026, <COMPANY>
|
|
||||||
%%% @doc
|
|
||||||
%%% Compatibility facade for the QUIC channel API.
|
|
||||||
%%% @end
|
|
||||||
%%%-------------------------------------------------------------------
|
|
||||||
-module(sdlan_quic_channel).
|
|
||||||
-author("anlicheng").
|
|
||||||
|
|
||||||
%% API
|
|
||||||
-export([start_link/2]).
|
|
||||||
-export([accept_stream/1, send_event/2, command/4, stop/2, debug_info/1]).
|
|
||||||
-export([test_rules/2]).
|
|
||||||
|
|
||||||
%%%===================================================================
|
|
||||||
%%% API
|
|
||||||
%%%===================================================================
|
|
||||||
|
|
||||||
%% 测试规则函数
|
|
||||||
-spec test_rules(SrcIdentityId :: integer(), DstIdentityId :: integer()) -> binary().
|
|
||||||
test_rules(SrcIdentityId, DstIdentityId) when is_integer(SrcIdentityId), is_integer(DstIdentityId) ->
|
|
||||||
sdlan_session:test_rules(SrcIdentityId, DstIdentityId).
|
|
||||||
|
|
||||||
-spec send_event(Pid :: pid(), Event :: binary()) -> ok.
|
|
||||||
send_event(Pid, ProtobufEvent) when is_pid(Pid), is_binary(ProtobufEvent) ->
|
|
||||||
sdlan_quic_transport:send_event(Pid, ProtobufEvent).
|
|
||||||
|
|
||||||
-spec command(Pid :: pid(), Ref :: reference(), ReceiverPid :: pid(), {Tag :: atom(), SubCommand :: any()}) -> ok.
|
|
||||||
command(Pid, Ref, ReceiverPid, SubCommand) when is_pid(Pid), is_pid(ReceiverPid) ->
|
|
||||||
sdlan_quic_transport:command(Pid, Ref, ReceiverPid, SubCommand).
|
|
||||||
|
|
||||||
-spec accept_stream(Pid :: pid()) -> ok.
|
|
||||||
accept_stream(Pid) when is_pid(Pid) ->
|
|
||||||
sdlan_quic_transport:accept_stream(Pid).
|
|
||||||
|
|
||||||
-spec stop(Pid :: pid(), Reason :: term()) -> ok.
|
|
||||||
stop(Pid, Reason) when is_pid(Pid) ->
|
|
||||||
sdlan_quic_transport:stop(Pid, Reason).
|
|
||||||
|
|
||||||
-spec debug_info(Pid :: pid()) -> map().
|
|
||||||
debug_info(Pid) when is_pid(Pid) ->
|
|
||||||
sdlan_quic_transport:debug_info(Pid).
|
|
||||||
|
|
||||||
%% @doc Creates a transport process. Kept for existing supervisor specs.
|
|
||||||
-spec start_link(Conn :: quicer:connection_handle(), Limits :: proplists:proplist()) -> gen_statem:start_ret().
|
|
||||||
start_link(Conn, Limits) when is_list(Limits) ->
|
|
||||||
sdlan_quic_transport:start_link(Conn, Limits).
|
|
||||||
@ -66,7 +66,7 @@ loop_accept(L, Limits, AcceptorId) ->
|
|||||||
logger:debug("[sdlan_quic_server] acceptor: ~p, accept a new connection: ~p", [AcceptorId, Conn]),
|
logger:debug("[sdlan_quic_server] acceptor: ~p, accept a new connection: ~p", [AcceptorId, Conn]),
|
||||||
case quicer:handshake(Conn) of
|
case quicer:handshake(Conn) of
|
||||||
{ok, NConn} ->
|
{ok, NConn} ->
|
||||||
case sdlan_quic_channel_sup:start_channel(NConn, Limits) of
|
case sdlan_quic_transport_sup:start_transport(NConn, Limits) of
|
||||||
{ok, ChannelPid} ->
|
{ok, ChannelPid} ->
|
||||||
logger:debug("[sdlan_quic_server] conn: ~p, handshake success, channel pid: ~p", [NConn, ChannelPid]),
|
logger:debug("[sdlan_quic_server] conn: ~p, handshake success, channel pid: ~p", [NConn, ChannelPid]),
|
||||||
case quicer:controlling_process(NConn, ChannelPid) of
|
case quicer:controlling_process(NConn, ChannelPid) of
|
||||||
|
|||||||
@ -11,6 +11,7 @@
|
|||||||
-include("sdlan_pb.hrl").
|
-include("sdlan_pb.hrl").
|
||||||
|
|
||||||
-behaviour(gen_statem).
|
-behaviour(gen_statem).
|
||||||
|
-behaviour(sdlan_transport).
|
||||||
|
|
||||||
%% 心跳包监测机制
|
%% 心跳包监测机制
|
||||||
-define(STREAM_ACTIVE_N, 100).
|
-define(STREAM_ACTIVE_N, 100).
|
||||||
|
|||||||
@ -6,14 +6,14 @@
|
|||||||
%%% @end
|
%%% @end
|
||||||
%%% Created : 13. 2月 2026 18:00
|
%%% Created : 13. 2月 2026 18:00
|
||||||
%%%-------------------------------------------------------------------
|
%%%-------------------------------------------------------------------
|
||||||
-module(sdlan_quic_channel_sup).
|
-module(sdlan_quic_transport_sup).
|
||||||
-author("anlicheng").
|
-author("anlicheng").
|
||||||
|
|
||||||
-behaviour(supervisor).
|
-behaviour(supervisor).
|
||||||
|
|
||||||
%% API
|
%% API
|
||||||
-export([start_link/0]).
|
-export([start_link/0]).
|
||||||
-export([start_channel/2]).
|
-export([start_transport/2]).
|
||||||
|
|
||||||
%% Supervisor callbacks
|
%% Supervisor callbacks
|
||||||
-export([init/1]).
|
-export([init/1]).
|
||||||
@ -58,6 +58,6 @@ init([]) ->
|
|||||||
%%% Internal functions
|
%%% Internal functions
|
||||||
%%%===================================================================
|
%%%===================================================================
|
||||||
|
|
||||||
-spec start_channel(NConn :: quicer:connection_handle(), Limits :: proplists:proplist()) -> supervisor:startchild_ret().
|
-spec start_transport(NConn :: quicer:connection_handle(), Limits :: proplists:proplist()) -> supervisor:startchild_ret().
|
||||||
start_channel(NConn, Limits) when is_list(Limits) ->
|
start_transport(NConn, Limits) when is_list(Limits) ->
|
||||||
supervisor:start_child(?MODULE, [NConn, Limits]).
|
supervisor:start_child(?MODULE, [NConn, Limits]).
|
||||||
@ -14,6 +14,7 @@
|
|||||||
%% API
|
%% API
|
||||||
-export([get_all_networks/0, get_network/1]).
|
-export([get_all_networks/0, get_network/1]).
|
||||||
-export([flow_report/5, network_forward_report/2, auth_access_token/1, set_node_status/1]).
|
-export([flow_report/5, network_forward_report/2, auth_access_token/1, set_node_status/1]).
|
||||||
|
-export([node_acl/1]).
|
||||||
|
|
||||||
-spec get_all_networks() -> {ok, [NetworkId :: integer()]} | {error, Reason :: any()}.
|
-spec get_all_networks() -> {ok, [NetworkId :: integer()]} | {error, Reason :: any()}.
|
||||||
get_all_networks() ->
|
get_all_networks() ->
|
||||||
@ -65,6 +66,20 @@ auth_access_token(Params) when is_map(Params) ->
|
|||||||
Error
|
Error
|
||||||
end.
|
end.
|
||||||
|
|
||||||
|
-spec node_acl(Params :: map()) -> {ok, Resp :: map()} | {error, Reason :: any()}.
|
||||||
|
node_acl(Params) when is_map(Params) ->
|
||||||
|
case safe_request(fun() -> do_post("acl", Params) end) of
|
||||||
|
{ok, Resp} ->
|
||||||
|
case decode_json(Resp) of
|
||||||
|
{ok, Result} ->
|
||||||
|
{ok, Result};
|
||||||
|
{error, Reason} ->
|
||||||
|
{error, Reason}
|
||||||
|
end;
|
||||||
|
{error, _Reason} = Error ->
|
||||||
|
Error
|
||||||
|
end.
|
||||||
|
|
||||||
-spec set_node_status(Params :: map()) -> {ok, Resp :: map()} | {error, Reason :: any()}.
|
-spec set_node_status(Params :: map()) -> {ok, Resp :: map()} | {error, Reason :: any()}.
|
||||||
set_node_status(Params) when is_map(Params) ->
|
set_node_status(Params) when is_map(Params) ->
|
||||||
case safe_request(fun() -> do_post("set_node_status", Params) end) of
|
case safe_request(fun() -> do_post("set_node_status", Params) end) of
|
||||||
|
|||||||
@ -19,8 +19,8 @@
|
|||||||
|
|
||||||
%% API
|
%% API
|
||||||
-export([start_link/2]).
|
-export([start_link/2]).
|
||||||
-export([get_name/1, get_pid/1, lookup_pid/1, peer_info/3, unregister/3, debug_info/1, get_network_id/1, attach/6, arp_request/2]).
|
-export([get_name/1, get_pid/1, lookup_pid/1, peer_info/3, unregister/3, debug_info/1, get_network_id/1, attach/7, arp_request/2]).
|
||||||
-export([forward_by_ets/5, update_hole/7, disable_client/2, get_channel/2]).
|
-export([forward_by_ets/5, update_hole/7, disable_client/2, get_channel/2, exposed_service_changed/2]).
|
||||||
-export([command/4, wait_command_ack/2]).
|
-export([command/4, wait_command_ack/2]).
|
||||||
|
|
||||||
%% gen_server callbacks
|
%% gen_server callbacks
|
||||||
@ -35,6 +35,7 @@
|
|||||||
-record(endpoint, {
|
-record(endpoint, {
|
||||||
channel_pid :: undefined | pid(),
|
channel_pid :: undefined | pid(),
|
||||||
channel_ref :: undefined | reference(),
|
channel_ref :: undefined | reference(),
|
||||||
|
transport :: module(),
|
||||||
|
|
||||||
client_id :: binary(),
|
client_id :: binary(),
|
||||||
mac :: binary(),
|
mac :: binary(),
|
||||||
@ -90,10 +91,11 @@ get_name(Id) when is_integer(Id) ->
|
|||||||
get_network_id(Pid) when is_pid(Pid) ->
|
get_network_id(Pid) when is_pid(Pid) ->
|
||||||
gen_server:call(Pid, get_network_id).
|
gen_server:call(Pid, get_network_id).
|
||||||
|
|
||||||
-spec attach(Pid :: pid(), ChannelPid :: pid(), ClientId :: binary(), Mac :: binary(), Ip :: integer(), Hostname :: binary()) ->
|
-spec attach(Pid :: pid(), ChannelPid :: pid(), Transport :: module(), ClientId :: binary(), Mac :: binary(), Ip :: integer(), Hostname :: binary()) ->
|
||||||
{ok, Algorithm :: binary(), Key :: binary(), RegionId :: integer(), SessionToken :: binary()}.
|
{ok, Algorithm :: binary(), Key :: binary(), RegionId :: integer(), SessionToken :: binary()}.
|
||||||
attach(Pid, ChannelPid, ClientId, Mac, Ip, Hostname) when is_pid(Pid), is_pid(ChannelPid), is_binary(ClientId), is_binary(Mac), is_integer(Ip), is_binary(Hostname) ->
|
attach(Pid, ChannelPid, Transport, ClientId, Mac, Ip, Hostname)
|
||||||
gen_server:call(Pid, {attach, ChannelPid, ClientId, Mac, Ip, Hostname}).
|
when is_pid(Pid), is_pid(ChannelPid), is_atom(Transport), is_binary(ClientId), is_binary(Mac), is_integer(Ip), is_binary(Hostname) ->
|
||||||
|
gen_server:call(Pid, {attach, ChannelPid, Transport, ClientId, Mac, Ip, Hostname}).
|
||||||
|
|
||||||
-spec unregister(Pid :: pid(), ClientId :: binary(), Mac :: binary()) -> ok.
|
-spec unregister(Pid :: pid(), ClientId :: binary(), Mac :: binary()) -> ok.
|
||||||
unregister(Pid, ClientId, Mac) when is_pid(Pid), is_binary(ClientId), is_binary(Mac) ->
|
unregister(Pid, ClientId, Mac) when is_pid(Pid), is_binary(ClientId), is_binary(Mac) ->
|
||||||
@ -116,7 +118,7 @@ command(Pid, ReceiverPid, ClientId, SubCommand) when is_pid(Pid), is_pid(Receive
|
|||||||
-spec wait_command_ack(Ref :: reference(), Timeout :: integer()) -> {error, timeout} | {ok, CommandAck :: #'SDLCommandAck'{}}.
|
-spec wait_command_ack(Ref :: reference(), Timeout :: integer()) -> {error, timeout} | {ok, CommandAck :: #'SDLCommandAck'{}}.
|
||||||
wait_command_ack(Ref, Timeout) when is_reference(Ref), is_integer(Timeout) ->
|
wait_command_ack(Ref, Timeout) when is_reference(Ref), is_integer(Timeout) ->
|
||||||
receive
|
receive
|
||||||
{quic_command_ack, Ref, CommandAck} ->
|
{command_ack, Ref, CommandAck} ->
|
||||||
{ok, CommandAck}
|
{ok, CommandAck}
|
||||||
after Timeout ->
|
after Timeout ->
|
||||||
{error, timeout}
|
{error, timeout}
|
||||||
@ -153,6 +155,10 @@ update_hole(Pid, SessionToken, ClientId, Mac, Peer, NatType, V6Info) when is_pid
|
|||||||
disable_client(Pid, ClientId) when is_pid(Pid), is_binary(ClientId) ->
|
disable_client(Pid, ClientId) when is_pid(Pid), is_binary(ClientId) ->
|
||||||
gen_server:call(Pid, {disable_client, ClientId}).
|
gen_server:call(Pid, {disable_client, ClientId}).
|
||||||
|
|
||||||
|
-spec exposed_service_changed(Pid :: pid(), ClientIds :: [binary()]) -> ok.
|
||||||
|
exposed_service_changed(Pid, ClientIds) when is_pid(Pid), is_list(ClientIds) ->
|
||||||
|
gen_server:call(Pid, {exposed_service_changed, ClientIds}).
|
||||||
|
|
||||||
-spec get_channel(Pid :: pid(), ClientId :: binary()) -> error | {ok, ChannelPid :: pid()}.
|
-spec get_channel(Pid :: pid(), ClientId :: binary()) -> error | {ok, ChannelPid :: pid()}.
|
||||||
get_channel(Pid, ClientId) when is_pid(Pid), is_binary(ClientId) ->
|
get_channel(Pid, ClientId) when is_pid(Pid), is_binary(ClientId) ->
|
||||||
gen_server:call(Pid, {get_channel, ClientId}).
|
gen_server:call(Pid, {get_channel, ClientId}).
|
||||||
@ -205,7 +211,7 @@ init([{network, Id, Name, Domain, IpAddr, MaskLen, OwnerId, Algorithm0}]) ->
|
|||||||
{stop, Reason :: term(), Reply :: term(), NewState :: #state{}} |
|
{stop, Reason :: term(), Reply :: term(), NewState :: #state{}} |
|
||||||
{stop, Reason :: term(), NewState :: #state{}}).
|
{stop, Reason :: term(), NewState :: #state{}}).
|
||||||
%% 给客户端分配ip地址
|
%% 给客户端分配ip地址
|
||||||
handle_call({attach, ChannelPid, ClientId, Mac, Ip, Hostname}, _From,
|
handle_call({attach, ChannelPid, Transport, ClientId, Mac, Ip, Hostname}, _From,
|
||||||
State = #state{network_id = NetworkId, domain = Domain, algorithm = Algorithm, key = Key, endpoint_table = EndpointTable}) ->
|
State = #state{network_id = NetworkId, domain = Domain, algorithm = Algorithm, key = Key, endpoint_table = EndpointTable}) ->
|
||||||
%% 分配ip地址的时候,以mac地址为唯一基准
|
%% 分配ip地址的时候,以mac地址为唯一基准
|
||||||
logger:debug("[sdlan_network] alloc_ip, network_id: ~p, client_id: ~p, mac: ~p, ip_addr: ~p",
|
logger:debug("[sdlan_network] alloc_ip, network_id: ~p, client_id: ~p, mac: ~p, ip_addr: ~p",
|
||||||
@ -221,6 +227,7 @@ handle_call({attach, ChannelPid, ClientId, Mac, Ip, Hostname}, _From,
|
|||||||
Endpoint = #endpoint{
|
Endpoint = #endpoint{
|
||||||
channel_pid = ChannelPid,
|
channel_pid = ChannelPid,
|
||||||
channel_ref = ChannelRef,
|
channel_ref = ChannelRef,
|
||||||
|
transport = Transport,
|
||||||
client_id = ClientId,
|
client_id = ClientId,
|
||||||
mac = Mac,
|
mac = Mac,
|
||||||
ip = Ip,
|
ip = Ip,
|
||||||
@ -266,7 +273,7 @@ handle_call(get_network_id, _From, State = #state{network_id = NetworkId}) ->
|
|||||||
%% 网络存在的nat_peer信息
|
%% 网络存在的nat_peer信息
|
||||||
handle_call({peer_info, SrcMac, DstMac}, _From, State = #state{endpoint_table = EndpointTable}) ->
|
handle_call({peer_info, SrcMac, DstMac}, _From, State = #state{endpoint_table = EndpointTable}) ->
|
||||||
case lookup_endpoint(EndpointTable, DstMac) of
|
case lookup_endpoint(EndpointTable, DstMac) of
|
||||||
#endpoint{channel_pid = DstChannelPid, hole = #hole{peer = DstNatPeer, nat_type = DstNatType}, v6_info = DstV6Info} ->
|
#endpoint{channel_pid = DstChannelPid, transport = Transport, hole = #hole{peer = DstNatPeer, nat_type = DstNatType}, v6_info = DstV6Info} ->
|
||||||
%% 让目标服务器发送sendRegister事件(2024-06-25 新增,提高打洞的成功率)
|
%% 让目标服务器发送sendRegister事件(2024-06-25 新增,提高打洞的成功率)
|
||||||
maybe
|
maybe
|
||||||
#endpoint{hole = #hole{peer = {SrcNatIp, SrcNatPort}, nat_type = SrcNatType}, v6_info = SrcV6Info} ?= lookup_endpoint(EndpointTable, SrcMac),
|
#endpoint{hole = #hole{peer = {SrcNatIp, SrcNatPort}, nat_type = SrcNatType}, v6_info = SrcV6Info} ?= lookup_endpoint(EndpointTable, SrcMac),
|
||||||
@ -282,7 +289,7 @@ handle_call({peer_info, SrcMac, DstMac}, _From, State = #state{endpoint_table =
|
|||||||
}),
|
}),
|
||||||
logger:debug("Event: send_register, for peer_info"),
|
logger:debug("Event: send_register, for peer_info"),
|
||||||
|
|
||||||
sdlan_quic_channel:send_event(DstChannelPid, RegisterEvent)
|
Transport:send_event(DstChannelPid, RegisterEvent)
|
||||||
end,
|
end,
|
||||||
{reply, {ok, {DstNatPeer, DstNatType}, DstV6Info}, State};
|
{reply, {ok, {DstNatPeer, DstNatType}, DstV6Info}, State};
|
||||||
_ ->
|
_ ->
|
||||||
@ -293,7 +300,7 @@ handle_call({peer_info, SrcMac, DstMac}, _From, State = #state{endpoint_table =
|
|||||||
handle_call({arp_request, TargetIp}, _From, State = #state{endpoint_table = EndpointTable}) ->
|
handle_call({arp_request, TargetIp}, _From, State = #state{endpoint_table = EndpointTable}) ->
|
||||||
MatchSpec = ets:fun2ms(fun(Object = {_Mac, #endpoint{ip = Ip}}) when Ip =:= TargetIp ->
|
MatchSpec = ets:fun2ms(fun(Object = {_Mac, #endpoint{ip = Ip}}) when Ip =:= TargetIp ->
|
||||||
Object
|
Object
|
||||||
end),
|
end),
|
||||||
case select_endpoint(EndpointTable, MatchSpec) of
|
case select_endpoint(EndpointTable, MatchSpec) of
|
||||||
error ->
|
error ->
|
||||||
{reply, error, State};
|
{reply, error, State};
|
||||||
@ -307,14 +314,34 @@ handle_call({command, ReceiverPid, ClientId, SubCommand}, _From, State = #state{
|
|||||||
Object
|
Object
|
||||||
end),
|
end),
|
||||||
case select_endpoint(EndpointTable, MatchSpec) of
|
case select_endpoint(EndpointTable, MatchSpec) of
|
||||||
{ok, _Mac, #endpoint{channel_pid = ChannelPid}} ->
|
{ok, _Mac, #endpoint{channel_pid = ChannelPid, transport = Transport}} ->
|
||||||
Ref = make_ref(),
|
Ref = make_ref(),
|
||||||
sdlan_quic_channel:command(ChannelPid, Ref, ReceiverPid, SubCommand),
|
Transport:command(ChannelPid, Ref, ReceiverPid, SubCommand),
|
||||||
{reply, {ok, Ref}, State};
|
{reply, {ok, Ref}, State};
|
||||||
error ->
|
error ->
|
||||||
{reply, {error, <<"目标Node不在线"/utf8>>}, State}
|
{reply, {error, <<"目标Node不在线"/utf8>>}, State}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
%% 触发acl改变
|
||||||
|
handle_call({exposed_service_changed, ClientIds}, _From, State = #state{endpoint_table = EndpointTable}) ->
|
||||||
|
Endpoints = ets:foldl(fun({_, EP = #endpoint{client_id = ClientId0}}, Acc) ->
|
||||||
|
case lists:member(ClientId0, ClientIds) of
|
||||||
|
true ->
|
||||||
|
[EP|Acc];
|
||||||
|
false ->
|
||||||
|
Acc
|
||||||
|
end
|
||||||
|
end, [], EndpointTable),
|
||||||
|
|
||||||
|
ExposedServiceChangedEvent = sdlan_pb:encode_msg(#'SDLEvent' {
|
||||||
|
event = {exposed_service_changed, #'SDLEvent.ExposedServiceChanged'{}}
|
||||||
|
}),
|
||||||
|
lists:foreach(fun(#endpoint{channel_pid = ChannelPid, transport = Transport}) ->
|
||||||
|
Transport:send_event(ChannelPid, ExposedServiceChangedEvent)
|
||||||
|
end, Endpoints),
|
||||||
|
|
||||||
|
{reply, ok, State};
|
||||||
|
|
||||||
handle_call(debug_info, _From, State = #state{network_id = NetworkId, ipaddr = IpAddr, mask_len = MaskLen, owner_id = OwnerId, endpoint_table = EndpointTable}) ->
|
handle_call(debug_info, _From, State = #state{network_id = NetworkId, ipaddr = IpAddr, mask_len = MaskLen, owner_id = OwnerId, endpoint_table = EndpointTable}) ->
|
||||||
Reply = #{
|
Reply = #{
|
||||||
<<"network_id">> => NetworkId,
|
<<"network_id">> => NetworkId,
|
||||||
@ -362,8 +389,8 @@ handle_cast({update_hole, SessionToken, ClientId, Mac, Peer, NatType, V6Info}, S
|
|||||||
}),
|
}),
|
||||||
|
|
||||||
logger:debug("[sdlan_network] Event: nat_changed, update_hole, client_id: ~p(~p), hole changed", [ClientId, Ip]),
|
logger:debug("[sdlan_network] Event: nat_changed, update_hole, client_id: ~p(~p), hole changed", [ClientId, Ip]),
|
||||||
broadcast(fun(#endpoint{channel_pid = ChannelPid}) ->
|
broadcast(fun(#endpoint{channel_pid = ChannelPid, transport = Transport}) ->
|
||||||
sdlan_quic_channel:send_event(ChannelPid, NatChangedEvent)
|
Transport:send_event(ChannelPid, NatChangedEvent)
|
||||||
end, [Mac], EndpointTable)
|
end, [Mac], EndpointTable)
|
||||||
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)},
|
||||||
@ -399,7 +426,7 @@ handle_info(Info, State) ->
|
|||||||
-spec(terminate(Reason :: (normal | shutdown | {shutdown, term()} | term()),
|
-spec(terminate(Reason :: (normal | shutdown | {shutdown, term()} | term()),
|
||||||
State :: #state{}) -> ok).
|
State :: #state{}) -> ok).
|
||||||
terminate(Reason, #state{network_id = NetworkId, endpoint_table = EndpointTable}) ->
|
terminate(Reason, #state{network_id = NetworkId, endpoint_table = EndpointTable}) ->
|
||||||
broadcast(fun(#endpoint{channel_pid = ChannelPid}) ->
|
broadcast(fun(#endpoint{channel_pid = ChannelPid, transport = Transport}) ->
|
||||||
case is_pid(ChannelPid) andalso is_process_alive(ChannelPid) of
|
case is_pid(ChannelPid) andalso is_process_alive(ChannelPid) of
|
||||||
true ->
|
true ->
|
||||||
NetworkShutdownEvent = sdlan_pb:encode_msg(#'SDLEvent'{
|
NetworkShutdownEvent = sdlan_pb:encode_msg(#'SDLEvent'{
|
||||||
@ -410,8 +437,8 @@ terminate(Reason, #state{network_id = NetworkId, endpoint_table = EndpointTable}
|
|||||||
|
|
||||||
logger:debug("[sdlan_network] Event: shutdown"),
|
logger:debug("[sdlan_network] Event: shutdown"),
|
||||||
|
|
||||||
sdlan_quic_channel:send_event(ChannelPid, NetworkShutdownEvent),
|
Transport:send_event(ChannelPid, NetworkShutdownEvent),
|
||||||
sdlan_quic_channel:stop(ChannelPid, normal);
|
Transport:stop(ChannelPid, normal);
|
||||||
false ->
|
false ->
|
||||||
ok
|
ok
|
||||||
end
|
end
|
||||||
@ -571,8 +598,8 @@ maybe_nat_changed(ChannelPid, Mac, Ip, EndpointTable) ->
|
|||||||
}),
|
}),
|
||||||
logger:debug("Event: nat_changed, for attach"),
|
logger:debug("Event: nat_changed, for attach"),
|
||||||
|
|
||||||
broadcast(fun(#endpoint{channel_pid = ChannelPid0}) ->
|
broadcast(fun(#endpoint{channel_pid = ChannelPid0, transport = Transport}) ->
|
||||||
sdlan_quic_channel:send_event(ChannelPid0, Event)
|
Transport:send_event(ChannelPid0, Event)
|
||||||
end, [Mac], EndpointTable)
|
end, [Mac], EndpointTable)
|
||||||
end,
|
end,
|
||||||
%% 重复attach需要清理之前的绑定信息;即使IP未变化,也不能保留旧channel。
|
%% 重复attach需要清理之前的绑定信息;即使IP未变化,也不能保留旧channel。
|
||||||
@ -580,11 +607,11 @@ maybe_nat_changed(ChannelPid, Mac, Ip, EndpointTable) ->
|
|||||||
|
|
||||||
cleanup_endpoint(undefined, _KeepChannelPid, _Reason) ->
|
cleanup_endpoint(undefined, _KeepChannelPid, _Reason) ->
|
||||||
ok;
|
ok;
|
||||||
cleanup_endpoint(#endpoint{channel_ref = ChannelRef, channel_pid = ChannelPid}, KeepChannelPid, Reason) ->
|
cleanup_endpoint(#endpoint{channel_ref = ChannelRef, channel_pid = ChannelPid, transport = Transport}, KeepChannelPid, Reason) ->
|
||||||
is_reference(ChannelRef) andalso erlang:demonitor(ChannelRef, [flush]),
|
is_reference(ChannelRef) andalso erlang:demonitor(ChannelRef, [flush]),
|
||||||
case should_stop_channel(ChannelPid, KeepChannelPid) of
|
case should_stop_channel(ChannelPid, KeepChannelPid) of
|
||||||
true ->
|
true ->
|
||||||
catch sdlan_quic_channel:stop(ChannelPid, Reason),
|
catch Transport:stop(ChannelPid, Reason),
|
||||||
ok;
|
ok;
|
||||||
false ->
|
false ->
|
||||||
ok
|
ok
|
||||||
@ -674,7 +701,7 @@ select_endpoint(Table, MatchSpec) ->
|
|||||||
case catch ets:select(Table, MatchSpec, 1) of
|
case catch ets:select(Table, MatchSpec, 1) of
|
||||||
{[], _Continuation} ->
|
{[], _Continuation} ->
|
||||||
error;
|
error;
|
||||||
{[{Mac, Endpoint = #endpoint{}}], _Continuation} ->
|
{[{Mac, Endpoint = #endpoint{}}|_], _Continuation} ->
|
||||||
{ok, Mac, Endpoint};
|
{ok, Mac, Endpoint};
|
||||||
'$end_of_table' ->
|
'$end_of_table' ->
|
||||||
error;
|
error;
|
||||||
|
|||||||
380
src/sdlan_pb.erl
380
src/sdlan_pb.erl
@ -82,10 +82,16 @@
|
|||||||
|
|
||||||
-type 'SDLPolicyResponse'() :: #'SDLPolicyResponse'{}.
|
-type 'SDLPolicyResponse'() :: #'SDLPolicyResponse'{}.
|
||||||
|
|
||||||
|
-type 'SDLExposedServiceRequest'() :: #'SDLExposedServiceRequest'{}.
|
||||||
|
|
||||||
|
-type 'SDLExposedServiceResponse'() :: #'SDLExposedServiceResponse'{}.
|
||||||
|
|
||||||
-type 'SDLEvent.NatChanged'() :: #'SDLEvent.NatChanged'{}.
|
-type 'SDLEvent.NatChanged'() :: #'SDLEvent.NatChanged'{}.
|
||||||
|
|
||||||
-type 'SDLEvent.SendRegister'() :: #'SDLEvent.SendRegister'{}.
|
-type 'SDLEvent.SendRegister'() :: #'SDLEvent.SendRegister'{}.
|
||||||
|
|
||||||
|
-type 'SDLEvent.ExposedServiceChanged'() :: #'SDLEvent.ExposedServiceChanged'{}.
|
||||||
|
|
||||||
-type 'SDLEvent.NetworkShutdown'() :: #'SDLEvent.NetworkShutdown'{}.
|
-type 'SDLEvent.NetworkShutdown'() :: #'SDLEvent.NetworkShutdown'{}.
|
||||||
|
|
||||||
-type 'SDLEvent'() :: #'SDLEvent'{}.
|
-type 'SDLEvent'() :: #'SDLEvent'{}.
|
||||||
@ -110,9 +116,9 @@
|
|||||||
|
|
||||||
-type 'SDLRegisterAck'() :: #'SDLRegisterAck'{}.
|
-type 'SDLRegisterAck'() :: #'SDLRegisterAck'{}.
|
||||||
|
|
||||||
-export_type(['SDLV4Info'/0, 'SDLV6Info'/0, 'SDLV6AssistProbe'/0, 'SDLV6AssistProbeReply'/0, 'SDLWelcome'/0, 'SDLRegisterSuper'/0, 'SDLRegisterSuperAck'/0, 'SDLRegisterSuperNak'/0, 'SDLQueryInfo'/0, 'SDLPeerInfo'/0, 'SDLArpRequest'/0, 'SDLArpResponse'/0, 'SDLPolicyRequest'/0, 'SDLPolicyResponse'/0, 'SDLEvent.NatChanged'/0, 'SDLEvent.SendRegister'/0, 'SDLEvent.NetworkShutdown'/0, 'SDLEvent'/0, 'SDLCommand.ExitNodeControl'/0, 'SDLCommand'/0, 'SDLCommandAck'/0, 'SDLStunRequest'/0, 'SDLStunReply'/0, 'SDLData'/0, 'SDLStunProbe'/0, 'SDLStunProbeReply'/0, 'SDLRegister'/0, 'SDLRegisterAck'/0]).
|
-export_type(['SDLV4Info'/0, 'SDLV6Info'/0, 'SDLV6AssistProbe'/0, 'SDLV6AssistProbeReply'/0, 'SDLWelcome'/0, 'SDLRegisterSuper'/0, 'SDLRegisterSuperAck'/0, 'SDLRegisterSuperNak'/0, 'SDLQueryInfo'/0, 'SDLPeerInfo'/0, 'SDLArpRequest'/0, 'SDLArpResponse'/0, 'SDLPolicyRequest'/0, 'SDLPolicyResponse'/0, 'SDLExposedServiceRequest'/0, 'SDLExposedServiceResponse'/0, 'SDLEvent.NatChanged'/0, 'SDLEvent.SendRegister'/0, 'SDLEvent.ExposedServiceChanged'/0, 'SDLEvent.NetworkShutdown'/0, 'SDLEvent'/0, 'SDLCommand.ExitNodeControl'/0, 'SDLCommand'/0, 'SDLCommandAck'/0, 'SDLStunRequest'/0, 'SDLStunReply'/0, 'SDLData'/0, 'SDLStunProbe'/0, 'SDLStunProbeReply'/0, 'SDLRegister'/0, 'SDLRegisterAck'/0]).
|
||||||
-type '$msg_name'() :: 'SDLV4Info' | 'SDLV6Info' | 'SDLV6AssistProbe' | 'SDLV6AssistProbeReply' | 'SDLWelcome' | 'SDLRegisterSuper' | 'SDLRegisterSuperAck' | 'SDLRegisterSuperNak' | 'SDLQueryInfo' | 'SDLPeerInfo' | 'SDLArpRequest' | 'SDLArpResponse' | 'SDLPolicyRequest' | 'SDLPolicyResponse' | 'SDLEvent.NatChanged' | 'SDLEvent.SendRegister' | 'SDLEvent.NetworkShutdown' | 'SDLEvent' | 'SDLCommand.ExitNodeControl' | 'SDLCommand' | 'SDLCommandAck' | 'SDLStunRequest' | 'SDLStunReply' | 'SDLData' | 'SDLStunProbe' | 'SDLStunProbeReply' | 'SDLRegister' | 'SDLRegisterAck'.
|
-type '$msg_name'() :: 'SDLV4Info' | 'SDLV6Info' | 'SDLV6AssistProbe' | 'SDLV6AssistProbeReply' | 'SDLWelcome' | 'SDLRegisterSuper' | 'SDLRegisterSuperAck' | 'SDLRegisterSuperNak' | 'SDLQueryInfo' | 'SDLPeerInfo' | 'SDLArpRequest' | 'SDLArpResponse' | 'SDLPolicyRequest' | 'SDLPolicyResponse' | 'SDLExposedServiceRequest' | 'SDLExposedServiceResponse' | 'SDLEvent.NatChanged' | 'SDLEvent.SendRegister' | 'SDLEvent.ExposedServiceChanged' | 'SDLEvent.NetworkShutdown' | 'SDLEvent' | 'SDLCommand.ExitNodeControl' | 'SDLCommand' | 'SDLCommandAck' | 'SDLStunRequest' | 'SDLStunReply' | 'SDLData' | 'SDLStunProbe' | 'SDLStunProbeReply' | 'SDLRegister' | 'SDLRegisterAck'.
|
||||||
-type '$msg'() :: 'SDLV4Info'() | 'SDLV6Info'() | 'SDLV6AssistProbe'() | 'SDLV6AssistProbeReply'() | 'SDLWelcome'() | 'SDLRegisterSuper'() | 'SDLRegisterSuperAck'() | 'SDLRegisterSuperNak'() | 'SDLQueryInfo'() | 'SDLPeerInfo'() | 'SDLArpRequest'() | 'SDLArpResponse'() | 'SDLPolicyRequest'() | 'SDLPolicyResponse'() | 'SDLEvent.NatChanged'() | 'SDLEvent.SendRegister'() | 'SDLEvent.NetworkShutdown'() | 'SDLEvent'() | 'SDLCommand.ExitNodeControl'() | 'SDLCommand'() | 'SDLCommandAck'() | 'SDLStunRequest'() | 'SDLStunReply'() | 'SDLData'() | 'SDLStunProbe'() | 'SDLStunProbeReply'() | 'SDLRegister'() | 'SDLRegisterAck'().
|
-type '$msg'() :: 'SDLV4Info'() | 'SDLV6Info'() | 'SDLV6AssistProbe'() | 'SDLV6AssistProbeReply'() | 'SDLWelcome'() | 'SDLRegisterSuper'() | 'SDLRegisterSuperAck'() | 'SDLRegisterSuperNak'() | 'SDLQueryInfo'() | 'SDLPeerInfo'() | 'SDLArpRequest'() | 'SDLArpResponse'() | 'SDLPolicyRequest'() | 'SDLPolicyResponse'() | 'SDLExposedServiceRequest'() | 'SDLExposedServiceResponse'() | 'SDLEvent.NatChanged'() | 'SDLEvent.SendRegister'() | 'SDLEvent.ExposedServiceChanged'() | 'SDLEvent.NetworkShutdown'() | 'SDLEvent'() | 'SDLCommand.ExitNodeControl'() | 'SDLCommand'() | 'SDLCommandAck'() | 'SDLStunRequest'() | 'SDLStunReply'() | 'SDLData'() | 'SDLStunProbe'() | 'SDLStunProbeReply'() | 'SDLRegister'() | 'SDLRegisterAck'().
|
||||||
-export_type(['$msg_name'/0, '$msg'/0]).
|
-export_type(['$msg_name'/0, '$msg'/0]).
|
||||||
|
|
||||||
-if(?OTP_RELEASE >= 24).
|
-if(?OTP_RELEASE >= 24).
|
||||||
@ -153,8 +159,11 @@ encode_msg(Msg, MsgName, Opts) ->
|
|||||||
'SDLArpResponse' -> encode_msg_SDLArpResponse(id(Msg, TrUserData), TrUserData);
|
'SDLArpResponse' -> encode_msg_SDLArpResponse(id(Msg, TrUserData), TrUserData);
|
||||||
'SDLPolicyRequest' -> encode_msg_SDLPolicyRequest(id(Msg, TrUserData), TrUserData);
|
'SDLPolicyRequest' -> encode_msg_SDLPolicyRequest(id(Msg, TrUserData), TrUserData);
|
||||||
'SDLPolicyResponse' -> encode_msg_SDLPolicyResponse(id(Msg, TrUserData), TrUserData);
|
'SDLPolicyResponse' -> encode_msg_SDLPolicyResponse(id(Msg, TrUserData), TrUserData);
|
||||||
|
'SDLExposedServiceRequest' -> encode_msg_SDLExposedServiceRequest(id(Msg, TrUserData), TrUserData);
|
||||||
|
'SDLExposedServiceResponse' -> encode_msg_SDLExposedServiceResponse(id(Msg, TrUserData), TrUserData);
|
||||||
'SDLEvent.NatChanged' -> 'encode_msg_SDLEvent.NatChanged'(id(Msg, TrUserData), TrUserData);
|
'SDLEvent.NatChanged' -> 'encode_msg_SDLEvent.NatChanged'(id(Msg, TrUserData), TrUserData);
|
||||||
'SDLEvent.SendRegister' -> 'encode_msg_SDLEvent.SendRegister'(id(Msg, TrUserData), TrUserData);
|
'SDLEvent.SendRegister' -> 'encode_msg_SDLEvent.SendRegister'(id(Msg, TrUserData), TrUserData);
|
||||||
|
'SDLEvent.ExposedServiceChanged' -> 'encode_msg_SDLEvent.ExposedServiceChanged'(id(Msg, TrUserData), TrUserData);
|
||||||
'SDLEvent.NetworkShutdown' -> 'encode_msg_SDLEvent.NetworkShutdown'(id(Msg, TrUserData), TrUserData);
|
'SDLEvent.NetworkShutdown' -> 'encode_msg_SDLEvent.NetworkShutdown'(id(Msg, TrUserData), TrUserData);
|
||||||
'SDLEvent' -> encode_msg_SDLEvent(id(Msg, TrUserData), TrUserData);
|
'SDLEvent' -> encode_msg_SDLEvent(id(Msg, TrUserData), TrUserData);
|
||||||
'SDLCommand.ExitNodeControl' -> 'encode_msg_SDLCommand.ExitNodeControl'(id(Msg, TrUserData), TrUserData);
|
'SDLCommand.ExitNodeControl' -> 'encode_msg_SDLCommand.ExitNodeControl'(id(Msg, TrUserData), TrUserData);
|
||||||
@ -650,6 +659,46 @@ encode_msg_SDLPolicyResponse(#'SDLPolicyResponse'{src_identity_id = F1, dst_iden
|
|||||||
end
|
end
|
||||||
end.
|
end.
|
||||||
|
|
||||||
|
encode_msg_SDLExposedServiceRequest(Msg, TrUserData) -> encode_msg_SDLExposedServiceRequest(Msg, <<>>, TrUserData).
|
||||||
|
|
||||||
|
|
||||||
|
encode_msg_SDLExposedServiceRequest(#'SDLExposedServiceRequest'{version = F1}, Bin, TrUserData) ->
|
||||||
|
if F1 == undefined -> Bin;
|
||||||
|
true ->
|
||||||
|
begin
|
||||||
|
TrF1 = id(F1, TrUserData),
|
||||||
|
if TrF1 =:= 0 -> Bin;
|
||||||
|
true -> e_varint(TrF1, <<Bin/binary, 8>>, TrUserData)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end.
|
||||||
|
|
||||||
|
encode_msg_SDLExposedServiceResponse(Msg, TrUserData) -> encode_msg_SDLExposedServiceResponse(Msg, <<>>, TrUserData).
|
||||||
|
|
||||||
|
|
||||||
|
encode_msg_SDLExposedServiceResponse(#'SDLExposedServiceResponse'{version = F1, tcp_ports = F2, udp_ports = F3}, Bin, TrUserData) ->
|
||||||
|
B1 = if F1 == undefined -> Bin;
|
||||||
|
true ->
|
||||||
|
begin
|
||||||
|
TrF1 = id(F1, TrUserData),
|
||||||
|
if TrF1 =:= 0 -> Bin;
|
||||||
|
true -> e_varint(TrF1, <<Bin/binary, 8>>, TrUserData)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
B2 = begin
|
||||||
|
TrF2 = id(F2, TrUserData),
|
||||||
|
if TrF2 == [] -> B1;
|
||||||
|
true -> e_field_SDLExposedServiceResponse_tcp_ports(TrF2, B1, TrUserData)
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
begin
|
||||||
|
TrF3 = id(F3, TrUserData),
|
||||||
|
if TrF3 == [] -> B2;
|
||||||
|
true -> e_field_SDLExposedServiceResponse_udp_ports(TrF3, B2, TrUserData)
|
||||||
|
end
|
||||||
|
end.
|
||||||
|
|
||||||
'encode_msg_SDLEvent.NatChanged'(Msg, TrUserData) -> 'encode_msg_SDLEvent.NatChanged'(Msg, <<>>, TrUserData).
|
'encode_msg_SDLEvent.NatChanged'(Msg, TrUserData) -> 'encode_msg_SDLEvent.NatChanged'(Msg, <<>>, TrUserData).
|
||||||
|
|
||||||
|
|
||||||
@ -719,6 +768,8 @@ encode_msg_SDLPolicyResponse(#'SDLPolicyResponse'{src_identity_id = F1, dst_iden
|
|||||||
true -> begin TrF5 = id(F5, TrUserData), 'e_mfield_SDLEvent.SendRegister_v6_info'(TrF5, <<B4/binary, 42>>, TrUserData) end
|
true -> begin TrF5 = id(F5, TrUserData), 'e_mfield_SDLEvent.SendRegister_v6_info'(TrF5, <<B4/binary, 42>>, TrUserData) end
|
||||||
end.
|
end.
|
||||||
|
|
||||||
|
'encode_msg_SDLEvent.ExposedServiceChanged'(_Msg, _TrUserData) -> <<>>.
|
||||||
|
|
||||||
'encode_msg_SDLEvent.NetworkShutdown'(Msg, TrUserData) -> 'encode_msg_SDLEvent.NetworkShutdown'(Msg, <<>>, TrUserData).
|
'encode_msg_SDLEvent.NetworkShutdown'(Msg, TrUserData) -> 'encode_msg_SDLEvent.NetworkShutdown'(Msg, <<>>, TrUserData).
|
||||||
|
|
||||||
|
|
||||||
@ -743,7 +794,8 @@ encode_msg_SDLEvent(#'SDLEvent'{event = F1}, Bin, TrUserData) ->
|
|||||||
case id(F1, TrUserData) of
|
case id(F1, TrUserData) of
|
||||||
{nat_changed, TF1} -> begin TrTF1 = id(TF1, TrUserData), e_mfield_SDLEvent_nat_changed(TrTF1, <<Bin/binary, 10>>, TrUserData) end;
|
{nat_changed, TF1} -> begin TrTF1 = id(TF1, TrUserData), e_mfield_SDLEvent_nat_changed(TrTF1, <<Bin/binary, 10>>, TrUserData) end;
|
||||||
{send_register, TF1} -> begin TrTF1 = id(TF1, TrUserData), e_mfield_SDLEvent_send_register(TrTF1, <<Bin/binary, 18>>, TrUserData) end;
|
{send_register, TF1} -> begin TrTF1 = id(TF1, TrUserData), e_mfield_SDLEvent_send_register(TrTF1, <<Bin/binary, 18>>, TrUserData) end;
|
||||||
{shutdown, TF1} -> begin TrTF1 = id(TF1, TrUserData), e_mfield_SDLEvent_shutdown(TrTF1, <<Bin/binary, 26>>, TrUserData) end
|
{shutdown, TF1} -> begin TrTF1 = id(TF1, TrUserData), e_mfield_SDLEvent_shutdown(TrTF1, <<Bin/binary, 26>>, TrUserData) end;
|
||||||
|
{exposed_service_changed, TF1} -> begin TrTF1 = id(TF1, TrUserData), e_mfield_SDLEvent_exposed_service_changed(TrTF1, <<Bin/binary, 34>>, TrUserData) end
|
||||||
end
|
end
|
||||||
end.
|
end.
|
||||||
|
|
||||||
@ -1140,6 +1192,30 @@ e_mfield_SDLPeerInfo_v6_info(Msg, Bin, TrUserData) ->
|
|||||||
Bin2 = e_varint(byte_size(SubBin), Bin),
|
Bin2 = e_varint(byte_size(SubBin), Bin),
|
||||||
<<Bin2/binary, SubBin/binary>>.
|
<<Bin2/binary, SubBin/binary>>.
|
||||||
|
|
||||||
|
e_field_SDLExposedServiceResponse_tcp_ports(Elems, Bin, TrUserData) when Elems =/= [] ->
|
||||||
|
SubBin = e_pfield_SDLExposedServiceResponse_tcp_ports(Elems, <<>>, TrUserData),
|
||||||
|
Bin2 = <<Bin/binary, 18>>,
|
||||||
|
Bin3 = e_varint(byte_size(SubBin), Bin2),
|
||||||
|
<<Bin3/binary, SubBin/binary>>;
|
||||||
|
e_field_SDLExposedServiceResponse_tcp_ports([], Bin, _TrUserData) -> Bin.
|
||||||
|
|
||||||
|
e_pfield_SDLExposedServiceResponse_tcp_ports([Value | Rest], Bin, TrUserData) ->
|
||||||
|
Bin2 = e_varint(id(Value, TrUserData), Bin, TrUserData),
|
||||||
|
e_pfield_SDLExposedServiceResponse_tcp_ports(Rest, Bin2, TrUserData);
|
||||||
|
e_pfield_SDLExposedServiceResponse_tcp_ports([], Bin, _TrUserData) -> Bin.
|
||||||
|
|
||||||
|
e_field_SDLExposedServiceResponse_udp_ports(Elems, Bin, TrUserData) when Elems =/= [] ->
|
||||||
|
SubBin = e_pfield_SDLExposedServiceResponse_udp_ports(Elems, <<>>, TrUserData),
|
||||||
|
Bin2 = <<Bin/binary, 26>>,
|
||||||
|
Bin3 = e_varint(byte_size(SubBin), Bin2),
|
||||||
|
<<Bin3/binary, SubBin/binary>>;
|
||||||
|
e_field_SDLExposedServiceResponse_udp_ports([], Bin, _TrUserData) -> Bin.
|
||||||
|
|
||||||
|
e_pfield_SDLExposedServiceResponse_udp_ports([Value | Rest], Bin, TrUserData) ->
|
||||||
|
Bin2 = e_varint(id(Value, TrUserData), Bin, TrUserData),
|
||||||
|
e_pfield_SDLExposedServiceResponse_udp_ports(Rest, Bin2, TrUserData);
|
||||||
|
e_pfield_SDLExposedServiceResponse_udp_ports([], Bin, _TrUserData) -> Bin.
|
||||||
|
|
||||||
'e_mfield_SDLEvent.SendRegister_v6_info'(Msg, Bin, TrUserData) ->
|
'e_mfield_SDLEvent.SendRegister_v6_info'(Msg, Bin, TrUserData) ->
|
||||||
SubBin = encode_msg_SDLV6Info(Msg, <<>>, TrUserData),
|
SubBin = encode_msg_SDLV6Info(Msg, <<>>, TrUserData),
|
||||||
Bin2 = e_varint(byte_size(SubBin), Bin),
|
Bin2 = e_varint(byte_size(SubBin), Bin),
|
||||||
@ -1160,6 +1236,8 @@ e_mfield_SDLEvent_shutdown(Msg, Bin, TrUserData) ->
|
|||||||
Bin2 = e_varint(byte_size(SubBin), Bin),
|
Bin2 = e_varint(byte_size(SubBin), Bin),
|
||||||
<<Bin2/binary, SubBin/binary>>.
|
<<Bin2/binary, SubBin/binary>>.
|
||||||
|
|
||||||
|
e_mfield_SDLEvent_exposed_service_changed(_Msg, Bin, _TrUserData) -> <<Bin/binary, 0>>.
|
||||||
|
|
||||||
e_mfield_SDLCommand_exit_node(Msg, Bin, TrUserData) ->
|
e_mfield_SDLCommand_exit_node(Msg, Bin, TrUserData) ->
|
||||||
SubBin = 'encode_msg_SDLCommand.ExitNodeControl'(Msg, <<>>, TrUserData),
|
SubBin = 'encode_msg_SDLCommand.ExitNodeControl'(Msg, <<>>, TrUserData),
|
||||||
Bin2 = e_varint(byte_size(SubBin), Bin),
|
Bin2 = e_varint(byte_size(SubBin), Bin),
|
||||||
@ -1322,8 +1400,11 @@ decode_msg_2_doit('SDLArpRequest', Bin, TrUserData) -> id(decode_msg_SDLArpReque
|
|||||||
decode_msg_2_doit('SDLArpResponse', Bin, TrUserData) -> id(decode_msg_SDLArpResponse(Bin, TrUserData), TrUserData);
|
decode_msg_2_doit('SDLArpResponse', Bin, TrUserData) -> id(decode_msg_SDLArpResponse(Bin, TrUserData), TrUserData);
|
||||||
decode_msg_2_doit('SDLPolicyRequest', Bin, TrUserData) -> id(decode_msg_SDLPolicyRequest(Bin, TrUserData), TrUserData);
|
decode_msg_2_doit('SDLPolicyRequest', Bin, TrUserData) -> id(decode_msg_SDLPolicyRequest(Bin, TrUserData), TrUserData);
|
||||||
decode_msg_2_doit('SDLPolicyResponse', Bin, TrUserData) -> id(decode_msg_SDLPolicyResponse(Bin, TrUserData), TrUserData);
|
decode_msg_2_doit('SDLPolicyResponse', Bin, TrUserData) -> id(decode_msg_SDLPolicyResponse(Bin, TrUserData), TrUserData);
|
||||||
|
decode_msg_2_doit('SDLExposedServiceRequest', Bin, TrUserData) -> id(decode_msg_SDLExposedServiceRequest(Bin, TrUserData), TrUserData);
|
||||||
|
decode_msg_2_doit('SDLExposedServiceResponse', Bin, TrUserData) -> id(decode_msg_SDLExposedServiceResponse(Bin, TrUserData), TrUserData);
|
||||||
decode_msg_2_doit('SDLEvent.NatChanged', Bin, TrUserData) -> id('decode_msg_SDLEvent.NatChanged'(Bin, TrUserData), TrUserData);
|
decode_msg_2_doit('SDLEvent.NatChanged', Bin, TrUserData) -> id('decode_msg_SDLEvent.NatChanged'(Bin, TrUserData), TrUserData);
|
||||||
decode_msg_2_doit('SDLEvent.SendRegister', Bin, TrUserData) -> id('decode_msg_SDLEvent.SendRegister'(Bin, TrUserData), TrUserData);
|
decode_msg_2_doit('SDLEvent.SendRegister', Bin, TrUserData) -> id('decode_msg_SDLEvent.SendRegister'(Bin, TrUserData), TrUserData);
|
||||||
|
decode_msg_2_doit('SDLEvent.ExposedServiceChanged', Bin, TrUserData) -> id('decode_msg_SDLEvent.ExposedServiceChanged'(Bin, TrUserData), TrUserData);
|
||||||
decode_msg_2_doit('SDLEvent.NetworkShutdown', Bin, TrUserData) -> id('decode_msg_SDLEvent.NetworkShutdown'(Bin, TrUserData), TrUserData);
|
decode_msg_2_doit('SDLEvent.NetworkShutdown', Bin, TrUserData) -> id('decode_msg_SDLEvent.NetworkShutdown'(Bin, TrUserData), TrUserData);
|
||||||
decode_msg_2_doit('SDLEvent', Bin, TrUserData) -> id(decode_msg_SDLEvent(Bin, TrUserData), TrUserData);
|
decode_msg_2_doit('SDLEvent', Bin, TrUserData) -> id(decode_msg_SDLEvent(Bin, TrUserData), TrUserData);
|
||||||
decode_msg_2_doit('SDLCommand.ExitNodeControl', Bin, TrUserData) -> id('decode_msg_SDLCommand.ExitNodeControl'(Bin, TrUserData), TrUserData);
|
decode_msg_2_doit('SDLCommand.ExitNodeControl', Bin, TrUserData) -> id('decode_msg_SDLCommand.ExitNodeControl'(Bin, TrUserData), TrUserData);
|
||||||
@ -2222,6 +2303,138 @@ skip_32_SDLPolicyResponse(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@
|
|||||||
|
|
||||||
skip_64_SDLPolicyResponse(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> dfp_read_field_def_SDLPolicyResponse(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData).
|
skip_64_SDLPolicyResponse(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> dfp_read_field_def_SDLPolicyResponse(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData).
|
||||||
|
|
||||||
|
decode_msg_SDLExposedServiceRequest(Bin, TrUserData) -> dfp_read_field_def_SDLExposedServiceRequest(Bin, 0, 0, 0, id(0, TrUserData), TrUserData).
|
||||||
|
|
||||||
|
dfp_read_field_def_SDLExposedServiceRequest(<<8, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> d_field_SDLExposedServiceRequest_version(Rest, Z1, Z2, F, F@_1, TrUserData);
|
||||||
|
dfp_read_field_def_SDLExposedServiceRequest(<<>>, 0, 0, _, F@_1, _) -> #'SDLExposedServiceRequest'{version = F@_1};
|
||||||
|
dfp_read_field_def_SDLExposedServiceRequest(Other, Z1, Z2, F, F@_1, TrUserData) -> dg_read_field_def_SDLExposedServiceRequest(Other, Z1, Z2, F, F@_1, TrUserData).
|
||||||
|
|
||||||
|
dg_read_field_def_SDLExposedServiceRequest(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) when N < 32 - 7 -> dg_read_field_def_SDLExposedServiceRequest(Rest, N + 7, X bsl N + Acc, F, F@_1, TrUserData);
|
||||||
|
dg_read_field_def_SDLExposedServiceRequest(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, TrUserData) ->
|
||||||
|
Key = X bsl N + Acc,
|
||||||
|
case Key of
|
||||||
|
8 -> d_field_SDLExposedServiceRequest_version(Rest, 0, 0, 0, F@_1, TrUserData);
|
||||||
|
_ ->
|
||||||
|
case Key band 7 of
|
||||||
|
0 -> skip_varint_SDLExposedServiceRequest(Rest, 0, 0, Key bsr 3, F@_1, TrUserData);
|
||||||
|
1 -> skip_64_SDLExposedServiceRequest(Rest, 0, 0, Key bsr 3, F@_1, TrUserData);
|
||||||
|
2 -> skip_length_delimited_SDLExposedServiceRequest(Rest, 0, 0, Key bsr 3, F@_1, TrUserData);
|
||||||
|
3 -> skip_group_SDLExposedServiceRequest(Rest, 0, 0, Key bsr 3, F@_1, TrUserData);
|
||||||
|
5 -> skip_32_SDLExposedServiceRequest(Rest, 0, 0, Key bsr 3, F@_1, TrUserData)
|
||||||
|
end
|
||||||
|
end;
|
||||||
|
dg_read_field_def_SDLExposedServiceRequest(<<>>, 0, 0, _, F@_1, _) -> #'SDLExposedServiceRequest'{version = F@_1}.
|
||||||
|
|
||||||
|
d_field_SDLExposedServiceRequest_version(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) when N < 57 -> d_field_SDLExposedServiceRequest_version(Rest, N + 7, X bsl N + Acc, F, F@_1, TrUserData);
|
||||||
|
d_field_SDLExposedServiceRequest_version(<<0:1, X:7, Rest/binary>>, N, Acc, F, _, TrUserData) ->
|
||||||
|
{NewFValue, RestF} = {id((X bsl N + Acc) band 4294967295, TrUserData), Rest},
|
||||||
|
dfp_read_field_def_SDLExposedServiceRequest(RestF, 0, 0, F, NewFValue, TrUserData).
|
||||||
|
|
||||||
|
skip_varint_SDLExposedServiceRequest(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> skip_varint_SDLExposedServiceRequest(Rest, Z1, Z2, F, F@_1, TrUserData);
|
||||||
|
skip_varint_SDLExposedServiceRequest(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> dfp_read_field_def_SDLExposedServiceRequest(Rest, Z1, Z2, F, F@_1, TrUserData).
|
||||||
|
|
||||||
|
skip_length_delimited_SDLExposedServiceRequest(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) when N < 57 -> skip_length_delimited_SDLExposedServiceRequest(Rest, N + 7, X bsl N + Acc, F, F@_1, TrUserData);
|
||||||
|
skip_length_delimited_SDLExposedServiceRequest(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) ->
|
||||||
|
Length = X bsl N + Acc,
|
||||||
|
<<_:Length/binary, Rest2/binary>> = Rest,
|
||||||
|
dfp_read_field_def_SDLExposedServiceRequest(Rest2, 0, 0, F, F@_1, TrUserData).
|
||||||
|
|
||||||
|
skip_group_SDLExposedServiceRequest(Bin, _, Z2, FNum, F@_1, TrUserData) ->
|
||||||
|
{_, Rest} = read_group(Bin, FNum),
|
||||||
|
dfp_read_field_def_SDLExposedServiceRequest(Rest, 0, Z2, FNum, F@_1, TrUserData).
|
||||||
|
|
||||||
|
skip_32_SDLExposedServiceRequest(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> dfp_read_field_def_SDLExposedServiceRequest(Rest, Z1, Z2, F, F@_1, TrUserData).
|
||||||
|
|
||||||
|
skip_64_SDLExposedServiceRequest(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> dfp_read_field_def_SDLExposedServiceRequest(Rest, Z1, Z2, F, F@_1, TrUserData).
|
||||||
|
|
||||||
|
decode_msg_SDLExposedServiceResponse(Bin, TrUserData) -> dfp_read_field_def_SDLExposedServiceResponse(Bin, 0, 0, 0, id(0, TrUserData), id([], TrUserData), id([], TrUserData), TrUserData).
|
||||||
|
|
||||||
|
dfp_read_field_def_SDLExposedServiceResponse(<<8, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_SDLExposedServiceResponse_version(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData);
|
||||||
|
dfp_read_field_def_SDLExposedServiceResponse(<<18, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_pfield_SDLExposedServiceResponse_tcp_ports(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData);
|
||||||
|
dfp_read_field_def_SDLExposedServiceResponse(<<16, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_SDLExposedServiceResponse_tcp_ports(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData);
|
||||||
|
dfp_read_field_def_SDLExposedServiceResponse(<<26, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_pfield_SDLExposedServiceResponse_udp_ports(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData);
|
||||||
|
dfp_read_field_def_SDLExposedServiceResponse(<<24, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_SDLExposedServiceResponse_udp_ports(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData);
|
||||||
|
dfp_read_field_def_SDLExposedServiceResponse(<<>>, 0, 0, _, F@_1, R1, R2, TrUserData) -> #'SDLExposedServiceResponse'{version = F@_1, tcp_ports = lists_reverse(R1, TrUserData), udp_ports = lists_reverse(R2, TrUserData)};
|
||||||
|
dfp_read_field_def_SDLExposedServiceResponse(Other, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dg_read_field_def_SDLExposedServiceResponse(Other, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData).
|
||||||
|
|
||||||
|
dg_read_field_def_SDLExposedServiceResponse(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 32 - 7 -> dg_read_field_def_SDLExposedServiceResponse(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData);
|
||||||
|
dg_read_field_def_SDLExposedServiceResponse(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, F@_2, F@_3, TrUserData) ->
|
||||||
|
Key = X bsl N + Acc,
|
||||||
|
case Key of
|
||||||
|
8 -> d_field_SDLExposedServiceResponse_version(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData);
|
||||||
|
18 -> d_pfield_SDLExposedServiceResponse_tcp_ports(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData);
|
||||||
|
16 -> d_field_SDLExposedServiceResponse_tcp_ports(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData);
|
||||||
|
26 -> d_pfield_SDLExposedServiceResponse_udp_ports(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData);
|
||||||
|
24 -> d_field_SDLExposedServiceResponse_udp_ports(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData);
|
||||||
|
_ ->
|
||||||
|
case Key band 7 of
|
||||||
|
0 -> skip_varint_SDLExposedServiceResponse(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData);
|
||||||
|
1 -> skip_64_SDLExposedServiceResponse(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData);
|
||||||
|
2 -> skip_length_delimited_SDLExposedServiceResponse(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData);
|
||||||
|
3 -> skip_group_SDLExposedServiceResponse(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData);
|
||||||
|
5 -> skip_32_SDLExposedServiceResponse(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData)
|
||||||
|
end
|
||||||
|
end;
|
||||||
|
dg_read_field_def_SDLExposedServiceResponse(<<>>, 0, 0, _, F@_1, R1, R2, TrUserData) -> #'SDLExposedServiceResponse'{version = F@_1, tcp_ports = lists_reverse(R1, TrUserData), udp_ports = lists_reverse(R2, TrUserData)}.
|
||||||
|
|
||||||
|
d_field_SDLExposedServiceResponse_version(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_SDLExposedServiceResponse_version(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData);
|
||||||
|
d_field_SDLExposedServiceResponse_version(<<0:1, X:7, Rest/binary>>, N, Acc, F, _, F@_2, F@_3, TrUserData) ->
|
||||||
|
{NewFValue, RestF} = {id((X bsl N + Acc) band 4294967295, TrUserData), Rest},
|
||||||
|
dfp_read_field_def_SDLExposedServiceResponse(RestF, 0, 0, F, NewFValue, F@_2, F@_3, TrUserData).
|
||||||
|
|
||||||
|
d_field_SDLExposedServiceResponse_tcp_ports(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_SDLExposedServiceResponse_tcp_ports(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData);
|
||||||
|
d_field_SDLExposedServiceResponse_tcp_ports(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, Prev, F@_3, TrUserData) ->
|
||||||
|
{NewFValue, RestF} = {id((X bsl N + Acc) band 4294967295, TrUserData), Rest},
|
||||||
|
dfp_read_field_def_SDLExposedServiceResponse(RestF, 0, 0, F, F@_1, cons(NewFValue, Prev, TrUserData), F@_3, TrUserData).
|
||||||
|
|
||||||
|
d_pfield_SDLExposedServiceResponse_tcp_ports(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_pfield_SDLExposedServiceResponse_tcp_ports(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData);
|
||||||
|
d_pfield_SDLExposedServiceResponse_tcp_ports(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, E, F@_3, TrUserData) ->
|
||||||
|
Len = X bsl N + Acc,
|
||||||
|
<<PackedBytes:Len/binary, Rest2/binary>> = Rest,
|
||||||
|
NewSeq = d_packed_field_SDLExposedServiceResponse_tcp_ports(PackedBytes, 0, 0, F, E, TrUserData),
|
||||||
|
dfp_read_field_def_SDLExposedServiceResponse(Rest2, 0, 0, F, F@_1, NewSeq, F@_3, TrUserData).
|
||||||
|
|
||||||
|
d_packed_field_SDLExposedServiceResponse_tcp_ports(<<1:1, X:7, Rest/binary>>, N, Acc, F, AccSeq, TrUserData) when N < 57 -> d_packed_field_SDLExposedServiceResponse_tcp_ports(Rest, N + 7, X bsl N + Acc, F, AccSeq, TrUserData);
|
||||||
|
d_packed_field_SDLExposedServiceResponse_tcp_ports(<<0:1, X:7, Rest/binary>>, N, Acc, F, AccSeq, TrUserData) ->
|
||||||
|
{NewFValue, RestF} = {id((X bsl N + Acc) band 4294967295, TrUserData), Rest},
|
||||||
|
d_packed_field_SDLExposedServiceResponse_tcp_ports(RestF, 0, 0, F, [NewFValue | AccSeq], TrUserData);
|
||||||
|
d_packed_field_SDLExposedServiceResponse_tcp_ports(<<>>, 0, 0, _, AccSeq, _) -> AccSeq.
|
||||||
|
|
||||||
|
d_field_SDLExposedServiceResponse_udp_ports(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_SDLExposedServiceResponse_udp_ports(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData);
|
||||||
|
d_field_SDLExposedServiceResponse_udp_ports(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, Prev, TrUserData) ->
|
||||||
|
{NewFValue, RestF} = {id((X bsl N + Acc) band 4294967295, TrUserData), Rest},
|
||||||
|
dfp_read_field_def_SDLExposedServiceResponse(RestF, 0, 0, F, F@_1, F@_2, cons(NewFValue, Prev, TrUserData), TrUserData).
|
||||||
|
|
||||||
|
d_pfield_SDLExposedServiceResponse_udp_ports(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_pfield_SDLExposedServiceResponse_udp_ports(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData);
|
||||||
|
d_pfield_SDLExposedServiceResponse_udp_ports(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, E, TrUserData) ->
|
||||||
|
Len = X bsl N + Acc,
|
||||||
|
<<PackedBytes:Len/binary, Rest2/binary>> = Rest,
|
||||||
|
NewSeq = d_packed_field_SDLExposedServiceResponse_udp_ports(PackedBytes, 0, 0, F, E, TrUserData),
|
||||||
|
dfp_read_field_def_SDLExposedServiceResponse(Rest2, 0, 0, F, F@_1, F@_2, NewSeq, TrUserData).
|
||||||
|
|
||||||
|
d_packed_field_SDLExposedServiceResponse_udp_ports(<<1:1, X:7, Rest/binary>>, N, Acc, F, AccSeq, TrUserData) when N < 57 -> d_packed_field_SDLExposedServiceResponse_udp_ports(Rest, N + 7, X bsl N + Acc, F, AccSeq, TrUserData);
|
||||||
|
d_packed_field_SDLExposedServiceResponse_udp_ports(<<0:1, X:7, Rest/binary>>, N, Acc, F, AccSeq, TrUserData) ->
|
||||||
|
{NewFValue, RestF} = {id((X bsl N + Acc) band 4294967295, TrUserData), Rest},
|
||||||
|
d_packed_field_SDLExposedServiceResponse_udp_ports(RestF, 0, 0, F, [NewFValue | AccSeq], TrUserData);
|
||||||
|
d_packed_field_SDLExposedServiceResponse_udp_ports(<<>>, 0, 0, _, AccSeq, _) -> AccSeq.
|
||||||
|
|
||||||
|
skip_varint_SDLExposedServiceResponse(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> skip_varint_SDLExposedServiceResponse(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData);
|
||||||
|
skip_varint_SDLExposedServiceResponse(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_SDLExposedServiceResponse(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData).
|
||||||
|
|
||||||
|
skip_length_delimited_SDLExposedServiceResponse(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> skip_length_delimited_SDLExposedServiceResponse(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData);
|
||||||
|
skip_length_delimited_SDLExposedServiceResponse(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) ->
|
||||||
|
Length = X bsl N + Acc,
|
||||||
|
<<_:Length/binary, Rest2/binary>> = Rest,
|
||||||
|
dfp_read_field_def_SDLExposedServiceResponse(Rest2, 0, 0, F, F@_1, F@_2, F@_3, TrUserData).
|
||||||
|
|
||||||
|
skip_group_SDLExposedServiceResponse(Bin, _, Z2, FNum, F@_1, F@_2, F@_3, TrUserData) ->
|
||||||
|
{_, Rest} = read_group(Bin, FNum),
|
||||||
|
dfp_read_field_def_SDLExposedServiceResponse(Rest, 0, Z2, FNum, F@_1, F@_2, F@_3, TrUserData).
|
||||||
|
|
||||||
|
skip_32_SDLExposedServiceResponse(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_SDLExposedServiceResponse(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData).
|
||||||
|
|
||||||
|
skip_64_SDLExposedServiceResponse(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_SDLExposedServiceResponse(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData).
|
||||||
|
|
||||||
'decode_msg_SDLEvent.NatChanged'(Bin, TrUserData) -> 'dfp_read_field_def_SDLEvent.NatChanged'(Bin, 0, 0, 0, id(<<>>, TrUserData), id(0, TrUserData), TrUserData).
|
'decode_msg_SDLEvent.NatChanged'(Bin, TrUserData) -> 'dfp_read_field_def_SDLEvent.NatChanged'(Bin, 0, 0, 0, id(<<>>, TrUserData), id(0, TrUserData), TrUserData).
|
||||||
|
|
||||||
'dfp_read_field_def_SDLEvent.NatChanged'(<<10, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> 'd_field_SDLEvent.NatChanged_mac'(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData);
|
'dfp_read_field_def_SDLEvent.NatChanged'(<<10, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> 'd_field_SDLEvent.NatChanged_mac'(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData);
|
||||||
@ -2358,6 +2571,40 @@ skip_64_SDLPolicyResponse(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@
|
|||||||
|
|
||||||
'skip_64_SDLEvent.SendRegister'(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) -> 'dfp_read_field_def_SDLEvent.SendRegister'(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData).
|
'skip_64_SDLEvent.SendRegister'(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) -> 'dfp_read_field_def_SDLEvent.SendRegister'(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData).
|
||||||
|
|
||||||
|
'decode_msg_SDLEvent.ExposedServiceChanged'(Bin, TrUserData) -> 'dfp_read_field_def_SDLEvent.ExposedServiceChanged'(Bin, 0, 0, 0, TrUserData).
|
||||||
|
|
||||||
|
'dfp_read_field_def_SDLEvent.ExposedServiceChanged'(<<>>, 0, 0, _, _) -> #'SDLEvent.ExposedServiceChanged'{};
|
||||||
|
'dfp_read_field_def_SDLEvent.ExposedServiceChanged'(Other, Z1, Z2, F, TrUserData) -> 'dg_read_field_def_SDLEvent.ExposedServiceChanged'(Other, Z1, Z2, F, TrUserData).
|
||||||
|
|
||||||
|
'dg_read_field_def_SDLEvent.ExposedServiceChanged'(<<1:1, X:7, Rest/binary>>, N, Acc, F, TrUserData) when N < 32 - 7 -> 'dg_read_field_def_SDLEvent.ExposedServiceChanged'(Rest, N + 7, X bsl N + Acc, F, TrUserData);
|
||||||
|
'dg_read_field_def_SDLEvent.ExposedServiceChanged'(<<0:1, X:7, Rest/binary>>, N, Acc, _, TrUserData) ->
|
||||||
|
Key = X bsl N + Acc,
|
||||||
|
case Key band 7 of
|
||||||
|
0 -> 'skip_varint_SDLEvent.ExposedServiceChanged'(Rest, 0, 0, Key bsr 3, TrUserData);
|
||||||
|
1 -> 'skip_64_SDLEvent.ExposedServiceChanged'(Rest, 0, 0, Key bsr 3, TrUserData);
|
||||||
|
2 -> 'skip_length_delimited_SDLEvent.ExposedServiceChanged'(Rest, 0, 0, Key bsr 3, TrUserData);
|
||||||
|
3 -> 'skip_group_SDLEvent.ExposedServiceChanged'(Rest, 0, 0, Key bsr 3, TrUserData);
|
||||||
|
5 -> 'skip_32_SDLEvent.ExposedServiceChanged'(Rest, 0, 0, Key bsr 3, TrUserData)
|
||||||
|
end;
|
||||||
|
'dg_read_field_def_SDLEvent.ExposedServiceChanged'(<<>>, 0, 0, _, _) -> #'SDLEvent.ExposedServiceChanged'{}.
|
||||||
|
|
||||||
|
'skip_varint_SDLEvent.ExposedServiceChanged'(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, TrUserData) -> 'skip_varint_SDLEvent.ExposedServiceChanged'(Rest, Z1, Z2, F, TrUserData);
|
||||||
|
'skip_varint_SDLEvent.ExposedServiceChanged'(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, TrUserData) -> 'dfp_read_field_def_SDLEvent.ExposedServiceChanged'(Rest, Z1, Z2, F, TrUserData).
|
||||||
|
|
||||||
|
'skip_length_delimited_SDLEvent.ExposedServiceChanged'(<<1:1, X:7, Rest/binary>>, N, Acc, F, TrUserData) when N < 57 -> 'skip_length_delimited_SDLEvent.ExposedServiceChanged'(Rest, N + 7, X bsl N + Acc, F, TrUserData);
|
||||||
|
'skip_length_delimited_SDLEvent.ExposedServiceChanged'(<<0:1, X:7, Rest/binary>>, N, Acc, F, TrUserData) ->
|
||||||
|
Length = X bsl N + Acc,
|
||||||
|
<<_:Length/binary, Rest2/binary>> = Rest,
|
||||||
|
'dfp_read_field_def_SDLEvent.ExposedServiceChanged'(Rest2, 0, 0, F, TrUserData).
|
||||||
|
|
||||||
|
'skip_group_SDLEvent.ExposedServiceChanged'(Bin, _, Z2, FNum, TrUserData) ->
|
||||||
|
{_, Rest} = read_group(Bin, FNum),
|
||||||
|
'dfp_read_field_def_SDLEvent.ExposedServiceChanged'(Rest, 0, Z2, FNum, TrUserData).
|
||||||
|
|
||||||
|
'skip_32_SDLEvent.ExposedServiceChanged'(<<_:32, Rest/binary>>, Z1, Z2, F, TrUserData) -> 'dfp_read_field_def_SDLEvent.ExposedServiceChanged'(Rest, Z1, Z2, F, TrUserData).
|
||||||
|
|
||||||
|
'skip_64_SDLEvent.ExposedServiceChanged'(<<_:64, Rest/binary>>, Z1, Z2, F, TrUserData) -> 'dfp_read_field_def_SDLEvent.ExposedServiceChanged'(Rest, Z1, Z2, F, TrUserData).
|
||||||
|
|
||||||
'decode_msg_SDLEvent.NetworkShutdown'(Bin, TrUserData) -> 'dfp_read_field_def_SDLEvent.NetworkShutdown'(Bin, 0, 0, 0, id(<<>>, TrUserData), TrUserData).
|
'decode_msg_SDLEvent.NetworkShutdown'(Bin, TrUserData) -> 'dfp_read_field_def_SDLEvent.NetworkShutdown'(Bin, 0, 0, 0, id(<<>>, TrUserData), TrUserData).
|
||||||
|
|
||||||
'dfp_read_field_def_SDLEvent.NetworkShutdown'(<<10, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> 'd_field_SDLEvent.NetworkShutdown_message'(Rest, Z1, Z2, F, F@_1, TrUserData);
|
'dfp_read_field_def_SDLEvent.NetworkShutdown'(<<10, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> 'd_field_SDLEvent.NetworkShutdown_message'(Rest, Z1, Z2, F, F@_1, TrUserData);
|
||||||
@ -2407,6 +2654,7 @@ decode_msg_SDLEvent(Bin, TrUserData) -> dfp_read_field_def_SDLEvent(Bin, 0, 0, 0
|
|||||||
dfp_read_field_def_SDLEvent(<<10, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> d_field_SDLEvent_nat_changed(Rest, Z1, Z2, F, F@_1, TrUserData);
|
dfp_read_field_def_SDLEvent(<<10, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> d_field_SDLEvent_nat_changed(Rest, Z1, Z2, F, F@_1, TrUserData);
|
||||||
dfp_read_field_def_SDLEvent(<<18, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> d_field_SDLEvent_send_register(Rest, Z1, Z2, F, F@_1, TrUserData);
|
dfp_read_field_def_SDLEvent(<<18, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> d_field_SDLEvent_send_register(Rest, Z1, Z2, F, F@_1, TrUserData);
|
||||||
dfp_read_field_def_SDLEvent(<<26, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> d_field_SDLEvent_shutdown(Rest, Z1, Z2, F, F@_1, TrUserData);
|
dfp_read_field_def_SDLEvent(<<26, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> d_field_SDLEvent_shutdown(Rest, Z1, Z2, F, F@_1, TrUserData);
|
||||||
|
dfp_read_field_def_SDLEvent(<<34, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> d_field_SDLEvent_exposed_service_changed(Rest, Z1, Z2, F, F@_1, TrUserData);
|
||||||
dfp_read_field_def_SDLEvent(<<>>, 0, 0, _, F@_1, _) -> #'SDLEvent'{event = F@_1};
|
dfp_read_field_def_SDLEvent(<<>>, 0, 0, _, F@_1, _) -> #'SDLEvent'{event = F@_1};
|
||||||
dfp_read_field_def_SDLEvent(Other, Z1, Z2, F, F@_1, TrUserData) -> dg_read_field_def_SDLEvent(Other, Z1, Z2, F, F@_1, TrUserData).
|
dfp_read_field_def_SDLEvent(Other, Z1, Z2, F, F@_1, TrUserData) -> dg_read_field_def_SDLEvent(Other, Z1, Z2, F, F@_1, TrUserData).
|
||||||
|
|
||||||
@ -2417,6 +2665,7 @@ dg_read_field_def_SDLEvent(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, TrUserDat
|
|||||||
10 -> d_field_SDLEvent_nat_changed(Rest, 0, 0, 0, F@_1, TrUserData);
|
10 -> d_field_SDLEvent_nat_changed(Rest, 0, 0, 0, F@_1, TrUserData);
|
||||||
18 -> d_field_SDLEvent_send_register(Rest, 0, 0, 0, F@_1, TrUserData);
|
18 -> d_field_SDLEvent_send_register(Rest, 0, 0, 0, F@_1, TrUserData);
|
||||||
26 -> d_field_SDLEvent_shutdown(Rest, 0, 0, 0, F@_1, TrUserData);
|
26 -> d_field_SDLEvent_shutdown(Rest, 0, 0, 0, F@_1, TrUserData);
|
||||||
|
34 -> d_field_SDLEvent_exposed_service_changed(Rest, 0, 0, 0, F@_1, TrUserData);
|
||||||
_ ->
|
_ ->
|
||||||
case Key band 7 of
|
case Key band 7 of
|
||||||
0 -> skip_varint_SDLEvent(Rest, 0, 0, Key bsr 3, F@_1, TrUserData);
|
0 -> skip_varint_SDLEvent(Rest, 0, 0, Key bsr 3, F@_1, TrUserData);
|
||||||
@ -2470,6 +2719,20 @@ d_field_SDLEvent_shutdown(<<0:1, X:7, Rest/binary>>, N, Acc, F, Prev, TrUserData
|
|||||||
end,
|
end,
|
||||||
TrUserData).
|
TrUserData).
|
||||||
|
|
||||||
|
d_field_SDLEvent_exposed_service_changed(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) when N < 57 -> d_field_SDLEvent_exposed_service_changed(Rest, N + 7, X bsl N + Acc, F, F@_1, TrUserData);
|
||||||
|
d_field_SDLEvent_exposed_service_changed(<<0:1, X:7, Rest/binary>>, N, Acc, F, Prev, TrUserData) ->
|
||||||
|
{NewFValue, RestF} = begin Len = X bsl N + Acc, <<Bs:Len/binary, Rest2/binary>> = Rest, {id('decode_msg_SDLEvent.ExposedServiceChanged'(Bs, TrUserData), TrUserData), Rest2} end,
|
||||||
|
dfp_read_field_def_SDLEvent(RestF,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
F,
|
||||||
|
case Prev of
|
||||||
|
undefined -> id({exposed_service_changed, NewFValue}, TrUserData);
|
||||||
|
{exposed_service_changed, MVPrev} -> id({exposed_service_changed, 'merge_msg_SDLEvent.ExposedServiceChanged'(MVPrev, NewFValue, TrUserData)}, TrUserData);
|
||||||
|
_ -> id({exposed_service_changed, NewFValue}, TrUserData)
|
||||||
|
end,
|
||||||
|
TrUserData).
|
||||||
|
|
||||||
skip_varint_SDLEvent(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> skip_varint_SDLEvent(Rest, Z1, Z2, F, F@_1, TrUserData);
|
skip_varint_SDLEvent(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> skip_varint_SDLEvent(Rest, Z1, Z2, F, F@_1, TrUserData);
|
||||||
skip_varint_SDLEvent(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> dfp_read_field_def_SDLEvent(Rest, Z1, Z2, F, F@_1, TrUserData).
|
skip_varint_SDLEvent(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> dfp_read_field_def_SDLEvent(Rest, Z1, Z2, F, F@_1, TrUserData).
|
||||||
|
|
||||||
@ -3225,8 +3488,11 @@ merge_msgs(Prev, New, MsgName, Opts) ->
|
|||||||
'SDLArpResponse' -> merge_msg_SDLArpResponse(Prev, New, TrUserData);
|
'SDLArpResponse' -> merge_msg_SDLArpResponse(Prev, New, TrUserData);
|
||||||
'SDLPolicyRequest' -> merge_msg_SDLPolicyRequest(Prev, New, TrUserData);
|
'SDLPolicyRequest' -> merge_msg_SDLPolicyRequest(Prev, New, TrUserData);
|
||||||
'SDLPolicyResponse' -> merge_msg_SDLPolicyResponse(Prev, New, TrUserData);
|
'SDLPolicyResponse' -> merge_msg_SDLPolicyResponse(Prev, New, TrUserData);
|
||||||
|
'SDLExposedServiceRequest' -> merge_msg_SDLExposedServiceRequest(Prev, New, TrUserData);
|
||||||
|
'SDLExposedServiceResponse' -> merge_msg_SDLExposedServiceResponse(Prev, New, TrUserData);
|
||||||
'SDLEvent.NatChanged' -> 'merge_msg_SDLEvent.NatChanged'(Prev, New, TrUserData);
|
'SDLEvent.NatChanged' -> 'merge_msg_SDLEvent.NatChanged'(Prev, New, TrUserData);
|
||||||
'SDLEvent.SendRegister' -> 'merge_msg_SDLEvent.SendRegister'(Prev, New, TrUserData);
|
'SDLEvent.SendRegister' -> 'merge_msg_SDLEvent.SendRegister'(Prev, New, TrUserData);
|
||||||
|
'SDLEvent.ExposedServiceChanged' -> 'merge_msg_SDLEvent.ExposedServiceChanged'(Prev, New, TrUserData);
|
||||||
'SDLEvent.NetworkShutdown' -> 'merge_msg_SDLEvent.NetworkShutdown'(Prev, New, TrUserData);
|
'SDLEvent.NetworkShutdown' -> 'merge_msg_SDLEvent.NetworkShutdown'(Prev, New, TrUserData);
|
||||||
'SDLEvent' -> merge_msg_SDLEvent(Prev, New, TrUserData);
|
'SDLEvent' -> merge_msg_SDLEvent(Prev, New, TrUserData);
|
||||||
'SDLCommand.ExitNodeControl' -> 'merge_msg_SDLCommand.ExitNodeControl'(Prev, New, TrUserData);
|
'SDLCommand.ExitNodeControl' -> 'merge_msg_SDLCommand.ExitNodeControl'(Prev, New, TrUserData);
|
||||||
@ -3473,6 +3739,31 @@ merge_msg_SDLPolicyResponse(#'SDLPolicyResponse'{src_identity_id = PFsrc_identit
|
|||||||
true -> NFrules
|
true -> NFrules
|
||||||
end}.
|
end}.
|
||||||
|
|
||||||
|
-compile({nowarn_unused_function,merge_msg_SDLExposedServiceRequest/3}).
|
||||||
|
merge_msg_SDLExposedServiceRequest(#'SDLExposedServiceRequest'{version = PFversion}, #'SDLExposedServiceRequest'{version = NFversion}, _) ->
|
||||||
|
#'SDLExposedServiceRequest'{version =
|
||||||
|
if NFversion =:= undefined -> PFversion;
|
||||||
|
true -> NFversion
|
||||||
|
end}.
|
||||||
|
|
||||||
|
-compile({nowarn_unused_function,merge_msg_SDLExposedServiceResponse/3}).
|
||||||
|
merge_msg_SDLExposedServiceResponse(#'SDLExposedServiceResponse'{version = PFversion, tcp_ports = PFtcp_ports, udp_ports = PFudp_ports}, #'SDLExposedServiceResponse'{version = NFversion, tcp_ports = NFtcp_ports, udp_ports = NFudp_ports},
|
||||||
|
TrUserData) ->
|
||||||
|
#'SDLExposedServiceResponse'{version =
|
||||||
|
if NFversion =:= undefined -> PFversion;
|
||||||
|
true -> NFversion
|
||||||
|
end,
|
||||||
|
tcp_ports =
|
||||||
|
if PFtcp_ports /= undefined, NFtcp_ports /= undefined -> 'erlang_++'(PFtcp_ports, NFtcp_ports, TrUserData);
|
||||||
|
PFtcp_ports == undefined -> NFtcp_ports;
|
||||||
|
NFtcp_ports == undefined -> PFtcp_ports
|
||||||
|
end,
|
||||||
|
udp_ports =
|
||||||
|
if PFudp_ports /= undefined, NFudp_ports /= undefined -> 'erlang_++'(PFudp_ports, NFudp_ports, TrUserData);
|
||||||
|
PFudp_ports == undefined -> NFudp_ports;
|
||||||
|
NFudp_ports == undefined -> PFudp_ports
|
||||||
|
end}.
|
||||||
|
|
||||||
-compile({nowarn_unused_function,'merge_msg_SDLEvent.NatChanged'/3}).
|
-compile({nowarn_unused_function,'merge_msg_SDLEvent.NatChanged'/3}).
|
||||||
'merge_msg_SDLEvent.NatChanged'(#'SDLEvent.NatChanged'{mac = PFmac, ip = PFip}, #'SDLEvent.NatChanged'{mac = NFmac, ip = NFip}, _) ->
|
'merge_msg_SDLEvent.NatChanged'(#'SDLEvent.NatChanged'{mac = PFmac, ip = PFip}, #'SDLEvent.NatChanged'{mac = NFmac, ip = NFip}, _) ->
|
||||||
#'SDLEvent.NatChanged'{mac =
|
#'SDLEvent.NatChanged'{mac =
|
||||||
@ -3509,6 +3800,9 @@ merge_msg_SDLPolicyResponse(#'SDLPolicyResponse'{src_identity_id = PFsrc_identit
|
|||||||
NFv6_info == undefined -> PFv6_info
|
NFv6_info == undefined -> PFv6_info
|
||||||
end}.
|
end}.
|
||||||
|
|
||||||
|
-compile({nowarn_unused_function,'merge_msg_SDLEvent.ExposedServiceChanged'/3}).
|
||||||
|
'merge_msg_SDLEvent.ExposedServiceChanged'(_Prev, New, _TrUserData) -> New.
|
||||||
|
|
||||||
-compile({nowarn_unused_function,'merge_msg_SDLEvent.NetworkShutdown'/3}).
|
-compile({nowarn_unused_function,'merge_msg_SDLEvent.NetworkShutdown'/3}).
|
||||||
'merge_msg_SDLEvent.NetworkShutdown'(#'SDLEvent.NetworkShutdown'{message = PFmessage}, #'SDLEvent.NetworkShutdown'{message = NFmessage}, _) ->
|
'merge_msg_SDLEvent.NetworkShutdown'(#'SDLEvent.NetworkShutdown'{message = PFmessage}, #'SDLEvent.NetworkShutdown'{message = NFmessage}, _) ->
|
||||||
#'SDLEvent.NetworkShutdown'{message =
|
#'SDLEvent.NetworkShutdown'{message =
|
||||||
@ -3523,6 +3817,7 @@ merge_msg_SDLEvent(#'SDLEvent'{event = PFevent}, #'SDLEvent'{event = NFevent}, T
|
|||||||
{{nat_changed, OPFevent}, {nat_changed, ONFevent}} -> {nat_changed, 'merge_msg_SDLEvent.NatChanged'(OPFevent, ONFevent, TrUserData)};
|
{{nat_changed, OPFevent}, {nat_changed, ONFevent}} -> {nat_changed, 'merge_msg_SDLEvent.NatChanged'(OPFevent, ONFevent, TrUserData)};
|
||||||
{{send_register, OPFevent}, {send_register, ONFevent}} -> {send_register, 'merge_msg_SDLEvent.SendRegister'(OPFevent, ONFevent, TrUserData)};
|
{{send_register, OPFevent}, {send_register, ONFevent}} -> {send_register, 'merge_msg_SDLEvent.SendRegister'(OPFevent, ONFevent, TrUserData)};
|
||||||
{{shutdown, OPFevent}, {shutdown, ONFevent}} -> {shutdown, 'merge_msg_SDLEvent.NetworkShutdown'(OPFevent, ONFevent, TrUserData)};
|
{{shutdown, OPFevent}, {shutdown, ONFevent}} -> {shutdown, 'merge_msg_SDLEvent.NetworkShutdown'(OPFevent, ONFevent, TrUserData)};
|
||||||
|
{{exposed_service_changed, OPFevent}, {exposed_service_changed, ONFevent}} -> {exposed_service_changed, 'merge_msg_SDLEvent.ExposedServiceChanged'(OPFevent, ONFevent, TrUserData)};
|
||||||
{_, undefined} -> PFevent;
|
{_, undefined} -> PFevent;
|
||||||
_ -> NFevent
|
_ -> NFevent
|
||||||
end}.
|
end}.
|
||||||
@ -3731,8 +4026,11 @@ verify_msg(Msg, MsgName, Opts) ->
|
|||||||
'SDLArpResponse' -> v_msg_SDLArpResponse(Msg, [MsgName], TrUserData);
|
'SDLArpResponse' -> v_msg_SDLArpResponse(Msg, [MsgName], TrUserData);
|
||||||
'SDLPolicyRequest' -> v_msg_SDLPolicyRequest(Msg, [MsgName], TrUserData);
|
'SDLPolicyRequest' -> v_msg_SDLPolicyRequest(Msg, [MsgName], TrUserData);
|
||||||
'SDLPolicyResponse' -> v_msg_SDLPolicyResponse(Msg, [MsgName], TrUserData);
|
'SDLPolicyResponse' -> v_msg_SDLPolicyResponse(Msg, [MsgName], TrUserData);
|
||||||
|
'SDLExposedServiceRequest' -> v_msg_SDLExposedServiceRequest(Msg, [MsgName], TrUserData);
|
||||||
|
'SDLExposedServiceResponse' -> v_msg_SDLExposedServiceResponse(Msg, [MsgName], TrUserData);
|
||||||
'SDLEvent.NatChanged' -> 'v_msg_SDLEvent.NatChanged'(Msg, [MsgName], TrUserData);
|
'SDLEvent.NatChanged' -> 'v_msg_SDLEvent.NatChanged'(Msg, [MsgName], TrUserData);
|
||||||
'SDLEvent.SendRegister' -> 'v_msg_SDLEvent.SendRegister'(Msg, [MsgName], TrUserData);
|
'SDLEvent.SendRegister' -> 'v_msg_SDLEvent.SendRegister'(Msg, [MsgName], TrUserData);
|
||||||
|
'SDLEvent.ExposedServiceChanged' -> 'v_msg_SDLEvent.ExposedServiceChanged'(Msg, [MsgName], TrUserData);
|
||||||
'SDLEvent.NetworkShutdown' -> 'v_msg_SDLEvent.NetworkShutdown'(Msg, [MsgName], TrUserData);
|
'SDLEvent.NetworkShutdown' -> 'v_msg_SDLEvent.NetworkShutdown'(Msg, [MsgName], TrUserData);
|
||||||
'SDLEvent' -> v_msg_SDLEvent(Msg, [MsgName], TrUserData);
|
'SDLEvent' -> v_msg_SDLEvent(Msg, [MsgName], TrUserData);
|
||||||
'SDLCommand.ExitNodeControl' -> 'v_msg_SDLCommand.ExitNodeControl'(Msg, [MsgName], TrUserData);
|
'SDLCommand.ExitNodeControl' -> 'v_msg_SDLCommand.ExitNodeControl'(Msg, [MsgName], TrUserData);
|
||||||
@ -3976,6 +4274,34 @@ v_msg_SDLPolicyResponse(#'SDLPolicyResponse'{src_identity_id = F1, dst_identity_
|
|||||||
ok;
|
ok;
|
||||||
v_msg_SDLPolicyResponse(X, Path, _TrUserData) -> mk_type_error({expected_msg, 'SDLPolicyResponse'}, X, Path).
|
v_msg_SDLPolicyResponse(X, Path, _TrUserData) -> mk_type_error({expected_msg, 'SDLPolicyResponse'}, X, Path).
|
||||||
|
|
||||||
|
-compile({nowarn_unused_function,v_msg_SDLExposedServiceRequest/3}).
|
||||||
|
-dialyzer({nowarn_function,v_msg_SDLExposedServiceRequest/3}).
|
||||||
|
v_msg_SDLExposedServiceRequest(#'SDLExposedServiceRequest'{version = F1}, Path, TrUserData) ->
|
||||||
|
if F1 == undefined -> ok;
|
||||||
|
true -> v_type_uint32(F1, [version | Path], TrUserData)
|
||||||
|
end,
|
||||||
|
ok;
|
||||||
|
v_msg_SDLExposedServiceRequest(X, Path, _TrUserData) -> mk_type_error({expected_msg, 'SDLExposedServiceRequest'}, X, Path).
|
||||||
|
|
||||||
|
-compile({nowarn_unused_function,v_msg_SDLExposedServiceResponse/3}).
|
||||||
|
-dialyzer({nowarn_function,v_msg_SDLExposedServiceResponse/3}).
|
||||||
|
v_msg_SDLExposedServiceResponse(#'SDLExposedServiceResponse'{version = F1, tcp_ports = F2, udp_ports = F3}, Path, TrUserData) ->
|
||||||
|
if F1 == undefined -> ok;
|
||||||
|
true -> v_type_uint32(F1, [version | Path], TrUserData)
|
||||||
|
end,
|
||||||
|
if is_list(F2) ->
|
||||||
|
_ = [v_type_uint32(Elem, [tcp_ports | Path], TrUserData) || Elem <- F2],
|
||||||
|
ok;
|
||||||
|
true -> mk_type_error({invalid_list_of, uint32}, F2, [tcp_ports | Path])
|
||||||
|
end,
|
||||||
|
if is_list(F3) ->
|
||||||
|
_ = [v_type_uint32(Elem, [udp_ports | Path], TrUserData) || Elem <- F3],
|
||||||
|
ok;
|
||||||
|
true -> mk_type_error({invalid_list_of, uint32}, F3, [udp_ports | Path])
|
||||||
|
end,
|
||||||
|
ok;
|
||||||
|
v_msg_SDLExposedServiceResponse(X, Path, _TrUserData) -> mk_type_error({expected_msg, 'SDLExposedServiceResponse'}, X, Path).
|
||||||
|
|
||||||
-compile({nowarn_unused_function,'v_submsg_SDLEvent.NatChanged'/3}).
|
-compile({nowarn_unused_function,'v_submsg_SDLEvent.NatChanged'/3}).
|
||||||
-dialyzer({nowarn_function,'v_submsg_SDLEvent.NatChanged'/3}).
|
-dialyzer({nowarn_function,'v_submsg_SDLEvent.NatChanged'/3}).
|
||||||
'v_submsg_SDLEvent.NatChanged'(Msg, Path, TrUserData) -> 'v_msg_SDLEvent.NatChanged'(Msg, Path, TrUserData).
|
'v_submsg_SDLEvent.NatChanged'(Msg, Path, TrUserData) -> 'v_msg_SDLEvent.NatChanged'(Msg, Path, TrUserData).
|
||||||
@ -4017,6 +4343,15 @@ v_msg_SDLPolicyResponse(X, Path, _TrUserData) -> mk_type_error({expected_msg, 'S
|
|||||||
ok;
|
ok;
|
||||||
'v_msg_SDLEvent.SendRegister'(X, Path, _TrUserData) -> mk_type_error({expected_msg, 'SDLEvent.SendRegister'}, X, Path).
|
'v_msg_SDLEvent.SendRegister'(X, Path, _TrUserData) -> mk_type_error({expected_msg, 'SDLEvent.SendRegister'}, X, Path).
|
||||||
|
|
||||||
|
-compile({nowarn_unused_function,'v_submsg_SDLEvent.ExposedServiceChanged'/3}).
|
||||||
|
-dialyzer({nowarn_function,'v_submsg_SDLEvent.ExposedServiceChanged'/3}).
|
||||||
|
'v_submsg_SDLEvent.ExposedServiceChanged'(Msg, Path, TrUserData) -> 'v_msg_SDLEvent.ExposedServiceChanged'(Msg, Path, TrUserData).
|
||||||
|
|
||||||
|
-compile({nowarn_unused_function,'v_msg_SDLEvent.ExposedServiceChanged'/3}).
|
||||||
|
-dialyzer({nowarn_function,'v_msg_SDLEvent.ExposedServiceChanged'/3}).
|
||||||
|
'v_msg_SDLEvent.ExposedServiceChanged'(#'SDLEvent.ExposedServiceChanged'{}, _Path, _) -> ok;
|
||||||
|
'v_msg_SDLEvent.ExposedServiceChanged'(X, Path, _TrUserData) -> mk_type_error({expected_msg, 'SDLEvent.ExposedServiceChanged'}, X, Path).
|
||||||
|
|
||||||
-compile({nowarn_unused_function,'v_submsg_SDLEvent.NetworkShutdown'/3}).
|
-compile({nowarn_unused_function,'v_submsg_SDLEvent.NetworkShutdown'/3}).
|
||||||
-dialyzer({nowarn_function,'v_submsg_SDLEvent.NetworkShutdown'/3}).
|
-dialyzer({nowarn_function,'v_submsg_SDLEvent.NetworkShutdown'/3}).
|
||||||
'v_submsg_SDLEvent.NetworkShutdown'(Msg, Path, TrUserData) -> 'v_msg_SDLEvent.NetworkShutdown'(Msg, Path, TrUserData).
|
'v_submsg_SDLEvent.NetworkShutdown'(Msg, Path, TrUserData) -> 'v_msg_SDLEvent.NetworkShutdown'(Msg, Path, TrUserData).
|
||||||
@ -4038,6 +4373,7 @@ v_msg_SDLEvent(#'SDLEvent'{event = F1}, Path, TrUserData) ->
|
|||||||
{nat_changed, OF1} -> 'v_submsg_SDLEvent.NatChanged'(OF1, [nat_changed, event | Path], TrUserData);
|
{nat_changed, OF1} -> 'v_submsg_SDLEvent.NatChanged'(OF1, [nat_changed, event | Path], TrUserData);
|
||||||
{send_register, OF1} -> 'v_submsg_SDLEvent.SendRegister'(OF1, [send_register, event | Path], TrUserData);
|
{send_register, OF1} -> 'v_submsg_SDLEvent.SendRegister'(OF1, [send_register, event | Path], TrUserData);
|
||||||
{shutdown, OF1} -> 'v_submsg_SDLEvent.NetworkShutdown'(OF1, [shutdown, event | Path], TrUserData);
|
{shutdown, OF1} -> 'v_submsg_SDLEvent.NetworkShutdown'(OF1, [shutdown, event | Path], TrUserData);
|
||||||
|
{exposed_service_changed, OF1} -> 'v_submsg_SDLEvent.ExposedServiceChanged'(OF1, [exposed_service_changed, event | Path], TrUserData);
|
||||||
_ -> mk_type_error(invalid_oneof, F1, [event | Path])
|
_ -> mk_type_error(invalid_oneof, F1, [event | Path])
|
||||||
end,
|
end,
|
||||||
ok;
|
ok;
|
||||||
@ -4342,6 +4678,11 @@ get_msg_defs() ->
|
|||||||
#field{name = dst_identity_id, fnum = 2, rnum = 3, type = uint32, occurrence = defaulty, opts = []},
|
#field{name = dst_identity_id, fnum = 2, rnum = 3, type = uint32, occurrence = defaulty, opts = []},
|
||||||
#field{name = version, fnum = 3, rnum = 4, type = uint32, occurrence = defaulty, opts = []},
|
#field{name = version, fnum = 3, rnum = 4, type = uint32, occurrence = defaulty, opts = []},
|
||||||
#field{name = rules, fnum = 4, rnum = 5, type = bytes, occurrence = defaulty, opts = []}]},
|
#field{name = rules, fnum = 4, rnum = 5, type = bytes, occurrence = defaulty, opts = []}]},
|
||||||
|
{{msg, 'SDLExposedServiceRequest'}, [#field{name = version, fnum = 1, rnum = 2, type = uint32, occurrence = defaulty, opts = []}]},
|
||||||
|
{{msg, 'SDLExposedServiceResponse'},
|
||||||
|
[#field{name = version, fnum = 1, rnum = 2, type = uint32, occurrence = defaulty, opts = []},
|
||||||
|
#field{name = tcp_ports, fnum = 2, rnum = 3, type = uint32, occurrence = repeated, opts = [packed]},
|
||||||
|
#field{name = udp_ports, fnum = 3, rnum = 4, type = uint32, occurrence = repeated, opts = [packed]}]},
|
||||||
{{msg, 'SDLEvent.NatChanged'}, [#field{name = mac, fnum = 1, rnum = 2, type = bytes, occurrence = defaulty, opts = []}, #field{name = ip, fnum = 2, rnum = 3, type = uint32, occurrence = defaulty, opts = []}]},
|
{{msg, 'SDLEvent.NatChanged'}, [#field{name = mac, fnum = 1, rnum = 2, type = bytes, occurrence = defaulty, opts = []}, #field{name = ip, fnum = 2, rnum = 3, type = uint32, occurrence = defaulty, opts = []}]},
|
||||||
{{msg, 'SDLEvent.SendRegister'},
|
{{msg, 'SDLEvent.SendRegister'},
|
||||||
[#field{name = dst_mac, fnum = 1, rnum = 2, type = bytes, occurrence = defaulty, opts = []},
|
[#field{name = dst_mac, fnum = 1, rnum = 2, type = bytes, occurrence = defaulty, opts = []},
|
||||||
@ -4349,13 +4690,15 @@ get_msg_defs() ->
|
|||||||
#field{name = nat_port, fnum = 3, rnum = 4, type = uint32, occurrence = defaulty, opts = []},
|
#field{name = nat_port, fnum = 3, rnum = 4, type = uint32, occurrence = defaulty, opts = []},
|
||||||
#field{name = nat_type, fnum = 4, rnum = 5, type = uint32, occurrence = defaulty, opts = []},
|
#field{name = nat_type, fnum = 4, rnum = 5, type = uint32, occurrence = defaulty, opts = []},
|
||||||
#field{name = v6_info, fnum = 5, rnum = 6, type = {msg, 'SDLV6Info'}, occurrence = optional, opts = []}]},
|
#field{name = v6_info, fnum = 5, rnum = 6, type = {msg, 'SDLV6Info'}, occurrence = optional, opts = []}]},
|
||||||
|
{{msg, 'SDLEvent.ExposedServiceChanged'}, []},
|
||||||
{{msg, 'SDLEvent.NetworkShutdown'}, [#field{name = message, fnum = 1, rnum = 2, type = string, occurrence = defaulty, opts = []}]},
|
{{msg, 'SDLEvent.NetworkShutdown'}, [#field{name = message, fnum = 1, rnum = 2, type = string, occurrence = defaulty, opts = []}]},
|
||||||
{{msg, 'SDLEvent'},
|
{{msg, 'SDLEvent'},
|
||||||
[#gpb_oneof{name = event, rnum = 2,
|
[#gpb_oneof{name = event, rnum = 2,
|
||||||
fields =
|
fields =
|
||||||
[#field{name = nat_changed, fnum = 1, rnum = 2, type = {msg, 'SDLEvent.NatChanged'}, occurrence = optional, opts = []},
|
[#field{name = nat_changed, fnum = 1, rnum = 2, type = {msg, 'SDLEvent.NatChanged'}, occurrence = optional, opts = []},
|
||||||
#field{name = send_register, fnum = 2, rnum = 2, type = {msg, 'SDLEvent.SendRegister'}, occurrence = optional, opts = []},
|
#field{name = send_register, fnum = 2, rnum = 2, type = {msg, 'SDLEvent.SendRegister'}, occurrence = optional, opts = []},
|
||||||
#field{name = shutdown, fnum = 3, rnum = 2, type = {msg, 'SDLEvent.NetworkShutdown'}, occurrence = optional, opts = []}],
|
#field{name = shutdown, fnum = 3, rnum = 2, type = {msg, 'SDLEvent.NetworkShutdown'}, occurrence = optional, opts = []},
|
||||||
|
#field{name = exposed_service_changed, fnum = 4, rnum = 2, type = {msg, 'SDLEvent.ExposedServiceChanged'}, occurrence = optional, opts = []}],
|
||||||
opts = []}]},
|
opts = []}]},
|
||||||
{{msg, 'SDLCommand.ExitNodeControl'}, [#field{name = action, fnum = 1, rnum = 2, type = int32, occurrence = defaulty, opts = []}, #field{name = remark, fnum = 2, rnum = 3, type = string, occurrence = defaulty, opts = []}]},
|
{{msg, 'SDLCommand.ExitNodeControl'}, [#field{name = action, fnum = 1, rnum = 2, type = int32, occurrence = defaulty, opts = []}, #field{name = remark, fnum = 2, rnum = 3, type = string, occurrence = defaulty, opts = []}]},
|
||||||
{{msg, 'SDLCommand'},
|
{{msg, 'SDLCommand'},
|
||||||
@ -4418,8 +4761,11 @@ get_msg_names() ->
|
|||||||
'SDLArpResponse',
|
'SDLArpResponse',
|
||||||
'SDLPolicyRequest',
|
'SDLPolicyRequest',
|
||||||
'SDLPolicyResponse',
|
'SDLPolicyResponse',
|
||||||
|
'SDLExposedServiceRequest',
|
||||||
|
'SDLExposedServiceResponse',
|
||||||
'SDLEvent.NatChanged',
|
'SDLEvent.NatChanged',
|
||||||
'SDLEvent.SendRegister',
|
'SDLEvent.SendRegister',
|
||||||
|
'SDLEvent.ExposedServiceChanged',
|
||||||
'SDLEvent.NetworkShutdown',
|
'SDLEvent.NetworkShutdown',
|
||||||
'SDLEvent',
|
'SDLEvent',
|
||||||
'SDLCommand.ExitNodeControl',
|
'SDLCommand.ExitNodeControl',
|
||||||
@ -4452,8 +4798,11 @@ get_msg_or_group_names() ->
|
|||||||
'SDLArpResponse',
|
'SDLArpResponse',
|
||||||
'SDLPolicyRequest',
|
'SDLPolicyRequest',
|
||||||
'SDLPolicyResponse',
|
'SDLPolicyResponse',
|
||||||
|
'SDLExposedServiceRequest',
|
||||||
|
'SDLExposedServiceResponse',
|
||||||
'SDLEvent.NatChanged',
|
'SDLEvent.NatChanged',
|
||||||
'SDLEvent.SendRegister',
|
'SDLEvent.SendRegister',
|
||||||
|
'SDLEvent.ExposedServiceChanged',
|
||||||
'SDLEvent.NetworkShutdown',
|
'SDLEvent.NetworkShutdown',
|
||||||
'SDLEvent',
|
'SDLEvent',
|
||||||
'SDLCommand.ExitNodeControl',
|
'SDLCommand.ExitNodeControl',
|
||||||
@ -4533,6 +4882,11 @@ find_msg_def('SDLPolicyResponse') ->
|
|||||||
#field{name = dst_identity_id, fnum = 2, rnum = 3, type = uint32, occurrence = defaulty, opts = []},
|
#field{name = dst_identity_id, fnum = 2, rnum = 3, type = uint32, occurrence = defaulty, opts = []},
|
||||||
#field{name = version, fnum = 3, rnum = 4, type = uint32, occurrence = defaulty, opts = []},
|
#field{name = version, fnum = 3, rnum = 4, type = uint32, occurrence = defaulty, opts = []},
|
||||||
#field{name = rules, fnum = 4, rnum = 5, type = bytes, occurrence = defaulty, opts = []}];
|
#field{name = rules, fnum = 4, rnum = 5, type = bytes, occurrence = defaulty, opts = []}];
|
||||||
|
find_msg_def('SDLExposedServiceRequest') -> [#field{name = version, fnum = 1, rnum = 2, type = uint32, occurrence = defaulty, opts = []}];
|
||||||
|
find_msg_def('SDLExposedServiceResponse') ->
|
||||||
|
[#field{name = version, fnum = 1, rnum = 2, type = uint32, occurrence = defaulty, opts = []},
|
||||||
|
#field{name = tcp_ports, fnum = 2, rnum = 3, type = uint32, occurrence = repeated, opts = [packed]},
|
||||||
|
#field{name = udp_ports, fnum = 3, rnum = 4, type = uint32, occurrence = repeated, opts = [packed]}];
|
||||||
find_msg_def('SDLEvent.NatChanged') -> [#field{name = mac, fnum = 1, rnum = 2, type = bytes, occurrence = defaulty, opts = []}, #field{name = ip, fnum = 2, rnum = 3, type = uint32, occurrence = defaulty, opts = []}];
|
find_msg_def('SDLEvent.NatChanged') -> [#field{name = mac, fnum = 1, rnum = 2, type = bytes, occurrence = defaulty, opts = []}, #field{name = ip, fnum = 2, rnum = 3, type = uint32, occurrence = defaulty, opts = []}];
|
||||||
find_msg_def('SDLEvent.SendRegister') ->
|
find_msg_def('SDLEvent.SendRegister') ->
|
||||||
[#field{name = dst_mac, fnum = 1, rnum = 2, type = bytes, occurrence = defaulty, opts = []},
|
[#field{name = dst_mac, fnum = 1, rnum = 2, type = bytes, occurrence = defaulty, opts = []},
|
||||||
@ -4540,13 +4894,15 @@ find_msg_def('SDLEvent.SendRegister') ->
|
|||||||
#field{name = nat_port, fnum = 3, rnum = 4, type = uint32, occurrence = defaulty, opts = []},
|
#field{name = nat_port, fnum = 3, rnum = 4, type = uint32, occurrence = defaulty, opts = []},
|
||||||
#field{name = nat_type, fnum = 4, rnum = 5, type = uint32, occurrence = defaulty, opts = []},
|
#field{name = nat_type, fnum = 4, rnum = 5, type = uint32, occurrence = defaulty, opts = []},
|
||||||
#field{name = v6_info, fnum = 5, rnum = 6, type = {msg, 'SDLV6Info'}, occurrence = optional, opts = []}];
|
#field{name = v6_info, fnum = 5, rnum = 6, type = {msg, 'SDLV6Info'}, occurrence = optional, opts = []}];
|
||||||
|
find_msg_def('SDLEvent.ExposedServiceChanged') -> [];
|
||||||
find_msg_def('SDLEvent.NetworkShutdown') -> [#field{name = message, fnum = 1, rnum = 2, type = string, occurrence = defaulty, opts = []}];
|
find_msg_def('SDLEvent.NetworkShutdown') -> [#field{name = message, fnum = 1, rnum = 2, type = string, occurrence = defaulty, opts = []}];
|
||||||
find_msg_def('SDLEvent') ->
|
find_msg_def('SDLEvent') ->
|
||||||
[#gpb_oneof{name = event, rnum = 2,
|
[#gpb_oneof{name = event, rnum = 2,
|
||||||
fields =
|
fields =
|
||||||
[#field{name = nat_changed, fnum = 1, rnum = 2, type = {msg, 'SDLEvent.NatChanged'}, occurrence = optional, opts = []},
|
[#field{name = nat_changed, fnum = 1, rnum = 2, type = {msg, 'SDLEvent.NatChanged'}, occurrence = optional, opts = []},
|
||||||
#field{name = send_register, fnum = 2, rnum = 2, type = {msg, 'SDLEvent.SendRegister'}, occurrence = optional, opts = []},
|
#field{name = send_register, fnum = 2, rnum = 2, type = {msg, 'SDLEvent.SendRegister'}, occurrence = optional, opts = []},
|
||||||
#field{name = shutdown, fnum = 3, rnum = 2, type = {msg, 'SDLEvent.NetworkShutdown'}, occurrence = optional, opts = []}],
|
#field{name = shutdown, fnum = 3, rnum = 2, type = {msg, 'SDLEvent.NetworkShutdown'}, occurrence = optional, opts = []},
|
||||||
|
#field{name = exposed_service_changed, fnum = 4, rnum = 2, type = {msg, 'SDLEvent.ExposedServiceChanged'}, occurrence = optional, opts = []}],
|
||||||
opts = []}];
|
opts = []}];
|
||||||
find_msg_def('SDLCommand.ExitNodeControl') -> [#field{name = action, fnum = 1, rnum = 2, type = int32, occurrence = defaulty, opts = []}, #field{name = remark, fnum = 2, rnum = 3, type = string, occurrence = defaulty, opts = []}];
|
find_msg_def('SDLCommand.ExitNodeControl') -> [#field{name = action, fnum = 1, rnum = 2, type = int32, occurrence = defaulty, opts = []}, #field{name = remark, fnum = 2, rnum = 3, type = string, occurrence = defaulty, opts = []}];
|
||||||
find_msg_def('SDLCommand') ->
|
find_msg_def('SDLCommand') ->
|
||||||
@ -4664,8 +5020,11 @@ fqbin_to_msg_name(<<"SDLArpRequest">>) -> 'SDLArpRequest';
|
|||||||
fqbin_to_msg_name(<<"SDLArpResponse">>) -> 'SDLArpResponse';
|
fqbin_to_msg_name(<<"SDLArpResponse">>) -> 'SDLArpResponse';
|
||||||
fqbin_to_msg_name(<<"SDLPolicyRequest">>) -> 'SDLPolicyRequest';
|
fqbin_to_msg_name(<<"SDLPolicyRequest">>) -> 'SDLPolicyRequest';
|
||||||
fqbin_to_msg_name(<<"SDLPolicyResponse">>) -> 'SDLPolicyResponse';
|
fqbin_to_msg_name(<<"SDLPolicyResponse">>) -> 'SDLPolicyResponse';
|
||||||
|
fqbin_to_msg_name(<<"SDLExposedServiceRequest">>) -> 'SDLExposedServiceRequest';
|
||||||
|
fqbin_to_msg_name(<<"SDLExposedServiceResponse">>) -> 'SDLExposedServiceResponse';
|
||||||
fqbin_to_msg_name(<<"SDLEvent.NatChanged">>) -> 'SDLEvent.NatChanged';
|
fqbin_to_msg_name(<<"SDLEvent.NatChanged">>) -> 'SDLEvent.NatChanged';
|
||||||
fqbin_to_msg_name(<<"SDLEvent.SendRegister">>) -> 'SDLEvent.SendRegister';
|
fqbin_to_msg_name(<<"SDLEvent.SendRegister">>) -> 'SDLEvent.SendRegister';
|
||||||
|
fqbin_to_msg_name(<<"SDLEvent.ExposedServiceChanged">>) -> 'SDLEvent.ExposedServiceChanged';
|
||||||
fqbin_to_msg_name(<<"SDLEvent.NetworkShutdown">>) -> 'SDLEvent.NetworkShutdown';
|
fqbin_to_msg_name(<<"SDLEvent.NetworkShutdown">>) -> 'SDLEvent.NetworkShutdown';
|
||||||
fqbin_to_msg_name(<<"SDLEvent">>) -> 'SDLEvent';
|
fqbin_to_msg_name(<<"SDLEvent">>) -> 'SDLEvent';
|
||||||
fqbin_to_msg_name(<<"SDLCommand.ExitNodeControl">>) -> 'SDLCommand.ExitNodeControl';
|
fqbin_to_msg_name(<<"SDLCommand.ExitNodeControl">>) -> 'SDLCommand.ExitNodeControl';
|
||||||
@ -4695,8 +5054,11 @@ msg_name_to_fqbin('SDLArpRequest') -> <<"SDLArpRequest">>;
|
|||||||
msg_name_to_fqbin('SDLArpResponse') -> <<"SDLArpResponse">>;
|
msg_name_to_fqbin('SDLArpResponse') -> <<"SDLArpResponse">>;
|
||||||
msg_name_to_fqbin('SDLPolicyRequest') -> <<"SDLPolicyRequest">>;
|
msg_name_to_fqbin('SDLPolicyRequest') -> <<"SDLPolicyRequest">>;
|
||||||
msg_name_to_fqbin('SDLPolicyResponse') -> <<"SDLPolicyResponse">>;
|
msg_name_to_fqbin('SDLPolicyResponse') -> <<"SDLPolicyResponse">>;
|
||||||
|
msg_name_to_fqbin('SDLExposedServiceRequest') -> <<"SDLExposedServiceRequest">>;
|
||||||
|
msg_name_to_fqbin('SDLExposedServiceResponse') -> <<"SDLExposedServiceResponse">>;
|
||||||
msg_name_to_fqbin('SDLEvent.NatChanged') -> <<"SDLEvent.NatChanged">>;
|
msg_name_to_fqbin('SDLEvent.NatChanged') -> <<"SDLEvent.NatChanged">>;
|
||||||
msg_name_to_fqbin('SDLEvent.SendRegister') -> <<"SDLEvent.SendRegister">>;
|
msg_name_to_fqbin('SDLEvent.SendRegister') -> <<"SDLEvent.SendRegister">>;
|
||||||
|
msg_name_to_fqbin('SDLEvent.ExposedServiceChanged') -> <<"SDLEvent.ExposedServiceChanged">>;
|
||||||
msg_name_to_fqbin('SDLEvent.NetworkShutdown') -> <<"SDLEvent.NetworkShutdown">>;
|
msg_name_to_fqbin('SDLEvent.NetworkShutdown') -> <<"SDLEvent.NetworkShutdown">>;
|
||||||
msg_name_to_fqbin('SDLEvent') -> <<"SDLEvent">>;
|
msg_name_to_fqbin('SDLEvent') -> <<"SDLEvent">>;
|
||||||
msg_name_to_fqbin('SDLCommand.ExitNodeControl') -> <<"SDLCommand.ExitNodeControl">>;
|
msg_name_to_fqbin('SDLCommand.ExitNodeControl') -> <<"SDLCommand.ExitNodeControl">>;
|
||||||
@ -4755,9 +5117,12 @@ get_msg_containment("sdlan") ->
|
|||||||
'SDLCommandAck',
|
'SDLCommandAck',
|
||||||
'SDLData',
|
'SDLData',
|
||||||
'SDLEvent',
|
'SDLEvent',
|
||||||
|
'SDLEvent.ExposedServiceChanged',
|
||||||
'SDLEvent.NatChanged',
|
'SDLEvent.NatChanged',
|
||||||
'SDLEvent.NetworkShutdown',
|
'SDLEvent.NetworkShutdown',
|
||||||
'SDLEvent.SendRegister',
|
'SDLEvent.SendRegister',
|
||||||
|
'SDLExposedServiceRequest',
|
||||||
|
'SDLExposedServiceResponse',
|
||||||
'SDLPeerInfo',
|
'SDLPeerInfo',
|
||||||
'SDLPolicyRequest',
|
'SDLPolicyRequest',
|
||||||
'SDLPolicyResponse',
|
'SDLPolicyResponse',
|
||||||
@ -4801,7 +5166,9 @@ get_proto_by_msg_name_as_fqbin(<<"SDLRegister">>) -> "sdlan";
|
|||||||
get_proto_by_msg_name_as_fqbin(<<"SDLEvent.SendRegister">>) -> "sdlan";
|
get_proto_by_msg_name_as_fqbin(<<"SDLEvent.SendRegister">>) -> "sdlan";
|
||||||
get_proto_by_msg_name_as_fqbin(<<"SDLStunRequest">>) -> "sdlan";
|
get_proto_by_msg_name_as_fqbin(<<"SDLStunRequest">>) -> "sdlan";
|
||||||
get_proto_by_msg_name_as_fqbin(<<"SDLPolicyRequest">>) -> "sdlan";
|
get_proto_by_msg_name_as_fqbin(<<"SDLPolicyRequest">>) -> "sdlan";
|
||||||
|
get_proto_by_msg_name_as_fqbin(<<"SDLExposedServiceRequest">>) -> "sdlan";
|
||||||
get_proto_by_msg_name_as_fqbin(<<"SDLEvent.NatChanged">>) -> "sdlan";
|
get_proto_by_msg_name_as_fqbin(<<"SDLEvent.NatChanged">>) -> "sdlan";
|
||||||
|
get_proto_by_msg_name_as_fqbin(<<"SDLEvent.ExposedServiceChanged">>) -> "sdlan";
|
||||||
get_proto_by_msg_name_as_fqbin(<<"SDLEvent">>) -> "sdlan";
|
get_proto_by_msg_name_as_fqbin(<<"SDLEvent">>) -> "sdlan";
|
||||||
get_proto_by_msg_name_as_fqbin(<<"SDLCommand">>) -> "sdlan";
|
get_proto_by_msg_name_as_fqbin(<<"SDLCommand">>) -> "sdlan";
|
||||||
get_proto_by_msg_name_as_fqbin(<<"SDLArpRequest">>) -> "sdlan";
|
get_proto_by_msg_name_as_fqbin(<<"SDLArpRequest">>) -> "sdlan";
|
||||||
@ -4809,6 +5176,7 @@ get_proto_by_msg_name_as_fqbin(<<"SDLWelcome">>) -> "sdlan";
|
|||||||
get_proto_by_msg_name_as_fqbin(<<"SDLV6AssistProbe">>) -> "sdlan";
|
get_proto_by_msg_name_as_fqbin(<<"SDLV6AssistProbe">>) -> "sdlan";
|
||||||
get_proto_by_msg_name_as_fqbin(<<"SDLStunProbe">>) -> "sdlan";
|
get_proto_by_msg_name_as_fqbin(<<"SDLStunProbe">>) -> "sdlan";
|
||||||
get_proto_by_msg_name_as_fqbin(<<"SDLPolicyResponse">>) -> "sdlan";
|
get_proto_by_msg_name_as_fqbin(<<"SDLPolicyResponse">>) -> "sdlan";
|
||||||
|
get_proto_by_msg_name_as_fqbin(<<"SDLExposedServiceResponse">>) -> "sdlan";
|
||||||
get_proto_by_msg_name_as_fqbin(<<"SDLArpResponse">>) -> "sdlan";
|
get_proto_by_msg_name_as_fqbin(<<"SDLArpResponse">>) -> "sdlan";
|
||||||
get_proto_by_msg_name_as_fqbin(<<"SDLV6AssistProbeReply">>) -> "sdlan";
|
get_proto_by_msg_name_as_fqbin(<<"SDLV6AssistProbeReply">>) -> "sdlan";
|
||||||
get_proto_by_msg_name_as_fqbin(<<"SDLStunReply">>) -> "sdlan";
|
get_proto_by_msg_name_as_fqbin(<<"SDLStunReply">>) -> "sdlan";
|
||||||
|
|||||||
@ -36,6 +36,8 @@
|
|||||||
|
|
||||||
client_id :: undefined | binary(),
|
client_id :: undefined | binary(),
|
||||||
network_id = 0 :: integer(),
|
network_id = 0 :: integer(),
|
||||||
|
access_token :: undefined | binary(),
|
||||||
|
|
||||||
%% 网络相关信息id
|
%% 网络相关信息id
|
||||||
network_pid :: undefined | pid(),
|
network_pid :: undefined | pid(),
|
||||||
%% mac地址
|
%% mac地址
|
||||||
@ -119,7 +121,7 @@ handle_frame(<<?PACKET_REGISTER_SUPER, Body/binary>>, Session = #session{status
|
|||||||
%% 建立到network的对应关系
|
%% 建立到network的对应关系
|
||||||
case sdlan_network:get_pid(NetworkId) of
|
case sdlan_network:get_pid(NetworkId) of
|
||||||
NetworkPid when is_pid(NetworkPid) ->
|
NetworkPid when is_pid(NetworkPid) ->
|
||||||
{ok, Algorithm, Key, RegionId, SessionToken} = sdlan_network:attach(NetworkPid, self(), ClientId, Mac, Ip, HostName),
|
{ok, Algorithm, Key, RegionId, SessionToken} = sdlan_network:attach(NetworkPid, self(), Transport, ClientId, Mac, Ip, HostName),
|
||||||
RsaPubKey = sdlan_cipher:rsa_pem_decode(PubKey),
|
RsaPubKey = sdlan_cipher:rsa_pem_decode(PubKey),
|
||||||
RegisterSuperAck = sdlan_pb:encode_msg(#'SDLRegisterSuperAck'{
|
RegisterSuperAck = sdlan_pb:encode_msg(#'SDLRegisterSuperAck'{
|
||||||
algorithm = Algorithm,
|
algorithm = Algorithm,
|
||||||
@ -150,6 +152,7 @@ handle_frame(<<?PACKET_REGISTER_SUPER, Body/binary>>, Session = #session{status
|
|||||||
network_id = NetworkId,
|
network_id = NetworkId,
|
||||||
network_pid = NetworkPid,
|
network_pid = NetworkPid,
|
||||||
client_id = ClientId,
|
client_id = ClientId,
|
||||||
|
access_token = AccessToken,
|
||||||
mac = Mac,
|
mac = Mac,
|
||||||
ip = Ip,
|
ip = Ip,
|
||||||
offline_cb = OfflineCb
|
offline_cb = OfflineCb
|
||||||
@ -246,6 +249,34 @@ handle_frame(<<?PACKET_POLICY_REQUEST, Body/binary>>, Session = #session{status
|
|||||||
end,
|
end,
|
||||||
ok_result(Session, Packets);
|
ok_result(Session, Packets);
|
||||||
|
|
||||||
|
handle_frame(<<?PACKET_EXPOSED_SERVICE_REQUEST, Body/binary>>,
|
||||||
|
Session = #session{status = registered, network_pid = NetworkPid, transport = Transport, client_id = ClientId, access_token = AccessToken, network_id = NetworkId}) when is_pid(NetworkPid) ->
|
||||||
|
|
||||||
|
Packets = maybe
|
||||||
|
#'SDLExposedServiceRequest'{version = Version} ?= sdlan_pb:decode_msg(Body, 'SDLExposedServiceRequest'),
|
||||||
|
Params = #{
|
||||||
|
<<"client_id">> => ClientId,
|
||||||
|
<<"network_id">> => NetworkId,
|
||||||
|
<<"access_token">> => AccessToken
|
||||||
|
},
|
||||||
|
case sdlan_api:node_acl(Params) of
|
||||||
|
{ok, #{<<"result">> := #{<<"tcp_ports">> := TcpPorts0, <<"udp_ports">> := UdpPorts0}}} ->
|
||||||
|
ExposedServiceResponsePkt = sdlan_pb:encode_msg(#'SDLExposedServiceResponse'{
|
||||||
|
version = Version,
|
||||||
|
tcp_ports = parse_ports(TcpPorts0),
|
||||||
|
udp_ports = parse_ports(UdpPorts0)
|
||||||
|
}),
|
||||||
|
[<<?PACKET_EXPOSED_SERVICE_RESPONSE, ExposedServiceResponsePkt/binary>>];
|
||||||
|
{error, Reason} ->
|
||||||
|
logger:debug("[sdlan_session] SDLExposedServiceRequest: ~p, transport: ~p, get error: ~p", [Transport, Reason]),
|
||||||
|
[]
|
||||||
|
end
|
||||||
|
else
|
||||||
|
_ ->
|
||||||
|
[]
|
||||||
|
end,
|
||||||
|
ok_result(Session, Packets);
|
||||||
|
|
||||||
%% 处理命令的响应逻辑
|
%% 处理命令的响应逻辑
|
||||||
handle_frame(<<?PACKET_COMMAND_ACK, Body/binary>>, Session = #session{status = registered, pending_commands = PendingCommands, transport = Transport}) ->
|
handle_frame(<<?PACKET_COMMAND_ACK, Body/binary>>, Session = #session{status = registered, pending_commands = PendingCommands, transport = Transport}) ->
|
||||||
logger:debug("[sdlan_session] transport: ~p command_ack", [Transport]),
|
logger:debug("[sdlan_session] transport: ~p command_ack", [Transport]),
|
||||||
@ -256,7 +287,7 @@ handle_frame(<<?PACKET_COMMAND_ACK, Body/binary>>, Session = #session{status = r
|
|||||||
{{Ref, ReceiverPid}, RestPendingCommands} ?= maps:take(PktId, PendingCommands),
|
{{Ref, ReceiverPid}, RestPendingCommands} ?= maps:take(PktId, PendingCommands),
|
||||||
case is_process_alive(ReceiverPid) of
|
case is_process_alive(ReceiverPid) of
|
||||||
true ->
|
true ->
|
||||||
ReceiverPid ! {quic_command_ack, Ref, CommandAck};
|
ReceiverPid ! {command_ack, Ref, CommandAck};
|
||||||
false ->
|
false ->
|
||||||
ok
|
ok
|
||||||
end,
|
end,
|
||||||
@ -377,3 +408,6 @@ heartbeat_ms(HeartbeatSec) when is_integer(HeartbeatSec), HeartbeatSec > 0 ->
|
|||||||
HeartbeatSec * 1000;
|
HeartbeatSec * 1000;
|
||||||
heartbeat_ms(_) ->
|
heartbeat_ms(_) ->
|
||||||
?PING_TICKER.
|
?PING_TICKER.
|
||||||
|
|
||||||
|
parse_ports(Ports0) when is_list(Ports0) ->
|
||||||
|
lists:filter(fun(P0) -> is_integer(P0) andalso (P0 > 0 andalso P0 < 65535) end, Ports0).
|
||||||
|
|||||||
@ -76,12 +76,12 @@ init([]) ->
|
|||||||
},
|
},
|
||||||
|
|
||||||
#{
|
#{
|
||||||
id => sdlan_quic_channel_sup,
|
id => sdlan_quic_transport_sup,
|
||||||
start => {sdlan_quic_channel_sup, start_link, []},
|
start => {sdlan_quic_transport_sup, start_link, []},
|
||||||
restart => permanent,
|
restart => permanent,
|
||||||
shutdown => 2000,
|
shutdown => 2000,
|
||||||
type => supervisor,
|
type => supervisor,
|
||||||
modules => ['sdlan_quic_channel_sup']
|
modules => ['sdlan_quic_transport_sup']
|
||||||
},
|
},
|
||||||
|
|
||||||
#{
|
#{
|
||||||
|
|||||||
10
src/sdlan_transport.erl
Normal file
10
src/sdlan_transport.erl
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
%%%-------------------------------------------------------------------
|
||||||
|
%%% @doc Behaviour for client transport modules.
|
||||||
|
%%% @end
|
||||||
|
%%%-------------------------------------------------------------------
|
||||||
|
-module(sdlan_transport).
|
||||||
|
|
||||||
|
-callback send_event(Pid :: pid(), Event :: binary()) -> ok.
|
||||||
|
-callback command(Pid :: pid(), Ref :: reference(), ReceiverPid :: pid(), SubCommand :: {Tag :: atom(), SubCommand :: any()}) -> ok.
|
||||||
|
-callback stop(Pid :: pid(), Reason :: term()) -> ok.
|
||||||
|
-callback debug_info(Pid :: pid()) -> map().
|
||||||
@ -12,10 +12,14 @@
|
|||||||
|
|
||||||
-behaviour(gen_statem).
|
-behaviour(gen_statem).
|
||||||
-behaviour(ranch_protocol).
|
-behaviour(ranch_protocol).
|
||||||
|
-behaviour(sdlan_transport).
|
||||||
|
|
||||||
%% Ranch protocol callback
|
%% Ranch protocol callback
|
||||||
-export([start_link/4]).
|
-export([start_link/4]).
|
||||||
|
|
||||||
|
%% API
|
||||||
|
-export([send_event/2, command/4, stop/2, debug_info/1]).
|
||||||
|
|
||||||
%% gen_statem callbacks
|
%% gen_statem callbacks
|
||||||
-export([init/1, handle_event/4, terminate/3, code_change/4, callback_mode/0]).
|
-export([init/1, handle_event/4, terminate/3, code_change/4, callback_mode/0]).
|
||||||
|
|
||||||
@ -36,6 +40,22 @@
|
|||||||
%%% Ranch protocol callback
|
%%% Ranch protocol callback
|
||||||
%%%===================================================================
|
%%%===================================================================
|
||||||
|
|
||||||
|
-spec send_event(Pid :: pid(), Event :: binary()) -> ok.
|
||||||
|
send_event(Pid, ProtobufEvent) when is_pid(Pid), is_binary(ProtobufEvent) ->
|
||||||
|
gen_statem:cast(Pid, {send_event, ProtobufEvent}).
|
||||||
|
|
||||||
|
-spec command(Pid :: pid(), Ref :: reference(), ReceiverPid :: pid(), {Tag :: atom(), SubCommand :: any()}) -> ok.
|
||||||
|
command(Pid, Ref, ReceiverPid, SubCommand) when is_pid(Pid), is_pid(ReceiverPid) ->
|
||||||
|
gen_statem:cast(Pid, {command, Ref, ReceiverPid, SubCommand}).
|
||||||
|
|
||||||
|
-spec stop(Pid :: pid(), Reason :: term()) -> ok.
|
||||||
|
stop(Pid, Reason) when is_pid(Pid) ->
|
||||||
|
gen_statem:stop(Pid, Reason, 2000).
|
||||||
|
|
||||||
|
-spec debug_info(Pid :: pid()) -> map().
|
||||||
|
debug_info(Pid) when is_pid(Pid) ->
|
||||||
|
gen_statem:call(Pid, debug_info).
|
||||||
|
|
||||||
-spec start_link(Ref :: ranch:ref(), Socket :: inet:socket(), Transport :: module(),
|
-spec start_link(Ref :: ranch:ref(), Socket :: inet:socket(), Transport :: module(),
|
||||||
Limits :: proplists:proplist()) -> gen_statem:start_ret().
|
Limits :: proplists:proplist()) -> gen_statem:start_ret().
|
||||||
start_link(Ref, Socket, Transport, Limits) ->
|
start_link(Ref, Socket, Transport, Limits) ->
|
||||||
|
|||||||
@ -2,11 +2,10 @@
|
|||||||
|
|
||||||
rm -rf tmp
|
rm -rf tmp
|
||||||
mkdir tmp
|
mkdir tmp
|
||||||
|
|
||||||
cp proto/sdlan.proto tmp/sdlan_pb.proto
|
cp proto/sdlan.proto tmp/sdlan_pb.proto
|
||||||
|
|
||||||
cd tmp
|
cd tmp
|
||||||
|
|
||||||
protoc sdlan_pb.proto --swift_out=.
|
protoc sdlan_pb.proto --swift_out=.
|
||||||
cp sdlan_pb.pb.swift SDLMessage.pb.swift
|
cp sdlan_pb.pb.swift SDLMessage.pb.swift
|
||||||
cp SDLMessage.pb.swift /usr/local/code/macos/punchnet/Tun/Punchnet/Protobuf/
|
cp SDLMessage.pb.swift /usr/local/code/macos/punchnet/Tun/Protobuf/
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user