From f5a07e41f72839e2134c697b194ae1b7e6096a04 Mon Sep 17 00:00:00 2001 From: anlicheng <244108715@qq.com> Date: Fri, 23 Jan 2026 17:33:35 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E5=86=B3udp=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=8C=85=E7=9A=84=E8=BD=AC=E5=8F=91=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/sdlan/include/sdlan_pb.hrl | 122 +- apps/sdlan/src/sdlan_api.erl | 22 +- apps/sdlan/src/sdlan_network.erl | 68 +- apps/sdlan/src/sdlan_pb.erl | 2688 +++++++++------------- apps/sdlan/src/sdlan_register_worker.erl | 74 +- apps/sdlan/src/sdlan_stun.erl | 20 +- apps/sdlan/src/sdlan_stun_pool.erl | 134 ++ apps/sdlan/src/sdlan_stun_sup.erl | 28 +- 8 files changed, 1304 insertions(+), 1852 deletions(-) create mode 100644 apps/sdlan/src/sdlan_stun_pool.erl diff --git a/apps/sdlan/include/sdlan_pb.hrl b/apps/sdlan/include/sdlan_pb.hrl index 1bac18c..58b3498 100644 --- a/apps/sdlan/include/sdlan_pb.hrl +++ b/apps/sdlan/include/sdlan_pb.hrl @@ -25,46 +25,26 @@ }). -endif. --ifndef('SDL_DEV_ADDR_PB_H'). --define('SDL_DEV_ADDR_PB_H', true). --record(sdl_dev_addr, - {network_id = 0 :: non_neg_integer() | undefined, % = 1, optional, 32 bits - mac = <<>> :: iodata() | undefined, % = 2, optional - net_addr = 0 :: non_neg_integer() | undefined, % = 3, optional, 32 bits - net_bit_len = 0 :: non_neg_integer() | undefined, % = 4, optional, 32 bits - network_domain = <<>> :: unicode:chardata() | undefined % = 5, optional - }). --endif. - --ifndef('SDL_EMPTY_PB_H'). --define('SDL_EMPTY_PB_H', true). --record(sdl_empty, - { - }). --endif. - -ifndef('SDL_REGISTER_SUPER_PB_H'). -define('SDL_REGISTER_SUPER_PB_H', true). -record(sdl_register_super, {version = 0 :: non_neg_integer() | undefined, % = 1, optional, 32 bits - installed_channel = <<>> :: unicode:chardata() | undefined, % = 2, optional - client_id = <<>> :: unicode:chardata() | undefined, % = 3, optional - dev_addr = undefined :: sdlan_pb:sdl_dev_addr() | undefined, % = 4, optional - pub_key = <<>> :: unicode:chardata() | undefined, % = 5, optional - token = <<>> :: unicode:chardata() | undefined, % = 6, optional - network_code = <<>> :: unicode:chardata() | undefined, % = 7, optional - hostname = <<>> :: unicode:chardata() | undefined % = 8, optional + client_id = <<>> :: unicode:chardata() | undefined, % = 2, optional + network_id = 0 :: non_neg_integer() | undefined, % = 3, optional, 32 bits + mac = <<>> :: iodata() | undefined, % = 4, optional + ip = 0 :: non_neg_integer() | undefined, % = 5, optional, 32 bits + mask_len = 0 :: non_neg_integer() | undefined, % = 6, optional, 32 bits + hostname = <<>> :: unicode:chardata() | undefined, % = 7, optional + pub_key = <<>> :: unicode:chardata() | undefined, % = 8, optional + access_token = <<>> :: unicode:chardata() | undefined % = 9, optional }). -endif. -ifndef('SDL_REGISTER_SUPER_ACK_PB_H'). -define('SDL_REGISTER_SUPER_ACK_PB_H', true). -record(sdl_register_super_ack, - {dev_addr = undefined :: sdlan_pb:sdl_dev_addr() | undefined, % = 1, optional - aes_key = <<>> :: iodata() | undefined, % = 2, optional - upgrade_type = 0 :: non_neg_integer() | undefined, % = 3, optional, 32 bits - upgrade_prompt :: unicode:chardata() | undefined, % = 4, optional - upgrade_address :: unicode:chardata() | undefined % = 5, optional + {aes_key = <<>> :: iodata() | undefined, % = 1, optional + session_token = <<>> :: iodata() | undefined % = 2, optional }). -endif. @@ -79,87 +59,61 @@ -ifndef('SDL_QUERY_INFO_PB_H'). -define('SDL_QUERY_INFO_PB_H', true). -record(sdl_query_info, - {dst_mac = <<>> :: iodata() | undefined % = 1, optional + {network_id = 0 :: non_neg_integer() | undefined, % = 1, optional, 32 bits + dst_mac = <<>> :: iodata() | undefined, % = 2, optional + session_token = <<>> :: iodata() | undefined % = 3, optional }). -endif. -ifndef('SDL_PEER_INFO_PB_H'). -define('SDL_PEER_INFO_PB_H', true). -record(sdl_peer_info, - {dst_mac = <<>> :: iodata() | undefined, % = 1, optional - v4_info = undefined :: sdlan_pb:sdl_v4_info() | undefined, % = 2, optional - v6_info :: sdlan_pb:sdl_v6_info() | undefined % = 3, optional + {network_id = 0 :: non_neg_integer() | undefined, % = 1, optional, 32 bits + dst_mac = <<>> :: iodata() | undefined, % = 2, optional + v4_info = undefined :: sdlan_pb:sdl_v4_info() | undefined, % = 3, optional + v6_info :: sdlan_pb:sdl_v6_info() | undefined % = 4, optional }). -endif. -ifndef('SDL_NAT_CHANGED_EVENT_PB_H'). -define('SDL_NAT_CHANGED_EVENT_PB_H', true). -record(sdl_nat_changed_event, - {mac = <<>> :: iodata() | undefined, % = 1, optional - ip = 0 :: non_neg_integer() | undefined % = 2, optional, 32 bits + {network_id = 0 :: non_neg_integer() | undefined, % = 1, optional, 32 bits + mac = <<>> :: iodata() | undefined, % = 2, optional + ip = 0 :: non_neg_integer() | undefined % = 3, optional, 32 bits }). -endif. -ifndef('SDL_SEND_REGISTER_EVENT_PB_H'). -define('SDL_SEND_REGISTER_EVENT_PB_H', true). -record(sdl_send_register_event, - {dst_mac = <<>> :: iodata() | undefined, % = 1, optional - nat_ip = 0 :: non_neg_integer() | undefined, % = 2, optional, 32 bits - nat_port = 0 :: non_neg_integer() | undefined, % = 3, optional, 32 bits - nat_type = 0 :: non_neg_integer() | undefined, % = 4, optional, 32 bits - v6_info :: sdlan_pb:sdl_v6_info() | undefined % = 5, optional + {network_id = 0 :: non_neg_integer() | undefined, % = 1, optional, 32 bits + dst_mac = <<>> :: iodata() | undefined, % = 2, optional + nat_ip = 0 :: non_neg_integer() | undefined, % = 3, optional, 32 bits + nat_port = 0 :: non_neg_integer() | undefined, % = 4, optional, 32 bits + nat_type = 0 :: non_neg_integer() | undefined, % = 5, optional, 32 bits + v6_info :: sdlan_pb:sdl_v6_info() | undefined % = 6, optional }). -endif. -ifndef('SDL_NETWORK_SHUTDOWN_EVENT_PB_H'). -define('SDL_NETWORK_SHUTDOWN_EVENT_PB_H', true). -record(sdl_network_shutdown_event, - {message = <<>> :: unicode:chardata() | undefined % = 1, optional - }). --endif. - --ifndef('SDL_CHANGE_NETWORK_COMMAND_PB_H'). --define('SDL_CHANGE_NETWORK_COMMAND_PB_H', true). --record(sdl_change_network_command, - {dev_addr = undefined :: sdlan_pb:sdl_dev_addr() | undefined, % = 1, optional - aes_key = <<>> :: iodata() | undefined % = 2, optional - }). --endif. - --ifndef('SDL_COMMAND_ACK_PB_H'). --define('SDL_COMMAND_ACK_PB_H', true). --record(sdl_command_ack, - {status = false :: boolean() | 0 | 1 | undefined, % = 1, optional - message :: unicode:chardata() | undefined % = 2, optional - }). --endif. - --ifndef('SDL_FLOWS_PB_H'). --define('SDL_FLOWS_PB_H', true). --record(sdl_flows, - {forward_num = 0 :: non_neg_integer() | undefined, % = 1, optional, 32 bits - p2p_num = 0 :: non_neg_integer() | undefined, % = 2, optional, 32 bits - inbound_num = 0 :: non_neg_integer() | undefined % = 3, optional, 32 bits + {network_id = 0 :: non_neg_integer() | undefined, % = 1, optional, 32 bits + message = <<>> :: unicode:chardata() | undefined % = 2, optional }). -endif. -ifndef('SDL_STUN_REQUEST_PB_H'). -define('SDL_STUN_REQUEST_PB_H', true). -record(sdl_stun_request, - {cookie = 0 :: non_neg_integer() | undefined, % = 1, optional, 32 bits - client_id = <<>> :: unicode:chardata() | undefined, % = 2, optional - network_id = 0 :: non_neg_integer() | undefined, % = 3, optional, 32 bits - mac = <<>> :: iodata() | undefined, % = 4, optional - ip = 0 :: non_neg_integer() | undefined, % = 5, optional, 32 bits - nat_type = 0 :: non_neg_integer() | undefined, % = 6, optional, 32 bits - v6_info :: sdlan_pb:sdl_v6_info() | undefined % = 7, optional - }). --endif. - --ifndef('SDL_STUN_REPLY_PB_H'). --define('SDL_STUN_REPLY_PB_H', true). --record(sdl_stun_reply, - {cookie = 0 :: non_neg_integer() | undefined % = 1, optional, 32 bits + {client_id = <<>> :: unicode:chardata() | undefined, % = 1, optional + network_id = 0 :: non_neg_integer() | undefined, % = 2, optional, 32 bits + mac = <<>> :: iodata() | undefined, % = 3, optional + ip = 0 :: non_neg_integer() | undefined, % = 4, optional, 32 bits + nat_type = 0 :: non_neg_integer() | undefined, % = 5, optional, 32 bits + v6_info :: sdlan_pb:sdl_v6_info() | undefined, % = 6, optional + session_token = <<>> :: iodata() | undefined % = 7, optional }). -endif. @@ -171,7 +125,8 @@ dst_mac = <<>> :: iodata() | undefined, % = 3, optional is_p2p = false :: boolean() | 0 | 1 | undefined, % = 4, optional ttl = 0 :: non_neg_integer() | undefined, % = 5, optional, 32 bits - data = <<>> :: iodata() | undefined % = 6, optional + data = <<>> :: iodata() | undefined, % = 6, optional + session_token = <<>> :: iodata() | undefined % = 7, optional }). -endif. @@ -214,7 +169,8 @@ -define('SDL_ARP_REQUEST_PB_H', true). -record(sdl_arp_request, {network_id = 0 :: non_neg_integer() | undefined, % = 1, optional, 32 bits - target_ip = 0 :: non_neg_integer() | undefined % = 2, optional, 32 bits + target_ip = 0 :: non_neg_integer() | undefined, % = 2, optional, 32 bits + session_token = <<>> :: iodata() | undefined % = 3, optional }). -endif. diff --git a/apps/sdlan/src/sdlan_api.erl b/apps/sdlan/src/sdlan_api.erl index 98207fa..700f725 100644 --- a/apps/sdlan/src/sdlan_api.erl +++ b/apps/sdlan/src/sdlan_api.erl @@ -13,7 +13,7 @@ %% API -export([get_all_networks/0, get_network/1]). --export([auth_token/3, node_online/3, node_offline/2, flow_report/5, network_forward_report/2, auth_network_code/3]). +-export([auth_access_token/1, node_online/3, node_offline/2, flow_report/5, network_forward_report/2]). -export([assign_ip_address/3]). @@ -49,23 +49,9 @@ get_network(Id) when is_integer(Id) -> Error end. --spec auth_token(ClientId :: binary(), Token :: binary(), Version :: integer()) -> {ok, Resp :: map()} | {error, Reason :: any()}. -auth_token(ClientId, Token, Version) when is_binary(ClientId), is_binary(Token), is_integer(Version) -> - case catch do_post("auth_token", #{<<"client_id">> => ClientId, <<"token">> => Token, <<"version">> => Version}) of - {ok, Resp} -> - case catch jiffy:decode(Resp, [return_maps]) of - Result when is_map(Result) -> - {ok, Result}; - {error, Reason} -> - {error, Reason} - end; - Error -> - Error - end. - --spec auth_network_code(ClientId :: binary(), NetworkCode :: binary(), Version :: integer()) -> {ok, Resp :: map()} | {error, Reason :: any()}. -auth_network_code(ClientId, NetworkCode, Version) when is_binary(ClientId), is_binary(NetworkCode), is_integer(Version) -> - case catch do_post("check_network", #{<<"client_id">> => ClientId, <<"code">> => NetworkCode, <<"version">> => Version}) of +-spec auth_access_token(Params :: map()) -> {ok, Resp :: map()} | {error, Reason :: any()}. +auth_access_token(Params) when is_map(Params) -> + case catch do_post("auth_token", Params) of {ok, Resp} -> case catch jiffy:decode(Resp, [return_maps]) of Result when is_map(Result) -> diff --git a/apps/sdlan/src/sdlan_network.erl b/apps/sdlan/src/sdlan_network.erl index 575ab3d..78e1cb6 100644 --- a/apps/sdlan/src/sdlan_network.erl +++ b/apps/sdlan/src/sdlan_network.erl @@ -24,7 +24,7 @@ %% API -export([start_link/2]). -export([get_name/1, get_pid/1, lookup_pid/1, assign_ip_addr/4, peer_info/3, unregister/3, debug_info/1, get_network_id/1, get_used_map/1, arp_query/2]). --export([forward/5, update_hole/6, disable_client/2, get_channel/2, dropout_client/2]). +-export([forward/5, update_hole/6, disable_client/2, dropout_client/2]). -export([test_event/1]). %% gen_server callbacks @@ -39,7 +39,6 @@ -record(endpoint, { client_id :: binary(), ip :: integer(), - channel_pid :: pid(), monitor_ref :: reference(), hole :: undefined | #hole{}, %% 记录ip和ip_v6的映射关系, #{ip_addr :: integer() => {}} @@ -92,10 +91,11 @@ lookup_pid(Id) when is_integer(Id) -> get_name(Id) when is_integer(Id) -> list_to_atom("sdlan_network:" ++ integer_to_list(Id)). --spec assign_ip_addr(Pid :: pid(), ChannelPid :: pid(), ClientId :: binary(), Mac :: binary()) -> +-spec attach(Pid :: pid(), ChannelPid :: pid(), ClientId :: binary(), Mac :: binary()) -> {ok, Domain :: binary(), NetAddr :: integer(), MaskLen :: integer(), AesKey :: binary()} | {error, Reason :: any()}. -assign_ip_addr(Pid, ChannelPid, ClientId, Mac) when is_pid(Pid), is_pid(ChannelPid), is_binary(ClientId), is_binary(Mac) -> - gen_server:call(Pid, {assign_ip_addr, ChannelPid, ClientId, Mac}). + +attach(Pid, ChannelPid, ClientId, Mac, Ip, HostName) when is_pid(Pid), is_pid(ChannelPid), is_binary(ClientId), is_binary(Mac) -> + gen_server:call(Pid, {attach, ChannelPid, ClientId, Mac, Ip, HostName}). -spec get_network_id(Pid :: pid()) -> {ok, NetworkId :: integer()}. get_network_id(Pid) when is_pid(Pid) -> @@ -127,10 +127,6 @@ update_hole(Pid, ClientId, Mac, Peer, NatType, V6Info) when is_pid(Pid), is_bina disable_client(Pid, ClientId) when is_pid(Pid), is_binary(ClientId) -> gen_server:call(Pid, {disable_client, ClientId}). --spec get_channel(Pid :: pid(), ClientId :: binary()) -> error | {ok, ChannelPid :: pid()}. -get_channel(Pid, ClientId) when is_pid(Pid), is_binary(ClientId) -> - gen_server:call(Pid, {get_channel, ClientId}). - %% 剔除client_id,channel不关闭; channel会被重新绑定到其他的network里面 -spec dropout_client(Pid :: pid(), ClientId :: binary()) -> {ok, ChannelPid :: pid(), HostName :: binary()} | error. dropout_client(Pid, ClientId) when is_pid(Pid), is_binary(ClientId) -> @@ -195,28 +191,21 @@ init([Id]) when is_integer(Id) -> {noreply, NewState :: #state{}, timeout() | hibernate} | {stop, Reason :: term(), Reply :: term(), NewState :: #state{}} | {stop, Reason :: term(), NewState :: #state{}}). -%% 给客户端分配ip地址 -handle_call({assign_ip_addr, ChannelPid, ClientId, Mac}, _From, +%% 给客户端分配ip地址, TODO 这里要绑定hole +handle_call({attach, ClientId, Mac, Ip, HostName}, _From, State = #state{network_id = NetworkId, domain = Domain, endpoints = Endpoints, mask_len = MaskLen, aes_key = AesKey}) -> - case sdlan_api:assign_ip_address(NetworkId, ClientId, Mac) of - {ok, #{<<"ip">> := Ip, <<"host_name">> := HostName}} -> - %% 分配ip地址的时候,以mac地址为唯一基准 - logger:debug("[sdlan_network] alloc_ip, network_id: ~p, client_id: ~p, mac: ~p, net_addr: ~p", - [NetworkId, ClientId, sdlan_util:format_mac(Mac), sdlan_ipaddr:int_to_ipv4(Ip)]), - %% 关闭之前的channel - maybe_close_channel(maps:get(Mac, Endpoints, undefined)), - %% 添加域名->ip的映射关系 - sdlan_hostname_regedit:insert(HostName, Domain, Ip), + %% 分配ip地址的时候,以mac地址为唯一基准 + logger:debug("[sdlan_network] alloc_ip, network_id: ~p, client_id: ~p, mac: ~p, net_addr: ~p", + [NetworkId, ClientId, sdlan_util:format_mac(Mac), sdlan_ipaddr:int_to_ipv4(Ip)]), + %% 关闭之前的channel + maybe_close_channel(maps:get(Mac, Endpoints, undefined)), + %% 添加域名->ip的映射关系 + sdlan_hostname_regedit:insert(HostName, Domain, Ip), - %% 建立到新的channel之间的关系 - MRef = monitor(process, ChannelPid), - NEndpoints = maps:put(Mac, #endpoint{client_id = ClientId, ip = Ip, channel_pid = ChannelPid, monitor_ref = MRef}, Endpoints), + NEndpoints = maps:put(Mac, #endpoint{client_id = ClientId, ip = Ip}, Endpoints), - {reply, {ok, Domain, Ip, MaskLen, AesKey}, State#state{endpoints = NEndpoints}}; - {error, Reason} -> - {reply, {error, Reason}, State} - end; + {reply, {ok, Domain, Ip, MaskLen, AesKey}, State#state{endpoints = NEndpoints}}; handle_call(get_used_map, _From, State = #state{endpoints = Endpoints}) -> UsedInfos = maps:map(fun(_, #endpoint{hole = Hole, v6_info = V6Info}) -> @@ -247,32 +236,12 @@ handle_call(get_used_map, _From, State = #state{endpoints = Endpoints}) -> %% client设置为禁止状态,不允许重连 handle_call({disable_client, ClientId}, _From, State = #state{endpoints = Endpoints}) -> case lists:search(fun({_, #endpoint{client_id = ClientId0}}) -> ClientId =:= ClientId0 end, maps:to_list(Endpoints)) of - {value, {Mac, #endpoint{channel_pid = ChannelPid, monitor_ref = MRef}}} -> - is_reference(MRef) andalso demonitor(MRef), - sdlan_channel:stop(ChannelPid, disable), + {value, {Mac, #endpoint{}}} -> {reply, ok, State#state{endpoints = maps:remove(Mac, Endpoints)}}; false -> {reply, error, State} end; -handle_call({get_channel, ClientId}, _From, State = #state{endpoints = Endpoints}) -> - case lists:search(fun({_, #endpoint{client_id = ClientId0}}) -> ClientId =:= ClientId0 end, maps:to_list(Endpoints)) of - {value, {_Ip, #endpoint{channel_pid = ChannelPid}}} -> - {reply, {ok, ChannelPid}, State}; - false -> - {reply, error, State} - end; - -%% 区别在于是否关闭掉channel, 这里是在网络迁移中的功能; drop的时候需要从当前网络中移除 -handle_call({dropout_client, ClientId}, _From, State = #state{endpoints = Endpoints}) -> - case lists:search(fun({_, #endpoint{client_id = ClientId0}}) -> ClientId =:= ClientId0 end, maps:to_list(Endpoints)) of - {value, {Mac, #endpoint{channel_pid = ChannelPid, monitor_ref = MRef}}} -> - is_reference(MRef) andalso demonitor(MRef), - {reply, {ok, ChannelPid}, State#state{endpoints = maps:remove(Mac, Endpoints)}}; - false -> - {reply, error, State} - end; - handle_call(get_network_id, _From, State = #state{network_id = NetworkId}) -> {reply, {ok, NetworkId}, State}; @@ -393,9 +362,8 @@ handle_cast({unregister, _ClientId, Mac}, State = #state{network_id = NetworkId, case maps:take(Mac, Endpoints) of error -> {noreply, State}; - {#endpoint{channel_pid = ChannelPid, monitor_ref = MRef}, NEndpoints} -> + {#endpoint{monitor_ref = MRef}, NEndpoints} -> is_reference(MRef) andalso demonitor(MRef), - sdlan_channel:stop(ChannelPid, normal), {noreply, State#state{endpoints = NEndpoints}} end; diff --git a/apps/sdlan/src/sdlan_pb.erl b/apps/sdlan/src/sdlan_pb.erl index e8ee172..38c38d5 100644 --- a/apps/sdlan/src/sdlan_pb.erl +++ b/apps/sdlan/src/sdlan_pb.erl @@ -59,10 +59,6 @@ -type sdl_v6_info() :: #sdl_v6_info{}. --type sdl_dev_addr() :: #sdl_dev_addr{}. - --type sdl_empty() :: #sdl_empty{}. - -type sdl_register_super() :: #sdl_register_super{}. -type sdl_register_super_ack() :: #sdl_register_super_ack{}. @@ -79,16 +75,8 @@ -type sdl_network_shutdown_event() :: #sdl_network_shutdown_event{}. --type sdl_change_network_command() :: #sdl_change_network_command{}. - --type sdl_command_ack() :: #sdl_command_ack{}. - --type sdl_flows() :: #sdl_flows{}. - -type sdl_stun_request() :: #sdl_stun_request{}. --type sdl_stun_reply() :: #sdl_stun_reply{}. - -type sdl_data() :: #sdl_data{}. -type sdl_register() :: #sdl_register{}. @@ -103,9 +91,9 @@ -type sdl_arp_response() :: #sdl_arp_response{}. --export_type(['sdl_v4_info'/0, 'sdl_v6_info'/0, 'sdl_dev_addr'/0, 'sdl_empty'/0, 'sdl_register_super'/0, 'sdl_register_super_ack'/0, 'sdl_register_super_nak'/0, 'sdl_query_info'/0, 'sdl_peer_info'/0, 'sdl_nat_changed_event'/0, 'sdl_send_register_event'/0, 'sdl_network_shutdown_event'/0, 'sdl_change_network_command'/0, 'sdl_command_ack'/0, 'sdl_flows'/0, 'sdl_stun_request'/0, 'sdl_stun_reply'/0, 'sdl_data'/0, 'sdl_register'/0, 'sdl_register_ack'/0, 'sdl_stun_probe'/0, 'sdl_stun_probe_reply'/0, 'sdl_arp_request'/0, 'sdl_arp_response'/0]). --type '$msg_name'() :: sdl_v4_info | sdl_v6_info | sdl_dev_addr | sdl_empty | sdl_register_super | sdl_register_super_ack | sdl_register_super_nak | sdl_query_info | sdl_peer_info | sdl_nat_changed_event | sdl_send_register_event | sdl_network_shutdown_event | sdl_change_network_command | sdl_command_ack | sdl_flows | sdl_stun_request | sdl_stun_reply | sdl_data | sdl_register | sdl_register_ack | sdl_stun_probe | sdl_stun_probe_reply | sdl_arp_request | sdl_arp_response. --type '$msg'() :: sdl_v4_info() | sdl_v6_info() | sdl_dev_addr() | sdl_empty() | sdl_register_super() | sdl_register_super_ack() | sdl_register_super_nak() | sdl_query_info() | sdl_peer_info() | sdl_nat_changed_event() | sdl_send_register_event() | sdl_network_shutdown_event() | sdl_change_network_command() | sdl_command_ack() | sdl_flows() | sdl_stun_request() | sdl_stun_reply() | sdl_data() | sdl_register() | sdl_register_ack() | sdl_stun_probe() | sdl_stun_probe_reply() | sdl_arp_request() | sdl_arp_response(). +-export_type(['sdl_v4_info'/0, 'sdl_v6_info'/0, 'sdl_register_super'/0, 'sdl_register_super_ack'/0, 'sdl_register_super_nak'/0, 'sdl_query_info'/0, 'sdl_peer_info'/0, 'sdl_nat_changed_event'/0, 'sdl_send_register_event'/0, 'sdl_network_shutdown_event'/0, 'sdl_stun_request'/0, 'sdl_data'/0, 'sdl_register'/0, 'sdl_register_ack'/0, 'sdl_stun_probe'/0, 'sdl_stun_probe_reply'/0, 'sdl_arp_request'/0, 'sdl_arp_response'/0]). +-type '$msg_name'() :: sdl_v4_info | sdl_v6_info | sdl_register_super | sdl_register_super_ack | sdl_register_super_nak | sdl_query_info | sdl_peer_info | sdl_nat_changed_event | sdl_send_register_event | sdl_network_shutdown_event | sdl_stun_request | sdl_data | sdl_register | sdl_register_ack | sdl_stun_probe | sdl_stun_probe_reply | sdl_arp_request | sdl_arp_response. +-type '$msg'() :: sdl_v4_info() | sdl_v6_info() | sdl_register_super() | sdl_register_super_ack() | sdl_register_super_nak() | sdl_query_info() | sdl_peer_info() | sdl_nat_changed_event() | sdl_send_register_event() | sdl_network_shutdown_event() | sdl_stun_request() | sdl_data() | sdl_register() | sdl_register_ack() | sdl_stun_probe() | sdl_stun_probe_reply() | sdl_arp_request() | sdl_arp_response(). -export_type(['$msg_name'/0, '$msg'/0]). -if(?OTP_RELEASE >= 24). @@ -134,8 +122,6 @@ encode_msg(Msg, MsgName, Opts) -> case MsgName of sdl_v4_info -> encode_msg_sdl_v4_info(id(Msg, TrUserData), TrUserData); sdl_v6_info -> encode_msg_sdl_v6_info(id(Msg, TrUserData), TrUserData); - sdl_dev_addr -> encode_msg_sdl_dev_addr(id(Msg, TrUserData), TrUserData); - sdl_empty -> encode_msg_sdl_empty(id(Msg, TrUserData), TrUserData); sdl_register_super -> encode_msg_sdl_register_super(id(Msg, TrUserData), TrUserData); sdl_register_super_ack -> encode_msg_sdl_register_super_ack(id(Msg, TrUserData), TrUserData); sdl_register_super_nak -> encode_msg_sdl_register_super_nak(id(Msg, TrUserData), TrUserData); @@ -144,11 +130,7 @@ encode_msg(Msg, MsgName, Opts) -> sdl_nat_changed_event -> encode_msg_sdl_nat_changed_event(id(Msg, TrUserData), TrUserData); sdl_send_register_event -> encode_msg_sdl_send_register_event(id(Msg, TrUserData), TrUserData); sdl_network_shutdown_event -> encode_msg_sdl_network_shutdown_event(id(Msg, TrUserData), TrUserData); - sdl_change_network_command -> encode_msg_sdl_change_network_command(id(Msg, TrUserData), TrUserData); - sdl_command_ack -> encode_msg_sdl_command_ack(id(Msg, TrUserData), TrUserData); - sdl_flows -> encode_msg_sdl_flows(id(Msg, TrUserData), TrUserData); sdl_stun_request -> encode_msg_sdl_stun_request(id(Msg, TrUserData), TrUserData); - sdl_stun_reply -> encode_msg_sdl_stun_reply(id(Msg, TrUserData), TrUserData); sdl_data -> encode_msg_sdl_data(id(Msg, TrUserData), TrUserData); sdl_register -> encode_msg_sdl_register(id(Msg, TrUserData), TrUserData); sdl_register_ack -> encode_msg_sdl_register_ack(id(Msg, TrUserData), TrUserData); @@ -216,409 +198,10 @@ encode_msg_sdl_v6_info(#sdl_v6_info{port = F1, v6 = F2}, Bin, TrUserData) -> end end. -encode_msg_sdl_dev_addr(Msg, TrUserData) -> encode_msg_sdl_dev_addr(Msg, <<>>, TrUserData). - - -encode_msg_sdl_dev_addr(#sdl_dev_addr{network_id = F1, mac = F2, net_addr = F3, net_bit_len = F4, network_domain = F5}, Bin, TrUserData) -> - B1 = if F1 == undefined -> Bin; - true -> - begin - TrF1 = id(F1, TrUserData), - if TrF1 =:= 0 -> Bin; - true -> e_varint(TrF1, <>, TrUserData) - end - end - end, - B2 = if F2 == undefined -> B1; - true -> - begin - TrF2 = id(F2, TrUserData), - case iolist_size(TrF2) of - 0 -> B1; - _ -> e_type_bytes(TrF2, <>, TrUserData) - end - end - end, - B3 = if F3 == undefined -> B2; - true -> - begin - TrF3 = id(F3, TrUserData), - if TrF3 =:= 0 -> B2; - true -> e_varint(TrF3, <>, TrUserData) - end - end - end, - B4 = if F4 == undefined -> B3; - true -> - begin - TrF4 = id(F4, TrUserData), - if TrF4 =:= 0 -> B3; - true -> e_varint(TrF4, <>, TrUserData) - end - end - end, - if F5 == undefined -> B4; - true -> - begin - TrF5 = id(F5, TrUserData), - case is_empty_string(TrF5) of - true -> B4; - false -> e_type_string(TrF5, <>, TrUserData) - end - end - end. - -encode_msg_sdl_empty(_Msg, _TrUserData) -> <<>>. - encode_msg_sdl_register_super(Msg, TrUserData) -> encode_msg_sdl_register_super(Msg, <<>>, TrUserData). -encode_msg_sdl_register_super(#sdl_register_super{version = F1, installed_channel = F2, client_id = F3, dev_addr = F4, pub_key = F5, token = F6, network_code = F7, hostname = F8}, Bin, TrUserData) -> - B1 = if F1 == undefined -> Bin; - true -> - begin - TrF1 = id(F1, TrUserData), - if TrF1 =:= 0 -> Bin; - true -> e_varint(TrF1, <>, TrUserData) - end - end - end, - B2 = if F2 == undefined -> B1; - true -> - begin - TrF2 = id(F2, TrUserData), - case is_empty_string(TrF2) of - true -> B1; - false -> e_type_string(TrF2, <>, TrUserData) - end - end - end, - B3 = if F3 == undefined -> B2; - true -> - begin - TrF3 = id(F3, TrUserData), - case is_empty_string(TrF3) of - true -> B2; - false -> e_type_string(TrF3, <>, TrUserData) - end - end - end, - B4 = if F4 == undefined -> B3; - true -> - begin - TrF4 = id(F4, TrUserData), - if TrF4 =:= undefined -> B3; - true -> e_mfield_sdl_register_super_dev_addr(TrF4, <>, TrUserData) - end - end - end, - B5 = if F5 == undefined -> B4; - true -> - begin - TrF5 = id(F5, TrUserData), - case is_empty_string(TrF5) of - true -> B4; - false -> e_type_string(TrF5, <>, TrUserData) - end - end - end, - B6 = if F6 == undefined -> B5; - true -> - begin - TrF6 = id(F6, TrUserData), - case is_empty_string(TrF6) of - true -> B5; - false -> e_type_string(TrF6, <>, TrUserData) - end - end - end, - B7 = if F7 == undefined -> B6; - true -> - begin - TrF7 = id(F7, TrUserData), - case is_empty_string(TrF7) of - true -> B6; - false -> e_type_string(TrF7, <>, TrUserData) - end - end - end, - if F8 == undefined -> B7; - true -> - begin - TrF8 = id(F8, TrUserData), - case is_empty_string(TrF8) of - true -> B7; - false -> e_type_string(TrF8, <>, TrUserData) - end - end - end. - -encode_msg_sdl_register_super_ack(Msg, TrUserData) -> encode_msg_sdl_register_super_ack(Msg, <<>>, TrUserData). - - -encode_msg_sdl_register_super_ack(#sdl_register_super_ack{dev_addr = F1, aes_key = F2, upgrade_type = F3, upgrade_prompt = F4, upgrade_address = F5}, Bin, TrUserData) -> - B1 = if F1 == undefined -> Bin; - true -> - begin - TrF1 = id(F1, TrUserData), - if TrF1 =:= undefined -> Bin; - true -> e_mfield_sdl_register_super_ack_dev_addr(TrF1, <>, TrUserData) - end - end - end, - B2 = if F2 == undefined -> B1; - true -> - begin - TrF2 = id(F2, TrUserData), - case iolist_size(TrF2) of - 0 -> B1; - _ -> e_type_bytes(TrF2, <>, TrUserData) - end - end - end, - B3 = if F3 == undefined -> B2; - true -> - begin - TrF3 = id(F3, TrUserData), - if TrF3 =:= 0 -> B2; - true -> e_varint(TrF3, <>, TrUserData) - end - end - end, - B4 = if F4 == undefined -> B3; - true -> begin TrF4 = id(F4, TrUserData), e_type_string(TrF4, <>, TrUserData) end - end, - if F5 == undefined -> B4; - true -> begin TrF5 = id(F5, TrUserData), e_type_string(TrF5, <>, TrUserData) end - end. - -encode_msg_sdl_register_super_nak(Msg, TrUserData) -> encode_msg_sdl_register_super_nak(Msg, <<>>, TrUserData). - - -encode_msg_sdl_register_super_nak(#sdl_register_super_nak{error_code = F1, error_message = F2}, Bin, TrUserData) -> - B1 = if F1 == undefined -> Bin; - true -> - begin - TrF1 = id(F1, TrUserData), - if TrF1 =:= 0 -> Bin; - true -> e_varint(TrF1, <>, TrUserData) - end - end - end, - if F2 == undefined -> B1; - true -> - begin - TrF2 = id(F2, TrUserData), - case is_empty_string(TrF2) of - true -> B1; - false -> e_type_string(TrF2, <>, TrUserData) - end - end - end. - -encode_msg_sdl_query_info(Msg, TrUserData) -> encode_msg_sdl_query_info(Msg, <<>>, TrUserData). - - -encode_msg_sdl_query_info(#sdl_query_info{dst_mac = F1}, Bin, TrUserData) -> - if F1 == undefined -> Bin; - true -> - begin - TrF1 = id(F1, TrUserData), - case iolist_size(TrF1) of - 0 -> Bin; - _ -> e_type_bytes(TrF1, <>, TrUserData) - end - end - end. - -encode_msg_sdl_peer_info(Msg, TrUserData) -> encode_msg_sdl_peer_info(Msg, <<>>, TrUserData). - - -encode_msg_sdl_peer_info(#sdl_peer_info{dst_mac = F1, v4_info = F2, v6_info = F3}, Bin, TrUserData) -> - B1 = if F1 == undefined -> Bin; - true -> - begin - TrF1 = id(F1, TrUserData), - case iolist_size(TrF1) of - 0 -> Bin; - _ -> e_type_bytes(TrF1, <>, TrUserData) - end - end - end, - B2 = if F2 == undefined -> B1; - true -> - begin - TrF2 = id(F2, TrUserData), - if TrF2 =:= undefined -> B1; - true -> e_mfield_sdl_peer_info_v4_info(TrF2, <>, TrUserData) - end - end - end, - if F3 == undefined -> B2; - true -> begin TrF3 = id(F3, TrUserData), e_mfield_sdl_peer_info_v6_info(TrF3, <>, TrUserData) end - end. - -encode_msg_sdl_nat_changed_event(Msg, TrUserData) -> encode_msg_sdl_nat_changed_event(Msg, <<>>, TrUserData). - - -encode_msg_sdl_nat_changed_event(#sdl_nat_changed_event{mac = F1, ip = F2}, Bin, TrUserData) -> - B1 = if F1 == undefined -> Bin; - true -> - begin - TrF1 = id(F1, TrUserData), - case iolist_size(TrF1) of - 0 -> Bin; - _ -> e_type_bytes(TrF1, <>, TrUserData) - end - end - end, - if F2 == undefined -> B1; - true -> - begin - TrF2 = id(F2, TrUserData), - if TrF2 =:= 0 -> B1; - true -> e_varint(TrF2, <>, TrUserData) - end - end - end. - -encode_msg_sdl_send_register_event(Msg, TrUserData) -> encode_msg_sdl_send_register_event(Msg, <<>>, TrUserData). - - -encode_msg_sdl_send_register_event(#sdl_send_register_event{dst_mac = F1, nat_ip = F2, nat_port = F3, nat_type = F4, v6_info = F5}, Bin, TrUserData) -> - B1 = if F1 == undefined -> Bin; - true -> - begin - TrF1 = id(F1, TrUserData), - case iolist_size(TrF1) of - 0 -> Bin; - _ -> e_type_bytes(TrF1, <>, TrUserData) - end - end - end, - B2 = if F2 == undefined -> B1; - true -> - begin - TrF2 = id(F2, TrUserData), - if TrF2 =:= 0 -> B1; - true -> e_varint(TrF2, <>, TrUserData) - end - end - end, - B3 = if F3 == undefined -> B2; - true -> - begin - TrF3 = id(F3, TrUserData), - if TrF3 =:= 0 -> B2; - true -> e_varint(TrF3, <>, TrUserData) - end - end - end, - B4 = if F4 == undefined -> B3; - true -> - begin - TrF4 = id(F4, TrUserData), - if TrF4 =:= 0 -> B3; - true -> e_varint(TrF4, <>, TrUserData) - end - end - end, - if F5 == undefined -> B4; - true -> begin TrF5 = id(F5, TrUserData), e_mfield_sdl_send_register_event_v6_info(TrF5, <>, TrUserData) end - end. - -encode_msg_sdl_network_shutdown_event(Msg, TrUserData) -> encode_msg_sdl_network_shutdown_event(Msg, <<>>, TrUserData). - - -encode_msg_sdl_network_shutdown_event(#sdl_network_shutdown_event{message = F1}, Bin, TrUserData) -> - if F1 == undefined -> Bin; - true -> - begin - TrF1 = id(F1, TrUserData), - case is_empty_string(TrF1) of - true -> Bin; - false -> e_type_string(TrF1, <>, TrUserData) - end - end - end. - -encode_msg_sdl_change_network_command(Msg, TrUserData) -> encode_msg_sdl_change_network_command(Msg, <<>>, TrUserData). - - -encode_msg_sdl_change_network_command(#sdl_change_network_command{dev_addr = F1, aes_key = F2}, Bin, TrUserData) -> - B1 = if F1 == undefined -> Bin; - true -> - begin - TrF1 = id(F1, TrUserData), - if TrF1 =:= undefined -> Bin; - true -> e_mfield_sdl_change_network_command_dev_addr(TrF1, <>, TrUserData) - end - end - end, - if F2 == undefined -> B1; - true -> - begin - TrF2 = id(F2, TrUserData), - case iolist_size(TrF2) of - 0 -> B1; - _ -> e_type_bytes(TrF2, <>, TrUserData) - end - end - end. - -encode_msg_sdl_command_ack(Msg, TrUserData) -> encode_msg_sdl_command_ack(Msg, <<>>, TrUserData). - - -encode_msg_sdl_command_ack(#sdl_command_ack{status = F1, message = F2}, Bin, TrUserData) -> - B1 = if F1 == undefined -> Bin; - true -> - begin - TrF1 = id(F1, TrUserData), - if TrF1 =:= false -> Bin; - true -> e_type_bool(TrF1, <>, TrUserData) - end - end - end, - if F2 == undefined -> B1; - true -> begin TrF2 = id(F2, TrUserData), e_type_string(TrF2, <>, TrUserData) end - end. - -encode_msg_sdl_flows(Msg, TrUserData) -> encode_msg_sdl_flows(Msg, <<>>, TrUserData). - - -encode_msg_sdl_flows(#sdl_flows{forward_num = F1, p2p_num = F2, inbound_num = F3}, Bin, TrUserData) -> - B1 = if F1 == undefined -> Bin; - true -> - begin - TrF1 = id(F1, TrUserData), - if TrF1 =:= 0 -> Bin; - true -> e_varint(TrF1, <>, TrUserData) - end - end - end, - B2 = if F2 == undefined -> B1; - true -> - begin - TrF2 = id(F2, TrUserData), - if TrF2 =:= 0 -> B1; - true -> e_varint(TrF2, <>, TrUserData) - end - end - end, - if F3 == undefined -> B2; - true -> - begin - TrF3 = id(F3, TrUserData), - if TrF3 =:= 0 -> B2; - true -> e_varint(TrF3, <>, TrUserData) - end - end - end. - -encode_msg_sdl_stun_request(Msg, TrUserData) -> encode_msg_sdl_stun_request(Msg, <<>>, TrUserData). - - -encode_msg_sdl_stun_request(#sdl_stun_request{cookie = F1, client_id = F2, network_id = F3, mac = F4, ip = F5, nat_type = F6, v6_info = F7}, Bin, TrUserData) -> +encode_msg_sdl_register_super(#sdl_register_super{version = F1, client_id = F2, network_id = F3, mac = F4, ip = F5, mask_len = F6, hostname = F7, pub_key = F8, access_token = F9}, Bin, TrUserData) -> B1 = if F1 == undefined -> Bin; true -> begin @@ -675,20 +258,328 @@ encode_msg_sdl_stun_request(#sdl_stun_request{cookie = F1, client_id = F2, netwo end end end, - if F7 == undefined -> B6; - true -> begin TrF7 = id(F7, TrUserData), e_mfield_sdl_stun_request_v6_info(TrF7, <>, TrUserData) end - end. - -encode_msg_sdl_stun_reply(Msg, TrUserData) -> encode_msg_sdl_stun_reply(Msg, <<>>, TrUserData). - - -encode_msg_sdl_stun_reply(#sdl_stun_reply{cookie = F1}, Bin, TrUserData) -> - if F1 == undefined -> Bin; + B7 = if F7 == undefined -> B6; + true -> + begin + TrF7 = id(F7, TrUserData), + case is_empty_string(TrF7) of + true -> B6; + false -> e_type_string(TrF7, <>, TrUserData) + end + end + end, + B8 = if F8 == undefined -> B7; + true -> + begin + TrF8 = id(F8, TrUserData), + case is_empty_string(TrF8) of + true -> B7; + false -> e_type_string(TrF8, <>, TrUserData) + end + end + end, + if F9 == undefined -> B8; true -> begin - TrF1 = id(F1, TrUserData), - if TrF1 =:= 0 -> Bin; - true -> e_varint(TrF1, <>, TrUserData) + TrF9 = id(F9, TrUserData), + case is_empty_string(TrF9) of + true -> B8; + false -> e_type_string(TrF9, <>, TrUserData) + end + end + end. + +encode_msg_sdl_register_super_ack(Msg, TrUserData) -> encode_msg_sdl_register_super_ack(Msg, <<>>, TrUserData). + + +encode_msg_sdl_register_super_ack(#sdl_register_super_ack{aes_key = F1, session_token = F2}, Bin, TrUserData) -> + B1 = if F1 == undefined -> Bin; + true -> + begin + TrF1 = id(F1, TrUserData), + case iolist_size(TrF1) of + 0 -> Bin; + _ -> e_type_bytes(TrF1, <>, TrUserData) + end + end + end, + if F2 == undefined -> B1; + true -> + begin + TrF2 = id(F2, TrUserData), + case iolist_size(TrF2) of + 0 -> B1; + _ -> e_type_bytes(TrF2, <>, TrUserData) + end + end + end. + +encode_msg_sdl_register_super_nak(Msg, TrUserData) -> encode_msg_sdl_register_super_nak(Msg, <<>>, TrUserData). + + +encode_msg_sdl_register_super_nak(#sdl_register_super_nak{error_code = F1, error_message = F2}, Bin, TrUserData) -> + B1 = if F1 == undefined -> Bin; + true -> + begin + TrF1 = id(F1, TrUserData), + if TrF1 =:= 0 -> Bin; + true -> e_varint(TrF1, <>, TrUserData) + end + end + end, + if F2 == undefined -> B1; + true -> + begin + TrF2 = id(F2, TrUserData), + case is_empty_string(TrF2) of + true -> B1; + false -> e_type_string(TrF2, <>, TrUserData) + end + end + end. + +encode_msg_sdl_query_info(Msg, TrUserData) -> encode_msg_sdl_query_info(Msg, <<>>, TrUserData). + + +encode_msg_sdl_query_info(#sdl_query_info{network_id = F1, dst_mac = F2, session_token = F3}, Bin, TrUserData) -> + B1 = if F1 == undefined -> Bin; + true -> + begin + TrF1 = id(F1, TrUserData), + if TrF1 =:= 0 -> Bin; + true -> e_varint(TrF1, <>, TrUserData) + end + end + end, + B2 = if F2 == undefined -> B1; + true -> + begin + TrF2 = id(F2, TrUserData), + case iolist_size(TrF2) of + 0 -> B1; + _ -> e_type_bytes(TrF2, <>, TrUserData) + end + end + end, + if F3 == undefined -> B2; + true -> + begin + TrF3 = id(F3, TrUserData), + case iolist_size(TrF3) of + 0 -> B2; + _ -> e_type_bytes(TrF3, <>, TrUserData) + end + end + end. + +encode_msg_sdl_peer_info(Msg, TrUserData) -> encode_msg_sdl_peer_info(Msg, <<>>, TrUserData). + + +encode_msg_sdl_peer_info(#sdl_peer_info{network_id = F1, dst_mac = F2, v4_info = F3, v6_info = F4}, Bin, TrUserData) -> + B1 = if F1 == undefined -> Bin; + true -> + begin + TrF1 = id(F1, TrUserData), + if TrF1 =:= 0 -> Bin; + true -> e_varint(TrF1, <>, TrUserData) + end + end + end, + B2 = if F2 == undefined -> B1; + true -> + begin + TrF2 = id(F2, TrUserData), + case iolist_size(TrF2) of + 0 -> B1; + _ -> e_type_bytes(TrF2, <>, TrUserData) + end + end + end, + B3 = if F3 == undefined -> B2; + true -> + begin + TrF3 = id(F3, TrUserData), + if TrF3 =:= undefined -> B2; + true -> e_mfield_sdl_peer_info_v4_info(TrF3, <>, TrUserData) + end + end + end, + if F4 == undefined -> B3; + true -> begin TrF4 = id(F4, TrUserData), e_mfield_sdl_peer_info_v6_info(TrF4, <>, TrUserData) end + end. + +encode_msg_sdl_nat_changed_event(Msg, TrUserData) -> encode_msg_sdl_nat_changed_event(Msg, <<>>, TrUserData). + + +encode_msg_sdl_nat_changed_event(#sdl_nat_changed_event{network_id = F1, mac = F2, ip = F3}, Bin, TrUserData) -> + B1 = if F1 == undefined -> Bin; + true -> + begin + TrF1 = id(F1, TrUserData), + if TrF1 =:= 0 -> Bin; + true -> e_varint(TrF1, <>, TrUserData) + end + end + end, + B2 = if F2 == undefined -> B1; + true -> + begin + TrF2 = id(F2, TrUserData), + case iolist_size(TrF2) of + 0 -> B1; + _ -> e_type_bytes(TrF2, <>, TrUserData) + end + end + end, + if F3 == undefined -> B2; + true -> + begin + TrF3 = id(F3, TrUserData), + if TrF3 =:= 0 -> B2; + true -> e_varint(TrF3, <>, TrUserData) + end + end + end. + +encode_msg_sdl_send_register_event(Msg, TrUserData) -> encode_msg_sdl_send_register_event(Msg, <<>>, TrUserData). + + +encode_msg_sdl_send_register_event(#sdl_send_register_event{network_id = F1, dst_mac = F2, nat_ip = F3, nat_port = F4, nat_type = F5, v6_info = F6}, Bin, TrUserData) -> + B1 = if F1 == undefined -> Bin; + true -> + begin + TrF1 = id(F1, TrUserData), + if TrF1 =:= 0 -> Bin; + true -> e_varint(TrF1, <>, TrUserData) + end + end + end, + B2 = if F2 == undefined -> B1; + true -> + begin + TrF2 = id(F2, TrUserData), + case iolist_size(TrF2) of + 0 -> B1; + _ -> e_type_bytes(TrF2, <>, TrUserData) + end + end + end, + B3 = if F3 == undefined -> B2; + true -> + begin + TrF3 = id(F3, TrUserData), + if TrF3 =:= 0 -> B2; + true -> e_varint(TrF3, <>, TrUserData) + end + end + end, + B4 = if F4 == undefined -> B3; + true -> + begin + TrF4 = id(F4, TrUserData), + if TrF4 =:= 0 -> B3; + true -> e_varint(TrF4, <>, TrUserData) + end + end + end, + B5 = if F5 == undefined -> B4; + true -> + begin + TrF5 = id(F5, TrUserData), + if TrF5 =:= 0 -> B4; + true -> e_varint(TrF5, <>, TrUserData) + end + end + end, + if F6 == undefined -> B5; + true -> begin TrF6 = id(F6, TrUserData), e_mfield_sdl_send_register_event_v6_info(TrF6, <>, TrUserData) end + end. + +encode_msg_sdl_network_shutdown_event(Msg, TrUserData) -> encode_msg_sdl_network_shutdown_event(Msg, <<>>, TrUserData). + + +encode_msg_sdl_network_shutdown_event(#sdl_network_shutdown_event{network_id = F1, message = F2}, Bin, TrUserData) -> + B1 = if F1 == undefined -> Bin; + true -> + begin + TrF1 = id(F1, TrUserData), + if TrF1 =:= 0 -> Bin; + true -> e_varint(TrF1, <>, TrUserData) + end + end + end, + if F2 == undefined -> B1; + true -> + begin + TrF2 = id(F2, TrUserData), + case is_empty_string(TrF2) of + true -> B1; + false -> e_type_string(TrF2, <>, TrUserData) + end + end + end. + +encode_msg_sdl_stun_request(Msg, TrUserData) -> encode_msg_sdl_stun_request(Msg, <<>>, TrUserData). + + +encode_msg_sdl_stun_request(#sdl_stun_request{client_id = F1, network_id = F2, mac = F3, ip = F4, nat_type = F5, v6_info = F6, session_token = F7}, Bin, TrUserData) -> + B1 = if F1 == undefined -> Bin; + true -> + begin + TrF1 = id(F1, TrUserData), + case is_empty_string(TrF1) of + true -> Bin; + false -> e_type_string(TrF1, <>, TrUserData) + end + end + end, + B2 = if F2 == undefined -> B1; + true -> + begin + TrF2 = id(F2, TrUserData), + if TrF2 =:= 0 -> B1; + true -> e_varint(TrF2, <>, TrUserData) + end + end + end, + B3 = if F3 == undefined -> B2; + true -> + begin + TrF3 = id(F3, TrUserData), + case iolist_size(TrF3) of + 0 -> B2; + _ -> e_type_bytes(TrF3, <>, TrUserData) + end + end + end, + B4 = if F4 == undefined -> B3; + true -> + begin + TrF4 = id(F4, TrUserData), + if TrF4 =:= 0 -> B3; + true -> e_varint(TrF4, <>, TrUserData) + end + end + end, + B5 = if F5 == undefined -> B4; + true -> + begin + TrF5 = id(F5, TrUserData), + if TrF5 =:= 0 -> B4; + true -> e_varint(TrF5, <>, TrUserData) + end + end + end, + B6 = if F6 == undefined -> B5; + true -> begin TrF6 = id(F6, TrUserData), e_mfield_sdl_stun_request_v6_info(TrF6, <>, TrUserData) end + end, + if F7 == undefined -> B6; + true -> + begin + TrF7 = id(F7, TrUserData), + case iolist_size(TrF7) of + 0 -> B6; + _ -> e_type_bytes(TrF7, <>, TrUserData) end end end. @@ -696,7 +587,7 @@ encode_msg_sdl_stun_reply(#sdl_stun_reply{cookie = F1}, Bin, TrUserData) -> encode_msg_sdl_data(Msg, TrUserData) -> encode_msg_sdl_data(Msg, <<>>, TrUserData). -encode_msg_sdl_data(#sdl_data{network_id = F1, src_mac = F2, dst_mac = F3, is_p2p = F4, ttl = F5, data = F6}, Bin, TrUserData) -> +encode_msg_sdl_data(#sdl_data{network_id = F1, src_mac = F2, dst_mac = F3, is_p2p = F4, ttl = F5, data = F6, session_token = F7}, Bin, TrUserData) -> B1 = if F1 == undefined -> Bin; true -> begin @@ -744,13 +635,23 @@ encode_msg_sdl_data(#sdl_data{network_id = F1, src_mac = F2, dst_mac = F3, is_p2 end end end, - if F6 == undefined -> B5; + B6 = if F6 == undefined -> B5; + true -> + begin + TrF6 = id(F6, TrUserData), + case iolist_size(TrF6) of + 0 -> B5; + _ -> e_type_bytes(TrF6, <>, TrUserData) + end + end + end, + if F7 == undefined -> B6; true -> begin - TrF6 = id(F6, TrUserData), - case iolist_size(TrF6) of - 0 -> B5; - _ -> e_type_bytes(TrF6, <>, TrUserData) + TrF7 = id(F7, TrUserData), + case iolist_size(TrF7) of + 0 -> B6; + _ -> e_type_bytes(TrF7, <>, TrUserData) end end end. @@ -881,7 +782,7 @@ encode_msg_sdl_stun_probe_reply(#sdl_stun_probe_reply{cookie = F1, port = F2, ip encode_msg_sdl_arp_request(Msg, TrUserData) -> encode_msg_sdl_arp_request(Msg, <<>>, TrUserData). -encode_msg_sdl_arp_request(#sdl_arp_request{network_id = F1, target_ip = F2}, Bin, TrUserData) -> +encode_msg_sdl_arp_request(#sdl_arp_request{network_id = F1, target_ip = F2, session_token = F3}, Bin, TrUserData) -> B1 = if F1 == undefined -> Bin; true -> begin @@ -891,12 +792,22 @@ encode_msg_sdl_arp_request(#sdl_arp_request{network_id = F1, target_ip = F2}, Bi end end end, - if F2 == undefined -> B1; + B2 = if F2 == undefined -> B1; + true -> + begin + TrF2 = id(F2, TrUserData), + if TrF2 =:= 0 -> B1; + true -> e_varint(TrF2, <>, TrUserData) + end + end + end, + if F3 == undefined -> B2; true -> begin - TrF2 = id(F2, TrUserData), - if TrF2 =:= 0 -> B1; - true -> e_varint(TrF2, <>, TrUserData) + TrF3 = id(F3, TrUserData), + case iolist_size(TrF3) of + 0 -> B2; + _ -> e_type_bytes(TrF3, <>, TrUserData) end end end. @@ -934,16 +845,6 @@ encode_msg_sdl_arp_response(#sdl_arp_response{network_id = F1, target_ip = F2, t end end. -e_mfield_sdl_register_super_dev_addr(Msg, Bin, TrUserData) -> - SubBin = encode_msg_sdl_dev_addr(Msg, <<>>, TrUserData), - Bin2 = e_varint(byte_size(SubBin), Bin), - <>. - -e_mfield_sdl_register_super_ack_dev_addr(Msg, Bin, TrUserData) -> - SubBin = encode_msg_sdl_dev_addr(Msg, <<>>, TrUserData), - Bin2 = e_varint(byte_size(SubBin), Bin), - <>. - e_mfield_sdl_peer_info_v4_info(Msg, Bin, TrUserData) -> SubBin = encode_msg_sdl_v4_info(Msg, <<>>, TrUserData), Bin2 = e_varint(byte_size(SubBin), Bin), @@ -959,11 +860,6 @@ e_mfield_sdl_send_register_event_v6_info(Msg, Bin, TrUserData) -> Bin2 = e_varint(byte_size(SubBin), Bin), <>. -e_mfield_sdl_change_network_command_dev_addr(Msg, Bin, TrUserData) -> - SubBin = encode_msg_sdl_dev_addr(Msg, <<>>, TrUserData), - Bin2 = e_varint(byte_size(SubBin), Bin), - <>. - e_mfield_sdl_stun_request_v6_info(Msg, Bin, TrUserData) -> SubBin = encode_msg_sdl_v6_info(Msg, <<>>, TrUserData), Bin2 = e_varint(byte_size(SubBin), Bin), @@ -1109,8 +1005,6 @@ decode_msg_1_catch(Bin, MsgName, TrUserData) -> decode_msg_2_doit(sdl_v4_info, Bin, TrUserData) -> id(decode_msg_sdl_v4_info(Bin, TrUserData), TrUserData); decode_msg_2_doit(sdl_v6_info, Bin, TrUserData) -> id(decode_msg_sdl_v6_info(Bin, TrUserData), TrUserData); -decode_msg_2_doit(sdl_dev_addr, Bin, TrUserData) -> id(decode_msg_sdl_dev_addr(Bin, TrUserData), TrUserData); -decode_msg_2_doit(sdl_empty, Bin, TrUserData) -> id(decode_msg_sdl_empty(Bin, TrUserData), TrUserData); decode_msg_2_doit(sdl_register_super, Bin, TrUserData) -> id(decode_msg_sdl_register_super(Bin, TrUserData), TrUserData); decode_msg_2_doit(sdl_register_super_ack, Bin, TrUserData) -> id(decode_msg_sdl_register_super_ack(Bin, TrUserData), TrUserData); decode_msg_2_doit(sdl_register_super_nak, Bin, TrUserData) -> id(decode_msg_sdl_register_super_nak(Bin, TrUserData), TrUserData); @@ -1119,11 +1013,7 @@ decode_msg_2_doit(sdl_peer_info, Bin, TrUserData) -> id(decode_msg_sdl_peer_info decode_msg_2_doit(sdl_nat_changed_event, Bin, TrUserData) -> id(decode_msg_sdl_nat_changed_event(Bin, TrUserData), TrUserData); decode_msg_2_doit(sdl_send_register_event, Bin, TrUserData) -> id(decode_msg_sdl_send_register_event(Bin, TrUserData), TrUserData); decode_msg_2_doit(sdl_network_shutdown_event, Bin, TrUserData) -> id(decode_msg_sdl_network_shutdown_event(Bin, TrUserData), TrUserData); -decode_msg_2_doit(sdl_change_network_command, Bin, TrUserData) -> id(decode_msg_sdl_change_network_command(Bin, TrUserData), TrUserData); -decode_msg_2_doit(sdl_command_ack, Bin, TrUserData) -> id(decode_msg_sdl_command_ack(Bin, TrUserData), TrUserData); -decode_msg_2_doit(sdl_flows, Bin, TrUserData) -> id(decode_msg_sdl_flows(Bin, TrUserData), TrUserData); decode_msg_2_doit(sdl_stun_request, Bin, TrUserData) -> id(decode_msg_sdl_stun_request(Bin, TrUserData), TrUserData); -decode_msg_2_doit(sdl_stun_reply, Bin, TrUserData) -> id(decode_msg_sdl_stun_reply(Bin, TrUserData), TrUserData); decode_msg_2_doit(sdl_data, Bin, TrUserData) -> id(decode_msg_sdl_data(Bin, TrUserData), TrUserData); decode_msg_2_doit(sdl_register, Bin, TrUserData) -> id(decode_msg_sdl_register(Bin, TrUserData), TrUserData); decode_msg_2_doit(sdl_register_ack, Bin, TrUserData) -> id(decode_msg_sdl_register_ack(Bin, TrUserData), TrUserData); @@ -1243,320 +1133,183 @@ skip_32_sdl_v6_info(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> skip_64_sdl_v6_info(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dfp_read_field_def_sdl_v6_info(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). -decode_msg_sdl_dev_addr(Bin, TrUserData) -> dfp_read_field_def_sdl_dev_addr(Bin, 0, 0, 0, id(0, TrUserData), id(<<>>, TrUserData), id(0, TrUserData), id(0, TrUserData), id(<<>>, TrUserData), TrUserData). - -dfp_read_field_def_sdl_dev_addr(<<8, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) -> d_field_sdl_dev_addr_network_id(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); -dfp_read_field_def_sdl_dev_addr(<<18, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) -> d_field_sdl_dev_addr_mac(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); -dfp_read_field_def_sdl_dev_addr(<<24, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) -> d_field_sdl_dev_addr_net_addr(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); -dfp_read_field_def_sdl_dev_addr(<<32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) -> d_field_sdl_dev_addr_net_bit_len(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); -dfp_read_field_def_sdl_dev_addr(<<42, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) -> d_field_sdl_dev_addr_network_domain(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); -dfp_read_field_def_sdl_dev_addr(<<>>, 0, 0, _, F@_1, F@_2, F@_3, F@_4, F@_5, _) -> #sdl_dev_addr{network_id = F@_1, mac = F@_2, net_addr = F@_3, net_bit_len = F@_4, network_domain = F@_5}; -dfp_read_field_def_sdl_dev_addr(Other, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) -> dg_read_field_def_sdl_dev_addr(Other, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData). - -dg_read_field_def_sdl_dev_addr(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) when N < 32 - 7 -> dg_read_field_def_sdl_dev_addr(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); -dg_read_field_def_sdl_dev_addr(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) -> - Key = X bsl N + Acc, - case Key of - 8 -> d_field_sdl_dev_addr_network_id(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); - 18 -> d_field_sdl_dev_addr_mac(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); - 24 -> d_field_sdl_dev_addr_net_addr(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); - 32 -> d_field_sdl_dev_addr_net_bit_len(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); - 42 -> d_field_sdl_dev_addr_network_domain(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); - _ -> - case Key band 7 of - 0 -> skip_varint_sdl_dev_addr(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); - 1 -> skip_64_sdl_dev_addr(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); - 2 -> skip_length_delimited_sdl_dev_addr(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); - 3 -> skip_group_sdl_dev_addr(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); - 5 -> skip_32_sdl_dev_addr(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) - end - end; -dg_read_field_def_sdl_dev_addr(<<>>, 0, 0, _, F@_1, F@_2, F@_3, F@_4, F@_5, _) -> #sdl_dev_addr{network_id = F@_1, mac = F@_2, net_addr = F@_3, net_bit_len = F@_4, network_domain = F@_5}. - -d_field_sdl_dev_addr_network_id(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) when N < 57 -> d_field_sdl_dev_addr_network_id(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); -d_field_sdl_dev_addr_network_id(<<0:1, X:7, Rest/binary>>, N, Acc, F, _, F@_2, F@_3, F@_4, F@_5, TrUserData) -> - {NewFValue, RestF} = {id((X bsl N + Acc) band 4294967295, TrUserData), Rest}, - dfp_read_field_def_sdl_dev_addr(RestF, 0, 0, F, NewFValue, F@_2, F@_3, F@_4, F@_5, TrUserData). - -d_field_sdl_dev_addr_mac(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) when N < 57 -> d_field_sdl_dev_addr_mac(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); -d_field_sdl_dev_addr_mac(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, _, F@_3, F@_4, F@_5, TrUserData) -> - {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, - dfp_read_field_def_sdl_dev_addr(RestF, 0, 0, F, F@_1, NewFValue, F@_3, F@_4, F@_5, TrUserData). - -d_field_sdl_dev_addr_net_addr(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) when N < 57 -> d_field_sdl_dev_addr_net_addr(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); -d_field_sdl_dev_addr_net_addr(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, _, F@_4, F@_5, TrUserData) -> - {NewFValue, RestF} = {id((X bsl N + Acc) band 4294967295, TrUserData), Rest}, - dfp_read_field_def_sdl_dev_addr(RestF, 0, 0, F, F@_1, F@_2, NewFValue, F@_4, F@_5, TrUserData). - -d_field_sdl_dev_addr_net_bit_len(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) when N < 57 -> d_field_sdl_dev_addr_net_bit_len(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); -d_field_sdl_dev_addr_net_bit_len(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, _, F@_5, TrUserData) -> - {NewFValue, RestF} = {id((X bsl N + Acc) band 4294967295, TrUserData), Rest}, - dfp_read_field_def_sdl_dev_addr(RestF, 0, 0, F, F@_1, F@_2, F@_3, NewFValue, F@_5, TrUserData). - -d_field_sdl_dev_addr_network_domain(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) when N < 57 -> d_field_sdl_dev_addr_network_domain(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); -d_field_sdl_dev_addr_network_domain(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, _, TrUserData) -> - {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, - dfp_read_field_def_sdl_dev_addr(RestF, 0, 0, F, F@_1, F@_2, F@_3, F@_4, NewFValue, TrUserData). - -skip_varint_sdl_dev_addr(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) -> skip_varint_sdl_dev_addr(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); -skip_varint_sdl_dev_addr(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) -> dfp_read_field_def_sdl_dev_addr(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData). - -skip_length_delimited_sdl_dev_addr(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) when N < 57 -> skip_length_delimited_sdl_dev_addr(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); -skip_length_delimited_sdl_dev_addr(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) -> - Length = X bsl N + Acc, - <<_:Length/binary, Rest2/binary>> = Rest, - dfp_read_field_def_sdl_dev_addr(Rest2, 0, 0, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData). - -skip_group_sdl_dev_addr(Bin, _, Z2, FNum, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) -> - {_, Rest} = read_group(Bin, FNum), - dfp_read_field_def_sdl_dev_addr(Rest, 0, Z2, FNum, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData). - -skip_32_sdl_dev_addr(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) -> dfp_read_field_def_sdl_dev_addr(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData). - -skip_64_sdl_dev_addr(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) -> dfp_read_field_def_sdl_dev_addr(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData). - -decode_msg_sdl_empty(Bin, TrUserData) -> dfp_read_field_def_sdl_empty(Bin, 0, 0, 0, TrUserData). - -dfp_read_field_def_sdl_empty(<<>>, 0, 0, _, _) -> #sdl_empty{}; -dfp_read_field_def_sdl_empty(Other, Z1, Z2, F, TrUserData) -> dg_read_field_def_sdl_empty(Other, Z1, Z2, F, TrUserData). - -dg_read_field_def_sdl_empty(<<1:1, X:7, Rest/binary>>, N, Acc, F, TrUserData) when N < 32 - 7 -> dg_read_field_def_sdl_empty(Rest, N + 7, X bsl N + Acc, F, TrUserData); -dg_read_field_def_sdl_empty(<<0:1, X:7, Rest/binary>>, N, Acc, _, TrUserData) -> - Key = X bsl N + Acc, - case Key band 7 of - 0 -> skip_varint_sdl_empty(Rest, 0, 0, Key bsr 3, TrUserData); - 1 -> skip_64_sdl_empty(Rest, 0, 0, Key bsr 3, TrUserData); - 2 -> skip_length_delimited_sdl_empty(Rest, 0, 0, Key bsr 3, TrUserData); - 3 -> skip_group_sdl_empty(Rest, 0, 0, Key bsr 3, TrUserData); - 5 -> skip_32_sdl_empty(Rest, 0, 0, Key bsr 3, TrUserData) - end; -dg_read_field_def_sdl_empty(<<>>, 0, 0, _, _) -> #sdl_empty{}. - -skip_varint_sdl_empty(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, TrUserData) -> skip_varint_sdl_empty(Rest, Z1, Z2, F, TrUserData); -skip_varint_sdl_empty(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, TrUserData) -> dfp_read_field_def_sdl_empty(Rest, Z1, Z2, F, TrUserData). - -skip_length_delimited_sdl_empty(<<1:1, X:7, Rest/binary>>, N, Acc, F, TrUserData) when N < 57 -> skip_length_delimited_sdl_empty(Rest, N + 7, X bsl N + Acc, F, TrUserData); -skip_length_delimited_sdl_empty(<<0:1, X:7, Rest/binary>>, N, Acc, F, TrUserData) -> - Length = X bsl N + Acc, - <<_:Length/binary, Rest2/binary>> = Rest, - dfp_read_field_def_sdl_empty(Rest2, 0, 0, F, TrUserData). - -skip_group_sdl_empty(Bin, _, Z2, FNum, TrUserData) -> - {_, Rest} = read_group(Bin, FNum), - dfp_read_field_def_sdl_empty(Rest, 0, Z2, FNum, TrUserData). - -skip_32_sdl_empty(<<_:32, Rest/binary>>, Z1, Z2, F, TrUserData) -> dfp_read_field_def_sdl_empty(Rest, Z1, Z2, F, TrUserData). - -skip_64_sdl_empty(<<_:64, Rest/binary>>, Z1, Z2, F, TrUserData) -> dfp_read_field_def_sdl_empty(Rest, Z1, Z2, F, TrUserData). - decode_msg_sdl_register_super(Bin, TrUserData) -> - dfp_read_field_def_sdl_register_super(Bin, 0, 0, 0, id(0, TrUserData), id(<<>>, TrUserData), id(<<>>, TrUserData), id(undefined, TrUserData), id(<<>>, TrUserData), id(<<>>, TrUserData), id(<<>>, TrUserData), id(<<>>, TrUserData), TrUserData). + dfp_read_field_def_sdl_register_super(Bin, 0, 0, 0, id(0, TrUserData), id(<<>>, TrUserData), id(0, TrUserData), id(<<>>, TrUserData), id(0, TrUserData), id(0, TrUserData), id(<<>>, TrUserData), id(<<>>, TrUserData), id(<<>>, TrUserData), TrUserData). -dfp_read_field_def_sdl_register_super(<<8, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData) -> d_field_sdl_register_super_version(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData); -dfp_read_field_def_sdl_register_super(<<18, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData) -> - d_field_sdl_register_super_installed_channel(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData); -dfp_read_field_def_sdl_register_super(<<26, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData) -> d_field_sdl_register_super_client_id(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData); -dfp_read_field_def_sdl_register_super(<<34, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData) -> d_field_sdl_register_super_dev_addr(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData); -dfp_read_field_def_sdl_register_super(<<42, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData) -> d_field_sdl_register_super_pub_key(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData); -dfp_read_field_def_sdl_register_super(<<50, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData) -> d_field_sdl_register_super_token(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData); -dfp_read_field_def_sdl_register_super(<<58, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData) -> d_field_sdl_register_super_network_code(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData); -dfp_read_field_def_sdl_register_super(<<66, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData) -> d_field_sdl_register_super_hostname(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData); -dfp_read_field_def_sdl_register_super(<<>>, 0, 0, _, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, _) -> - #sdl_register_super{version = F@_1, installed_channel = F@_2, client_id = F@_3, dev_addr = F@_4, pub_key = F@_5, token = F@_6, network_code = F@_7, hostname = F@_8}; -dfp_read_field_def_sdl_register_super(Other, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData) -> dg_read_field_def_sdl_register_super(Other, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData). +dfp_read_field_def_sdl_register_super(<<8, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, TrUserData) -> + d_field_sdl_register_super_version(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, TrUserData); +dfp_read_field_def_sdl_register_super(<<18, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, TrUserData) -> + d_field_sdl_register_super_client_id(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, TrUserData); +dfp_read_field_def_sdl_register_super(<<24, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, TrUserData) -> + d_field_sdl_register_super_network_id(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, TrUserData); +dfp_read_field_def_sdl_register_super(<<34, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, TrUserData) -> + d_field_sdl_register_super_mac(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, TrUserData); +dfp_read_field_def_sdl_register_super(<<40, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, TrUserData) -> + d_field_sdl_register_super_ip(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, TrUserData); +dfp_read_field_def_sdl_register_super(<<48, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, TrUserData) -> + d_field_sdl_register_super_mask_len(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, TrUserData); +dfp_read_field_def_sdl_register_super(<<58, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, TrUserData) -> + d_field_sdl_register_super_hostname(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, TrUserData); +dfp_read_field_def_sdl_register_super(<<66, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, TrUserData) -> + d_field_sdl_register_super_pub_key(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, TrUserData); +dfp_read_field_def_sdl_register_super(<<74, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, TrUserData) -> + d_field_sdl_register_super_access_token(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, TrUserData); +dfp_read_field_def_sdl_register_super(<<>>, 0, 0, _, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, _) -> + #sdl_register_super{version = F@_1, client_id = F@_2, network_id = F@_3, mac = F@_4, ip = F@_5, mask_len = F@_6, hostname = F@_7, pub_key = F@_8, access_token = F@_9}; +dfp_read_field_def_sdl_register_super(Other, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, TrUserData) -> dg_read_field_def_sdl_register_super(Other, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, TrUserData). -dg_read_field_def_sdl_register_super(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData) when N < 32 - 7 -> - dg_read_field_def_sdl_register_super(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData); -dg_read_field_def_sdl_register_super(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData) -> +dg_read_field_def_sdl_register_super(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, TrUserData) when N < 32 - 7 -> + dg_read_field_def_sdl_register_super(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, TrUserData); +dg_read_field_def_sdl_register_super(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, TrUserData) -> Key = X bsl N + Acc, case Key of - 8 -> d_field_sdl_register_super_version(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData); - 18 -> d_field_sdl_register_super_installed_channel(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData); - 26 -> d_field_sdl_register_super_client_id(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData); - 34 -> d_field_sdl_register_super_dev_addr(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData); - 42 -> d_field_sdl_register_super_pub_key(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData); - 50 -> d_field_sdl_register_super_token(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData); - 58 -> d_field_sdl_register_super_network_code(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData); - 66 -> d_field_sdl_register_super_hostname(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData); + 8 -> d_field_sdl_register_super_version(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, TrUserData); + 18 -> d_field_sdl_register_super_client_id(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, TrUserData); + 24 -> d_field_sdl_register_super_network_id(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, TrUserData); + 34 -> d_field_sdl_register_super_mac(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, TrUserData); + 40 -> d_field_sdl_register_super_ip(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, TrUserData); + 48 -> d_field_sdl_register_super_mask_len(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, TrUserData); + 58 -> d_field_sdl_register_super_hostname(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, TrUserData); + 66 -> d_field_sdl_register_super_pub_key(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, TrUserData); + 74 -> d_field_sdl_register_super_access_token(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, TrUserData); _ -> case Key band 7 of - 0 -> skip_varint_sdl_register_super(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData); - 1 -> skip_64_sdl_register_super(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData); - 2 -> skip_length_delimited_sdl_register_super(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData); - 3 -> skip_group_sdl_register_super(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData); - 5 -> skip_32_sdl_register_super(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData) + 0 -> skip_varint_sdl_register_super(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, TrUserData); + 1 -> skip_64_sdl_register_super(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, TrUserData); + 2 -> skip_length_delimited_sdl_register_super(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, TrUserData); + 3 -> skip_group_sdl_register_super(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, TrUserData); + 5 -> skip_32_sdl_register_super(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, TrUserData) end end; -dg_read_field_def_sdl_register_super(<<>>, 0, 0, _, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, _) -> - #sdl_register_super{version = F@_1, installed_channel = F@_2, client_id = F@_3, dev_addr = F@_4, pub_key = F@_5, token = F@_6, network_code = F@_7, hostname = F@_8}. +dg_read_field_def_sdl_register_super(<<>>, 0, 0, _, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, _) -> + #sdl_register_super{version = F@_1, client_id = F@_2, network_id = F@_3, mac = F@_4, ip = F@_5, mask_len = F@_6, hostname = F@_7, pub_key = F@_8, access_token = F@_9}. -d_field_sdl_register_super_version(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData) when N < 57 -> - d_field_sdl_register_super_version(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData); -d_field_sdl_register_super_version(<<0:1, X:7, Rest/binary>>, N, Acc, F, _, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData) -> +d_field_sdl_register_super_version(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, TrUserData) when N < 57 -> + d_field_sdl_register_super_version(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, TrUserData); +d_field_sdl_register_super_version(<<0:1, X:7, Rest/binary>>, N, Acc, F, _, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, TrUserData) -> {NewFValue, RestF} = {id((X bsl N + Acc) band 4294967295, TrUserData), Rest}, - dfp_read_field_def_sdl_register_super(RestF, 0, 0, F, NewFValue, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData). + dfp_read_field_def_sdl_register_super(RestF, 0, 0, F, NewFValue, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, TrUserData). -d_field_sdl_register_super_installed_channel(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData) when N < 57 -> - d_field_sdl_register_super_installed_channel(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData); -d_field_sdl_register_super_installed_channel(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, _, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData) -> +d_field_sdl_register_super_client_id(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, TrUserData) when N < 57 -> + d_field_sdl_register_super_client_id(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, TrUserData); +d_field_sdl_register_super_client_id(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, _, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, TrUserData) -> {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, - dfp_read_field_def_sdl_register_super(RestF, 0, 0, F, F@_1, NewFValue, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData). + dfp_read_field_def_sdl_register_super(RestF, 0, 0, F, F@_1, NewFValue, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, TrUserData). -d_field_sdl_register_super_client_id(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData) when N < 57 -> - d_field_sdl_register_super_client_id(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData); -d_field_sdl_register_super_client_id(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, _, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData) -> +d_field_sdl_register_super_network_id(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, TrUserData) when N < 57 -> + d_field_sdl_register_super_network_id(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, TrUserData); +d_field_sdl_register_super_network_id(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, _, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, TrUserData) -> + {NewFValue, RestF} = {id((X bsl N + Acc) band 4294967295, TrUserData), Rest}, + dfp_read_field_def_sdl_register_super(RestF, 0, 0, F, F@_1, F@_2, NewFValue, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, TrUserData). + +d_field_sdl_register_super_mac(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, TrUserData) when N < 57 -> + d_field_sdl_register_super_mac(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, TrUserData); +d_field_sdl_register_super_mac(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, _, F@_5, F@_6, F@_7, F@_8, F@_9, TrUserData) -> {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, - dfp_read_field_def_sdl_register_super(RestF, 0, 0, F, F@_1, F@_2, NewFValue, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData). + dfp_read_field_def_sdl_register_super(RestF, 0, 0, F, F@_1, F@_2, F@_3, NewFValue, F@_5, F@_6, F@_7, F@_8, F@_9, TrUserData). -d_field_sdl_register_super_dev_addr(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData) when N < 57 -> - d_field_sdl_register_super_dev_addr(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData); -d_field_sdl_register_super_dev_addr(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, Prev, F@_5, F@_6, F@_7, F@_8, TrUserData) -> - {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, {id(decode_msg_sdl_dev_addr(Bs, TrUserData), TrUserData), Rest2} end, - dfp_read_field_def_sdl_register_super(RestF, - 0, - 0, - F, - F@_1, - F@_2, - F@_3, - if Prev == undefined -> NewFValue; - true -> merge_msg_sdl_dev_addr(Prev, NewFValue, TrUserData) - end, - F@_5, - F@_6, - F@_7, - F@_8, - TrUserData). +d_field_sdl_register_super_ip(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, TrUserData) when N < 57 -> + d_field_sdl_register_super_ip(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, TrUserData); +d_field_sdl_register_super_ip(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, _, F@_6, F@_7, F@_8, F@_9, TrUserData) -> + {NewFValue, RestF} = {id((X bsl N + Acc) band 4294967295, TrUserData), Rest}, + dfp_read_field_def_sdl_register_super(RestF, 0, 0, F, F@_1, F@_2, F@_3, F@_4, NewFValue, F@_6, F@_7, F@_8, F@_9, TrUserData). -d_field_sdl_register_super_pub_key(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData) when N < 57 -> - d_field_sdl_register_super_pub_key(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData); -d_field_sdl_register_super_pub_key(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, _, F@_6, F@_7, F@_8, TrUserData) -> +d_field_sdl_register_super_mask_len(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, TrUserData) when N < 57 -> + d_field_sdl_register_super_mask_len(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, TrUserData); +d_field_sdl_register_super_mask_len(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, _, F@_7, F@_8, F@_9, TrUserData) -> + {NewFValue, RestF} = {id((X bsl N + Acc) band 4294967295, TrUserData), Rest}, + dfp_read_field_def_sdl_register_super(RestF, 0, 0, F, F@_1, F@_2, F@_3, F@_4, F@_5, NewFValue, F@_7, F@_8, F@_9, TrUserData). + +d_field_sdl_register_super_hostname(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, TrUserData) when N < 57 -> + d_field_sdl_register_super_hostname(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, TrUserData); +d_field_sdl_register_super_hostname(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, _, F@_8, F@_9, TrUserData) -> {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, - dfp_read_field_def_sdl_register_super(RestF, 0, 0, F, F@_1, F@_2, F@_3, F@_4, NewFValue, F@_6, F@_7, F@_8, TrUserData). + dfp_read_field_def_sdl_register_super(RestF, 0, 0, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, NewFValue, F@_8, F@_9, TrUserData). -d_field_sdl_register_super_token(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData) when N < 57 -> - d_field_sdl_register_super_token(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData); -d_field_sdl_register_super_token(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, _, F@_7, F@_8, TrUserData) -> +d_field_sdl_register_super_pub_key(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, TrUserData) when N < 57 -> + d_field_sdl_register_super_pub_key(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, TrUserData); +d_field_sdl_register_super_pub_key(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, _, F@_9, TrUserData) -> {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, - dfp_read_field_def_sdl_register_super(RestF, 0, 0, F, F@_1, F@_2, F@_3, F@_4, F@_5, NewFValue, F@_7, F@_8, TrUserData). + dfp_read_field_def_sdl_register_super(RestF, 0, 0, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, NewFValue, F@_9, TrUserData). -d_field_sdl_register_super_network_code(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData) when N < 57 -> - d_field_sdl_register_super_network_code(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData); -d_field_sdl_register_super_network_code(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, _, F@_8, TrUserData) -> +d_field_sdl_register_super_access_token(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, TrUserData) when N < 57 -> + d_field_sdl_register_super_access_token(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, TrUserData); +d_field_sdl_register_super_access_token(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, _, TrUserData) -> {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, - dfp_read_field_def_sdl_register_super(RestF, 0, 0, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, NewFValue, F@_8, TrUserData). + dfp_read_field_def_sdl_register_super(RestF, 0, 0, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, NewFValue, TrUserData). -d_field_sdl_register_super_hostname(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData) when N < 57 -> - d_field_sdl_register_super_hostname(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData); -d_field_sdl_register_super_hostname(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, _, TrUserData) -> - {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, - dfp_read_field_def_sdl_register_super(RestF, 0, 0, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, NewFValue, TrUserData). +skip_varint_sdl_register_super(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, TrUserData) -> + skip_varint_sdl_register_super(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, TrUserData); +skip_varint_sdl_register_super(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, TrUserData) -> + dfp_read_field_def_sdl_register_super(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, TrUserData). -skip_varint_sdl_register_super(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData) -> skip_varint_sdl_register_super(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData); -skip_varint_sdl_register_super(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData) -> dfp_read_field_def_sdl_register_super(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData). - -skip_length_delimited_sdl_register_super(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData) when N < 57 -> - skip_length_delimited_sdl_register_super(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData); -skip_length_delimited_sdl_register_super(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData) -> +skip_length_delimited_sdl_register_super(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, TrUserData) when N < 57 -> + skip_length_delimited_sdl_register_super(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, TrUserData); +skip_length_delimited_sdl_register_super(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, TrUserData) -> Length = X bsl N + Acc, <<_:Length/binary, Rest2/binary>> = Rest, - dfp_read_field_def_sdl_register_super(Rest2, 0, 0, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData). + dfp_read_field_def_sdl_register_super(Rest2, 0, 0, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, TrUserData). -skip_group_sdl_register_super(Bin, _, Z2, FNum, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData) -> +skip_group_sdl_register_super(Bin, _, Z2, FNum, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, TrUserData) -> {_, Rest} = read_group(Bin, FNum), - dfp_read_field_def_sdl_register_super(Rest, 0, Z2, FNum, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData). + dfp_read_field_def_sdl_register_super(Rest, 0, Z2, FNum, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, TrUserData). -skip_32_sdl_register_super(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData) -> dfp_read_field_def_sdl_register_super(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData). +skip_32_sdl_register_super(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, TrUserData) -> + dfp_read_field_def_sdl_register_super(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, TrUserData). -skip_64_sdl_register_super(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData) -> dfp_read_field_def_sdl_register_super(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData). +skip_64_sdl_register_super(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, TrUserData) -> + dfp_read_field_def_sdl_register_super(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, F@_9, TrUserData). -decode_msg_sdl_register_super_ack(Bin, TrUserData) -> dfp_read_field_def_sdl_register_super_ack(Bin, 0, 0, 0, id(undefined, TrUserData), id(<<>>, TrUserData), id(0, TrUserData), id(undefined, TrUserData), id(undefined, TrUserData), TrUserData). +decode_msg_sdl_register_super_ack(Bin, TrUserData) -> dfp_read_field_def_sdl_register_super_ack(Bin, 0, 0, 0, id(<<>>, TrUserData), id(<<>>, TrUserData), TrUserData). -dfp_read_field_def_sdl_register_super_ack(<<10, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) -> d_field_sdl_register_super_ack_dev_addr(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); -dfp_read_field_def_sdl_register_super_ack(<<18, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) -> d_field_sdl_register_super_ack_aes_key(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); -dfp_read_field_def_sdl_register_super_ack(<<24, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) -> d_field_sdl_register_super_ack_upgrade_type(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); -dfp_read_field_def_sdl_register_super_ack(<<34, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) -> d_field_sdl_register_super_ack_upgrade_prompt(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); -dfp_read_field_def_sdl_register_super_ack(<<42, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) -> d_field_sdl_register_super_ack_upgrade_address(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); -dfp_read_field_def_sdl_register_super_ack(<<>>, 0, 0, _, F@_1, F@_2, F@_3, F@_4, F@_5, _) -> #sdl_register_super_ack{dev_addr = F@_1, aes_key = F@_2, upgrade_type = F@_3, upgrade_prompt = F@_4, upgrade_address = F@_5}; -dfp_read_field_def_sdl_register_super_ack(Other, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) -> dg_read_field_def_sdl_register_super_ack(Other, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData). +dfp_read_field_def_sdl_register_super_ack(<<10, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> d_field_sdl_register_super_ack_aes_key(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); +dfp_read_field_def_sdl_register_super_ack(<<18, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> d_field_sdl_register_super_ack_session_token(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); +dfp_read_field_def_sdl_register_super_ack(<<>>, 0, 0, _, F@_1, F@_2, _) -> #sdl_register_super_ack{aes_key = F@_1, session_token = F@_2}; +dfp_read_field_def_sdl_register_super_ack(Other, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dg_read_field_def_sdl_register_super_ack(Other, Z1, Z2, F, F@_1, F@_2, TrUserData). -dg_read_field_def_sdl_register_super_ack(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) when N < 32 - 7 -> - dg_read_field_def_sdl_register_super_ack(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); -dg_read_field_def_sdl_register_super_ack(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) -> +dg_read_field_def_sdl_register_super_ack(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 32 - 7 -> dg_read_field_def_sdl_register_super_ack(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); +dg_read_field_def_sdl_register_super_ack(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, F@_2, TrUserData) -> Key = X bsl N + Acc, case Key of - 10 -> d_field_sdl_register_super_ack_dev_addr(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); - 18 -> d_field_sdl_register_super_ack_aes_key(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); - 24 -> d_field_sdl_register_super_ack_upgrade_type(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); - 34 -> d_field_sdl_register_super_ack_upgrade_prompt(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); - 42 -> d_field_sdl_register_super_ack_upgrade_address(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); + 10 -> d_field_sdl_register_super_ack_aes_key(Rest, 0, 0, 0, F@_1, F@_2, TrUserData); + 18 -> d_field_sdl_register_super_ack_session_token(Rest, 0, 0, 0, F@_1, F@_2, TrUserData); _ -> case Key band 7 of - 0 -> skip_varint_sdl_register_super_ack(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); - 1 -> skip_64_sdl_register_super_ack(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); - 2 -> skip_length_delimited_sdl_register_super_ack(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); - 3 -> skip_group_sdl_register_super_ack(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); - 5 -> skip_32_sdl_register_super_ack(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) + 0 -> skip_varint_sdl_register_super_ack(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); + 1 -> skip_64_sdl_register_super_ack(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); + 2 -> skip_length_delimited_sdl_register_super_ack(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); + 3 -> skip_group_sdl_register_super_ack(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); + 5 -> skip_32_sdl_register_super_ack(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData) end end; -dg_read_field_def_sdl_register_super_ack(<<>>, 0, 0, _, F@_1, F@_2, F@_3, F@_4, F@_5, _) -> #sdl_register_super_ack{dev_addr = F@_1, aes_key = F@_2, upgrade_type = F@_3, upgrade_prompt = F@_4, upgrade_address = F@_5}. +dg_read_field_def_sdl_register_super_ack(<<>>, 0, 0, _, F@_1, F@_2, _) -> #sdl_register_super_ack{aes_key = F@_1, session_token = F@_2}. -d_field_sdl_register_super_ack_dev_addr(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) when N < 57 -> d_field_sdl_register_super_ack_dev_addr(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); -d_field_sdl_register_super_ack_dev_addr(<<0:1, X:7, Rest/binary>>, N, Acc, F, Prev, F@_2, F@_3, F@_4, F@_5, TrUserData) -> - {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, {id(decode_msg_sdl_dev_addr(Bs, TrUserData), TrUserData), Rest2} end, - dfp_read_field_def_sdl_register_super_ack(RestF, - 0, - 0, - F, - if Prev == undefined -> NewFValue; - true -> merge_msg_sdl_dev_addr(Prev, NewFValue, TrUserData) - end, - F@_2, - F@_3, - F@_4, - F@_5, - TrUserData). - -d_field_sdl_register_super_ack_aes_key(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) when N < 57 -> d_field_sdl_register_super_ack_aes_key(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); -d_field_sdl_register_super_ack_aes_key(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, _, F@_3, F@_4, F@_5, TrUserData) -> +d_field_sdl_register_super_ack_aes_key(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> d_field_sdl_register_super_ack_aes_key(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); +d_field_sdl_register_super_ack_aes_key(<<0:1, X:7, Rest/binary>>, N, Acc, F, _, F@_2, TrUserData) -> {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, - dfp_read_field_def_sdl_register_super_ack(RestF, 0, 0, F, F@_1, NewFValue, F@_3, F@_4, F@_5, TrUserData). + dfp_read_field_def_sdl_register_super_ack(RestF, 0, 0, F, NewFValue, F@_2, TrUserData). -d_field_sdl_register_super_ack_upgrade_type(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) when N < 57 -> - d_field_sdl_register_super_ack_upgrade_type(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); -d_field_sdl_register_super_ack_upgrade_type(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, _, F@_4, F@_5, TrUserData) -> - {NewFValue, RestF} = {id((X bsl N + Acc) band 4294967295, TrUserData), Rest}, - dfp_read_field_def_sdl_register_super_ack(RestF, 0, 0, F, F@_1, F@_2, NewFValue, F@_4, F@_5, TrUserData). - -d_field_sdl_register_super_ack_upgrade_prompt(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) when N < 57 -> - d_field_sdl_register_super_ack_upgrade_prompt(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); -d_field_sdl_register_super_ack_upgrade_prompt(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, _, F@_5, TrUserData) -> +d_field_sdl_register_super_ack_session_token(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> d_field_sdl_register_super_ack_session_token(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); +d_field_sdl_register_super_ack_session_token(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, _, TrUserData) -> {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, - dfp_read_field_def_sdl_register_super_ack(RestF, 0, 0, F, F@_1, F@_2, F@_3, NewFValue, F@_5, TrUserData). + dfp_read_field_def_sdl_register_super_ack(RestF, 0, 0, F, F@_1, NewFValue, TrUserData). -d_field_sdl_register_super_ack_upgrade_address(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) when N < 57 -> - d_field_sdl_register_super_ack_upgrade_address(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); -d_field_sdl_register_super_ack_upgrade_address(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, _, TrUserData) -> - {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, - dfp_read_field_def_sdl_register_super_ack(RestF, 0, 0, F, F@_1, F@_2, F@_3, F@_4, NewFValue, TrUserData). +skip_varint_sdl_register_super_ack(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> skip_varint_sdl_register_super_ack(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); +skip_varint_sdl_register_super_ack(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dfp_read_field_def_sdl_register_super_ack(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). -skip_varint_sdl_register_super_ack(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) -> skip_varint_sdl_register_super_ack(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); -skip_varint_sdl_register_super_ack(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) -> dfp_read_field_def_sdl_register_super_ack(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData). - -skip_length_delimited_sdl_register_super_ack(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) when N < 57 -> - skip_length_delimited_sdl_register_super_ack(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); -skip_length_delimited_sdl_register_super_ack(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) -> +skip_length_delimited_sdl_register_super_ack(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> skip_length_delimited_sdl_register_super_ack(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); +skip_length_delimited_sdl_register_super_ack(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) -> Length = X bsl N + Acc, <<_:Length/binary, Rest2/binary>> = Rest, - dfp_read_field_def_sdl_register_super_ack(Rest2, 0, 0, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData). + dfp_read_field_def_sdl_register_super_ack(Rest2, 0, 0, F, F@_1, F@_2, TrUserData). -skip_group_sdl_register_super_ack(Bin, _, Z2, FNum, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) -> +skip_group_sdl_register_super_ack(Bin, _, Z2, FNum, F@_1, F@_2, TrUserData) -> {_, Rest} = read_group(Bin, FNum), - dfp_read_field_def_sdl_register_super_ack(Rest, 0, Z2, FNum, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData). + dfp_read_field_def_sdl_register_super_ack(Rest, 0, Z2, FNum, F@_1, F@_2, TrUserData). -skip_32_sdl_register_super_ack(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) -> dfp_read_field_def_sdl_register_super_ack(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData). +skip_32_sdl_register_super_ack(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dfp_read_field_def_sdl_register_super_ack(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). -skip_64_sdl_register_super_ack(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) -> dfp_read_field_def_sdl_register_super_ack(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData). +skip_64_sdl_register_super_ack(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dfp_read_field_def_sdl_register_super_ack(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). decode_msg_sdl_register_super_nak(Bin, TrUserData) -> dfp_read_field_def_sdl_register_super_nak(Bin, 0, 0, 0, id(0, TrUserData), id(<<>>, TrUserData), TrUserData). @@ -1609,230 +1362,273 @@ skip_32_sdl_register_super_nak(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrU skip_64_sdl_register_super_nak(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dfp_read_field_def_sdl_register_super_nak(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). -decode_msg_sdl_query_info(Bin, TrUserData) -> dfp_read_field_def_sdl_query_info(Bin, 0, 0, 0, id(<<>>, TrUserData), TrUserData). +decode_msg_sdl_query_info(Bin, TrUserData) -> dfp_read_field_def_sdl_query_info(Bin, 0, 0, 0, id(0, TrUserData), id(<<>>, TrUserData), id(<<>>, TrUserData), TrUserData). -dfp_read_field_def_sdl_query_info(<<10, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> d_field_sdl_query_info_dst_mac(Rest, Z1, Z2, F, F@_1, TrUserData); -dfp_read_field_def_sdl_query_info(<<>>, 0, 0, _, F@_1, _) -> #sdl_query_info{dst_mac = F@_1}; -dfp_read_field_def_sdl_query_info(Other, Z1, Z2, F, F@_1, TrUserData) -> dg_read_field_def_sdl_query_info(Other, Z1, Z2, F, F@_1, TrUserData). +dfp_read_field_def_sdl_query_info(<<8, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_sdl_query_info_network_id(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); +dfp_read_field_def_sdl_query_info(<<18, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_sdl_query_info_dst_mac(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); +dfp_read_field_def_sdl_query_info(<<26, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_sdl_query_info_session_token(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); +dfp_read_field_def_sdl_query_info(<<>>, 0, 0, _, F@_1, F@_2, F@_3, _) -> #sdl_query_info{network_id = F@_1, dst_mac = F@_2, session_token = F@_3}; +dfp_read_field_def_sdl_query_info(Other, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dg_read_field_def_sdl_query_info(Other, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). -dg_read_field_def_sdl_query_info(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) when N < 32 - 7 -> dg_read_field_def_sdl_query_info(Rest, N + 7, X bsl N + Acc, F, F@_1, TrUserData); -dg_read_field_def_sdl_query_info(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, TrUserData) -> +dg_read_field_def_sdl_query_info(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 32 - 7 -> dg_read_field_def_sdl_query_info(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +dg_read_field_def_sdl_query_info(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, F@_2, F@_3, TrUserData) -> Key = X bsl N + Acc, case Key of - 10 -> d_field_sdl_query_info_dst_mac(Rest, 0, 0, 0, F@_1, TrUserData); + 8 -> d_field_sdl_query_info_network_id(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData); + 18 -> d_field_sdl_query_info_dst_mac(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData); + 26 -> d_field_sdl_query_info_session_token(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData); _ -> case Key band 7 of - 0 -> skip_varint_sdl_query_info(Rest, 0, 0, Key bsr 3, F@_1, TrUserData); - 1 -> skip_64_sdl_query_info(Rest, 0, 0, Key bsr 3, F@_1, TrUserData); - 2 -> skip_length_delimited_sdl_query_info(Rest, 0, 0, Key bsr 3, F@_1, TrUserData); - 3 -> skip_group_sdl_query_info(Rest, 0, 0, Key bsr 3, F@_1, TrUserData); - 5 -> skip_32_sdl_query_info(Rest, 0, 0, Key bsr 3, F@_1, TrUserData) + 0 -> skip_varint_sdl_query_info(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); + 1 -> skip_64_sdl_query_info(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); + 2 -> skip_length_delimited_sdl_query_info(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); + 3 -> skip_group_sdl_query_info(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); + 5 -> skip_32_sdl_query_info(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData) end end; -dg_read_field_def_sdl_query_info(<<>>, 0, 0, _, F@_1, _) -> #sdl_query_info{dst_mac = F@_1}. +dg_read_field_def_sdl_query_info(<<>>, 0, 0, _, F@_1, F@_2, F@_3, _) -> #sdl_query_info{network_id = F@_1, dst_mac = F@_2, session_token = F@_3}. -d_field_sdl_query_info_dst_mac(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) when N < 57 -> d_field_sdl_query_info_dst_mac(Rest, N + 7, X bsl N + Acc, F, F@_1, TrUserData); -d_field_sdl_query_info_dst_mac(<<0:1, X:7, Rest/binary>>, N, Acc, F, _, TrUserData) -> +d_field_sdl_query_info_network_id(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_sdl_query_info_network_id(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +d_field_sdl_query_info_network_id(<<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_sdl_query_info(RestF, 0, 0, F, NewFValue, F@_2, F@_3, TrUserData). + +d_field_sdl_query_info_dst_mac(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_sdl_query_info_dst_mac(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +d_field_sdl_query_info_dst_mac(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, _, F@_3, TrUserData) -> {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, - dfp_read_field_def_sdl_query_info(RestF, 0, 0, F, NewFValue, TrUserData). + dfp_read_field_def_sdl_query_info(RestF, 0, 0, F, F@_1, NewFValue, F@_3, TrUserData). -skip_varint_sdl_query_info(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> skip_varint_sdl_query_info(Rest, Z1, Z2, F, F@_1, TrUserData); -skip_varint_sdl_query_info(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> dfp_read_field_def_sdl_query_info(Rest, Z1, Z2, F, F@_1, TrUserData). +d_field_sdl_query_info_session_token(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_sdl_query_info_session_token(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +d_field_sdl_query_info_session_token(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, _, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, + dfp_read_field_def_sdl_query_info(RestF, 0, 0, F, F@_1, F@_2, NewFValue, TrUserData). -skip_length_delimited_sdl_query_info(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) when N < 57 -> skip_length_delimited_sdl_query_info(Rest, N + 7, X bsl N + Acc, F, F@_1, TrUserData); -skip_length_delimited_sdl_query_info(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) -> +skip_varint_sdl_query_info(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> skip_varint_sdl_query_info(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); +skip_varint_sdl_query_info(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_sdl_query_info(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). + +skip_length_delimited_sdl_query_info(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> skip_length_delimited_sdl_query_info(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +skip_length_delimited_sdl_query_info(<<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_sdl_query_info(Rest2, 0, 0, F, F@_1, TrUserData). + dfp_read_field_def_sdl_query_info(Rest2, 0, 0, F, F@_1, F@_2, F@_3, TrUserData). -skip_group_sdl_query_info(Bin, _, Z2, FNum, F@_1, TrUserData) -> +skip_group_sdl_query_info(Bin, _, Z2, FNum, F@_1, F@_2, F@_3, TrUserData) -> {_, Rest} = read_group(Bin, FNum), - dfp_read_field_def_sdl_query_info(Rest, 0, Z2, FNum, F@_1, TrUserData). + dfp_read_field_def_sdl_query_info(Rest, 0, Z2, FNum, F@_1, F@_2, F@_3, TrUserData). -skip_32_sdl_query_info(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> dfp_read_field_def_sdl_query_info(Rest, Z1, Z2, F, F@_1, TrUserData). +skip_32_sdl_query_info(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_sdl_query_info(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). -skip_64_sdl_query_info(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> dfp_read_field_def_sdl_query_info(Rest, Z1, Z2, F, F@_1, TrUserData). +skip_64_sdl_query_info(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_sdl_query_info(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). -decode_msg_sdl_peer_info(Bin, TrUserData) -> dfp_read_field_def_sdl_peer_info(Bin, 0, 0, 0, id(<<>>, TrUserData), id(undefined, TrUserData), id(undefined, TrUserData), TrUserData). +decode_msg_sdl_peer_info(Bin, TrUserData) -> dfp_read_field_def_sdl_peer_info(Bin, 0, 0, 0, id(0, TrUserData), id(<<>>, TrUserData), id(undefined, TrUserData), id(undefined, TrUserData), TrUserData). -dfp_read_field_def_sdl_peer_info(<<10, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_sdl_peer_info_dst_mac(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); -dfp_read_field_def_sdl_peer_info(<<18, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_sdl_peer_info_v4_info(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); -dfp_read_field_def_sdl_peer_info(<<26, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_sdl_peer_info_v6_info(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); -dfp_read_field_def_sdl_peer_info(<<>>, 0, 0, _, F@_1, F@_2, F@_3, _) -> #sdl_peer_info{dst_mac = F@_1, v4_info = F@_2, v6_info = F@_3}; -dfp_read_field_def_sdl_peer_info(Other, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dg_read_field_def_sdl_peer_info(Other, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). +dfp_read_field_def_sdl_peer_info(<<8, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> d_field_sdl_peer_info_network_id(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +dfp_read_field_def_sdl_peer_info(<<18, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> d_field_sdl_peer_info_dst_mac(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +dfp_read_field_def_sdl_peer_info(<<26, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> d_field_sdl_peer_info_v4_info(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +dfp_read_field_def_sdl_peer_info(<<34, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> d_field_sdl_peer_info_v6_info(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +dfp_read_field_def_sdl_peer_info(<<>>, 0, 0, _, F@_1, F@_2, F@_3, F@_4, _) -> #sdl_peer_info{network_id = F@_1, dst_mac = F@_2, v4_info = F@_3, v6_info = F@_4}; +dfp_read_field_def_sdl_peer_info(Other, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> dg_read_field_def_sdl_peer_info(Other, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData). -dg_read_field_def_sdl_peer_info(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 32 - 7 -> dg_read_field_def_sdl_peer_info(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); -dg_read_field_def_sdl_peer_info(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, F@_2, F@_3, TrUserData) -> +dg_read_field_def_sdl_peer_info(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 32 - 7 -> dg_read_field_def_sdl_peer_info(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +dg_read_field_def_sdl_peer_info(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, F@_2, F@_3, F@_4, TrUserData) -> Key = X bsl N + Acc, case Key of - 10 -> d_field_sdl_peer_info_dst_mac(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData); - 18 -> d_field_sdl_peer_info_v4_info(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData); - 26 -> d_field_sdl_peer_info_v6_info(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData); + 8 -> d_field_sdl_peer_info_network_id(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, TrUserData); + 18 -> d_field_sdl_peer_info_dst_mac(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, TrUserData); + 26 -> d_field_sdl_peer_info_v4_info(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, TrUserData); + 34 -> d_field_sdl_peer_info_v6_info(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, TrUserData); _ -> case Key band 7 of - 0 -> skip_varint_sdl_peer_info(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); - 1 -> skip_64_sdl_peer_info(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); - 2 -> skip_length_delimited_sdl_peer_info(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); - 3 -> skip_group_sdl_peer_info(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); - 5 -> skip_32_sdl_peer_info(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData) + 0 -> skip_varint_sdl_peer_info(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, TrUserData); + 1 -> skip_64_sdl_peer_info(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, TrUserData); + 2 -> skip_length_delimited_sdl_peer_info(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, TrUserData); + 3 -> skip_group_sdl_peer_info(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, TrUserData); + 5 -> skip_32_sdl_peer_info(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, TrUserData) end end; -dg_read_field_def_sdl_peer_info(<<>>, 0, 0, _, F@_1, F@_2, F@_3, _) -> #sdl_peer_info{dst_mac = F@_1, v4_info = F@_2, v6_info = F@_3}. +dg_read_field_def_sdl_peer_info(<<>>, 0, 0, _, F@_1, F@_2, F@_3, F@_4, _) -> #sdl_peer_info{network_id = F@_1, dst_mac = F@_2, v4_info = F@_3, v6_info = F@_4}. -d_field_sdl_peer_info_dst_mac(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_sdl_peer_info_dst_mac(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); -d_field_sdl_peer_info_dst_mac(<<0:1, X:7, Rest/binary>>, N, Acc, F, _, F@_2, F@_3, TrUserData) -> +d_field_sdl_peer_info_network_id(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> d_field_sdl_peer_info_network_id(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +d_field_sdl_peer_info_network_id(<<0:1, X:7, Rest/binary>>, N, Acc, F, _, F@_2, F@_3, F@_4, TrUserData) -> + {NewFValue, RestF} = {id((X bsl N + Acc) band 4294967295, TrUserData), Rest}, + dfp_read_field_def_sdl_peer_info(RestF, 0, 0, F, NewFValue, F@_2, F@_3, F@_4, TrUserData). + +d_field_sdl_peer_info_dst_mac(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> d_field_sdl_peer_info_dst_mac(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +d_field_sdl_peer_info_dst_mac(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, _, F@_3, F@_4, TrUserData) -> {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, - dfp_read_field_def_sdl_peer_info(RestF, 0, 0, F, NewFValue, F@_2, F@_3, TrUserData). + dfp_read_field_def_sdl_peer_info(RestF, 0, 0, F, F@_1, NewFValue, F@_3, F@_4, TrUserData). -d_field_sdl_peer_info_v4_info(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_sdl_peer_info_v4_info(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); -d_field_sdl_peer_info_v4_info(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, Prev, F@_3, TrUserData) -> +d_field_sdl_peer_info_v4_info(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> d_field_sdl_peer_info_v4_info(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +d_field_sdl_peer_info_v4_info(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, Prev, F@_4, TrUserData) -> {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, {id(decode_msg_sdl_v4_info(Bs, TrUserData), TrUserData), Rest2} end, - dfp_read_field_def_sdl_peer_info(RestF, - 0, - 0, - F, - F@_1, - if Prev == undefined -> NewFValue; - true -> merge_msg_sdl_v4_info(Prev, NewFValue, TrUserData) - end, - F@_3, - TrUserData). - -d_field_sdl_peer_info_v6_info(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_sdl_peer_info_v6_info(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); -d_field_sdl_peer_info_v6_info(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, Prev, TrUserData) -> - {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, {id(decode_msg_sdl_v6_info(Bs, TrUserData), TrUserData), Rest2} end, dfp_read_field_def_sdl_peer_info(RestF, 0, 0, F, F@_1, F@_2, + if Prev == undefined -> NewFValue; + true -> merge_msg_sdl_v4_info(Prev, NewFValue, TrUserData) + end, + F@_4, + TrUserData). + +d_field_sdl_peer_info_v6_info(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> d_field_sdl_peer_info_v6_info(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +d_field_sdl_peer_info_v6_info(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, Prev, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, {id(decode_msg_sdl_v6_info(Bs, TrUserData), TrUserData), Rest2} end, + dfp_read_field_def_sdl_peer_info(RestF, + 0, + 0, + F, + F@_1, + F@_2, + F@_3, if Prev == undefined -> NewFValue; true -> merge_msg_sdl_v6_info(Prev, NewFValue, TrUserData) end, TrUserData). -skip_varint_sdl_peer_info(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> skip_varint_sdl_peer_info(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); -skip_varint_sdl_peer_info(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_sdl_peer_info(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). +skip_varint_sdl_peer_info(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> skip_varint_sdl_peer_info(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +skip_varint_sdl_peer_info(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> dfp_read_field_def_sdl_peer_info(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData). -skip_length_delimited_sdl_peer_info(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> skip_length_delimited_sdl_peer_info(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); -skip_length_delimited_sdl_peer_info(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) -> +skip_length_delimited_sdl_peer_info(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> skip_length_delimited_sdl_peer_info(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +skip_length_delimited_sdl_peer_info(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> Length = X bsl N + Acc, <<_:Length/binary, Rest2/binary>> = Rest, - dfp_read_field_def_sdl_peer_info(Rest2, 0, 0, F, F@_1, F@_2, F@_3, TrUserData). + dfp_read_field_def_sdl_peer_info(Rest2, 0, 0, F, F@_1, F@_2, F@_3, F@_4, TrUserData). -skip_group_sdl_peer_info(Bin, _, Z2, FNum, F@_1, F@_2, F@_3, TrUserData) -> +skip_group_sdl_peer_info(Bin, _, Z2, FNum, F@_1, F@_2, F@_3, F@_4, TrUserData) -> {_, Rest} = read_group(Bin, FNum), - dfp_read_field_def_sdl_peer_info(Rest, 0, Z2, FNum, F@_1, F@_2, F@_3, TrUserData). + dfp_read_field_def_sdl_peer_info(Rest, 0, Z2, FNum, F@_1, F@_2, F@_3, F@_4, TrUserData). -skip_32_sdl_peer_info(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_sdl_peer_info(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). +skip_32_sdl_peer_info(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> dfp_read_field_def_sdl_peer_info(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData). -skip_64_sdl_peer_info(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_sdl_peer_info(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). +skip_64_sdl_peer_info(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> dfp_read_field_def_sdl_peer_info(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData). -decode_msg_sdl_nat_changed_event(Bin, TrUserData) -> dfp_read_field_def_sdl_nat_changed_event(Bin, 0, 0, 0, id(<<>>, TrUserData), id(0, TrUserData), TrUserData). +decode_msg_sdl_nat_changed_event(Bin, TrUserData) -> dfp_read_field_def_sdl_nat_changed_event(Bin, 0, 0, 0, id(0, TrUserData), id(<<>>, TrUserData), id(0, TrUserData), TrUserData). -dfp_read_field_def_sdl_nat_changed_event(<<10, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> d_field_sdl_nat_changed_event_mac(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); -dfp_read_field_def_sdl_nat_changed_event(<<16, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> d_field_sdl_nat_changed_event_ip(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); -dfp_read_field_def_sdl_nat_changed_event(<<>>, 0, 0, _, F@_1, F@_2, _) -> #sdl_nat_changed_event{mac = F@_1, ip = F@_2}; -dfp_read_field_def_sdl_nat_changed_event(Other, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dg_read_field_def_sdl_nat_changed_event(Other, Z1, Z2, F, F@_1, F@_2, TrUserData). +dfp_read_field_def_sdl_nat_changed_event(<<8, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_sdl_nat_changed_event_network_id(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); +dfp_read_field_def_sdl_nat_changed_event(<<18, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_sdl_nat_changed_event_mac(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); +dfp_read_field_def_sdl_nat_changed_event(<<24, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_sdl_nat_changed_event_ip(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); +dfp_read_field_def_sdl_nat_changed_event(<<>>, 0, 0, _, F@_1, F@_2, F@_3, _) -> #sdl_nat_changed_event{network_id = F@_1, mac = F@_2, ip = F@_3}; +dfp_read_field_def_sdl_nat_changed_event(Other, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dg_read_field_def_sdl_nat_changed_event(Other, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). -dg_read_field_def_sdl_nat_changed_event(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 32 - 7 -> dg_read_field_def_sdl_nat_changed_event(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); -dg_read_field_def_sdl_nat_changed_event(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, F@_2, TrUserData) -> +dg_read_field_def_sdl_nat_changed_event(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 32 - 7 -> dg_read_field_def_sdl_nat_changed_event(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +dg_read_field_def_sdl_nat_changed_event(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, F@_2, F@_3, TrUserData) -> Key = X bsl N + Acc, case Key of - 10 -> d_field_sdl_nat_changed_event_mac(Rest, 0, 0, 0, F@_1, F@_2, TrUserData); - 16 -> d_field_sdl_nat_changed_event_ip(Rest, 0, 0, 0, F@_1, F@_2, TrUserData); + 8 -> d_field_sdl_nat_changed_event_network_id(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData); + 18 -> d_field_sdl_nat_changed_event_mac(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData); + 24 -> d_field_sdl_nat_changed_event_ip(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData); _ -> case Key band 7 of - 0 -> skip_varint_sdl_nat_changed_event(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); - 1 -> skip_64_sdl_nat_changed_event(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); - 2 -> skip_length_delimited_sdl_nat_changed_event(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); - 3 -> skip_group_sdl_nat_changed_event(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); - 5 -> skip_32_sdl_nat_changed_event(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData) + 0 -> skip_varint_sdl_nat_changed_event(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); + 1 -> skip_64_sdl_nat_changed_event(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); + 2 -> skip_length_delimited_sdl_nat_changed_event(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); + 3 -> skip_group_sdl_nat_changed_event(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); + 5 -> skip_32_sdl_nat_changed_event(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData) end end; -dg_read_field_def_sdl_nat_changed_event(<<>>, 0, 0, _, F@_1, F@_2, _) -> #sdl_nat_changed_event{mac = F@_1, ip = F@_2}. +dg_read_field_def_sdl_nat_changed_event(<<>>, 0, 0, _, F@_1, F@_2, F@_3, _) -> #sdl_nat_changed_event{network_id = F@_1, mac = F@_2, ip = F@_3}. -d_field_sdl_nat_changed_event_mac(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> d_field_sdl_nat_changed_event_mac(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); -d_field_sdl_nat_changed_event_mac(<<0:1, X:7, Rest/binary>>, N, Acc, F, _, F@_2, TrUserData) -> - {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, - dfp_read_field_def_sdl_nat_changed_event(RestF, 0, 0, F, NewFValue, F@_2, TrUserData). - -d_field_sdl_nat_changed_event_ip(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> d_field_sdl_nat_changed_event_ip(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); -d_field_sdl_nat_changed_event_ip(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, _, TrUserData) -> +d_field_sdl_nat_changed_event_network_id(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_sdl_nat_changed_event_network_id(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +d_field_sdl_nat_changed_event_network_id(<<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_sdl_nat_changed_event(RestF, 0, 0, F, F@_1, NewFValue, TrUserData). + dfp_read_field_def_sdl_nat_changed_event(RestF, 0, 0, F, NewFValue, F@_2, F@_3, TrUserData). -skip_varint_sdl_nat_changed_event(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> skip_varint_sdl_nat_changed_event(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); -skip_varint_sdl_nat_changed_event(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dfp_read_field_def_sdl_nat_changed_event(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). +d_field_sdl_nat_changed_event_mac(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_sdl_nat_changed_event_mac(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +d_field_sdl_nat_changed_event_mac(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, _, F@_3, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, + dfp_read_field_def_sdl_nat_changed_event(RestF, 0, 0, F, F@_1, NewFValue, F@_3, TrUserData). -skip_length_delimited_sdl_nat_changed_event(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> skip_length_delimited_sdl_nat_changed_event(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); -skip_length_delimited_sdl_nat_changed_event(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) -> +d_field_sdl_nat_changed_event_ip(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_sdl_nat_changed_event_ip(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +d_field_sdl_nat_changed_event_ip(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, _, TrUserData) -> + {NewFValue, RestF} = {id((X bsl N + Acc) band 4294967295, TrUserData), Rest}, + dfp_read_field_def_sdl_nat_changed_event(RestF, 0, 0, F, F@_1, F@_2, NewFValue, TrUserData). + +skip_varint_sdl_nat_changed_event(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> skip_varint_sdl_nat_changed_event(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); +skip_varint_sdl_nat_changed_event(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_sdl_nat_changed_event(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). + +skip_length_delimited_sdl_nat_changed_event(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> skip_length_delimited_sdl_nat_changed_event(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +skip_length_delimited_sdl_nat_changed_event(<<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_sdl_nat_changed_event(Rest2, 0, 0, F, F@_1, F@_2, TrUserData). + dfp_read_field_def_sdl_nat_changed_event(Rest2, 0, 0, F, F@_1, F@_2, F@_3, TrUserData). -skip_group_sdl_nat_changed_event(Bin, _, Z2, FNum, F@_1, F@_2, TrUserData) -> +skip_group_sdl_nat_changed_event(Bin, _, Z2, FNum, F@_1, F@_2, F@_3, TrUserData) -> {_, Rest} = read_group(Bin, FNum), - dfp_read_field_def_sdl_nat_changed_event(Rest, 0, Z2, FNum, F@_1, F@_2, TrUserData). + dfp_read_field_def_sdl_nat_changed_event(Rest, 0, Z2, FNum, F@_1, F@_2, F@_3, TrUserData). -skip_32_sdl_nat_changed_event(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dfp_read_field_def_sdl_nat_changed_event(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). +skip_32_sdl_nat_changed_event(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_sdl_nat_changed_event(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). -skip_64_sdl_nat_changed_event(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dfp_read_field_def_sdl_nat_changed_event(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). +skip_64_sdl_nat_changed_event(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_sdl_nat_changed_event(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). -decode_msg_sdl_send_register_event(Bin, TrUserData) -> dfp_read_field_def_sdl_send_register_event(Bin, 0, 0, 0, id(<<>>, TrUserData), id(0, TrUserData), id(0, TrUserData), id(0, TrUserData), id(undefined, TrUserData), TrUserData). +decode_msg_sdl_send_register_event(Bin, TrUserData) -> dfp_read_field_def_sdl_send_register_event(Bin, 0, 0, 0, id(0, TrUserData), id(<<>>, TrUserData), id(0, TrUserData), id(0, TrUserData), id(0, TrUserData), id(undefined, TrUserData), TrUserData). -dfp_read_field_def_sdl_send_register_event(<<10, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) -> d_field_sdl_send_register_event_dst_mac(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); -dfp_read_field_def_sdl_send_register_event(<<16, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) -> d_field_sdl_send_register_event_nat_ip(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); -dfp_read_field_def_sdl_send_register_event(<<24, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) -> d_field_sdl_send_register_event_nat_port(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); -dfp_read_field_def_sdl_send_register_event(<<32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) -> d_field_sdl_send_register_event_nat_type(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); -dfp_read_field_def_sdl_send_register_event(<<42, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) -> d_field_sdl_send_register_event_v6_info(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); -dfp_read_field_def_sdl_send_register_event(<<>>, 0, 0, _, F@_1, F@_2, F@_3, F@_4, F@_5, _) -> #sdl_send_register_event{dst_mac = F@_1, nat_ip = F@_2, nat_port = F@_3, nat_type = F@_4, v6_info = F@_5}; -dfp_read_field_def_sdl_send_register_event(Other, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) -> dg_read_field_def_sdl_send_register_event(Other, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData). +dfp_read_field_def_sdl_send_register_event(<<8, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData) -> d_field_sdl_send_register_event_network_id(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData); +dfp_read_field_def_sdl_send_register_event(<<18, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData) -> d_field_sdl_send_register_event_dst_mac(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData); +dfp_read_field_def_sdl_send_register_event(<<24, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData) -> d_field_sdl_send_register_event_nat_ip(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData); +dfp_read_field_def_sdl_send_register_event(<<32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData) -> d_field_sdl_send_register_event_nat_port(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData); +dfp_read_field_def_sdl_send_register_event(<<40, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData) -> d_field_sdl_send_register_event_nat_type(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData); +dfp_read_field_def_sdl_send_register_event(<<50, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData) -> d_field_sdl_send_register_event_v6_info(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData); +dfp_read_field_def_sdl_send_register_event(<<>>, 0, 0, _, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, _) -> #sdl_send_register_event{network_id = F@_1, dst_mac = F@_2, nat_ip = F@_3, nat_port = F@_4, nat_type = F@_5, v6_info = F@_6}; +dfp_read_field_def_sdl_send_register_event(Other, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData) -> dg_read_field_def_sdl_send_register_event(Other, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData). -dg_read_field_def_sdl_send_register_event(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) when N < 32 - 7 -> - dg_read_field_def_sdl_send_register_event(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); -dg_read_field_def_sdl_send_register_event(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) -> +dg_read_field_def_sdl_send_register_event(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData) when N < 32 - 7 -> + dg_read_field_def_sdl_send_register_event(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData); +dg_read_field_def_sdl_send_register_event(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData) -> Key = X bsl N + Acc, case Key of - 10 -> d_field_sdl_send_register_event_dst_mac(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); - 16 -> d_field_sdl_send_register_event_nat_ip(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); - 24 -> d_field_sdl_send_register_event_nat_port(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); - 32 -> d_field_sdl_send_register_event_nat_type(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); - 42 -> d_field_sdl_send_register_event_v6_info(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); + 8 -> d_field_sdl_send_register_event_network_id(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData); + 18 -> d_field_sdl_send_register_event_dst_mac(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData); + 24 -> d_field_sdl_send_register_event_nat_ip(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData); + 32 -> d_field_sdl_send_register_event_nat_port(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData); + 40 -> d_field_sdl_send_register_event_nat_type(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData); + 50 -> d_field_sdl_send_register_event_v6_info(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData); _ -> case Key band 7 of - 0 -> skip_varint_sdl_send_register_event(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); - 1 -> skip_64_sdl_send_register_event(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); - 2 -> skip_length_delimited_sdl_send_register_event(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); - 3 -> skip_group_sdl_send_register_event(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); - 5 -> skip_32_sdl_send_register_event(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) + 0 -> skip_varint_sdl_send_register_event(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData); + 1 -> skip_64_sdl_send_register_event(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData); + 2 -> skip_length_delimited_sdl_send_register_event(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData); + 3 -> skip_group_sdl_send_register_event(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData); + 5 -> skip_32_sdl_send_register_event(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData) end end; -dg_read_field_def_sdl_send_register_event(<<>>, 0, 0, _, F@_1, F@_2, F@_3, F@_4, F@_5, _) -> #sdl_send_register_event{dst_mac = F@_1, nat_ip = F@_2, nat_port = F@_3, nat_type = F@_4, v6_info = F@_5}. +dg_read_field_def_sdl_send_register_event(<<>>, 0, 0, _, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, _) -> #sdl_send_register_event{network_id = F@_1, dst_mac = F@_2, nat_ip = F@_3, nat_port = F@_4, nat_type = F@_5, v6_info = F@_6}. -d_field_sdl_send_register_event_dst_mac(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) when N < 57 -> d_field_sdl_send_register_event_dst_mac(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); -d_field_sdl_send_register_event_dst_mac(<<0:1, X:7, Rest/binary>>, N, Acc, F, _, F@_2, F@_3, F@_4, F@_5, TrUserData) -> +d_field_sdl_send_register_event_network_id(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData) when N < 57 -> + d_field_sdl_send_register_event_network_id(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData); +d_field_sdl_send_register_event_network_id(<<0:1, X:7, Rest/binary>>, N, Acc, F, _, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData) -> + {NewFValue, RestF} = {id((X bsl N + Acc) band 4294967295, TrUserData), Rest}, + dfp_read_field_def_sdl_send_register_event(RestF, 0, 0, F, NewFValue, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData). + +d_field_sdl_send_register_event_dst_mac(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData) when N < 57 -> + d_field_sdl_send_register_event_dst_mac(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData); +d_field_sdl_send_register_event_dst_mac(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, _, F@_3, F@_4, F@_5, F@_6, TrUserData) -> {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, - dfp_read_field_def_sdl_send_register_event(RestF, 0, 0, F, NewFValue, F@_2, F@_3, F@_4, F@_5, TrUserData). + dfp_read_field_def_sdl_send_register_event(RestF, 0, 0, F, F@_1, NewFValue, F@_3, F@_4, F@_5, F@_6, TrUserData). -d_field_sdl_send_register_event_nat_ip(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) when N < 57 -> d_field_sdl_send_register_event_nat_ip(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); -d_field_sdl_send_register_event_nat_ip(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, _, F@_3, F@_4, F@_5, TrUserData) -> +d_field_sdl_send_register_event_nat_ip(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData) when N < 57 -> + d_field_sdl_send_register_event_nat_ip(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData); +d_field_sdl_send_register_event_nat_ip(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, _, F@_4, F@_5, F@_6, TrUserData) -> {NewFValue, RestF} = {id((X bsl N + Acc) band 4294967295, TrUserData), Rest}, - dfp_read_field_def_sdl_send_register_event(RestF, 0, 0, F, F@_1, NewFValue, F@_3, F@_4, F@_5, TrUserData). + dfp_read_field_def_sdl_send_register_event(RestF, 0, 0, F, F@_1, F@_2, NewFValue, F@_4, F@_5, F@_6, TrUserData). -d_field_sdl_send_register_event_nat_port(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) when N < 57 -> d_field_sdl_send_register_event_nat_port(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); -d_field_sdl_send_register_event_nat_port(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, _, F@_4, F@_5, TrUserData) -> +d_field_sdl_send_register_event_nat_port(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData) when N < 57 -> + d_field_sdl_send_register_event_nat_port(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData); +d_field_sdl_send_register_event_nat_port(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, _, F@_5, F@_6, TrUserData) -> {NewFValue, RestF} = {id((X bsl N + Acc) band 4294967295, TrUserData), Rest}, - dfp_read_field_def_sdl_send_register_event(RestF, 0, 0, F, F@_1, F@_2, NewFValue, F@_4, F@_5, TrUserData). + dfp_read_field_def_sdl_send_register_event(RestF, 0, 0, F, F@_1, F@_2, F@_3, NewFValue, F@_5, F@_6, TrUserData). -d_field_sdl_send_register_event_nat_type(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) when N < 57 -> d_field_sdl_send_register_event_nat_type(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); -d_field_sdl_send_register_event_nat_type(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, _, F@_5, TrUserData) -> +d_field_sdl_send_register_event_nat_type(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData) when N < 57 -> + d_field_sdl_send_register_event_nat_type(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData); +d_field_sdl_send_register_event_nat_type(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, _, F@_6, TrUserData) -> {NewFValue, RestF} = {id((X bsl N + Acc) band 4294967295, TrUserData), Rest}, - dfp_read_field_def_sdl_send_register_event(RestF, 0, 0, F, F@_1, F@_2, F@_3, NewFValue, F@_5, TrUserData). + dfp_read_field_def_sdl_send_register_event(RestF, 0, 0, F, F@_1, F@_2, F@_3, F@_4, NewFValue, F@_6, TrUserData). -d_field_sdl_send_register_event_v6_info(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) when N < 57 -> d_field_sdl_send_register_event_v6_info(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); -d_field_sdl_send_register_event_v6_info(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, Prev, TrUserData) -> +d_field_sdl_send_register_event_v6_info(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData) when N < 57 -> + d_field_sdl_send_register_event_v6_info(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData); +d_field_sdl_send_register_event_v6_info(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, Prev, TrUserData) -> {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, {id(decode_msg_sdl_v6_info(Bs, TrUserData), TrUserData), Rest2} end, dfp_read_field_def_sdl_send_register_event(RestF, 0, @@ -1842,252 +1638,92 @@ d_field_sdl_send_register_event_v6_info(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@ F@_2, F@_3, F@_4, + F@_5, if Prev == undefined -> NewFValue; true -> merge_msg_sdl_v6_info(Prev, NewFValue, TrUserData) end, TrUserData). -skip_varint_sdl_send_register_event(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) -> skip_varint_sdl_send_register_event(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); -skip_varint_sdl_send_register_event(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) -> dfp_read_field_def_sdl_send_register_event(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData). +skip_varint_sdl_send_register_event(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData) -> skip_varint_sdl_send_register_event(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData); +skip_varint_sdl_send_register_event(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData) -> dfp_read_field_def_sdl_send_register_event(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData). -skip_length_delimited_sdl_send_register_event(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) when N < 57 -> - skip_length_delimited_sdl_send_register_event(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); -skip_length_delimited_sdl_send_register_event(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) -> +skip_length_delimited_sdl_send_register_event(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData) when N < 57 -> + skip_length_delimited_sdl_send_register_event(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData); +skip_length_delimited_sdl_send_register_event(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData) -> Length = X bsl N + Acc, <<_:Length/binary, Rest2/binary>> = Rest, - dfp_read_field_def_sdl_send_register_event(Rest2, 0, 0, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData). + dfp_read_field_def_sdl_send_register_event(Rest2, 0, 0, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData). -skip_group_sdl_send_register_event(Bin, _, Z2, FNum, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) -> +skip_group_sdl_send_register_event(Bin, _, Z2, FNum, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData) -> {_, Rest} = read_group(Bin, FNum), - dfp_read_field_def_sdl_send_register_event(Rest, 0, Z2, FNum, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData). + dfp_read_field_def_sdl_send_register_event(Rest, 0, Z2, FNum, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData). -skip_32_sdl_send_register_event(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) -> dfp_read_field_def_sdl_send_register_event(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData). +skip_32_sdl_send_register_event(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData) -> dfp_read_field_def_sdl_send_register_event(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData). -skip_64_sdl_send_register_event(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) -> dfp_read_field_def_sdl_send_register_event(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData). +skip_64_sdl_send_register_event(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData) -> dfp_read_field_def_sdl_send_register_event(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData). -decode_msg_sdl_network_shutdown_event(Bin, TrUserData) -> dfp_read_field_def_sdl_network_shutdown_event(Bin, 0, 0, 0, id(<<>>, TrUserData), TrUserData). +decode_msg_sdl_network_shutdown_event(Bin, TrUserData) -> dfp_read_field_def_sdl_network_shutdown_event(Bin, 0, 0, 0, id(0, TrUserData), id(<<>>, TrUserData), TrUserData). -dfp_read_field_def_sdl_network_shutdown_event(<<10, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> d_field_sdl_network_shutdown_event_message(Rest, Z1, Z2, F, F@_1, TrUserData); -dfp_read_field_def_sdl_network_shutdown_event(<<>>, 0, 0, _, F@_1, _) -> #sdl_network_shutdown_event{message = F@_1}; -dfp_read_field_def_sdl_network_shutdown_event(Other, Z1, Z2, F, F@_1, TrUserData) -> dg_read_field_def_sdl_network_shutdown_event(Other, Z1, Z2, F, F@_1, TrUserData). +dfp_read_field_def_sdl_network_shutdown_event(<<8, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> d_field_sdl_network_shutdown_event_network_id(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); +dfp_read_field_def_sdl_network_shutdown_event(<<18, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> d_field_sdl_network_shutdown_event_message(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); +dfp_read_field_def_sdl_network_shutdown_event(<<>>, 0, 0, _, F@_1, F@_2, _) -> #sdl_network_shutdown_event{network_id = F@_1, message = F@_2}; +dfp_read_field_def_sdl_network_shutdown_event(Other, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dg_read_field_def_sdl_network_shutdown_event(Other, Z1, Z2, F, F@_1, F@_2, TrUserData). -dg_read_field_def_sdl_network_shutdown_event(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) when N < 32 - 7 -> dg_read_field_def_sdl_network_shutdown_event(Rest, N + 7, X bsl N + Acc, F, F@_1, TrUserData); -dg_read_field_def_sdl_network_shutdown_event(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, TrUserData) -> +dg_read_field_def_sdl_network_shutdown_event(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 32 - 7 -> dg_read_field_def_sdl_network_shutdown_event(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); +dg_read_field_def_sdl_network_shutdown_event(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, F@_2, TrUserData) -> Key = X bsl N + Acc, case Key of - 10 -> d_field_sdl_network_shutdown_event_message(Rest, 0, 0, 0, F@_1, TrUserData); + 8 -> d_field_sdl_network_shutdown_event_network_id(Rest, 0, 0, 0, F@_1, F@_2, TrUserData); + 18 -> d_field_sdl_network_shutdown_event_message(Rest, 0, 0, 0, F@_1, F@_2, TrUserData); _ -> case Key band 7 of - 0 -> skip_varint_sdl_network_shutdown_event(Rest, 0, 0, Key bsr 3, F@_1, TrUserData); - 1 -> skip_64_sdl_network_shutdown_event(Rest, 0, 0, Key bsr 3, F@_1, TrUserData); - 2 -> skip_length_delimited_sdl_network_shutdown_event(Rest, 0, 0, Key bsr 3, F@_1, TrUserData); - 3 -> skip_group_sdl_network_shutdown_event(Rest, 0, 0, Key bsr 3, F@_1, TrUserData); - 5 -> skip_32_sdl_network_shutdown_event(Rest, 0, 0, Key bsr 3, F@_1, TrUserData) + 0 -> skip_varint_sdl_network_shutdown_event(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); + 1 -> skip_64_sdl_network_shutdown_event(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); + 2 -> skip_length_delimited_sdl_network_shutdown_event(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); + 3 -> skip_group_sdl_network_shutdown_event(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); + 5 -> skip_32_sdl_network_shutdown_event(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData) end end; -dg_read_field_def_sdl_network_shutdown_event(<<>>, 0, 0, _, F@_1, _) -> #sdl_network_shutdown_event{message = F@_1}. +dg_read_field_def_sdl_network_shutdown_event(<<>>, 0, 0, _, F@_1, F@_2, _) -> #sdl_network_shutdown_event{network_id = F@_1, message = F@_2}. -d_field_sdl_network_shutdown_event_message(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) when N < 57 -> d_field_sdl_network_shutdown_event_message(Rest, N + 7, X bsl N + Acc, F, F@_1, TrUserData); -d_field_sdl_network_shutdown_event_message(<<0:1, X:7, Rest/binary>>, N, Acc, F, _, TrUserData) -> - {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, - dfp_read_field_def_sdl_network_shutdown_event(RestF, 0, 0, F, NewFValue, TrUserData). - -skip_varint_sdl_network_shutdown_event(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> skip_varint_sdl_network_shutdown_event(Rest, Z1, Z2, F, F@_1, TrUserData); -skip_varint_sdl_network_shutdown_event(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> dfp_read_field_def_sdl_network_shutdown_event(Rest, Z1, Z2, F, F@_1, TrUserData). - -skip_length_delimited_sdl_network_shutdown_event(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) when N < 57 -> skip_length_delimited_sdl_network_shutdown_event(Rest, N + 7, X bsl N + Acc, F, F@_1, TrUserData); -skip_length_delimited_sdl_network_shutdown_event(<<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_sdl_network_shutdown_event(Rest2, 0, 0, F, F@_1, TrUserData). - -skip_group_sdl_network_shutdown_event(Bin, _, Z2, FNum, F@_1, TrUserData) -> - {_, Rest} = read_group(Bin, FNum), - dfp_read_field_def_sdl_network_shutdown_event(Rest, 0, Z2, FNum, F@_1, TrUserData). - -skip_32_sdl_network_shutdown_event(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> dfp_read_field_def_sdl_network_shutdown_event(Rest, Z1, Z2, F, F@_1, TrUserData). - -skip_64_sdl_network_shutdown_event(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> dfp_read_field_def_sdl_network_shutdown_event(Rest, Z1, Z2, F, F@_1, TrUserData). - -decode_msg_sdl_change_network_command(Bin, TrUserData) -> dfp_read_field_def_sdl_change_network_command(Bin, 0, 0, 0, id(undefined, TrUserData), id(<<>>, TrUserData), TrUserData). - -dfp_read_field_def_sdl_change_network_command(<<10, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> d_field_sdl_change_network_command_dev_addr(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); -dfp_read_field_def_sdl_change_network_command(<<18, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> d_field_sdl_change_network_command_aes_key(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); -dfp_read_field_def_sdl_change_network_command(<<>>, 0, 0, _, F@_1, F@_2, _) -> #sdl_change_network_command{dev_addr = F@_1, aes_key = F@_2}; -dfp_read_field_def_sdl_change_network_command(Other, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dg_read_field_def_sdl_change_network_command(Other, Z1, Z2, F, F@_1, F@_2, TrUserData). - -dg_read_field_def_sdl_change_network_command(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 32 - 7 -> dg_read_field_def_sdl_change_network_command(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); -dg_read_field_def_sdl_change_network_command(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, F@_2, TrUserData) -> - Key = X bsl N + Acc, - case Key of - 10 -> d_field_sdl_change_network_command_dev_addr(Rest, 0, 0, 0, F@_1, F@_2, TrUserData); - 18 -> d_field_sdl_change_network_command_aes_key(Rest, 0, 0, 0, F@_1, F@_2, TrUserData); - _ -> - case Key band 7 of - 0 -> skip_varint_sdl_change_network_command(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); - 1 -> skip_64_sdl_change_network_command(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); - 2 -> skip_length_delimited_sdl_change_network_command(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); - 3 -> skip_group_sdl_change_network_command(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); - 5 -> skip_32_sdl_change_network_command(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData) - end - end; -dg_read_field_def_sdl_change_network_command(<<>>, 0, 0, _, F@_1, F@_2, _) -> #sdl_change_network_command{dev_addr = F@_1, aes_key = F@_2}. - -d_field_sdl_change_network_command_dev_addr(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> d_field_sdl_change_network_command_dev_addr(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); -d_field_sdl_change_network_command_dev_addr(<<0:1, X:7, Rest/binary>>, N, Acc, F, Prev, F@_2, TrUserData) -> - {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, {id(decode_msg_sdl_dev_addr(Bs, TrUserData), TrUserData), Rest2} end, - dfp_read_field_def_sdl_change_network_command(RestF, - 0, - 0, - F, - if Prev == undefined -> NewFValue; - true -> merge_msg_sdl_dev_addr(Prev, NewFValue, TrUserData) - end, - F@_2, - TrUserData). - -d_field_sdl_change_network_command_aes_key(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> d_field_sdl_change_network_command_aes_key(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); -d_field_sdl_change_network_command_aes_key(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, _, TrUserData) -> - {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, - dfp_read_field_def_sdl_change_network_command(RestF, 0, 0, F, F@_1, NewFValue, TrUserData). - -skip_varint_sdl_change_network_command(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> skip_varint_sdl_change_network_command(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); -skip_varint_sdl_change_network_command(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dfp_read_field_def_sdl_change_network_command(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). - -skip_length_delimited_sdl_change_network_command(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> skip_length_delimited_sdl_change_network_command(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); -skip_length_delimited_sdl_change_network_command(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) -> - Length = X bsl N + Acc, - <<_:Length/binary, Rest2/binary>> = Rest, - dfp_read_field_def_sdl_change_network_command(Rest2, 0, 0, F, F@_1, F@_2, TrUserData). - -skip_group_sdl_change_network_command(Bin, _, Z2, FNum, F@_1, F@_2, TrUserData) -> - {_, Rest} = read_group(Bin, FNum), - dfp_read_field_def_sdl_change_network_command(Rest, 0, Z2, FNum, F@_1, F@_2, TrUserData). - -skip_32_sdl_change_network_command(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dfp_read_field_def_sdl_change_network_command(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). - -skip_64_sdl_change_network_command(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dfp_read_field_def_sdl_change_network_command(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). - -decode_msg_sdl_command_ack(Bin, TrUserData) -> dfp_read_field_def_sdl_command_ack(Bin, 0, 0, 0, id(false, TrUserData), id(undefined, TrUserData), TrUserData). - -dfp_read_field_def_sdl_command_ack(<<8, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> d_field_sdl_command_ack_status(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); -dfp_read_field_def_sdl_command_ack(<<18, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> d_field_sdl_command_ack_message(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); -dfp_read_field_def_sdl_command_ack(<<>>, 0, 0, _, F@_1, F@_2, _) -> #sdl_command_ack{status = F@_1, message = F@_2}; -dfp_read_field_def_sdl_command_ack(Other, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dg_read_field_def_sdl_command_ack(Other, Z1, Z2, F, F@_1, F@_2, TrUserData). - -dg_read_field_def_sdl_command_ack(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 32 - 7 -> dg_read_field_def_sdl_command_ack(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); -dg_read_field_def_sdl_command_ack(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, F@_2, TrUserData) -> - Key = X bsl N + Acc, - case Key of - 8 -> d_field_sdl_command_ack_status(Rest, 0, 0, 0, F@_1, F@_2, TrUserData); - 18 -> d_field_sdl_command_ack_message(Rest, 0, 0, 0, F@_1, F@_2, TrUserData); - _ -> - case Key band 7 of - 0 -> skip_varint_sdl_command_ack(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); - 1 -> skip_64_sdl_command_ack(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); - 2 -> skip_length_delimited_sdl_command_ack(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); - 3 -> skip_group_sdl_command_ack(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); - 5 -> skip_32_sdl_command_ack(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData) - end - end; -dg_read_field_def_sdl_command_ack(<<>>, 0, 0, _, F@_1, F@_2, _) -> #sdl_command_ack{status = F@_1, message = F@_2}. - -d_field_sdl_command_ack_status(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> d_field_sdl_command_ack_status(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); -d_field_sdl_command_ack_status(<<0:1, X:7, Rest/binary>>, N, Acc, F, _, F@_2, TrUserData) -> - {NewFValue, RestF} = {id(X bsl N + Acc =/= 0, TrUserData), Rest}, - dfp_read_field_def_sdl_command_ack(RestF, 0, 0, F, NewFValue, F@_2, TrUserData). - -d_field_sdl_command_ack_message(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> d_field_sdl_command_ack_message(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); -d_field_sdl_command_ack_message(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, _, TrUserData) -> - {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, - dfp_read_field_def_sdl_command_ack(RestF, 0, 0, F, F@_1, NewFValue, TrUserData). - -skip_varint_sdl_command_ack(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> skip_varint_sdl_command_ack(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); -skip_varint_sdl_command_ack(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dfp_read_field_def_sdl_command_ack(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). - -skip_length_delimited_sdl_command_ack(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> skip_length_delimited_sdl_command_ack(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); -skip_length_delimited_sdl_command_ack(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) -> - Length = X bsl N + Acc, - <<_:Length/binary, Rest2/binary>> = Rest, - dfp_read_field_def_sdl_command_ack(Rest2, 0, 0, F, F@_1, F@_2, TrUserData). - -skip_group_sdl_command_ack(Bin, _, Z2, FNum, F@_1, F@_2, TrUserData) -> - {_, Rest} = read_group(Bin, FNum), - dfp_read_field_def_sdl_command_ack(Rest, 0, Z2, FNum, F@_1, F@_2, TrUserData). - -skip_32_sdl_command_ack(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dfp_read_field_def_sdl_command_ack(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). - -skip_64_sdl_command_ack(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dfp_read_field_def_sdl_command_ack(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). - -decode_msg_sdl_flows(Bin, TrUserData) -> dfp_read_field_def_sdl_flows(Bin, 0, 0, 0, id(0, TrUserData), id(0, TrUserData), id(0, TrUserData), TrUserData). - -dfp_read_field_def_sdl_flows(<<8, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_sdl_flows_forward_num(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); -dfp_read_field_def_sdl_flows(<<16, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_sdl_flows_p2p_num(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); -dfp_read_field_def_sdl_flows(<<24, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_sdl_flows_inbound_num(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); -dfp_read_field_def_sdl_flows(<<>>, 0, 0, _, F@_1, F@_2, F@_3, _) -> #sdl_flows{forward_num = F@_1, p2p_num = F@_2, inbound_num = F@_3}; -dfp_read_field_def_sdl_flows(Other, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dg_read_field_def_sdl_flows(Other, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). - -dg_read_field_def_sdl_flows(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 32 - 7 -> dg_read_field_def_sdl_flows(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); -dg_read_field_def_sdl_flows(<<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_sdl_flows_forward_num(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData); - 16 -> d_field_sdl_flows_p2p_num(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData); - 24 -> d_field_sdl_flows_inbound_num(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData); - _ -> - case Key band 7 of - 0 -> skip_varint_sdl_flows(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); - 1 -> skip_64_sdl_flows(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); - 2 -> skip_length_delimited_sdl_flows(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); - 3 -> skip_group_sdl_flows(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); - 5 -> skip_32_sdl_flows(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData) - end - end; -dg_read_field_def_sdl_flows(<<>>, 0, 0, _, F@_1, F@_2, F@_3, _) -> #sdl_flows{forward_num = F@_1, p2p_num = F@_2, inbound_num = F@_3}. - -d_field_sdl_flows_forward_num(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_sdl_flows_forward_num(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); -d_field_sdl_flows_forward_num(<<0:1, X:7, Rest/binary>>, N, Acc, F, _, F@_2, F@_3, TrUserData) -> +d_field_sdl_network_shutdown_event_network_id(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> d_field_sdl_network_shutdown_event_network_id(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); +d_field_sdl_network_shutdown_event_network_id(<<0:1, X:7, Rest/binary>>, N, Acc, F, _, F@_2, TrUserData) -> {NewFValue, RestF} = {id((X bsl N + Acc) band 4294967295, TrUserData), Rest}, - dfp_read_field_def_sdl_flows(RestF, 0, 0, F, NewFValue, F@_2, F@_3, TrUserData). + dfp_read_field_def_sdl_network_shutdown_event(RestF, 0, 0, F, NewFValue, F@_2, TrUserData). -d_field_sdl_flows_p2p_num(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_sdl_flows_p2p_num(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); -d_field_sdl_flows_p2p_num(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, _, F@_3, TrUserData) -> - {NewFValue, RestF} = {id((X bsl N + Acc) band 4294967295, TrUserData), Rest}, - dfp_read_field_def_sdl_flows(RestF, 0, 0, F, F@_1, NewFValue, F@_3, TrUserData). +d_field_sdl_network_shutdown_event_message(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> d_field_sdl_network_shutdown_event_message(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); +d_field_sdl_network_shutdown_event_message(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, _, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, + dfp_read_field_def_sdl_network_shutdown_event(RestF, 0, 0, F, F@_1, NewFValue, TrUserData). -d_field_sdl_flows_inbound_num(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_sdl_flows_inbound_num(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); -d_field_sdl_flows_inbound_num(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, _, TrUserData) -> - {NewFValue, RestF} = {id((X bsl N + Acc) band 4294967295, TrUserData), Rest}, - dfp_read_field_def_sdl_flows(RestF, 0, 0, F, F@_1, F@_2, NewFValue, TrUserData). +skip_varint_sdl_network_shutdown_event(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> skip_varint_sdl_network_shutdown_event(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); +skip_varint_sdl_network_shutdown_event(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dfp_read_field_def_sdl_network_shutdown_event(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). -skip_varint_sdl_flows(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> skip_varint_sdl_flows(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); -skip_varint_sdl_flows(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_sdl_flows(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). - -skip_length_delimited_sdl_flows(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> skip_length_delimited_sdl_flows(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); -skip_length_delimited_sdl_flows(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) -> +skip_length_delimited_sdl_network_shutdown_event(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> skip_length_delimited_sdl_network_shutdown_event(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); +skip_length_delimited_sdl_network_shutdown_event(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) -> Length = X bsl N + Acc, <<_:Length/binary, Rest2/binary>> = Rest, - dfp_read_field_def_sdl_flows(Rest2, 0, 0, F, F@_1, F@_2, F@_3, TrUserData). + dfp_read_field_def_sdl_network_shutdown_event(Rest2, 0, 0, F, F@_1, F@_2, TrUserData). -skip_group_sdl_flows(Bin, _, Z2, FNum, F@_1, F@_2, F@_3, TrUserData) -> +skip_group_sdl_network_shutdown_event(Bin, _, Z2, FNum, F@_1, F@_2, TrUserData) -> {_, Rest} = read_group(Bin, FNum), - dfp_read_field_def_sdl_flows(Rest, 0, Z2, FNum, F@_1, F@_2, F@_3, TrUserData). + dfp_read_field_def_sdl_network_shutdown_event(Rest, 0, Z2, FNum, F@_1, F@_2, TrUserData). -skip_32_sdl_flows(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_sdl_flows(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). +skip_32_sdl_network_shutdown_event(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dfp_read_field_def_sdl_network_shutdown_event(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). -skip_64_sdl_flows(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_sdl_flows(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). +skip_64_sdl_network_shutdown_event(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dfp_read_field_def_sdl_network_shutdown_event(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). decode_msg_sdl_stun_request(Bin, TrUserData) -> - dfp_read_field_def_sdl_stun_request(Bin, 0, 0, 0, id(0, TrUserData), id(<<>>, TrUserData), id(0, TrUserData), id(<<>>, TrUserData), id(0, TrUserData), id(0, TrUserData), id(undefined, TrUserData), TrUserData). + dfp_read_field_def_sdl_stun_request(Bin, 0, 0, 0, id(<<>>, TrUserData), id(0, TrUserData), id(<<>>, TrUserData), id(0, TrUserData), id(0, TrUserData), id(undefined, TrUserData), id(<<>>, TrUserData), TrUserData). -dfp_read_field_def_sdl_stun_request(<<8, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData) -> d_field_sdl_stun_request_cookie(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData); -dfp_read_field_def_sdl_stun_request(<<18, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData) -> d_field_sdl_stun_request_client_id(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData); -dfp_read_field_def_sdl_stun_request(<<24, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData) -> d_field_sdl_stun_request_network_id(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData); -dfp_read_field_def_sdl_stun_request(<<34, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData) -> d_field_sdl_stun_request_mac(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData); -dfp_read_field_def_sdl_stun_request(<<40, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData) -> d_field_sdl_stun_request_ip(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData); -dfp_read_field_def_sdl_stun_request(<<48, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData) -> d_field_sdl_stun_request_nat_type(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData); -dfp_read_field_def_sdl_stun_request(<<58, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData) -> d_field_sdl_stun_request_v6_info(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData); -dfp_read_field_def_sdl_stun_request(<<>>, 0, 0, _, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, _) -> #sdl_stun_request{cookie = F@_1, client_id = F@_2, network_id = F@_3, mac = F@_4, ip = F@_5, nat_type = F@_6, v6_info = F@_7}; +dfp_read_field_def_sdl_stun_request(<<10, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData) -> d_field_sdl_stun_request_client_id(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData); +dfp_read_field_def_sdl_stun_request(<<16, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData) -> d_field_sdl_stun_request_network_id(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData); +dfp_read_field_def_sdl_stun_request(<<26, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData) -> d_field_sdl_stun_request_mac(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData); +dfp_read_field_def_sdl_stun_request(<<32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData) -> d_field_sdl_stun_request_ip(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData); +dfp_read_field_def_sdl_stun_request(<<40, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData) -> d_field_sdl_stun_request_nat_type(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData); +dfp_read_field_def_sdl_stun_request(<<50, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData) -> d_field_sdl_stun_request_v6_info(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData); +dfp_read_field_def_sdl_stun_request(<<58, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData) -> d_field_sdl_stun_request_session_token(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData); +dfp_read_field_def_sdl_stun_request(<<>>, 0, 0, _, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, _) -> #sdl_stun_request{client_id = F@_1, network_id = F@_2, mac = F@_3, ip = F@_4, nat_type = F@_5, v6_info = F@_6, session_token = F@_7}; dfp_read_field_def_sdl_stun_request(Other, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData) -> dg_read_field_def_sdl_stun_request(Other, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData). dg_read_field_def_sdl_stun_request(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData) when N < 32 - 7 -> @@ -2095,13 +1731,13 @@ dg_read_field_def_sdl_stun_request(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F dg_read_field_def_sdl_stun_request(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData) -> Key = X bsl N + Acc, case Key of - 8 -> d_field_sdl_stun_request_cookie(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData); - 18 -> d_field_sdl_stun_request_client_id(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData); - 24 -> d_field_sdl_stun_request_network_id(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData); - 34 -> d_field_sdl_stun_request_mac(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData); - 40 -> d_field_sdl_stun_request_ip(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData); - 48 -> d_field_sdl_stun_request_nat_type(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData); - 58 -> d_field_sdl_stun_request_v6_info(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData); + 10 -> d_field_sdl_stun_request_client_id(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData); + 16 -> d_field_sdl_stun_request_network_id(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData); + 26 -> d_field_sdl_stun_request_mac(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData); + 32 -> d_field_sdl_stun_request_ip(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData); + 40 -> d_field_sdl_stun_request_nat_type(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData); + 50 -> d_field_sdl_stun_request_v6_info(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData); + 58 -> d_field_sdl_stun_request_session_token(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData); _ -> case Key band 7 of 0 -> skip_varint_sdl_stun_request(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData); @@ -2111,45 +1747,39 @@ dg_read_field_def_sdl_stun_request(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, F 5 -> skip_32_sdl_stun_request(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData) end end; -dg_read_field_def_sdl_stun_request(<<>>, 0, 0, _, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, _) -> #sdl_stun_request{cookie = F@_1, client_id = F@_2, network_id = F@_3, mac = F@_4, ip = F@_5, nat_type = F@_6, v6_info = F@_7}. - -d_field_sdl_stun_request_cookie(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData) when N < 57 -> - d_field_sdl_stun_request_cookie(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData); -d_field_sdl_stun_request_cookie(<<0:1, X:7, Rest/binary>>, N, Acc, F, _, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData) -> - {NewFValue, RestF} = {id((X bsl N + Acc) band 4294967295, TrUserData), Rest}, - dfp_read_field_def_sdl_stun_request(RestF, 0, 0, F, NewFValue, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData). +dg_read_field_def_sdl_stun_request(<<>>, 0, 0, _, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, _) -> #sdl_stun_request{client_id = F@_1, network_id = F@_2, mac = F@_3, ip = F@_4, nat_type = F@_5, v6_info = F@_6, session_token = F@_7}. d_field_sdl_stun_request_client_id(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData) when N < 57 -> d_field_sdl_stun_request_client_id(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData); -d_field_sdl_stun_request_client_id(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, _, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData) -> +d_field_sdl_stun_request_client_id(<<0:1, X:7, Rest/binary>>, N, Acc, F, _, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData) -> {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, - dfp_read_field_def_sdl_stun_request(RestF, 0, 0, F, F@_1, NewFValue, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData). + dfp_read_field_def_sdl_stun_request(RestF, 0, 0, F, NewFValue, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData). d_field_sdl_stun_request_network_id(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData) when N < 57 -> d_field_sdl_stun_request_network_id(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData); -d_field_sdl_stun_request_network_id(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, _, F@_4, F@_5, F@_6, F@_7, TrUserData) -> +d_field_sdl_stun_request_network_id(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, _, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData) -> {NewFValue, RestF} = {id((X bsl N + Acc) band 4294967295, TrUserData), Rest}, - dfp_read_field_def_sdl_stun_request(RestF, 0, 0, F, F@_1, F@_2, NewFValue, F@_4, F@_5, F@_6, F@_7, TrUserData). + dfp_read_field_def_sdl_stun_request(RestF, 0, 0, F, F@_1, NewFValue, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData). d_field_sdl_stun_request_mac(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData) when N < 57 -> d_field_sdl_stun_request_mac(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData); -d_field_sdl_stun_request_mac(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, _, F@_5, F@_6, F@_7, TrUserData) -> +d_field_sdl_stun_request_mac(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, _, F@_4, F@_5, F@_6, F@_7, TrUserData) -> {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, - dfp_read_field_def_sdl_stun_request(RestF, 0, 0, F, F@_1, F@_2, F@_3, NewFValue, F@_5, F@_6, F@_7, TrUserData). + dfp_read_field_def_sdl_stun_request(RestF, 0, 0, F, F@_1, F@_2, NewFValue, F@_4, F@_5, F@_6, F@_7, TrUserData). d_field_sdl_stun_request_ip(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData) when N < 57 -> d_field_sdl_stun_request_ip(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData); -d_field_sdl_stun_request_ip(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, _, F@_6, F@_7, TrUserData) -> +d_field_sdl_stun_request_ip(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, _, F@_5, F@_6, F@_7, TrUserData) -> {NewFValue, RestF} = {id((X bsl N + Acc) band 4294967295, TrUserData), Rest}, - dfp_read_field_def_sdl_stun_request(RestF, 0, 0, F, F@_1, F@_2, F@_3, F@_4, NewFValue, F@_6, F@_7, TrUserData). + dfp_read_field_def_sdl_stun_request(RestF, 0, 0, F, F@_1, F@_2, F@_3, NewFValue, F@_5, F@_6, F@_7, TrUserData). d_field_sdl_stun_request_nat_type(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData) when N < 57 -> d_field_sdl_stun_request_nat_type(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData); -d_field_sdl_stun_request_nat_type(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, _, F@_7, TrUserData) -> +d_field_sdl_stun_request_nat_type(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, _, F@_6, F@_7, TrUserData) -> {NewFValue, RestF} = {id((X bsl N + Acc) band 4294967295, TrUserData), Rest}, - dfp_read_field_def_sdl_stun_request(RestF, 0, 0, F, F@_1, F@_2, F@_3, F@_4, F@_5, NewFValue, F@_7, TrUserData). + dfp_read_field_def_sdl_stun_request(RestF, 0, 0, F, F@_1, F@_2, F@_3, F@_4, NewFValue, F@_6, F@_7, TrUserData). d_field_sdl_stun_request_v6_info(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData) when N < 57 -> d_field_sdl_stun_request_v6_info(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData); -d_field_sdl_stun_request_v6_info(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, Prev, TrUserData) -> +d_field_sdl_stun_request_v6_info(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, Prev, F@_7, TrUserData) -> {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, {id(decode_msg_sdl_v6_info(Bs, TrUserData), TrUserData), Rest2} end, dfp_read_field_def_sdl_stun_request(RestF, 0, @@ -2160,12 +1790,18 @@ d_field_sdl_stun_request_v6_info(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_ F@_3, F@_4, F@_5, - F@_6, if Prev == undefined -> NewFValue; true -> merge_msg_sdl_v6_info(Prev, NewFValue, TrUserData) end, + F@_7, TrUserData). +d_field_sdl_stun_request_session_token(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData) when N < 57 -> + d_field_sdl_stun_request_session_token(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData); +d_field_sdl_stun_request_session_token(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, _, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, + dfp_read_field_def_sdl_stun_request(RestF, 0, 0, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, NewFValue, TrUserData). + skip_varint_sdl_stun_request(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData) -> skip_varint_sdl_stun_request(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData); skip_varint_sdl_stun_request(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData) -> dfp_read_field_def_sdl_stun_request(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData). @@ -2184,128 +1820,93 @@ skip_32_sdl_stun_request(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_ skip_64_sdl_stun_request(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData) -> dfp_read_field_def_sdl_stun_request(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData). -decode_msg_sdl_stun_reply(Bin, TrUserData) -> dfp_read_field_def_sdl_stun_reply(Bin, 0, 0, 0, id(0, TrUserData), TrUserData). +decode_msg_sdl_data(Bin, TrUserData) -> dfp_read_field_def_sdl_data(Bin, 0, 0, 0, id(0, TrUserData), id(<<>>, TrUserData), id(<<>>, TrUserData), id(false, TrUserData), id(0, TrUserData), id(<<>>, TrUserData), id(<<>>, TrUserData), TrUserData). -dfp_read_field_def_sdl_stun_reply(<<8, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> d_field_sdl_stun_reply_cookie(Rest, Z1, Z2, F, F@_1, TrUserData); -dfp_read_field_def_sdl_stun_reply(<<>>, 0, 0, _, F@_1, _) -> #sdl_stun_reply{cookie = F@_1}; -dfp_read_field_def_sdl_stun_reply(Other, Z1, Z2, F, F@_1, TrUserData) -> dg_read_field_def_sdl_stun_reply(Other, Z1, Z2, F, F@_1, TrUserData). +dfp_read_field_def_sdl_data(<<8, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData) -> d_field_sdl_data_network_id(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData); +dfp_read_field_def_sdl_data(<<18, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData) -> d_field_sdl_data_src_mac(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData); +dfp_read_field_def_sdl_data(<<26, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData) -> d_field_sdl_data_dst_mac(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData); +dfp_read_field_def_sdl_data(<<32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData) -> d_field_sdl_data_is_p2p(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData); +dfp_read_field_def_sdl_data(<<40, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData) -> d_field_sdl_data_ttl(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData); +dfp_read_field_def_sdl_data(<<50, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData) -> d_field_sdl_data_data(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData); +dfp_read_field_def_sdl_data(<<58, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData) -> d_field_sdl_data_session_token(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData); +dfp_read_field_def_sdl_data(<<>>, 0, 0, _, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, _) -> #sdl_data{network_id = F@_1, src_mac = F@_2, dst_mac = F@_3, is_p2p = F@_4, ttl = F@_5, data = F@_6, session_token = F@_7}; +dfp_read_field_def_sdl_data(Other, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData) -> dg_read_field_def_sdl_data(Other, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData). -dg_read_field_def_sdl_stun_reply(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) when N < 32 - 7 -> dg_read_field_def_sdl_stun_reply(Rest, N + 7, X bsl N + Acc, F, F@_1, TrUserData); -dg_read_field_def_sdl_stun_reply(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, TrUserData) -> +dg_read_field_def_sdl_data(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData) when N < 32 - 7 -> dg_read_field_def_sdl_data(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData); +dg_read_field_def_sdl_data(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData) -> Key = X bsl N + Acc, case Key of - 8 -> d_field_sdl_stun_reply_cookie(Rest, 0, 0, 0, F@_1, TrUserData); + 8 -> d_field_sdl_data_network_id(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData); + 18 -> d_field_sdl_data_src_mac(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData); + 26 -> d_field_sdl_data_dst_mac(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData); + 32 -> d_field_sdl_data_is_p2p(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData); + 40 -> d_field_sdl_data_ttl(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData); + 50 -> d_field_sdl_data_data(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData); + 58 -> d_field_sdl_data_session_token(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData); _ -> case Key band 7 of - 0 -> skip_varint_sdl_stun_reply(Rest, 0, 0, Key bsr 3, F@_1, TrUserData); - 1 -> skip_64_sdl_stun_reply(Rest, 0, 0, Key bsr 3, F@_1, TrUserData); - 2 -> skip_length_delimited_sdl_stun_reply(Rest, 0, 0, Key bsr 3, F@_1, TrUserData); - 3 -> skip_group_sdl_stun_reply(Rest, 0, 0, Key bsr 3, F@_1, TrUserData); - 5 -> skip_32_sdl_stun_reply(Rest, 0, 0, Key bsr 3, F@_1, TrUserData) + 0 -> skip_varint_sdl_data(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData); + 1 -> skip_64_sdl_data(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData); + 2 -> skip_length_delimited_sdl_data(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData); + 3 -> skip_group_sdl_data(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData); + 5 -> skip_32_sdl_data(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData) end end; -dg_read_field_def_sdl_stun_reply(<<>>, 0, 0, _, F@_1, _) -> #sdl_stun_reply{cookie = F@_1}. +dg_read_field_def_sdl_data(<<>>, 0, 0, _, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, _) -> #sdl_data{network_id = F@_1, src_mac = F@_2, dst_mac = F@_3, is_p2p = F@_4, ttl = F@_5, data = F@_6, session_token = F@_7}. -d_field_sdl_stun_reply_cookie(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) when N < 57 -> d_field_sdl_stun_reply_cookie(Rest, N + 7, X bsl N + Acc, F, F@_1, TrUserData); -d_field_sdl_stun_reply_cookie(<<0:1, X:7, Rest/binary>>, N, Acc, F, _, TrUserData) -> +d_field_sdl_data_network_id(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData) when N < 57 -> d_field_sdl_data_network_id(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData); +d_field_sdl_data_network_id(<<0:1, X:7, Rest/binary>>, N, Acc, F, _, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData) -> {NewFValue, RestF} = {id((X bsl N + Acc) band 4294967295, TrUserData), Rest}, - dfp_read_field_def_sdl_stun_reply(RestF, 0, 0, F, NewFValue, TrUserData). + dfp_read_field_def_sdl_data(RestF, 0, 0, F, NewFValue, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData). -skip_varint_sdl_stun_reply(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> skip_varint_sdl_stun_reply(Rest, Z1, Z2, F, F@_1, TrUserData); -skip_varint_sdl_stun_reply(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> dfp_read_field_def_sdl_stun_reply(Rest, Z1, Z2, F, F@_1, TrUserData). - -skip_length_delimited_sdl_stun_reply(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) when N < 57 -> skip_length_delimited_sdl_stun_reply(Rest, N + 7, X bsl N + Acc, F, F@_1, TrUserData); -skip_length_delimited_sdl_stun_reply(<<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_sdl_stun_reply(Rest2, 0, 0, F, F@_1, TrUserData). - -skip_group_sdl_stun_reply(Bin, _, Z2, FNum, F@_1, TrUserData) -> - {_, Rest} = read_group(Bin, FNum), - dfp_read_field_def_sdl_stun_reply(Rest, 0, Z2, FNum, F@_1, TrUserData). - -skip_32_sdl_stun_reply(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> dfp_read_field_def_sdl_stun_reply(Rest, Z1, Z2, F, F@_1, TrUserData). - -skip_64_sdl_stun_reply(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> dfp_read_field_def_sdl_stun_reply(Rest, Z1, Z2, F, F@_1, TrUserData). - -decode_msg_sdl_data(Bin, TrUserData) -> dfp_read_field_def_sdl_data(Bin, 0, 0, 0, id(0, TrUserData), id(<<>>, TrUserData), id(<<>>, TrUserData), id(false, TrUserData), id(0, TrUserData), id(<<>>, TrUserData), TrUserData). - -dfp_read_field_def_sdl_data(<<8, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData) -> d_field_sdl_data_network_id(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData); -dfp_read_field_def_sdl_data(<<18, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData) -> d_field_sdl_data_src_mac(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData); -dfp_read_field_def_sdl_data(<<26, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData) -> d_field_sdl_data_dst_mac(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData); -dfp_read_field_def_sdl_data(<<32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData) -> d_field_sdl_data_is_p2p(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData); -dfp_read_field_def_sdl_data(<<40, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData) -> d_field_sdl_data_ttl(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData); -dfp_read_field_def_sdl_data(<<50, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData) -> d_field_sdl_data_data(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData); -dfp_read_field_def_sdl_data(<<>>, 0, 0, _, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, _) -> #sdl_data{network_id = F@_1, src_mac = F@_2, dst_mac = F@_3, is_p2p = F@_4, ttl = F@_5, data = F@_6}; -dfp_read_field_def_sdl_data(Other, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData) -> dg_read_field_def_sdl_data(Other, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData). - -dg_read_field_def_sdl_data(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData) when N < 32 - 7 -> dg_read_field_def_sdl_data(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData); -dg_read_field_def_sdl_data(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData) -> - Key = X bsl N + Acc, - case Key of - 8 -> d_field_sdl_data_network_id(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData); - 18 -> d_field_sdl_data_src_mac(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData); - 26 -> d_field_sdl_data_dst_mac(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData); - 32 -> d_field_sdl_data_is_p2p(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData); - 40 -> d_field_sdl_data_ttl(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData); - 50 -> d_field_sdl_data_data(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData); - _ -> - case Key band 7 of - 0 -> skip_varint_sdl_data(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData); - 1 -> skip_64_sdl_data(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData); - 2 -> skip_length_delimited_sdl_data(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData); - 3 -> skip_group_sdl_data(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData); - 5 -> skip_32_sdl_data(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData) - end - end; -dg_read_field_def_sdl_data(<<>>, 0, 0, _, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, _) -> #sdl_data{network_id = F@_1, src_mac = F@_2, dst_mac = F@_3, is_p2p = F@_4, ttl = F@_5, data = F@_6}. - -d_field_sdl_data_network_id(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData) when N < 57 -> d_field_sdl_data_network_id(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData); -d_field_sdl_data_network_id(<<0:1, X:7, Rest/binary>>, N, Acc, F, _, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData) -> - {NewFValue, RestF} = {id((X bsl N + Acc) band 4294967295, TrUserData), Rest}, - dfp_read_field_def_sdl_data(RestF, 0, 0, F, NewFValue, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData). - -d_field_sdl_data_src_mac(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData) when N < 57 -> d_field_sdl_data_src_mac(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData); -d_field_sdl_data_src_mac(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, _, F@_3, F@_4, F@_5, F@_6, TrUserData) -> +d_field_sdl_data_src_mac(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData) when N < 57 -> d_field_sdl_data_src_mac(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData); +d_field_sdl_data_src_mac(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, _, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData) -> {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, - dfp_read_field_def_sdl_data(RestF, 0, 0, F, F@_1, NewFValue, F@_3, F@_4, F@_5, F@_6, TrUserData). + dfp_read_field_def_sdl_data(RestF, 0, 0, F, F@_1, NewFValue, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData). -d_field_sdl_data_dst_mac(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData) when N < 57 -> d_field_sdl_data_dst_mac(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData); -d_field_sdl_data_dst_mac(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, _, F@_4, F@_5, F@_6, TrUserData) -> +d_field_sdl_data_dst_mac(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData) when N < 57 -> d_field_sdl_data_dst_mac(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData); +d_field_sdl_data_dst_mac(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, _, F@_4, F@_5, F@_6, F@_7, TrUserData) -> {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, - dfp_read_field_def_sdl_data(RestF, 0, 0, F, F@_1, F@_2, NewFValue, F@_4, F@_5, F@_6, TrUserData). + dfp_read_field_def_sdl_data(RestF, 0, 0, F, F@_1, F@_2, NewFValue, F@_4, F@_5, F@_6, F@_7, TrUserData). -d_field_sdl_data_is_p2p(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData) when N < 57 -> d_field_sdl_data_is_p2p(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData); -d_field_sdl_data_is_p2p(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, _, F@_5, F@_6, TrUserData) -> +d_field_sdl_data_is_p2p(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData) when N < 57 -> d_field_sdl_data_is_p2p(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData); +d_field_sdl_data_is_p2p(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, _, F@_5, F@_6, F@_7, TrUserData) -> {NewFValue, RestF} = {id(X bsl N + Acc =/= 0, TrUserData), Rest}, - dfp_read_field_def_sdl_data(RestF, 0, 0, F, F@_1, F@_2, F@_3, NewFValue, F@_5, F@_6, TrUserData). + dfp_read_field_def_sdl_data(RestF, 0, 0, F, F@_1, F@_2, F@_3, NewFValue, F@_5, F@_6, F@_7, TrUserData). -d_field_sdl_data_ttl(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData) when N < 57 -> d_field_sdl_data_ttl(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData); -d_field_sdl_data_ttl(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, _, F@_6, TrUserData) -> +d_field_sdl_data_ttl(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData) when N < 57 -> d_field_sdl_data_ttl(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData); +d_field_sdl_data_ttl(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, _, F@_6, F@_7, TrUserData) -> {NewFValue, RestF} = {id((X bsl N + Acc) band 4294967295, TrUserData), Rest}, - dfp_read_field_def_sdl_data(RestF, 0, 0, F, F@_1, F@_2, F@_3, F@_4, NewFValue, F@_6, TrUserData). + dfp_read_field_def_sdl_data(RestF, 0, 0, F, F@_1, F@_2, F@_3, F@_4, NewFValue, F@_6, F@_7, TrUserData). -d_field_sdl_data_data(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData) when N < 57 -> d_field_sdl_data_data(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData); -d_field_sdl_data_data(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, _, TrUserData) -> +d_field_sdl_data_data(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData) when N < 57 -> d_field_sdl_data_data(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData); +d_field_sdl_data_data(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, _, F@_7, TrUserData) -> {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, - dfp_read_field_def_sdl_data(RestF, 0, 0, F, F@_1, F@_2, F@_3, F@_4, F@_5, NewFValue, TrUserData). + dfp_read_field_def_sdl_data(RestF, 0, 0, F, F@_1, F@_2, F@_3, F@_4, F@_5, NewFValue, F@_7, TrUserData). -skip_varint_sdl_data(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData) -> skip_varint_sdl_data(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData); -skip_varint_sdl_data(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData) -> dfp_read_field_def_sdl_data(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData). +d_field_sdl_data_session_token(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData) when N < 57 -> + d_field_sdl_data_session_token(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData); +d_field_sdl_data_session_token(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, _, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, + dfp_read_field_def_sdl_data(RestF, 0, 0, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, NewFValue, TrUserData). -skip_length_delimited_sdl_data(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData) when N < 57 -> skip_length_delimited_sdl_data(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData); -skip_length_delimited_sdl_data(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData) -> +skip_varint_sdl_data(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData) -> skip_varint_sdl_data(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData); +skip_varint_sdl_data(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData) -> dfp_read_field_def_sdl_data(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData). + +skip_length_delimited_sdl_data(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData) when N < 57 -> + skip_length_delimited_sdl_data(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData); +skip_length_delimited_sdl_data(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData) -> Length = X bsl N + Acc, <<_:Length/binary, Rest2/binary>> = Rest, - dfp_read_field_def_sdl_data(Rest2, 0, 0, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData). + dfp_read_field_def_sdl_data(Rest2, 0, 0, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData). -skip_group_sdl_data(Bin, _, Z2, FNum, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData) -> +skip_group_sdl_data(Bin, _, Z2, FNum, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData) -> {_, Rest} = read_group(Bin, FNum), - dfp_read_field_def_sdl_data(Rest, 0, Z2, FNum, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData). + dfp_read_field_def_sdl_data(Rest, 0, Z2, FNum, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData). -skip_32_sdl_data(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData) -> dfp_read_field_def_sdl_data(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData). +skip_32_sdl_data(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData) -> dfp_read_field_def_sdl_data(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData). -skip_64_sdl_data(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData) -> dfp_read_field_def_sdl_data(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, TrUserData). +skip_64_sdl_data(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData) -> dfp_read_field_def_sdl_data(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData). decode_msg_sdl_register(Bin, TrUserData) -> dfp_read_field_def_sdl_register(Bin, 0, 0, 0, id(0, TrUserData), id(<<>>, TrUserData), id(<<>>, TrUserData), TrUserData). @@ -2532,56 +2133,63 @@ skip_32_sdl_stun_probe_reply(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, skip_64_sdl_stun_probe_reply(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_sdl_stun_probe_reply(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). -decode_msg_sdl_arp_request(Bin, TrUserData) -> dfp_read_field_def_sdl_arp_request(Bin, 0, 0, 0, id(0, TrUserData), id(0, TrUserData), TrUserData). +decode_msg_sdl_arp_request(Bin, TrUserData) -> dfp_read_field_def_sdl_arp_request(Bin, 0, 0, 0, id(0, TrUserData), id(0, TrUserData), id(<<>>, TrUserData), TrUserData). -dfp_read_field_def_sdl_arp_request(<<8, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> d_field_sdl_arp_request_network_id(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); -dfp_read_field_def_sdl_arp_request(<<16, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> d_field_sdl_arp_request_target_ip(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); -dfp_read_field_def_sdl_arp_request(<<>>, 0, 0, _, F@_1, F@_2, _) -> #sdl_arp_request{network_id = F@_1, target_ip = F@_2}; -dfp_read_field_def_sdl_arp_request(Other, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dg_read_field_def_sdl_arp_request(Other, Z1, Z2, F, F@_1, F@_2, TrUserData). +dfp_read_field_def_sdl_arp_request(<<8, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_sdl_arp_request_network_id(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); +dfp_read_field_def_sdl_arp_request(<<16, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_sdl_arp_request_target_ip(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); +dfp_read_field_def_sdl_arp_request(<<26, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_sdl_arp_request_session_token(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); +dfp_read_field_def_sdl_arp_request(<<>>, 0, 0, _, F@_1, F@_2, F@_3, _) -> #sdl_arp_request{network_id = F@_1, target_ip = F@_2, session_token = F@_3}; +dfp_read_field_def_sdl_arp_request(Other, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dg_read_field_def_sdl_arp_request(Other, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). -dg_read_field_def_sdl_arp_request(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 32 - 7 -> dg_read_field_def_sdl_arp_request(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); -dg_read_field_def_sdl_arp_request(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, F@_2, TrUserData) -> +dg_read_field_def_sdl_arp_request(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 32 - 7 -> dg_read_field_def_sdl_arp_request(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +dg_read_field_def_sdl_arp_request(<<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_sdl_arp_request_network_id(Rest, 0, 0, 0, F@_1, F@_2, TrUserData); - 16 -> d_field_sdl_arp_request_target_ip(Rest, 0, 0, 0, F@_1, F@_2, TrUserData); + 8 -> d_field_sdl_arp_request_network_id(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData); + 16 -> d_field_sdl_arp_request_target_ip(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData); + 26 -> d_field_sdl_arp_request_session_token(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData); _ -> case Key band 7 of - 0 -> skip_varint_sdl_arp_request(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); - 1 -> skip_64_sdl_arp_request(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); - 2 -> skip_length_delimited_sdl_arp_request(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); - 3 -> skip_group_sdl_arp_request(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); - 5 -> skip_32_sdl_arp_request(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData) + 0 -> skip_varint_sdl_arp_request(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); + 1 -> skip_64_sdl_arp_request(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); + 2 -> skip_length_delimited_sdl_arp_request(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); + 3 -> skip_group_sdl_arp_request(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); + 5 -> skip_32_sdl_arp_request(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData) end end; -dg_read_field_def_sdl_arp_request(<<>>, 0, 0, _, F@_1, F@_2, _) -> #sdl_arp_request{network_id = F@_1, target_ip = F@_2}. +dg_read_field_def_sdl_arp_request(<<>>, 0, 0, _, F@_1, F@_2, F@_3, _) -> #sdl_arp_request{network_id = F@_1, target_ip = F@_2, session_token = F@_3}. -d_field_sdl_arp_request_network_id(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> d_field_sdl_arp_request_network_id(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); -d_field_sdl_arp_request_network_id(<<0:1, X:7, Rest/binary>>, N, Acc, F, _, F@_2, TrUserData) -> +d_field_sdl_arp_request_network_id(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_sdl_arp_request_network_id(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +d_field_sdl_arp_request_network_id(<<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_sdl_arp_request(RestF, 0, 0, F, NewFValue, F@_2, TrUserData). + dfp_read_field_def_sdl_arp_request(RestF, 0, 0, F, NewFValue, F@_2, F@_3, TrUserData). -d_field_sdl_arp_request_target_ip(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> d_field_sdl_arp_request_target_ip(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); -d_field_sdl_arp_request_target_ip(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, _, TrUserData) -> +d_field_sdl_arp_request_target_ip(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_sdl_arp_request_target_ip(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +d_field_sdl_arp_request_target_ip(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, _, F@_3, TrUserData) -> {NewFValue, RestF} = {id((X bsl N + Acc) band 4294967295, TrUserData), Rest}, - dfp_read_field_def_sdl_arp_request(RestF, 0, 0, F, F@_1, NewFValue, TrUserData). + dfp_read_field_def_sdl_arp_request(RestF, 0, 0, F, F@_1, NewFValue, F@_3, TrUserData). -skip_varint_sdl_arp_request(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> skip_varint_sdl_arp_request(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); -skip_varint_sdl_arp_request(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dfp_read_field_def_sdl_arp_request(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). +d_field_sdl_arp_request_session_token(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_sdl_arp_request_session_token(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +d_field_sdl_arp_request_session_token(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, _, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, + dfp_read_field_def_sdl_arp_request(RestF, 0, 0, F, F@_1, F@_2, NewFValue, TrUserData). -skip_length_delimited_sdl_arp_request(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> skip_length_delimited_sdl_arp_request(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); -skip_length_delimited_sdl_arp_request(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) -> +skip_varint_sdl_arp_request(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> skip_varint_sdl_arp_request(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); +skip_varint_sdl_arp_request(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_sdl_arp_request(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). + +skip_length_delimited_sdl_arp_request(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> skip_length_delimited_sdl_arp_request(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +skip_length_delimited_sdl_arp_request(<<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_sdl_arp_request(Rest2, 0, 0, F, F@_1, F@_2, TrUserData). + dfp_read_field_def_sdl_arp_request(Rest2, 0, 0, F, F@_1, F@_2, F@_3, TrUserData). -skip_group_sdl_arp_request(Bin, _, Z2, FNum, F@_1, F@_2, TrUserData) -> +skip_group_sdl_arp_request(Bin, _, Z2, FNum, F@_1, F@_2, F@_3, TrUserData) -> {_, Rest} = read_group(Bin, FNum), - dfp_read_field_def_sdl_arp_request(Rest, 0, Z2, FNum, F@_1, F@_2, TrUserData). + dfp_read_field_def_sdl_arp_request(Rest, 0, Z2, FNum, F@_1, F@_2, F@_3, TrUserData). -skip_32_sdl_arp_request(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dfp_read_field_def_sdl_arp_request(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). +skip_32_sdl_arp_request(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_sdl_arp_request(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). -skip_64_sdl_arp_request(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dfp_read_field_def_sdl_arp_request(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). +skip_64_sdl_arp_request(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_sdl_arp_request(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). decode_msg_sdl_arp_response(Bin, TrUserData) -> dfp_read_field_def_sdl_arp_response(Bin, 0, 0, 0, id(0, TrUserData), id(0, TrUserData), id(<<>>, TrUserData), TrUserData). @@ -2709,8 +2317,6 @@ merge_msgs(Prev, New, MsgName, Opts) -> case MsgName of sdl_v4_info -> merge_msg_sdl_v4_info(Prev, New, TrUserData); sdl_v6_info -> merge_msg_sdl_v6_info(Prev, New, TrUserData); - sdl_dev_addr -> merge_msg_sdl_dev_addr(Prev, New, TrUserData); - sdl_empty -> merge_msg_sdl_empty(Prev, New, TrUserData); sdl_register_super -> merge_msg_sdl_register_super(Prev, New, TrUserData); sdl_register_super_ack -> merge_msg_sdl_register_super_ack(Prev, New, TrUserData); sdl_register_super_nak -> merge_msg_sdl_register_super_nak(Prev, New, TrUserData); @@ -2719,11 +2325,7 @@ merge_msgs(Prev, New, MsgName, Opts) -> sdl_nat_changed_event -> merge_msg_sdl_nat_changed_event(Prev, New, TrUserData); sdl_send_register_event -> merge_msg_sdl_send_register_event(Prev, New, TrUserData); sdl_network_shutdown_event -> merge_msg_sdl_network_shutdown_event(Prev, New, TrUserData); - sdl_change_network_command -> merge_msg_sdl_change_network_command(Prev, New, TrUserData); - sdl_command_ack -> merge_msg_sdl_command_ack(Prev, New, TrUserData); - sdl_flows -> merge_msg_sdl_flows(Prev, New, TrUserData); sdl_stun_request -> merge_msg_sdl_stun_request(Prev, New, TrUserData); - sdl_stun_reply -> merge_msg_sdl_stun_reply(Prev, New, TrUserData); sdl_data -> merge_msg_sdl_data(Prev, New, TrUserData); sdl_register -> merge_msg_sdl_register(Prev, New, TrUserData); sdl_register_ack -> merge_msg_sdl_register_ack(Prev, New, TrUserData); @@ -2759,94 +2361,55 @@ merge_msg_sdl_v6_info(#sdl_v6_info{port = PFport, v6 = PFv6}, #sdl_v6_info{port true -> NFv6 end}. --compile({nowarn_unused_function,merge_msg_sdl_dev_addr/3}). -merge_msg_sdl_dev_addr(#sdl_dev_addr{network_id = PFnetwork_id, mac = PFmac, net_addr = PFnet_addr, net_bit_len = PFnet_bit_len, network_domain = PFnetwork_domain}, - #sdl_dev_addr{network_id = NFnetwork_id, mac = NFmac, net_addr = NFnet_addr, net_bit_len = NFnet_bit_len, network_domain = NFnetwork_domain}, _) -> - #sdl_dev_addr{network_id = - if NFnetwork_id =:= undefined -> PFnetwork_id; - true -> NFnetwork_id - end, - mac = - if NFmac =:= undefined -> PFmac; - true -> NFmac - end, - net_addr = - if NFnet_addr =:= undefined -> PFnet_addr; - true -> NFnet_addr - end, - net_bit_len = - if NFnet_bit_len =:= undefined -> PFnet_bit_len; - true -> NFnet_bit_len - end, - network_domain = - if NFnetwork_domain =:= undefined -> PFnetwork_domain; - true -> NFnetwork_domain - end}. - --compile({nowarn_unused_function,merge_msg_sdl_empty/3}). -merge_msg_sdl_empty(_Prev, New, _TrUserData) -> New. - -compile({nowarn_unused_function,merge_msg_sdl_register_super/3}). -merge_msg_sdl_register_super(#sdl_register_super{version = PFversion, installed_channel = PFinstalled_channel, client_id = PFclient_id, dev_addr = PFdev_addr, pub_key = PFpub_key, token = PFtoken, network_code = PFnetwork_code, - hostname = PFhostname}, - #sdl_register_super{version = NFversion, installed_channel = NFinstalled_channel, client_id = NFclient_id, dev_addr = NFdev_addr, pub_key = NFpub_key, token = NFtoken, network_code = NFnetwork_code, hostname = NFhostname}, TrUserData) -> +merge_msg_sdl_register_super(#sdl_register_super{version = PFversion, client_id = PFclient_id, network_id = PFnetwork_id, mac = PFmac, ip = PFip, mask_len = PFmask_len, hostname = PFhostname, pub_key = PFpub_key, access_token = PFaccess_token}, + #sdl_register_super{version = NFversion, client_id = NFclient_id, network_id = NFnetwork_id, mac = NFmac, ip = NFip, mask_len = NFmask_len, hostname = NFhostname, pub_key = NFpub_key, access_token = NFaccess_token}, _) -> #sdl_register_super{version = if NFversion =:= undefined -> PFversion; true -> NFversion end, - installed_channel = - if NFinstalled_channel =:= undefined -> PFinstalled_channel; - true -> NFinstalled_channel - end, client_id = if NFclient_id =:= undefined -> PFclient_id; true -> NFclient_id end, - dev_addr = - if PFdev_addr /= undefined, NFdev_addr /= undefined -> merge_msg_sdl_dev_addr(PFdev_addr, NFdev_addr, TrUserData); - PFdev_addr == undefined -> NFdev_addr; - NFdev_addr == undefined -> PFdev_addr + network_id = + if NFnetwork_id =:= undefined -> PFnetwork_id; + true -> NFnetwork_id + end, + mac = + if NFmac =:= undefined -> PFmac; + true -> NFmac + end, + ip = + if NFip =:= undefined -> PFip; + true -> NFip + end, + mask_len = + if NFmask_len =:= undefined -> PFmask_len; + true -> NFmask_len + end, + hostname = + if NFhostname =:= undefined -> PFhostname; + true -> NFhostname end, pub_key = if NFpub_key =:= undefined -> PFpub_key; true -> NFpub_key end, - token = - if NFtoken =:= undefined -> PFtoken; - true -> NFtoken - end, - network_code = - if NFnetwork_code =:= undefined -> PFnetwork_code; - true -> NFnetwork_code - end, - hostname = - if NFhostname =:= undefined -> PFhostname; - true -> NFhostname + access_token = + if NFaccess_token =:= undefined -> PFaccess_token; + true -> NFaccess_token end}. -compile({nowarn_unused_function,merge_msg_sdl_register_super_ack/3}). -merge_msg_sdl_register_super_ack(#sdl_register_super_ack{dev_addr = PFdev_addr, aes_key = PFaes_key, upgrade_type = PFupgrade_type, upgrade_prompt = PFupgrade_prompt, upgrade_address = PFupgrade_address}, - #sdl_register_super_ack{dev_addr = NFdev_addr, aes_key = NFaes_key, upgrade_type = NFupgrade_type, upgrade_prompt = NFupgrade_prompt, upgrade_address = NFupgrade_address}, TrUserData) -> - #sdl_register_super_ack{dev_addr = - if PFdev_addr /= undefined, NFdev_addr /= undefined -> merge_msg_sdl_dev_addr(PFdev_addr, NFdev_addr, TrUserData); - PFdev_addr == undefined -> NFdev_addr; - NFdev_addr == undefined -> PFdev_addr - end, - aes_key = +merge_msg_sdl_register_super_ack(#sdl_register_super_ack{aes_key = PFaes_key, session_token = PFsession_token}, #sdl_register_super_ack{aes_key = NFaes_key, session_token = NFsession_token}, _) -> + #sdl_register_super_ack{aes_key = if NFaes_key =:= undefined -> PFaes_key; true -> NFaes_key end, - upgrade_type = - if NFupgrade_type =:= undefined -> PFupgrade_type; - true -> NFupgrade_type - end, - upgrade_prompt = - if NFupgrade_prompt =:= undefined -> PFupgrade_prompt; - true -> NFupgrade_prompt - end, - upgrade_address = - if NFupgrade_address =:= undefined -> PFupgrade_address; - true -> NFupgrade_address + session_token = + if NFsession_token =:= undefined -> PFsession_token; + true -> NFsession_token end}. -compile({nowarn_unused_function,merge_msg_sdl_register_super_nak/3}). @@ -2861,15 +2424,27 @@ merge_msg_sdl_register_super_nak(#sdl_register_super_nak{error_code = PFerror_co end}. -compile({nowarn_unused_function,merge_msg_sdl_query_info/3}). -merge_msg_sdl_query_info(#sdl_query_info{dst_mac = PFdst_mac}, #sdl_query_info{dst_mac = NFdst_mac}, _) -> - #sdl_query_info{dst_mac = +merge_msg_sdl_query_info(#sdl_query_info{network_id = PFnetwork_id, dst_mac = PFdst_mac, session_token = PFsession_token}, #sdl_query_info{network_id = NFnetwork_id, dst_mac = NFdst_mac, session_token = NFsession_token}, _) -> + #sdl_query_info{network_id = + if NFnetwork_id =:= undefined -> PFnetwork_id; + true -> NFnetwork_id + end, + dst_mac = if NFdst_mac =:= undefined -> PFdst_mac; true -> NFdst_mac + end, + session_token = + if NFsession_token =:= undefined -> PFsession_token; + true -> NFsession_token end}. -compile({nowarn_unused_function,merge_msg_sdl_peer_info/3}). -merge_msg_sdl_peer_info(#sdl_peer_info{dst_mac = PFdst_mac, v4_info = PFv4_info, v6_info = PFv6_info}, #sdl_peer_info{dst_mac = NFdst_mac, v4_info = NFv4_info, v6_info = NFv6_info}, TrUserData) -> - #sdl_peer_info{dst_mac = +merge_msg_sdl_peer_info(#sdl_peer_info{network_id = PFnetwork_id, dst_mac = PFdst_mac, v4_info = PFv4_info, v6_info = PFv6_info}, #sdl_peer_info{network_id = NFnetwork_id, dst_mac = NFdst_mac, v4_info = NFv4_info, v6_info = NFv6_info}, TrUserData) -> + #sdl_peer_info{network_id = + if NFnetwork_id =:= undefined -> PFnetwork_id; + true -> NFnetwork_id + end, + dst_mac = if NFdst_mac =:= undefined -> PFdst_mac; true -> NFdst_mac end, @@ -2885,8 +2460,12 @@ merge_msg_sdl_peer_info(#sdl_peer_info{dst_mac = PFdst_mac, v4_info = PFv4_info, end}. -compile({nowarn_unused_function,merge_msg_sdl_nat_changed_event/3}). -merge_msg_sdl_nat_changed_event(#sdl_nat_changed_event{mac = PFmac, ip = PFip}, #sdl_nat_changed_event{mac = NFmac, ip = NFip}, _) -> - #sdl_nat_changed_event{mac = +merge_msg_sdl_nat_changed_event(#sdl_nat_changed_event{network_id = PFnetwork_id, mac = PFmac, ip = PFip}, #sdl_nat_changed_event{network_id = NFnetwork_id, mac = NFmac, ip = NFip}, _) -> + #sdl_nat_changed_event{network_id = + if NFnetwork_id =:= undefined -> PFnetwork_id; + true -> NFnetwork_id + end, + mac = if NFmac =:= undefined -> PFmac; true -> NFmac end, @@ -2896,9 +2475,13 @@ merge_msg_sdl_nat_changed_event(#sdl_nat_changed_event{mac = PFmac, ip = PFip}, end}. -compile({nowarn_unused_function,merge_msg_sdl_send_register_event/3}). -merge_msg_sdl_send_register_event(#sdl_send_register_event{dst_mac = PFdst_mac, nat_ip = PFnat_ip, nat_port = PFnat_port, nat_type = PFnat_type, v6_info = PFv6_info}, - #sdl_send_register_event{dst_mac = NFdst_mac, nat_ip = NFnat_ip, nat_port = NFnat_port, nat_type = NFnat_type, v6_info = NFv6_info}, TrUserData) -> - #sdl_send_register_event{dst_mac = +merge_msg_sdl_send_register_event(#sdl_send_register_event{network_id = PFnetwork_id, dst_mac = PFdst_mac, nat_ip = PFnat_ip, nat_port = PFnat_port, nat_type = PFnat_type, v6_info = PFv6_info}, + #sdl_send_register_event{network_id = NFnetwork_id, dst_mac = NFdst_mac, nat_ip = NFnat_ip, nat_port = NFnat_port, nat_type = NFnat_type, v6_info = NFv6_info}, TrUserData) -> + #sdl_send_register_event{network_id = + if NFnetwork_id =:= undefined -> PFnetwork_id; + true -> NFnetwork_id + end, + dst_mac = if NFdst_mac =:= undefined -> PFdst_mac; true -> NFdst_mac end, @@ -2921,58 +2504,20 @@ merge_msg_sdl_send_register_event(#sdl_send_register_event{dst_mac = PFdst_mac, end}. -compile({nowarn_unused_function,merge_msg_sdl_network_shutdown_event/3}). -merge_msg_sdl_network_shutdown_event(#sdl_network_shutdown_event{message = PFmessage}, #sdl_network_shutdown_event{message = NFmessage}, _) -> - #sdl_network_shutdown_event{message = +merge_msg_sdl_network_shutdown_event(#sdl_network_shutdown_event{network_id = PFnetwork_id, message = PFmessage}, #sdl_network_shutdown_event{network_id = NFnetwork_id, message = NFmessage}, _) -> + #sdl_network_shutdown_event{network_id = + if NFnetwork_id =:= undefined -> PFnetwork_id; + true -> NFnetwork_id + end, + message = if NFmessage =:= undefined -> PFmessage; true -> NFmessage end}. --compile({nowarn_unused_function,merge_msg_sdl_change_network_command/3}). -merge_msg_sdl_change_network_command(#sdl_change_network_command{dev_addr = PFdev_addr, aes_key = PFaes_key}, #sdl_change_network_command{dev_addr = NFdev_addr, aes_key = NFaes_key}, TrUserData) -> - #sdl_change_network_command{dev_addr = - if PFdev_addr /= undefined, NFdev_addr /= undefined -> merge_msg_sdl_dev_addr(PFdev_addr, NFdev_addr, TrUserData); - PFdev_addr == undefined -> NFdev_addr; - NFdev_addr == undefined -> PFdev_addr - end, - aes_key = - if NFaes_key =:= undefined -> PFaes_key; - true -> NFaes_key - end}. - --compile({nowarn_unused_function,merge_msg_sdl_command_ack/3}). -merge_msg_sdl_command_ack(#sdl_command_ack{status = PFstatus, message = PFmessage}, #sdl_command_ack{status = NFstatus, message = NFmessage}, _) -> - #sdl_command_ack{status = - if NFstatus =:= undefined -> PFstatus; - true -> NFstatus - end, - message = - if NFmessage =:= undefined -> PFmessage; - true -> NFmessage - end}. - --compile({nowarn_unused_function,merge_msg_sdl_flows/3}). -merge_msg_sdl_flows(#sdl_flows{forward_num = PFforward_num, p2p_num = PFp2p_num, inbound_num = PFinbound_num}, #sdl_flows{forward_num = NFforward_num, p2p_num = NFp2p_num, inbound_num = NFinbound_num}, _) -> - #sdl_flows{forward_num = - if NFforward_num =:= undefined -> PFforward_num; - true -> NFforward_num - end, - p2p_num = - if NFp2p_num =:= undefined -> PFp2p_num; - true -> NFp2p_num - end, - inbound_num = - if NFinbound_num =:= undefined -> PFinbound_num; - true -> NFinbound_num - end}. - -compile({nowarn_unused_function,merge_msg_sdl_stun_request/3}). -merge_msg_sdl_stun_request(#sdl_stun_request{cookie = PFcookie, client_id = PFclient_id, network_id = PFnetwork_id, mac = PFmac, ip = PFip, nat_type = PFnat_type, v6_info = PFv6_info}, - #sdl_stun_request{cookie = NFcookie, client_id = NFclient_id, network_id = NFnetwork_id, mac = NFmac, ip = NFip, nat_type = NFnat_type, v6_info = NFv6_info}, TrUserData) -> - #sdl_stun_request{cookie = - if NFcookie =:= undefined -> PFcookie; - true -> NFcookie - end, - client_id = +merge_msg_sdl_stun_request(#sdl_stun_request{client_id = PFclient_id, network_id = PFnetwork_id, mac = PFmac, ip = PFip, nat_type = PFnat_type, v6_info = PFv6_info, session_token = PFsession_token}, + #sdl_stun_request{client_id = NFclient_id, network_id = NFnetwork_id, mac = NFmac, ip = NFip, nat_type = NFnat_type, v6_info = NFv6_info, session_token = NFsession_token}, TrUserData) -> + #sdl_stun_request{client_id = if NFclient_id =:= undefined -> PFclient_id; true -> NFclient_id end, @@ -2996,18 +2541,15 @@ merge_msg_sdl_stun_request(#sdl_stun_request{cookie = PFcookie, client_id = PFcl if PFv6_info /= undefined, NFv6_info /= undefined -> merge_msg_sdl_v6_info(PFv6_info, NFv6_info, TrUserData); PFv6_info == undefined -> NFv6_info; NFv6_info == undefined -> PFv6_info + end, + session_token = + if NFsession_token =:= undefined -> PFsession_token; + true -> NFsession_token end}. --compile({nowarn_unused_function,merge_msg_sdl_stun_reply/3}). -merge_msg_sdl_stun_reply(#sdl_stun_reply{cookie = PFcookie}, #sdl_stun_reply{cookie = NFcookie}, _) -> - #sdl_stun_reply{cookie = - if NFcookie =:= undefined -> PFcookie; - true -> NFcookie - end}. - -compile({nowarn_unused_function,merge_msg_sdl_data/3}). -merge_msg_sdl_data(#sdl_data{network_id = PFnetwork_id, src_mac = PFsrc_mac, dst_mac = PFdst_mac, is_p2p = PFis_p2p, ttl = PFttl, data = PFdata}, - #sdl_data{network_id = NFnetwork_id, src_mac = NFsrc_mac, dst_mac = NFdst_mac, is_p2p = NFis_p2p, ttl = NFttl, data = NFdata}, _) -> +merge_msg_sdl_data(#sdl_data{network_id = PFnetwork_id, src_mac = PFsrc_mac, dst_mac = PFdst_mac, is_p2p = PFis_p2p, ttl = PFttl, data = PFdata, session_token = PFsession_token}, + #sdl_data{network_id = NFnetwork_id, src_mac = NFsrc_mac, dst_mac = NFdst_mac, is_p2p = NFis_p2p, ttl = NFttl, data = NFdata, session_token = NFsession_token}, _) -> #sdl_data{network_id = if NFnetwork_id =:= undefined -> PFnetwork_id; true -> NFnetwork_id @@ -3031,6 +2573,10 @@ merge_msg_sdl_data(#sdl_data{network_id = PFnetwork_id, src_mac = PFsrc_mac, dst data = if NFdata =:= undefined -> PFdata; true -> NFdata + end, + session_token = + if NFsession_token =:= undefined -> PFsession_token; + true -> NFsession_token end}. -compile({nowarn_unused_function,merge_msg_sdl_register/3}). @@ -3090,7 +2636,7 @@ merge_msg_sdl_stun_probe_reply(#sdl_stun_probe_reply{cookie = PFcookie, port = P end}. -compile({nowarn_unused_function,merge_msg_sdl_arp_request/3}). -merge_msg_sdl_arp_request(#sdl_arp_request{network_id = PFnetwork_id, target_ip = PFtarget_ip}, #sdl_arp_request{network_id = NFnetwork_id, target_ip = NFtarget_ip}, _) -> +merge_msg_sdl_arp_request(#sdl_arp_request{network_id = PFnetwork_id, target_ip = PFtarget_ip, session_token = PFsession_token}, #sdl_arp_request{network_id = NFnetwork_id, target_ip = NFtarget_ip, session_token = NFsession_token}, _) -> #sdl_arp_request{network_id = if NFnetwork_id =:= undefined -> PFnetwork_id; true -> NFnetwork_id @@ -3098,6 +2644,10 @@ merge_msg_sdl_arp_request(#sdl_arp_request{network_id = PFnetwork_id, target_ip target_ip = if NFtarget_ip =:= undefined -> PFtarget_ip; true -> NFtarget_ip + end, + session_token = + if NFsession_token =:= undefined -> PFsession_token; + true -> NFsession_token end}. -compile({nowarn_unused_function,merge_msg_sdl_arp_response/3}). @@ -3128,8 +2678,6 @@ verify_msg(Msg, MsgName, Opts) -> case MsgName of sdl_v4_info -> v_msg_sdl_v4_info(Msg, [MsgName], TrUserData); sdl_v6_info -> v_msg_sdl_v6_info(Msg, [MsgName], TrUserData); - sdl_dev_addr -> v_msg_sdl_dev_addr(Msg, [MsgName], TrUserData); - sdl_empty -> v_msg_sdl_empty(Msg, [MsgName], TrUserData); sdl_register_super -> v_msg_sdl_register_super(Msg, [MsgName], TrUserData); sdl_register_super_ack -> v_msg_sdl_register_super_ack(Msg, [MsgName], TrUserData); sdl_register_super_nak -> v_msg_sdl_register_super_nak(Msg, [MsgName], TrUserData); @@ -3138,11 +2686,7 @@ verify_msg(Msg, MsgName, Opts) -> sdl_nat_changed_event -> v_msg_sdl_nat_changed_event(Msg, [MsgName], TrUserData); sdl_send_register_event -> v_msg_sdl_send_register_event(Msg, [MsgName], TrUserData); sdl_network_shutdown_event -> v_msg_sdl_network_shutdown_event(Msg, [MsgName], TrUserData); - sdl_change_network_command -> v_msg_sdl_change_network_command(Msg, [MsgName], TrUserData); - sdl_command_ack -> v_msg_sdl_command_ack(Msg, [MsgName], TrUserData); - sdl_flows -> v_msg_sdl_flows(Msg, [MsgName], TrUserData); sdl_stun_request -> v_msg_sdl_stun_request(Msg, [MsgName], TrUserData); - sdl_stun_reply -> v_msg_sdl_stun_reply(Msg, [MsgName], TrUserData); sdl_data -> v_msg_sdl_data(Msg, [MsgName], TrUserData); sdl_register -> v_msg_sdl_register(Msg, [MsgName], TrUserData); sdl_register_ack -> v_msg_sdl_register_ack(Msg, [MsgName], TrUserData); @@ -3189,83 +2733,47 @@ v_msg_sdl_v6_info(#sdl_v6_info{port = F1, v6 = F2}, Path, TrUserData) -> ok; v_msg_sdl_v6_info(X, Path, _TrUserData) -> mk_type_error({expected_msg, sdl_v6_info}, X, Path). --compile({nowarn_unused_function,v_submsg_sdl_dev_addr/3}). --dialyzer({nowarn_function,v_submsg_sdl_dev_addr/3}). -v_submsg_sdl_dev_addr(Msg, Path, TrUserData) -> v_msg_sdl_dev_addr(Msg, Path, TrUserData). - --compile({nowarn_unused_function,v_msg_sdl_dev_addr/3}). --dialyzer({nowarn_function,v_msg_sdl_dev_addr/3}). -v_msg_sdl_dev_addr(#sdl_dev_addr{network_id = F1, mac = F2, net_addr = F3, net_bit_len = F4, network_domain = F5}, Path, TrUserData) -> - if F1 == undefined -> ok; - true -> v_type_uint32(F1, [network_id | Path], TrUserData) - end, - if F2 == undefined -> ok; - true -> v_type_bytes(F2, [mac | Path], TrUserData) - end, - if F3 == undefined -> ok; - true -> v_type_uint32(F3, [net_addr | Path], TrUserData) - end, - if F4 == undefined -> ok; - true -> v_type_uint32(F4, [net_bit_len | Path], TrUserData) - end, - if F5 == undefined -> ok; - true -> v_type_string(F5, [network_domain | Path], TrUserData) - end, - ok; -v_msg_sdl_dev_addr(X, Path, _TrUserData) -> mk_type_error({expected_msg, sdl_dev_addr}, X, Path). - --compile({nowarn_unused_function,v_msg_sdl_empty/3}). --dialyzer({nowarn_function,v_msg_sdl_empty/3}). -v_msg_sdl_empty(#sdl_empty{}, _Path, _) -> ok; -v_msg_sdl_empty(X, Path, _TrUserData) -> mk_type_error({expected_msg, sdl_empty}, X, Path). - -compile({nowarn_unused_function,v_msg_sdl_register_super/3}). -dialyzer({nowarn_function,v_msg_sdl_register_super/3}). -v_msg_sdl_register_super(#sdl_register_super{version = F1, installed_channel = F2, client_id = F3, dev_addr = F4, pub_key = F5, token = F6, network_code = F7, hostname = F8}, Path, TrUserData) -> +v_msg_sdl_register_super(#sdl_register_super{version = F1, client_id = F2, network_id = F3, mac = F4, ip = F5, mask_len = F6, hostname = F7, pub_key = F8, access_token = F9}, Path, TrUserData) -> if F1 == undefined -> ok; true -> v_type_uint32(F1, [version | Path], TrUserData) end, if F2 == undefined -> ok; - true -> v_type_string(F2, [installed_channel | Path], TrUserData) + true -> v_type_string(F2, [client_id | Path], TrUserData) end, if F3 == undefined -> ok; - true -> v_type_string(F3, [client_id | Path], TrUserData) + true -> v_type_uint32(F3, [network_id | Path], TrUserData) end, if F4 == undefined -> ok; - true -> v_submsg_sdl_dev_addr(F4, [dev_addr | Path], TrUserData) + true -> v_type_bytes(F4, [mac | Path], TrUserData) end, if F5 == undefined -> ok; - true -> v_type_string(F5, [pub_key | Path], TrUserData) + true -> v_type_uint32(F5, [ip | Path], TrUserData) end, if F6 == undefined -> ok; - true -> v_type_string(F6, [token | Path], TrUserData) + true -> v_type_uint32(F6, [mask_len | Path], TrUserData) end, if F7 == undefined -> ok; - true -> v_type_string(F7, [network_code | Path], TrUserData) + true -> v_type_string(F7, [hostname | Path], TrUserData) end, if F8 == undefined -> ok; - true -> v_type_string(F8, [hostname | Path], TrUserData) + true -> v_type_string(F8, [pub_key | Path], TrUserData) + end, + if F9 == undefined -> ok; + true -> v_type_string(F9, [access_token | Path], TrUserData) end, ok; v_msg_sdl_register_super(X, Path, _TrUserData) -> mk_type_error({expected_msg, sdl_register_super}, X, Path). -compile({nowarn_unused_function,v_msg_sdl_register_super_ack/3}). -dialyzer({nowarn_function,v_msg_sdl_register_super_ack/3}). -v_msg_sdl_register_super_ack(#sdl_register_super_ack{dev_addr = F1, aes_key = F2, upgrade_type = F3, upgrade_prompt = F4, upgrade_address = F5}, Path, TrUserData) -> +v_msg_sdl_register_super_ack(#sdl_register_super_ack{aes_key = F1, session_token = F2}, Path, TrUserData) -> if F1 == undefined -> ok; - true -> v_submsg_sdl_dev_addr(F1, [dev_addr | Path], TrUserData) + true -> v_type_bytes(F1, [aes_key | Path], TrUserData) end, if F2 == undefined -> ok; - true -> v_type_bytes(F2, [aes_key | Path], TrUserData) - end, - if F3 == undefined -> ok; - true -> v_type_uint32(F3, [upgrade_type | Path], TrUserData) - end, - if F4 == undefined -> ok; - true -> v_type_string(F4, [upgrade_prompt | Path], TrUserData) - end, - if F5 == undefined -> ok; - true -> v_type_string(F5, [upgrade_address | Path], TrUserData) + true -> v_type_bytes(F2, [session_token | Path], TrUserData) end, ok; v_msg_sdl_register_super_ack(X, Path, _TrUserData) -> mk_type_error({expected_msg, sdl_register_super_ack}, X, Path). @@ -3284,148 +2792,118 @@ v_msg_sdl_register_super_nak(X, Path, _TrUserData) -> mk_type_error({expected_ms -compile({nowarn_unused_function,v_msg_sdl_query_info/3}). -dialyzer({nowarn_function,v_msg_sdl_query_info/3}). -v_msg_sdl_query_info(#sdl_query_info{dst_mac = F1}, Path, TrUserData) -> +v_msg_sdl_query_info(#sdl_query_info{network_id = F1, dst_mac = F2, session_token = F3}, Path, TrUserData) -> if F1 == undefined -> ok; - true -> v_type_bytes(F1, [dst_mac | Path], TrUserData) + true -> v_type_uint32(F1, [network_id | Path], TrUserData) + end, + if F2 == undefined -> ok; + true -> v_type_bytes(F2, [dst_mac | Path], TrUserData) + end, + if F3 == undefined -> ok; + true -> v_type_bytes(F3, [session_token | Path], TrUserData) end, ok; v_msg_sdl_query_info(X, Path, _TrUserData) -> mk_type_error({expected_msg, sdl_query_info}, X, Path). -compile({nowarn_unused_function,v_msg_sdl_peer_info/3}). -dialyzer({nowarn_function,v_msg_sdl_peer_info/3}). -v_msg_sdl_peer_info(#sdl_peer_info{dst_mac = F1, v4_info = F2, v6_info = F3}, Path, TrUserData) -> +v_msg_sdl_peer_info(#sdl_peer_info{network_id = F1, dst_mac = F2, v4_info = F3, v6_info = F4}, Path, TrUserData) -> if F1 == undefined -> ok; - true -> v_type_bytes(F1, [dst_mac | Path], TrUserData) + true -> v_type_uint32(F1, [network_id | Path], TrUserData) end, if F2 == undefined -> ok; - true -> v_submsg_sdl_v4_info(F2, [v4_info | Path], TrUserData) + true -> v_type_bytes(F2, [dst_mac | Path], TrUserData) end, if F3 == undefined -> ok; - true -> v_submsg_sdl_v6_info(F3, [v6_info | Path], TrUserData) + true -> v_submsg_sdl_v4_info(F3, [v4_info | Path], TrUserData) + end, + if F4 == undefined -> ok; + true -> v_submsg_sdl_v6_info(F4, [v6_info | Path], TrUserData) end, ok; v_msg_sdl_peer_info(X, Path, _TrUserData) -> mk_type_error({expected_msg, sdl_peer_info}, X, Path). -compile({nowarn_unused_function,v_msg_sdl_nat_changed_event/3}). -dialyzer({nowarn_function,v_msg_sdl_nat_changed_event/3}). -v_msg_sdl_nat_changed_event(#sdl_nat_changed_event{mac = F1, ip = F2}, Path, TrUserData) -> +v_msg_sdl_nat_changed_event(#sdl_nat_changed_event{network_id = F1, mac = F2, ip = F3}, Path, TrUserData) -> if F1 == undefined -> ok; - true -> v_type_bytes(F1, [mac | Path], TrUserData) + true -> v_type_uint32(F1, [network_id | Path], TrUserData) end, if F2 == undefined -> ok; - true -> v_type_uint32(F2, [ip | Path], TrUserData) + true -> v_type_bytes(F2, [mac | Path], TrUserData) + end, + if F3 == undefined -> ok; + true -> v_type_uint32(F3, [ip | Path], TrUserData) end, ok; v_msg_sdl_nat_changed_event(X, Path, _TrUserData) -> mk_type_error({expected_msg, sdl_nat_changed_event}, X, Path). -compile({nowarn_unused_function,v_msg_sdl_send_register_event/3}). -dialyzer({nowarn_function,v_msg_sdl_send_register_event/3}). -v_msg_sdl_send_register_event(#sdl_send_register_event{dst_mac = F1, nat_ip = F2, nat_port = F3, nat_type = F4, v6_info = F5}, Path, TrUserData) -> +v_msg_sdl_send_register_event(#sdl_send_register_event{network_id = F1, dst_mac = F2, nat_ip = F3, nat_port = F4, nat_type = F5, v6_info = F6}, Path, TrUserData) -> if F1 == undefined -> ok; - true -> v_type_bytes(F1, [dst_mac | Path], TrUserData) + true -> v_type_uint32(F1, [network_id | Path], TrUserData) end, if F2 == undefined -> ok; - true -> v_type_uint32(F2, [nat_ip | Path], TrUserData) + true -> v_type_bytes(F2, [dst_mac | Path], TrUserData) end, if F3 == undefined -> ok; - true -> v_type_uint32(F3, [nat_port | Path], TrUserData) + true -> v_type_uint32(F3, [nat_ip | Path], TrUserData) end, if F4 == undefined -> ok; - true -> v_type_uint32(F4, [nat_type | Path], TrUserData) + true -> v_type_uint32(F4, [nat_port | Path], TrUserData) end, if F5 == undefined -> ok; - true -> v_submsg_sdl_v6_info(F5, [v6_info | Path], TrUserData) + true -> v_type_uint32(F5, [nat_type | Path], TrUserData) + end, + if F6 == undefined -> ok; + true -> v_submsg_sdl_v6_info(F6, [v6_info | Path], TrUserData) end, ok; v_msg_sdl_send_register_event(X, Path, _TrUserData) -> mk_type_error({expected_msg, sdl_send_register_event}, X, Path). -compile({nowarn_unused_function,v_msg_sdl_network_shutdown_event/3}). -dialyzer({nowarn_function,v_msg_sdl_network_shutdown_event/3}). -v_msg_sdl_network_shutdown_event(#sdl_network_shutdown_event{message = F1}, Path, TrUserData) -> +v_msg_sdl_network_shutdown_event(#sdl_network_shutdown_event{network_id = F1, message = F2}, Path, TrUserData) -> if F1 == undefined -> ok; - true -> v_type_string(F1, [message | Path], TrUserData) - end, - ok; -v_msg_sdl_network_shutdown_event(X, Path, _TrUserData) -> mk_type_error({expected_msg, sdl_network_shutdown_event}, X, Path). - --compile({nowarn_unused_function,v_msg_sdl_change_network_command/3}). --dialyzer({nowarn_function,v_msg_sdl_change_network_command/3}). -v_msg_sdl_change_network_command(#sdl_change_network_command{dev_addr = F1, aes_key = F2}, Path, TrUserData) -> - if F1 == undefined -> ok; - true -> v_submsg_sdl_dev_addr(F1, [dev_addr | Path], TrUserData) - end, - if F2 == undefined -> ok; - true -> v_type_bytes(F2, [aes_key | Path], TrUserData) - end, - ok; -v_msg_sdl_change_network_command(X, Path, _TrUserData) -> mk_type_error({expected_msg, sdl_change_network_command}, X, Path). - --compile({nowarn_unused_function,v_msg_sdl_command_ack/3}). --dialyzer({nowarn_function,v_msg_sdl_command_ack/3}). -v_msg_sdl_command_ack(#sdl_command_ack{status = F1, message = F2}, Path, TrUserData) -> - if F1 == undefined -> ok; - true -> v_type_bool(F1, [status | Path], TrUserData) + true -> v_type_uint32(F1, [network_id | Path], TrUserData) end, if F2 == undefined -> ok; true -> v_type_string(F2, [message | Path], TrUserData) end, ok; -v_msg_sdl_command_ack(X, Path, _TrUserData) -> mk_type_error({expected_msg, sdl_command_ack}, X, Path). - --compile({nowarn_unused_function,v_msg_sdl_flows/3}). --dialyzer({nowarn_function,v_msg_sdl_flows/3}). -v_msg_sdl_flows(#sdl_flows{forward_num = F1, p2p_num = F2, inbound_num = F3}, Path, TrUserData) -> - if F1 == undefined -> ok; - true -> v_type_uint32(F1, [forward_num | Path], TrUserData) - end, - if F2 == undefined -> ok; - true -> v_type_uint32(F2, [p2p_num | Path], TrUserData) - end, - if F3 == undefined -> ok; - true -> v_type_uint32(F3, [inbound_num | Path], TrUserData) - end, - ok; -v_msg_sdl_flows(X, Path, _TrUserData) -> mk_type_error({expected_msg, sdl_flows}, X, Path). +v_msg_sdl_network_shutdown_event(X, Path, _TrUserData) -> mk_type_error({expected_msg, sdl_network_shutdown_event}, X, Path). -compile({nowarn_unused_function,v_msg_sdl_stun_request/3}). -dialyzer({nowarn_function,v_msg_sdl_stun_request/3}). -v_msg_sdl_stun_request(#sdl_stun_request{cookie = F1, client_id = F2, network_id = F3, mac = F4, ip = F5, nat_type = F6, v6_info = F7}, Path, TrUserData) -> +v_msg_sdl_stun_request(#sdl_stun_request{client_id = F1, network_id = F2, mac = F3, ip = F4, nat_type = F5, v6_info = F6, session_token = F7}, Path, TrUserData) -> if F1 == undefined -> ok; - true -> v_type_uint32(F1, [cookie | Path], TrUserData) + true -> v_type_string(F1, [client_id | Path], TrUserData) end, if F2 == undefined -> ok; - true -> v_type_string(F2, [client_id | Path], TrUserData) + true -> v_type_uint32(F2, [network_id | Path], TrUserData) end, if F3 == undefined -> ok; - true -> v_type_uint32(F3, [network_id | Path], TrUserData) + true -> v_type_bytes(F3, [mac | Path], TrUserData) end, if F4 == undefined -> ok; - true -> v_type_bytes(F4, [mac | Path], TrUserData) + true -> v_type_uint32(F4, [ip | Path], TrUserData) end, if F5 == undefined -> ok; - true -> v_type_uint32(F5, [ip | Path], TrUserData) + true -> v_type_uint32(F5, [nat_type | Path], TrUserData) end, if F6 == undefined -> ok; - true -> v_type_uint32(F6, [nat_type | Path], TrUserData) + true -> v_submsg_sdl_v6_info(F6, [v6_info | Path], TrUserData) end, if F7 == undefined -> ok; - true -> v_submsg_sdl_v6_info(F7, [v6_info | Path], TrUserData) + true -> v_type_bytes(F7, [session_token | Path], TrUserData) end, ok; v_msg_sdl_stun_request(X, Path, _TrUserData) -> mk_type_error({expected_msg, sdl_stun_request}, X, Path). --compile({nowarn_unused_function,v_msg_sdl_stun_reply/3}). --dialyzer({nowarn_function,v_msg_sdl_stun_reply/3}). -v_msg_sdl_stun_reply(#sdl_stun_reply{cookie = F1}, Path, TrUserData) -> - if F1 == undefined -> ok; - true -> v_type_uint32(F1, [cookie | Path], TrUserData) - end, - ok; -v_msg_sdl_stun_reply(X, Path, _TrUserData) -> mk_type_error({expected_msg, sdl_stun_reply}, X, Path). - -compile({nowarn_unused_function,v_msg_sdl_data/3}). -dialyzer({nowarn_function,v_msg_sdl_data/3}). -v_msg_sdl_data(#sdl_data{network_id = F1, src_mac = F2, dst_mac = F3, is_p2p = F4, ttl = F5, data = F6}, Path, TrUserData) -> +v_msg_sdl_data(#sdl_data{network_id = F1, src_mac = F2, dst_mac = F3, is_p2p = F4, ttl = F5, data = F6, session_token = F7}, Path, TrUserData) -> if F1 == undefined -> ok; true -> v_type_uint32(F1, [network_id | Path], TrUserData) end, @@ -3444,6 +2922,9 @@ v_msg_sdl_data(#sdl_data{network_id = F1, src_mac = F2, dst_mac = F3, is_p2p = F if F6 == undefined -> ok; true -> v_type_bytes(F6, [data | Path], TrUserData) end, + if F7 == undefined -> ok; + true -> v_type_bytes(F7, [session_token | Path], TrUserData) + end, ok; v_msg_sdl_data(X, Path, _TrUserData) -> mk_type_error({expected_msg, sdl_data}, X, Path). @@ -3506,13 +2987,16 @@ v_msg_sdl_stun_probe_reply(X, Path, _TrUserData) -> mk_type_error({expected_msg, -compile({nowarn_unused_function,v_msg_sdl_arp_request/3}). -dialyzer({nowarn_function,v_msg_sdl_arp_request/3}). -v_msg_sdl_arp_request(#sdl_arp_request{network_id = F1, target_ip = F2}, Path, TrUserData) -> +v_msg_sdl_arp_request(#sdl_arp_request{network_id = F1, target_ip = F2, session_token = F3}, Path, TrUserData) -> if F1 == undefined -> ok; true -> v_type_uint32(F1, [network_id | Path], TrUserData) end, if F2 == undefined -> ok; true -> v_type_uint32(F2, [target_ip | Path], TrUserData) end, + if F3 == undefined -> ok; + true -> v_type_bytes(F3, [session_token | Path], TrUserData) + end, ok; v_msg_sdl_arp_request(X, Path, _TrUserData) -> mk_type_error({expected_msg, sdl_arp_request}, X, Path). @@ -3605,64 +3089,55 @@ get_msg_defs() -> #field{name = v4, fnum = 2, rnum = 3, type = bytes, occurrence = defaulty, opts = []}, #field{name = nat_type, fnum = 3, rnum = 4, type = uint32, occurrence = defaulty, opts = []}]}, {{msg, sdl_v6_info}, [#field{name = port, fnum = 1, rnum = 2, type = uint32, occurrence = defaulty, opts = []}, #field{name = v6, fnum = 2, rnum = 3, type = bytes, occurrence = defaulty, opts = []}]}, - {{msg, sdl_dev_addr}, - [#field{name = network_id, fnum = 1, rnum = 2, type = uint32, occurrence = defaulty, opts = []}, - #field{name = mac, fnum = 2, rnum = 3, type = bytes, occurrence = defaulty, opts = []}, - #field{name = net_addr, fnum = 3, rnum = 4, type = uint32, occurrence = defaulty, opts = []}, - #field{name = net_bit_len, fnum = 4, rnum = 5, type = uint32, occurrence = defaulty, opts = []}, - #field{name = network_domain, fnum = 5, rnum = 6, type = string, occurrence = defaulty, opts = []}]}, - {{msg, sdl_empty}, []}, {{msg, sdl_register_super}, [#field{name = version, fnum = 1, rnum = 2, type = uint32, occurrence = defaulty, opts = []}, - #field{name = installed_channel, fnum = 2, rnum = 3, type = string, occurrence = defaulty, opts = []}, - #field{name = client_id, fnum = 3, rnum = 4, type = string, occurrence = defaulty, opts = []}, - #field{name = dev_addr, fnum = 4, rnum = 5, type = {msg, sdl_dev_addr}, occurrence = defaulty, opts = []}, - #field{name = pub_key, fnum = 5, rnum = 6, type = string, occurrence = defaulty, opts = []}, - #field{name = token, fnum = 6, rnum = 7, type = string, occurrence = defaulty, opts = []}, - #field{name = network_code, fnum = 7, rnum = 8, type = string, occurrence = defaulty, opts = []}, - #field{name = hostname, fnum = 8, rnum = 9, type = string, occurrence = defaulty, opts = []}]}, - {{msg, sdl_register_super_ack}, - [#field{name = dev_addr, fnum = 1, rnum = 2, type = {msg, sdl_dev_addr}, occurrence = defaulty, opts = []}, - #field{name = aes_key, fnum = 2, rnum = 3, type = bytes, occurrence = defaulty, opts = []}, - #field{name = upgrade_type, fnum = 3, rnum = 4, type = uint32, occurrence = defaulty, opts = []}, - #field{name = upgrade_prompt, fnum = 4, rnum = 5, type = string, occurrence = optional, opts = []}, - #field{name = upgrade_address, fnum = 5, rnum = 6, type = string, occurrence = optional, opts = []}]}, - {{msg, sdl_register_super_nak}, [#field{name = error_code, fnum = 1, rnum = 2, type = uint32, occurrence = defaulty, opts = []}, #field{name = error_message, fnum = 2, rnum = 3, type = string, occurrence = defaulty, opts = []}]}, - {{msg, sdl_query_info}, [#field{name = dst_mac, fnum = 1, rnum = 2, type = bytes, occurrence = defaulty, opts = []}]}, - {{msg, sdl_peer_info}, - [#field{name = dst_mac, fnum = 1, rnum = 2, type = bytes, occurrence = defaulty, opts = []}, - #field{name = v4_info, fnum = 2, rnum = 3, type = {msg, sdl_v4_info}, occurrence = defaulty, opts = []}, - #field{name = v6_info, fnum = 3, rnum = 4, type = {msg, sdl_v6_info}, occurrence = optional, opts = []}]}, - {{msg, sdl_nat_changed_event}, [#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, sdl_send_register_event}, - [#field{name = dst_mac, fnum = 1, rnum = 2, type = bytes, occurrence = defaulty, opts = []}, - #field{name = nat_ip, fnum = 2, rnum = 3, 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 = v6_info, fnum = 5, rnum = 6, type = {msg, sdl_v6_info}, occurrence = optional, opts = []}]}, - {{msg, sdl_network_shutdown_event}, [#field{name = message, fnum = 1, rnum = 2, type = string, occurrence = defaulty, opts = []}]}, - {{msg, sdl_change_network_command}, [#field{name = dev_addr, fnum = 1, rnum = 2, type = {msg, sdl_dev_addr}, occurrence = defaulty, opts = []}, #field{name = aes_key, fnum = 2, rnum = 3, type = bytes, occurrence = defaulty, opts = []}]}, - {{msg, sdl_command_ack}, [#field{name = status, fnum = 1, rnum = 2, type = bool, occurrence = defaulty, opts = []}, #field{name = message, fnum = 2, rnum = 3, type = string, occurrence = optional, opts = []}]}, - {{msg, sdl_flows}, - [#field{name = forward_num, fnum = 1, rnum = 2, type = uint32, occurrence = defaulty, opts = []}, - #field{name = p2p_num, fnum = 2, rnum = 3, type = uint32, occurrence = defaulty, opts = []}, - #field{name = inbound_num, fnum = 3, rnum = 4, type = uint32, occurrence = defaulty, opts = []}]}, - {{msg, sdl_stun_request}, - [#field{name = cookie, fnum = 1, rnum = 2, type = uint32, occurrence = defaulty, opts = []}, #field{name = client_id, fnum = 2, rnum = 3, type = string, occurrence = defaulty, opts = []}, #field{name = network_id, fnum = 3, rnum = 4, type = uint32, occurrence = defaulty, opts = []}, #field{name = mac, fnum = 4, rnum = 5, type = bytes, occurrence = defaulty, opts = []}, #field{name = ip, fnum = 5, rnum = 6, type = uint32, occurrence = defaulty, opts = []}, - #field{name = nat_type, fnum = 6, rnum = 7, type = uint32, occurrence = defaulty, opts = []}, - #field{name = v6_info, fnum = 7, rnum = 8, type = {msg, sdl_v6_info}, occurrence = optional, opts = []}]}, - {{msg, sdl_stun_reply}, [#field{name = cookie, fnum = 1, rnum = 2, type = uint32, occurrence = defaulty, opts = []}]}, + #field{name = mask_len, fnum = 6, rnum = 7, type = uint32, occurrence = defaulty, opts = []}, + #field{name = hostname, fnum = 7, rnum = 8, type = string, occurrence = defaulty, opts = []}, + #field{name = pub_key, fnum = 8, rnum = 9, type = string, occurrence = defaulty, opts = []}, + #field{name = access_token, fnum = 9, rnum = 10, type = string, occurrence = defaulty, opts = []}]}, + {{msg, sdl_register_super_ack}, [#field{name = aes_key, fnum = 1, rnum = 2, type = bytes, occurrence = defaulty, opts = []}, #field{name = session_token, fnum = 2, rnum = 3, type = bytes, occurrence = defaulty, opts = []}]}, + {{msg, sdl_register_super_nak}, [#field{name = error_code, fnum = 1, rnum = 2, type = uint32, occurrence = defaulty, opts = []}, #field{name = error_message, fnum = 2, rnum = 3, type = string, occurrence = defaulty, opts = []}]}, + {{msg, sdl_query_info}, + [#field{name = network_id, fnum = 1, rnum = 2, type = uint32, occurrence = defaulty, opts = []}, + #field{name = dst_mac, fnum = 2, rnum = 3, type = bytes, occurrence = defaulty, opts = []}, + #field{name = session_token, fnum = 3, rnum = 4, type = bytes, occurrence = defaulty, opts = []}]}, + {{msg, sdl_peer_info}, + [#field{name = network_id, fnum = 1, rnum = 2, type = uint32, occurrence = defaulty, opts = []}, + #field{name = dst_mac, fnum = 2, rnum = 3, type = bytes, occurrence = defaulty, opts = []}, + #field{name = v4_info, fnum = 3, rnum = 4, type = {msg, sdl_v4_info}, occurrence = defaulty, opts = []}, + #field{name = v6_info, fnum = 4, rnum = 5, type = {msg, sdl_v6_info}, occurrence = optional, opts = []}]}, + {{msg, sdl_nat_changed_event}, + [#field{name = network_id, fnum = 1, rnum = 2, type = uint32, occurrence = defaulty, opts = []}, + #field{name = mac, fnum = 2, rnum = 3, type = bytes, occurrence = defaulty, opts = []}, + #field{name = ip, fnum = 3, rnum = 4, type = uint32, occurrence = defaulty, opts = []}]}, + {{msg, sdl_send_register_event}, + [#field{name = network_id, fnum = 1, rnum = 2, type = uint32, occurrence = defaulty, opts = []}, + #field{name = dst_mac, fnum = 2, rnum = 3, type = bytes, occurrence = defaulty, opts = []}, + #field{name = nat_ip, fnum = 3, rnum = 4, type = uint32, occurrence = defaulty, opts = []}, + #field{name = nat_port, fnum = 4, rnum = 5, type = uint32, occurrence = defaulty, opts = []}, + #field{name = nat_type, fnum = 5, rnum = 6, type = uint32, occurrence = defaulty, opts = []}, + #field{name = v6_info, fnum = 6, rnum = 7, type = {msg, sdl_v6_info}, occurrence = optional, opts = []}]}, + {{msg, sdl_network_shutdown_event}, [#field{name = network_id, fnum = 1, rnum = 2, type = uint32, occurrence = defaulty, opts = []}, #field{name = message, fnum = 2, rnum = 3, type = string, occurrence = defaulty, opts = []}]}, + {{msg, sdl_stun_request}, + [#field{name = client_id, fnum = 1, rnum = 2, type = string, occurrence = defaulty, opts = []}, + #field{name = network_id, fnum = 2, rnum = 3, type = uint32, occurrence = defaulty, opts = []}, + #field{name = mac, fnum = 3, rnum = 4, type = bytes, occurrence = defaulty, opts = []}, + #field{name = ip, fnum = 4, rnum = 5, type = uint32, occurrence = defaulty, opts = []}, + #field{name = nat_type, fnum = 5, rnum = 6, type = uint32, occurrence = defaulty, opts = []}, + #field{name = v6_info, fnum = 6, rnum = 7, type = {msg, sdl_v6_info}, occurrence = optional, opts = []}, + #field{name = session_token, fnum = 7, rnum = 8, type = bytes, occurrence = defaulty, opts = []}]}, {{msg, sdl_data}, [#field{name = network_id, fnum = 1, rnum = 2, type = uint32, occurrence = defaulty, opts = []}, #field{name = src_mac, fnum = 2, rnum = 3, type = bytes, occurrence = defaulty, opts = []}, #field{name = dst_mac, fnum = 3, rnum = 4, type = bytes, occurrence = defaulty, opts = []}, #field{name = is_p2p, fnum = 4, rnum = 5, type = bool, occurrence = defaulty, opts = []}, #field{name = ttl, fnum = 5, rnum = 6, type = uint32, occurrence = defaulty, opts = []}, - #field{name = data, fnum = 6, rnum = 7, type = bytes, occurrence = defaulty, opts = []}]}, + #field{name = data, fnum = 6, rnum = 7, type = bytes, occurrence = defaulty, opts = []}, + #field{name = session_token, fnum = 7, rnum = 8, type = bytes, occurrence = defaulty, opts = []}]}, {{msg, sdl_register}, [#field{name = network_id, fnum = 1, rnum = 2, type = uint32, occurrence = defaulty, opts = []}, #field{name = src_mac, fnum = 2, rnum = 3, type = bytes, occurrence = defaulty, opts = []}, @@ -3676,7 +3151,10 @@ get_msg_defs() -> [#field{name = cookie, fnum = 1, rnum = 2, type = uint32, occurrence = defaulty, opts = []}, #field{name = port, fnum = 2, rnum = 3, type = uint32, occurrence = defaulty, opts = []}, #field{name = ip, fnum = 3, rnum = 4, type = uint32, occurrence = defaulty, opts = []}]}, - {{msg, sdl_arp_request}, [#field{name = network_id, fnum = 1, rnum = 2, type = uint32, occurrence = defaulty, opts = []}, #field{name = target_ip, fnum = 2, rnum = 3, type = uint32, occurrence = defaulty, opts = []}]}, + {{msg, sdl_arp_request}, + [#field{name = network_id, fnum = 1, rnum = 2, type = uint32, occurrence = defaulty, opts = []}, + #field{name = target_ip, fnum = 2, rnum = 3, type = uint32, occurrence = defaulty, opts = []}, + #field{name = session_token, fnum = 3, rnum = 4, type = bytes, occurrence = defaulty, opts = []}]}, {{msg, sdl_arp_response}, [#field{name = network_id, fnum = 1, rnum = 2, type = uint32, occurrence = defaulty, opts = []}, #field{name = target_ip, fnum = 2, rnum = 3, type = uint32, occurrence = defaulty, opts = []}, @@ -3686,8 +3164,6 @@ get_msg_defs() -> get_msg_names() -> [sdl_v4_info, sdl_v6_info, - sdl_dev_addr, - sdl_empty, sdl_register_super, sdl_register_super_ack, sdl_register_super_nak, @@ -3696,11 +3172,7 @@ get_msg_names() -> sdl_nat_changed_event, sdl_send_register_event, sdl_network_shutdown_event, - sdl_change_network_command, - sdl_command_ack, - sdl_flows, sdl_stun_request, - sdl_stun_reply, sdl_data, sdl_register, sdl_register_ack, @@ -3716,8 +3188,6 @@ get_group_names() -> []. get_msg_or_group_names() -> [sdl_v4_info, sdl_v6_info, - sdl_dev_addr, - sdl_empty, sdl_register_super, sdl_register_super_ack, sdl_register_super_nak, @@ -3726,11 +3196,7 @@ get_msg_or_group_names() -> sdl_nat_changed_event, sdl_send_register_event, sdl_network_shutdown_event, - sdl_change_network_command, - sdl_command_ack, - sdl_flows, sdl_stun_request, - sdl_stun_reply, sdl_data, sdl_register, sdl_register_ack, @@ -3759,64 +3225,55 @@ find_msg_def(sdl_v4_info) -> #field{name = v4, fnum = 2, rnum = 3, type = bytes, occurrence = defaulty, opts = []}, #field{name = nat_type, fnum = 3, rnum = 4, type = uint32, occurrence = defaulty, opts = []}]; find_msg_def(sdl_v6_info) -> [#field{name = port, fnum = 1, rnum = 2, type = uint32, occurrence = defaulty, opts = []}, #field{name = v6, fnum = 2, rnum = 3, type = bytes, occurrence = defaulty, opts = []}]; -find_msg_def(sdl_dev_addr) -> - [#field{name = network_id, fnum = 1, rnum = 2, type = uint32, occurrence = defaulty, opts = []}, - #field{name = mac, fnum = 2, rnum = 3, type = bytes, occurrence = defaulty, opts = []}, - #field{name = net_addr, fnum = 3, rnum = 4, type = uint32, occurrence = defaulty, opts = []}, - #field{name = net_bit_len, fnum = 4, rnum = 5, type = uint32, occurrence = defaulty, opts = []}, - #field{name = network_domain, fnum = 5, rnum = 6, type = string, occurrence = defaulty, opts = []}]; -find_msg_def(sdl_empty) -> []; find_msg_def(sdl_register_super) -> [#field{name = version, fnum = 1, rnum = 2, type = uint32, occurrence = defaulty, opts = []}, - #field{name = installed_channel, fnum = 2, rnum = 3, type = string, occurrence = defaulty, opts = []}, - #field{name = client_id, fnum = 3, rnum = 4, type = string, occurrence = defaulty, opts = []}, - #field{name = dev_addr, fnum = 4, rnum = 5, type = {msg, sdl_dev_addr}, occurrence = defaulty, opts = []}, - #field{name = pub_key, fnum = 5, rnum = 6, type = string, occurrence = defaulty, opts = []}, - #field{name = token, fnum = 6, rnum = 7, type = string, occurrence = defaulty, opts = []}, - #field{name = network_code, fnum = 7, rnum = 8, type = string, occurrence = defaulty, opts = []}, - #field{name = hostname, fnum = 8, rnum = 9, type = string, occurrence = defaulty, opts = []}]; -find_msg_def(sdl_register_super_ack) -> - [#field{name = dev_addr, fnum = 1, rnum = 2, type = {msg, sdl_dev_addr}, occurrence = defaulty, opts = []}, - #field{name = aes_key, fnum = 2, rnum = 3, type = bytes, occurrence = defaulty, opts = []}, - #field{name = upgrade_type, fnum = 3, rnum = 4, type = uint32, occurrence = defaulty, opts = []}, - #field{name = upgrade_prompt, fnum = 4, rnum = 5, type = string, occurrence = optional, opts = []}, - #field{name = upgrade_address, fnum = 5, rnum = 6, type = string, occurrence = optional, opts = []}]; -find_msg_def(sdl_register_super_nak) -> [#field{name = error_code, fnum = 1, rnum = 2, type = uint32, occurrence = defaulty, opts = []}, #field{name = error_message, fnum = 2, rnum = 3, type = string, occurrence = defaulty, opts = []}]; -find_msg_def(sdl_query_info) -> [#field{name = dst_mac, fnum = 1, rnum = 2, type = bytes, occurrence = defaulty, opts = []}]; -find_msg_def(sdl_peer_info) -> - [#field{name = dst_mac, fnum = 1, rnum = 2, type = bytes, occurrence = defaulty, opts = []}, - #field{name = v4_info, fnum = 2, rnum = 3, type = {msg, sdl_v4_info}, occurrence = defaulty, opts = []}, - #field{name = v6_info, fnum = 3, rnum = 4, type = {msg, sdl_v6_info}, occurrence = optional, opts = []}]; -find_msg_def(sdl_nat_changed_event) -> [#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(sdl_send_register_event) -> - [#field{name = dst_mac, fnum = 1, rnum = 2, type = bytes, occurrence = defaulty, opts = []}, - #field{name = nat_ip, fnum = 2, rnum = 3, 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 = v6_info, fnum = 5, rnum = 6, type = {msg, sdl_v6_info}, occurrence = optional, opts = []}]; -find_msg_def(sdl_network_shutdown_event) -> [#field{name = message, fnum = 1, rnum = 2, type = string, occurrence = defaulty, opts = []}]; -find_msg_def(sdl_change_network_command) -> [#field{name = dev_addr, fnum = 1, rnum = 2, type = {msg, sdl_dev_addr}, occurrence = defaulty, opts = []}, #field{name = aes_key, fnum = 2, rnum = 3, type = bytes, occurrence = defaulty, opts = []}]; -find_msg_def(sdl_command_ack) -> [#field{name = status, fnum = 1, rnum = 2, type = bool, occurrence = defaulty, opts = []}, #field{name = message, fnum = 2, rnum = 3, type = string, occurrence = optional, opts = []}]; -find_msg_def(sdl_flows) -> - [#field{name = forward_num, fnum = 1, rnum = 2, type = uint32, occurrence = defaulty, opts = []}, - #field{name = p2p_num, fnum = 2, rnum = 3, type = uint32, occurrence = defaulty, opts = []}, - #field{name = inbound_num, fnum = 3, rnum = 4, type = uint32, occurrence = defaulty, opts = []}]; -find_msg_def(sdl_stun_request) -> - [#field{name = cookie, fnum = 1, rnum = 2, type = uint32, occurrence = defaulty, opts = []}, #field{name = client_id, fnum = 2, rnum = 3, type = string, occurrence = defaulty, opts = []}, #field{name = network_id, fnum = 3, rnum = 4, type = uint32, occurrence = defaulty, opts = []}, #field{name = mac, fnum = 4, rnum = 5, type = bytes, occurrence = defaulty, opts = []}, #field{name = ip, fnum = 5, rnum = 6, type = uint32, occurrence = defaulty, opts = []}, - #field{name = nat_type, fnum = 6, rnum = 7, type = uint32, occurrence = defaulty, opts = []}, - #field{name = v6_info, fnum = 7, rnum = 8, type = {msg, sdl_v6_info}, occurrence = optional, opts = []}]; -find_msg_def(sdl_stun_reply) -> [#field{name = cookie, fnum = 1, rnum = 2, type = uint32, occurrence = defaulty, opts = []}]; + #field{name = mask_len, fnum = 6, rnum = 7, type = uint32, occurrence = defaulty, opts = []}, + #field{name = hostname, fnum = 7, rnum = 8, type = string, occurrence = defaulty, opts = []}, + #field{name = pub_key, fnum = 8, rnum = 9, type = string, occurrence = defaulty, opts = []}, + #field{name = access_token, fnum = 9, rnum = 10, type = string, occurrence = defaulty, opts = []}]; +find_msg_def(sdl_register_super_ack) -> [#field{name = aes_key, fnum = 1, rnum = 2, type = bytes, occurrence = defaulty, opts = []}, #field{name = session_token, fnum = 2, rnum = 3, type = bytes, occurrence = defaulty, opts = []}]; +find_msg_def(sdl_register_super_nak) -> [#field{name = error_code, fnum = 1, rnum = 2, type = uint32, occurrence = defaulty, opts = []}, #field{name = error_message, fnum = 2, rnum = 3, type = string, occurrence = defaulty, opts = []}]; +find_msg_def(sdl_query_info) -> + [#field{name = network_id, fnum = 1, rnum = 2, type = uint32, occurrence = defaulty, opts = []}, + #field{name = dst_mac, fnum = 2, rnum = 3, type = bytes, occurrence = defaulty, opts = []}, + #field{name = session_token, fnum = 3, rnum = 4, type = bytes, occurrence = defaulty, opts = []}]; +find_msg_def(sdl_peer_info) -> + [#field{name = network_id, fnum = 1, rnum = 2, type = uint32, occurrence = defaulty, opts = []}, + #field{name = dst_mac, fnum = 2, rnum = 3, type = bytes, occurrence = defaulty, opts = []}, + #field{name = v4_info, fnum = 3, rnum = 4, type = {msg, sdl_v4_info}, occurrence = defaulty, opts = []}, + #field{name = v6_info, fnum = 4, rnum = 5, type = {msg, sdl_v6_info}, occurrence = optional, opts = []}]; +find_msg_def(sdl_nat_changed_event) -> + [#field{name = network_id, fnum = 1, rnum = 2, type = uint32, occurrence = defaulty, opts = []}, + #field{name = mac, fnum = 2, rnum = 3, type = bytes, occurrence = defaulty, opts = []}, + #field{name = ip, fnum = 3, rnum = 4, type = uint32, occurrence = defaulty, opts = []}]; +find_msg_def(sdl_send_register_event) -> + [#field{name = network_id, fnum = 1, rnum = 2, type = uint32, occurrence = defaulty, opts = []}, + #field{name = dst_mac, fnum = 2, rnum = 3, type = bytes, occurrence = defaulty, opts = []}, + #field{name = nat_ip, fnum = 3, rnum = 4, type = uint32, occurrence = defaulty, opts = []}, + #field{name = nat_port, fnum = 4, rnum = 5, type = uint32, occurrence = defaulty, opts = []}, + #field{name = nat_type, fnum = 5, rnum = 6, type = uint32, occurrence = defaulty, opts = []}, + #field{name = v6_info, fnum = 6, rnum = 7, type = {msg, sdl_v6_info}, occurrence = optional, opts = []}]; +find_msg_def(sdl_network_shutdown_event) -> [#field{name = network_id, fnum = 1, rnum = 2, type = uint32, occurrence = defaulty, opts = []}, #field{name = message, fnum = 2, rnum = 3, type = string, occurrence = defaulty, opts = []}]; +find_msg_def(sdl_stun_request) -> + [#field{name = client_id, fnum = 1, rnum = 2, type = string, occurrence = defaulty, opts = []}, + #field{name = network_id, fnum = 2, rnum = 3, type = uint32, occurrence = defaulty, opts = []}, + #field{name = mac, fnum = 3, rnum = 4, type = bytes, occurrence = defaulty, opts = []}, + #field{name = ip, fnum = 4, rnum = 5, type = uint32, occurrence = defaulty, opts = []}, + #field{name = nat_type, fnum = 5, rnum = 6, type = uint32, occurrence = defaulty, opts = []}, + #field{name = v6_info, fnum = 6, rnum = 7, type = {msg, sdl_v6_info}, occurrence = optional, opts = []}, + #field{name = session_token, fnum = 7, rnum = 8, type = bytes, occurrence = defaulty, opts = []}]; find_msg_def(sdl_data) -> [#field{name = network_id, fnum = 1, rnum = 2, type = uint32, occurrence = defaulty, opts = []}, #field{name = src_mac, fnum = 2, rnum = 3, type = bytes, occurrence = defaulty, opts = []}, #field{name = dst_mac, fnum = 3, rnum = 4, type = bytes, occurrence = defaulty, opts = []}, #field{name = is_p2p, fnum = 4, rnum = 5, type = bool, occurrence = defaulty, opts = []}, #field{name = ttl, fnum = 5, rnum = 6, type = uint32, occurrence = defaulty, opts = []}, - #field{name = data, fnum = 6, rnum = 7, type = bytes, occurrence = defaulty, opts = []}]; + #field{name = data, fnum = 6, rnum = 7, type = bytes, occurrence = defaulty, opts = []}, + #field{name = session_token, fnum = 7, rnum = 8, type = bytes, occurrence = defaulty, opts = []}]; find_msg_def(sdl_register) -> [#field{name = network_id, fnum = 1, rnum = 2, type = uint32, occurrence = defaulty, opts = []}, #field{name = src_mac, fnum = 2, rnum = 3, type = bytes, occurrence = defaulty, opts = []}, @@ -3830,7 +3287,10 @@ find_msg_def(sdl_stun_probe_reply) -> [#field{name = cookie, fnum = 1, rnum = 2, type = uint32, occurrence = defaulty, opts = []}, #field{name = port, fnum = 2, rnum = 3, type = uint32, occurrence = defaulty, opts = []}, #field{name = ip, fnum = 3, rnum = 4, type = uint32, occurrence = defaulty, opts = []}]; -find_msg_def(sdl_arp_request) -> [#field{name = network_id, fnum = 1, rnum = 2, type = uint32, occurrence = defaulty, opts = []}, #field{name = target_ip, fnum = 2, rnum = 3, type = uint32, occurrence = defaulty, opts = []}]; +find_msg_def(sdl_arp_request) -> + [#field{name = network_id, fnum = 1, rnum = 2, type = uint32, occurrence = defaulty, opts = []}, + #field{name = target_ip, fnum = 2, rnum = 3, type = uint32, occurrence = defaulty, opts = []}, + #field{name = session_token, fnum = 3, rnum = 4, type = bytes, occurrence = defaulty, opts = []}]; find_msg_def(sdl_arp_response) -> [#field{name = network_id, fnum = 1, rnum = 2, type = uint32, occurrence = defaulty, opts = []}, #field{name = target_ip, fnum = 2, rnum = 3, type = uint32, occurrence = defaulty, opts = []}, @@ -3895,8 +3355,6 @@ service_and_rpc_name_to_fqbins(S, R) -> error({gpb_error, {badservice_or_rpc, {S fqbin_to_msg_name(<<"SDLV4Info">>) -> sdl_v4_info; fqbin_to_msg_name(<<"SDLV6Info">>) -> sdl_v6_info; -fqbin_to_msg_name(<<"SDLDevAddr">>) -> sdl_dev_addr; -fqbin_to_msg_name(<<"SDLEmpty">>) -> sdl_empty; fqbin_to_msg_name(<<"SDLRegisterSuper">>) -> sdl_register_super; fqbin_to_msg_name(<<"SDLRegisterSuperAck">>) -> sdl_register_super_ack; fqbin_to_msg_name(<<"SDLRegisterSuperNak">>) -> sdl_register_super_nak; @@ -3905,11 +3363,7 @@ fqbin_to_msg_name(<<"SDLPeerInfo">>) -> sdl_peer_info; fqbin_to_msg_name(<<"SDLNatChangedEvent">>) -> sdl_nat_changed_event; fqbin_to_msg_name(<<"SDLSendRegisterEvent">>) -> sdl_send_register_event; fqbin_to_msg_name(<<"SDLNetworkShutdownEvent">>) -> sdl_network_shutdown_event; -fqbin_to_msg_name(<<"SDLChangeNetworkCommand">>) -> sdl_change_network_command; -fqbin_to_msg_name(<<"SDLCommandAck">>) -> sdl_command_ack; -fqbin_to_msg_name(<<"SDLFlows">>) -> sdl_flows; fqbin_to_msg_name(<<"SDLStunRequest">>) -> sdl_stun_request; -fqbin_to_msg_name(<<"SDLStunReply">>) -> sdl_stun_reply; fqbin_to_msg_name(<<"SDLData">>) -> sdl_data; fqbin_to_msg_name(<<"SDLRegister">>) -> sdl_register; fqbin_to_msg_name(<<"SDLRegisterAck">>) -> sdl_register_ack; @@ -3922,8 +3376,6 @@ fqbin_to_msg_name(E) -> error({gpb_error, {badmsg, E}}). msg_name_to_fqbin(sdl_v4_info) -> <<"SDLV4Info">>; msg_name_to_fqbin(sdl_v6_info) -> <<"SDLV6Info">>; -msg_name_to_fqbin(sdl_dev_addr) -> <<"SDLDevAddr">>; -msg_name_to_fqbin(sdl_empty) -> <<"SDLEmpty">>; msg_name_to_fqbin(sdl_register_super) -> <<"SDLRegisterSuper">>; msg_name_to_fqbin(sdl_register_super_ack) -> <<"SDLRegisterSuperAck">>; msg_name_to_fqbin(sdl_register_super_nak) -> <<"SDLRegisterSuperNak">>; @@ -3932,11 +3384,7 @@ msg_name_to_fqbin(sdl_peer_info) -> <<"SDLPeerInfo">>; msg_name_to_fqbin(sdl_nat_changed_event) -> <<"SDLNatChangedEvent">>; msg_name_to_fqbin(sdl_send_register_event) -> <<"SDLSendRegisterEvent">>; msg_name_to_fqbin(sdl_network_shutdown_event) -> <<"SDLNetworkShutdownEvent">>; -msg_name_to_fqbin(sdl_change_network_command) -> <<"SDLChangeNetworkCommand">>; -msg_name_to_fqbin(sdl_command_ack) -> <<"SDLCommandAck">>; -msg_name_to_fqbin(sdl_flows) -> <<"SDLFlows">>; msg_name_to_fqbin(sdl_stun_request) -> <<"SDLStunRequest">>; -msg_name_to_fqbin(sdl_stun_reply) -> <<"SDLStunReply">>; msg_name_to_fqbin(sdl_data) -> <<"SDLData">>; msg_name_to_fqbin(sdl_register) -> <<"SDLRegister">>; msg_name_to_fqbin(sdl_register_ack) -> <<"SDLRegisterAck">>; @@ -3985,12 +3433,7 @@ get_all_proto_names() -> ["sdlan_pb"]. get_msg_containment("sdlan_pb") -> [sdl_arp_request, sdl_arp_response, - sdl_change_network_command, - sdl_command_ack, sdl_data, - sdl_dev_addr, - sdl_empty, - sdl_flows, sdl_nat_changed_event, sdl_network_shutdown_event, sdl_peer_info, @@ -4003,7 +3446,6 @@ get_msg_containment("sdlan_pb") -> sdl_send_register_event, sdl_stun_probe, sdl_stun_probe_reply, - sdl_stun_reply, sdl_stun_request, sdl_v4_info, sdl_v6_info]; @@ -4029,23 +3471,17 @@ get_enum_containment(P) -> error({gpb_error, {badproto, P}}). get_proto_by_msg_name_as_fqbin(<<"SDLData">>) -> "sdlan_pb"; get_proto_by_msg_name_as_fqbin(<<"SDLRegisterSuper">>) -> "sdlan_pb"; get_proto_by_msg_name_as_fqbin(<<"SDLRegister">>) -> "sdlan_pb"; -get_proto_by_msg_name_as_fqbin(<<"SDLDevAddr">>) -> "sdlan_pb"; -get_proto_by_msg_name_as_fqbin(<<"SDLFlows">>) -> "sdlan_pb"; get_proto_by_msg_name_as_fqbin(<<"SDLStunRequest">>) -> "sdlan_pb"; get_proto_by_msg_name_as_fqbin(<<"SDLSendRegisterEvent">>) -> "sdlan_pb"; get_proto_by_msg_name_as_fqbin(<<"SDLNetworkShutdownEvent">>) -> "sdlan_pb"; get_proto_by_msg_name_as_fqbin(<<"SDLNatChangedEvent">>) -> "sdlan_pb"; -get_proto_by_msg_name_as_fqbin(<<"SDLChangeNetworkCommand">>) -> "sdlan_pb"; get_proto_by_msg_name_as_fqbin(<<"SDLArpRequest">>) -> "sdlan_pb"; get_proto_by_msg_name_as_fqbin(<<"SDLStunProbe">>) -> "sdlan_pb"; get_proto_by_msg_name_as_fqbin(<<"SDLArpResponse">>) -> "sdlan_pb"; -get_proto_by_msg_name_as_fqbin(<<"SDLStunReply">>) -> "sdlan_pb"; get_proto_by_msg_name_as_fqbin(<<"SDLStunProbeReply">>) -> "sdlan_pb"; -get_proto_by_msg_name_as_fqbin(<<"SDLEmpty">>) -> "sdlan_pb"; get_proto_by_msg_name_as_fqbin(<<"SDLRegisterSuperNak">>) -> "sdlan_pb"; get_proto_by_msg_name_as_fqbin(<<"SDLRegisterSuperAck">>) -> "sdlan_pb"; get_proto_by_msg_name_as_fqbin(<<"SDLRegisterAck">>) -> "sdlan_pb"; -get_proto_by_msg_name_as_fqbin(<<"SDLCommandAck">>) -> "sdlan_pb"; get_proto_by_msg_name_as_fqbin(<<"SDLV6Info">>) -> "sdlan_pb"; get_proto_by_msg_name_as_fqbin(<<"SDLV4Info">>) -> "sdlan_pb"; get_proto_by_msg_name_as_fqbin(<<"SDLQueryInfo">>) -> "sdlan_pb"; diff --git a/apps/sdlan/src/sdlan_register_worker.erl b/apps/sdlan/src/sdlan_register_worker.erl index 63dd049..081de24 100644 --- a/apps/sdlan/src/sdlan_register_worker.erl +++ b/apps/sdlan/src/sdlan_register_worker.erl @@ -32,63 +32,58 @@ start_link(Sock, Ip, Port, Packet) -> {ok, erlang:spawn_link(?MODULE, do_work, [Sock, Ip, Port, Packet])}. do_work(Sock, Ip, Port, <>) -> - #sdl_register_super{version = Version, client_id = ClientId, dev_addr = #sdl_dev_addr{mac = Mac}, network_code = NetworkCode, token = Token, pub_key = PubKey} = sdlan_pb:decode_msg(Body, sdl_register_super), + #sdl_register_super{ + version = Version, + client_id = ClientId, + network_id = NetworkId, + mac = Mac, + ip = Ip, + mask_len = MaskLen, + hostname = HostName, + pub_key = PubKey, + access_token = AccessToken + } = sdlan_pb:decode_msg(Body, sdl_register_super), %% 参数检查 - logger:debug("[sdlan_channel] client_id: ~p, public_key: ~p, token: ~p, network_code: ~p", [ClientId, PubKey, Token, NetworkCode]), + logger:debug("[sdlan_channel] client_id: ~p, ip: ~p, mac: ~p, host_name: ~p, access_token: ~p, network_id: ~p", [ClientId, Ip, Mac, HostName, AccessToken, NetworkId]), true = (Mac =/= <<>> andalso PubKey =/= <<>> andalso ClientId =/= <<>>), %% Mac地址不能是广播地址 true = not (sdlan_util:is_multicast_mac(Mac) orelse sdlan_util:is_broadcast_mac(Mac)), - AuthResult = if - Token /= <<>> -> - logger:debug("[sdlan_channel] auth token: ~p", [Token]), - sdlan_api:auth_token(ClientId, Token, Version); - NetworkCode /= <<>> -> - logger:debug("[sdlan_channel] auth network code: ~p", [NetworkCode]), - sdlan_api:auth_network_code(ClientId, NetworkCode, Version) - end, + Params = #{ + <<"network_id">> => NetworkId, + <<"client_id">> => ClientId, + <<"mac">> => Mac, + <<"ip">> => Ip, + <<"mask_len">> => MaskLen, + <<"hostname">> => HostName, + <<"access_token">> => AccessToken + }, - case AuthResult of - {ok, #{<<"result">> := #{<<"network_id">> := NetworkId, <<"upgrade_type">> := UpgradeType, <<"upgrade_prompt">> := UpgradePrompt, <<"upgrade_address">> := UpgradeAddress}}} when is_integer(NetworkId) -> - logger:debug("[sdlan_channel] client_id: ~p, mac: ~p, token: ~p, version: ~p, registerd, alloc network_id: ~p", [ClientId, sdlan_util:format_mac(Mac), Token, Version, NetworkId]), + case sdlan_api:auth_access_token(Params) of + {ok, #{<<"result">> := <<"ok">>}} -> %% 建立到network的对应关系 case sdlan_network:get_pid(NetworkId) of NetworkPid when is_pid(NetworkPid) -> - try sdlan_network:assign_ip_addr(NetworkPid, self(), ClientId, Mac) of - {ok, Domain, NetAddr, NetBitLen, AesKey} -> + try sdlan_network:attach(NetworkPid, self(), ClientId, Mac, Ip, HostName) of + {ok, AesKey, SessionToken} -> RsaPubKey = sdlan_cipher:rsa_pem_decode(PubKey), EncodedAesKey = rsa_encode(AesKey, RsaPubKey), RegisterSuperAck = sdlan_pb:encode_msg(#sdl_register_super_ack { - dev_addr = #sdl_dev_addr{ - network_id = NetworkId, - net_addr = NetAddr, - mac = Mac, - net_bit_len = NetBitLen, - network_domain = Domain - }, aes_key = EncodedAesKey, - upgrade_type = UpgradeType, - upgrade_prompt = UpgradePrompt, - upgrade_address = UpgradeAddress + session_token = SessionToken }), %% 发送确认信息 Reply = <>, gen_udp:send(Sock, Ip, Port, Reply), - logger:debug("[sdlan_channel] client_id: ~p, mac: ~p, alloc ip: ~p, register will send ack, aes_key: ~p, enc_aes_key: ~p", - [ClientId, sdlan_util:format_mac(Mac), sdlan_ipaddr:int_to_ipv4(NetAddr), AesKey, EncodedAesKey]), - %% 设置节点的在线状态 - Result = sdlan_api:node_online(ClientId, NetworkId, sdlan_ipaddr:int_to_ipv4(NetAddr)), - logger:debug("[sdlan_channel] client_id: ~p, set none online, result is: ~p", [ClientId, Result]), - - %% TODO 这里要处理session_token的逻辑 - ok; + Result = sdlan_api:node_online(ClientId, NetworkId, sdlan_ipaddr:int_to_ipv4(Ip)), + logger:debug("[sdlan_channel] client_id: ~p, set none online result is: ~p", [ClientId, Result]); {error, no_ip} -> - logger:warning("[sdlan_channel] client_id: ~p, token: ~p, register get error: no_ip", [ClientId, Token]), + logger:warning("[sdlan_channel] client_id: ~p, register get error: no_ip", [ClientId, Token]), gen_udp:send(Sock, Ip, Port, register_nak_reply(PacketId, ?NAK_NO_IP, <<"No Ip address">>)); {error, host_name_used} -> logger:warning("[sdlan_channel] client_id: ~p, token: ~p, register get error: host_name_used", [ClientId, Token]), @@ -103,14 +98,11 @@ do_work(Sock, Ip, Port, <>) -> logger:warning("[sdlan_channel] client_id: ~p, token: ~p, register get error: network not found", [ClientId, Token]), gen_udp:send(Sock, Ip, Port, register_nak_reply(PacketId, ?NAK_INTERNAL_FAULT, <<"Internal Error">>)) end; - {ok, #{<<"error">> := #{<<"code">> := 1, <<"message">> := Message}}} -> - logger:warning("[sdlan_channel] client_id: ~p, token: ~p, register get error: ~ts, error_code: 1", [ClientId, Token, Message]), - gen_udp:send(Sock, Ip, Port, register_nak_reply(PacketId, ?NAK_INVALID_TOKEN, Message)); - {ok, #{<<"error">> := #{<<"code">> := 2, <<"message">> := Message}}} -> - logger:warning("[sdlan_channel] client_id: ~p, token: ~p, register get error: ~p, error_code: 2", [ClientId, Token, Message]), - gen_udp:send(Sock, Ip, Port, register_nak_reply(PacketId, ?NAK_NODE_DISABLE, Message)); + {ok, #{<<"error">> := #{<<"code">> := Code, <<"message">> := Message}}} -> + logger:warning("[sdlan_channel] network_id: ~p, client_id: ~p, register get error: ~ts, error_code: ~p", [NetworkId, ClientId, Message, Code]), + gen_udp:send(Sock, Ip, Port, register_nak_reply(PacketId, Code, Message)); {error, Reason} -> - logger:warning("[sdlan_channel] client_id: ~p, token: ~p, register get error: ~p", [ClientId, Token, Reason]), + logger:warning("[sdlan_channel] network_id: ~p, client_id: ~p, register get error: ~p", [NetworkId, ClientId, Reason]), gen_udp:send(Sock, Ip, Port, register_nak_reply(PacketId, ?NAK_NETWORK_FAULT, <<"Network Error">>)) end, exit(normal). diff --git a/apps/sdlan/src/sdlan_stun.erl b/apps/sdlan/src/sdlan_stun.erl index 9060c89..e536f91 100644 --- a/apps/sdlan/src/sdlan_stun.erl +++ b/apps/sdlan/src/sdlan_stun.erl @@ -37,10 +37,10 @@ get_name(Id) when is_integer(Id) -> list_to_atom("sdlan_stun:" ++ integer_to_list(Id)). %% @doc Spawns the server and registers the local name (unique) --spec(start_link(Name :: atom(), Port :: integer()) -> +-spec(start_link(Name :: atom(), Socket :: inet:socket()) -> {ok, Pid :: pid()} | ignore | {error, Reason :: term()}). -start_link(Name, Port) when is_atom(Name), is_integer(Port) -> - gen_server:start_link({local, Name}, ?MODULE, [Port], []). +start_link(Name, Socket) when is_atom(Name) -> + gen_server:start_link({local, Name}, ?MODULE, [Socket], []). %%%=================================================================== %%% gen_server callbacks @@ -51,22 +51,10 @@ start_link(Name, Port) when is_atom(Name), is_integer(Port) -> -spec(init(Args :: term()) -> {ok, State :: #state{}} | {ok, State :: #state{}, timeout() | hibernate} | {stop, Reason :: term()} | ignore). -init([Port]) -> +init([Socket]) -> %% 需要提高进程的调度优先级 erlang:process_flag(priority, high), - Opts = [ - binary, - {reuseaddr, true}, - {reuseport, true}, - {active, true}, - {recbuf, 5 * 1024 * 1024}, - {sndbuf, 5 * 1024 * 1024} - ], - - {ok, Socket} = gen_udp:open(Port, Opts), inet_udp:controlling_process(Socket, self()), - logger:debug("[sdlan_stun] start at port: ~p", [Port]), - {ok, #state{socket = Socket}}. %% @private diff --git a/apps/sdlan/src/sdlan_stun_pool.erl b/apps/sdlan/src/sdlan_stun_pool.erl new file mode 100644 index 0000000..6596def --- /dev/null +++ b/apps/sdlan/src/sdlan_stun_pool.erl @@ -0,0 +1,134 @@ +%%%------------------------------------------------------------------- +%%% @author anlicheng +%%% @copyright (C) 2024, +%%% @doc +%%% +%%% @end +%%% Created : 09. 4月 2024 17:37 +%%%------------------------------------------------------------------- +-module(sdlan_stun_pool). +-feature(maybe_expr, enable). + +-author("anlicheng"). +-include("sdlan.hrl"). +-include("sdlan_pb.hrl"). + +-behaviour(gen_server). + +%% API +-export([start_link/0, send_packets/1]). + +%% gen_server callbacks +-export([init/1, handle_call/3, handle_cast/2, handle_info/2, terminate/2, code_change/3]). + +-define(SERVER, ?MODULE). + +-record(state, { + workers :: tuple(), + idx = 1, + num = 0 +}). + +%%%=================================================================== +%%% API +%%%=================================================================== + +send_packets(Packets) when is_list(Packets) -> + gen_server:cast(?SERVER, {send_packets, Packets}). + +%% @doc Spawns the server and registers the local name (unique) +-spec(start_link() -> + {ok, Pid :: pid()} | ignore | {error, Reason :: term()}). +start_link() -> + gen_server:start_link({local, ?SERVER}, ?MODULE, [], []). + +%%%=================================================================== +%%% gen_server callbacks +%%%=================================================================== + +%% @private +%% @doc Initializes the server +-spec(init(Args :: term()) -> + {ok, State :: #state{}} | {ok, State :: #state{}, timeout() | hibernate} | + {stop, Reason :: term()} | ignore). +init([]) -> + {ok, StunServerProps} = application:get_env(sdlan, stun_servers), + Port = proplists:get_value(port, StunServerProps), + AcceptorNums = proplists:get_value(acceptor_nums, StunServerProps), + + Opts = [ + binary, + {reuseaddr, true}, + {reuseport, true}, + {active, true}, + {recbuf, 5 * 1024 * 1024}, + {sndbuf, 5 * 1024 * 1024} + ], + + Workers = lists:map(fun(Id) -> + Name = sdlan_stun:get_name(Id), + {ok, Socket} = gen_udp:open(Port, Opts), + {ok, Pid} = sdlan_stun:start_link(Name, Socket), + {Socket, Pid} + end, lists:seq(1, AcceptorNums)), + {ok, #state{workers = list_to_tuple(Workers), idx = 1, num = length(Workers)}}. + +%% @private +%% @doc Handling call messages +-spec(handle_call(Request :: term(), From :: {pid(), Tag :: term()}, + State :: #state{}) -> + {reply, Reply :: term(), NewState :: #state{}} | + {reply, Reply :: term(), NewState :: #state{}, timeout() | hibernate} | + {noreply, NewState :: #state{}} | + {noreply, NewState :: #state{}, timeout() | hibernate} | + {stop, Reason :: term(), Reply :: term(), NewState :: #state{}} | + {stop, Reason :: term(), NewState :: #state{}}). +handle_call(_Request, _From, State = #state{}) -> + {reply, ok, State}. + +%% @private +%% @doc Handling cast messages +-spec(handle_cast(Request :: term(), State :: #state{}) -> + {noreply, NewState :: #state{}} | + {noreply, NewState :: #state{}, timeout() | hibernate} | + {stop, Reason :: term(), NewState :: #state{}}). + +%% 当前node下的转发,基于进程间的通讯 +handle_cast({send_packets, Packets}, State = #state{workers = Workers, idx = Idx, num = Num}) -> + {Sock, _} = element(Idx, Workers), + lists:foreach(fun({Ip, Port, Data}) -> gen_udp:send(Sock, Ip, Port, Data) end, Packets), + NewIdx = (Idx rem Num) + 1, + + {noreply, State#state{idx = NewIdx}}. + +%% @private +%% @doc Handling all non call/cast messages +-spec(handle_info(Info :: timeout() | term(), State :: #state{}) -> + {noreply, NewState :: #state{}} | + {noreply, NewState :: #state{}, timeout() | hibernate} | + {stop, Reason :: term(), NewState :: #state{}}). +handle_info(Info, State) -> + logger:error("[sdlan_stun] get a unknown message: ~p, channel will closed", [Info]), + {noreply, State}. + +%% @private +%% @doc This function is called by a gen_server when it is about to +%% terminate. It should be the opposite of Module:init/1 and do any +%% necessary cleaning up. When it returns, the gen_server terminates +%% with Reason. The return value is ignored. +-spec(terminate(Reason :: (normal | shutdown | {shutdown, term()} | term()), + State :: #state{}) -> term()). +terminate(_Reason, _State = #state{}) -> + ok. + +%% @private +%% @doc Convert process state when code is changed +-spec(code_change(OldVsn :: term() | {down, term()}, State :: #state{}, + Extra :: term()) -> + {ok, NewState :: #state{}} | {error, Reason :: term()}). +code_change(_OldVsn, State = #state{}, _Extra) -> + {ok, State}. + +%%%=================================================================== +%%% Internal functions +%%%=================================================================== \ No newline at end of file diff --git a/apps/sdlan/src/sdlan_stun_sup.erl b/apps/sdlan/src/sdlan_stun_sup.erl index b723330..2800db9 100644 --- a/apps/sdlan/src/sdlan_stun_sup.erl +++ b/apps/sdlan/src/sdlan_stun_sup.erl @@ -26,12 +26,16 @@ start_link() -> %% modules => modules()} % optional init([]) -> SupFlags = #{strategy => one_for_one, intensity => 1000, period => 3600}, - - {ok, StunServerProps} = application:get_env(sdlan, stun_servers), - Port = proplists:get_value(port, StunServerProps), - AcceptorNums = proplists:get_value(acceptor_nums, StunServerProps), - Specs = [ + #{ + id => sdlan_stun_pool, + start => {sdlan_stun_pool, start_link, []}, + restart => permanent, + shutdown => 2000, + type => worker, + modules => ['sdlan_stun_pool'] + }, + #{ id => sdlan_stun_port_assist, start => {sdlan_stun_port_assist, start_link, []}, @@ -50,16 +54,4 @@ init([]) -> } ], - StunSpecs = lists:map(fun(Id) -> - Name = sdlan_stun:get_name(Id), - #{ - id => Name, - start => {sdlan_stun, start_link, [Name, Port]}, - restart => permanent, - shutdown => 2000, - type => worker, - modules => ['sdlan_stun'] - } - end, lists:seq(1, AcceptorNums)), - - {ok, {SupFlags, Specs ++ StunSpecs}}. \ No newline at end of file + {ok, {SupFlags, Specs}}. \ No newline at end of file