From 32a7151f7d894180a7b70bdaa3121a2384653e3c Mon Sep 17 00:00:00 2001 From: anlicheng <244108715@qq.com> Date: Thu, 2 Apr 2026 14:26:48 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=A1=B9=E7=9B=AE=E7=BB=93?= =?UTF-8?q?=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- {apps/sdlan/include => include}/dns_proxy.hrl | 0 {apps/sdlan/include => include}/policy.hrl | 0 {apps/sdlan/include => include}/sdlan.hrl | 0 include/sdlan_pb.hrl | 245 + {apps/sdlan/priv => priv}/cert.pem | 0 {apps/sdlan/priv => priv}/key.pem | 0 .../sdlan/priv => priv}/public_key_sha256.sh | 0 proto/sdlan.proto | 6 + rebar.config | 51 +- rebar.lock | 26 +- .../sdlan/src => src}/dns_proxy/dns_cache.erl | 0 .../src => src}/dns_proxy/dns_handler.erl | 0 .../src => src}/dns_proxy/dns_handler_sup.erl | 0 .../dns_proxy/dns_pending_wheel.erl | 0 .../src => src}/dns_proxy/dns_proxy_sup.erl | 0 .../src => src}/dns_proxy/dns_resolver.erl | 0 .../src => src}/dns_proxy/dns_server.erl | 0 .../sdlan/src => src}/dns_proxy/dns_utils.erl | 0 .../src => src}/http_handler/api_handler.erl | 0 .../http_handler/binlog_handler.erl | 0 .../http_handler/http_protocol.erl | 0 .../http_handler/network_handler.erl | 0 .../src => src}/http_handler/node_handler.erl | 0 .../src => src}/http_handler/test_handler.erl | 0 {apps/sdlan/src => src}/model/network_bo.erl | 0 {apps/sdlan/src => src}/mysql/mysql_pool.erl | 0 .../src => src}/mysql/mysql_provider.erl | 0 .../policy/identity_policy_ets.erl | 0 .../policy/maxwell_redis_channel.erl | 0 .../policy/maxwell_redis_server.erl | 0 {apps/sdlan/src => src}/policy/rule_ets.erl | 0 .../src => src}/quic/sdlan_quic_channel.erl | 0 .../quic/sdlan_quic_channel_sup.erl | 0 .../src => src}/quic/sdlan_quic_server.erl | 0 {apps/sdlan/src => src}/sdlan.app.src | 0 {apps/sdlan/src => src}/sdlan_api.erl | 0 {apps/sdlan/src => src}/sdlan_app.erl | 0 {apps/sdlan/src => src}/sdlan_cipher.erl | 0 .../src => src}/sdlan_domain_regedit.erl | 0 .../src => src}/sdlan_hostname_regedit.erl | 0 {apps/sdlan/src => src}/sdlan_network.erl | 0 .../src => src}/sdlan_network_coordinator.erl | 0 {apps/sdlan/src => src}/sdlan_network_sup.erl | 0 src/sdlan_pb.erl | 4440 +++++++++++++++++ {apps/sdlan/src => src}/sdlan_stun.erl | 0 .../src => src}/sdlan_stun_peer_assist.erl | 0 .../src => src}/sdlan_stun_port_assist.erl | 0 {apps/sdlan/src => src}/sdlan_stun_sup.erl | 0 {apps/sdlan/src => src}/sdlan_sup.erl | 0 {apps/sdlan/src => src}/sdlan_sync_mysql.erl | 0 {apps/sdlan/src => src}/sdlan_util.erl | 0 {apps/sdlan/src => src}/test/quic_client.erl | 0 52 files changed, 4713 insertions(+), 55 deletions(-) rename {apps/sdlan/include => include}/dns_proxy.hrl (100%) rename {apps/sdlan/include => include}/policy.hrl (100%) rename {apps/sdlan/include => include}/sdlan.hrl (100%) create mode 100644 include/sdlan_pb.hrl rename {apps/sdlan/priv => priv}/cert.pem (100%) rename {apps/sdlan/priv => priv}/key.pem (100%) rename {apps/sdlan/priv => priv}/public_key_sha256.sh (100%) rename {apps/sdlan/src => src}/dns_proxy/dns_cache.erl (100%) rename {apps/sdlan/src => src}/dns_proxy/dns_handler.erl (100%) rename {apps/sdlan/src => src}/dns_proxy/dns_handler_sup.erl (100%) rename {apps/sdlan/src => src}/dns_proxy/dns_pending_wheel.erl (100%) rename {apps/sdlan/src => src}/dns_proxy/dns_proxy_sup.erl (100%) rename {apps/sdlan/src => src}/dns_proxy/dns_resolver.erl (100%) rename {apps/sdlan/src => src}/dns_proxy/dns_server.erl (100%) rename {apps/sdlan/src => src}/dns_proxy/dns_utils.erl (100%) rename {apps/sdlan/src => src}/http_handler/api_handler.erl (100%) rename {apps/sdlan/src => src}/http_handler/binlog_handler.erl (100%) rename {apps/sdlan/src => src}/http_handler/http_protocol.erl (100%) rename {apps/sdlan/src => src}/http_handler/network_handler.erl (100%) rename {apps/sdlan/src => src}/http_handler/node_handler.erl (100%) rename {apps/sdlan/src => src}/http_handler/test_handler.erl (100%) rename {apps/sdlan/src => src}/model/network_bo.erl (100%) rename {apps/sdlan/src => src}/mysql/mysql_pool.erl (100%) rename {apps/sdlan/src => src}/mysql/mysql_provider.erl (100%) rename {apps/sdlan/src => src}/policy/identity_policy_ets.erl (100%) rename {apps/sdlan/src => src}/policy/maxwell_redis_channel.erl (100%) rename {apps/sdlan/src => src}/policy/maxwell_redis_server.erl (100%) rename {apps/sdlan/src => src}/policy/rule_ets.erl (100%) rename {apps/sdlan/src => src}/quic/sdlan_quic_channel.erl (100%) rename {apps/sdlan/src => src}/quic/sdlan_quic_channel_sup.erl (100%) rename {apps/sdlan/src => src}/quic/sdlan_quic_server.erl (100%) rename {apps/sdlan/src => src}/sdlan.app.src (100%) rename {apps/sdlan/src => src}/sdlan_api.erl (100%) rename {apps/sdlan/src => src}/sdlan_app.erl (100%) rename {apps/sdlan/src => src}/sdlan_cipher.erl (100%) rename {apps/sdlan/src => src}/sdlan_domain_regedit.erl (100%) rename {apps/sdlan/src => src}/sdlan_hostname_regedit.erl (100%) rename {apps/sdlan/src => src}/sdlan_network.erl (100%) rename {apps/sdlan/src => src}/sdlan_network_coordinator.erl (100%) rename {apps/sdlan/src => src}/sdlan_network_sup.erl (100%) create mode 100644 src/sdlan_pb.erl rename {apps/sdlan/src => src}/sdlan_stun.erl (100%) rename {apps/sdlan/src => src}/sdlan_stun_peer_assist.erl (100%) rename {apps/sdlan/src => src}/sdlan_stun_port_assist.erl (100%) rename {apps/sdlan/src => src}/sdlan_stun_sup.erl (100%) rename {apps/sdlan/src => src}/sdlan_sup.erl (100%) rename {apps/sdlan/src => src}/sdlan_sync_mysql.erl (100%) rename {apps/sdlan/src => src}/sdlan_util.erl (100%) rename {apps/sdlan/src => src}/test/quic_client.erl (100%) diff --git a/apps/sdlan/include/dns_proxy.hrl b/include/dns_proxy.hrl similarity index 100% rename from apps/sdlan/include/dns_proxy.hrl rename to include/dns_proxy.hrl diff --git a/apps/sdlan/include/policy.hrl b/include/policy.hrl similarity index 100% rename from apps/sdlan/include/policy.hrl rename to include/policy.hrl diff --git a/apps/sdlan/include/sdlan.hrl b/include/sdlan.hrl similarity index 100% rename from apps/sdlan/include/sdlan.hrl rename to include/sdlan.hrl diff --git a/include/sdlan_pb.hrl b/include/sdlan_pb.hrl new file mode 100644 index 0000000..66b3d4f --- /dev/null +++ b/include/sdlan_pb.hrl @@ -0,0 +1,245 @@ +%% -*- coding: utf-8 -*- +%% Automatically generated, do not edit +%% Generated by gpb_compile version 4.21.7 + +-ifndef(sdlan_pb). +-define(sdlan_pb, true). + +-define(sdlan_pb_gpb_version, "4.21.7"). + + +-ifndef('HELLO_PB_H'). +-define('HELLO_PB_H', true). +-record('Hello', + { + }). +-endif. + +-ifndef('SDLV4INFO_PB_H'). +-define('SDLV4INFO_PB_H', true). +-record('SDLV4Info', + {port = 0 :: non_neg_integer() | undefined, % = 1, optional, 32 bits + v4 = <<>> :: iodata() | undefined, % = 2, optional + nat_type = 0 :: non_neg_integer() | undefined % = 3, optional, 32 bits + }). +-endif. + +-ifndef('SDLV6INFO_PB_H'). +-define('SDLV6INFO_PB_H', true). +-record('SDLV6Info', + {port = 0 :: non_neg_integer() | undefined, % = 1, optional, 32 bits + v6 = <<>> :: iodata() | undefined % = 2, optional + }). +-endif. + +-ifndef('SDLWELCOME_PB_H'). +-define('SDLWELCOME_PB_H', true). +-record('SDLWelcome', + {version = 0 :: non_neg_integer() | undefined, % = 1, optional, 32 bits + max_bidi_streams = 0 :: non_neg_integer() | undefined, % = 2, optional, 32 bits + max_packet_size = 0 :: non_neg_integer() | undefined, % = 3, optional, 32 bits + heartbeat_sec = 0 :: non_neg_integer() | undefined % = 4, optional, 32 bits + }). +-endif. + +-ifndef('SDLREGISTERSUPER_PB_H'). +-define('SDLREGISTERSUPER_PB_H', true). +-record('SDLRegisterSuper', + {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 + mask_len = 0 :: non_neg_integer() | undefined, % = 5, optional, 32 bits + hostname = <<>> :: unicode:chardata() | undefined, % = 6, optional + pub_key = <<>> :: unicode:chardata() | undefined, % = 7, optional + access_token = <<>> :: unicode:chardata() | undefined % = 8, optional + }). +-endif. + +-ifndef('SDLREGISTERSUPERACK_PB_H'). +-define('SDLREGISTERSUPERACK_PB_H', true). +-record('SDLRegisterSuperAck', + {algorithm = <<>> :: unicode:chardata() | undefined, % = 1, optional + key = <<>> :: iodata() | undefined, % = 2, optional + region_id = 0 :: non_neg_integer() | undefined, % = 3, optional, 32 bits + session_token = <<>> :: iodata() | undefined % = 4, optional + }). +-endif. + +-ifndef('SDLREGISTERSUPERNAK_PB_H'). +-define('SDLREGISTERSUPERNAK_PB_H', true). +-record('SDLRegisterSuperNak', + {error_code = 0 :: non_neg_integer() | undefined, % = 1, optional, 32 bits + error_message = <<>> :: unicode:chardata() | undefined % = 2, optional + }). +-endif. + +-ifndef('SDLQUERYINFO_PB_H'). +-define('SDLQUERYINFO_PB_H', true). +-record('SDLQueryInfo', + {dst_mac = <<>> :: iodata() | undefined % = 1, optional + }). +-endif. + +-ifndef('SDLPEERINFO_PB_H'). +-define('SDLPEERINFO_PB_H', true). +-record('SDLPeerInfo', + {dst_mac = <<>> :: iodata() | undefined, % = 1, optional + v4_info :: sdlan_pb:'SDLV4Info'() | undefined, % = 2, optional + v6_info :: sdlan_pb:'SDLV6Info'() | undefined % = 3, optional + }). +-endif. + +-ifndef('SDLARPREQUEST_PB_H'). +-define('SDLARPREQUEST_PB_H', true). +-record('SDLArpRequest', + {target_ip = 0 :: non_neg_integer() | undefined, % = 1, optional, 32 bits + origin_ip = 0 :: non_neg_integer() | undefined, % = 2, optional, 32 bits + context = <<>> :: iodata() | undefined % = 3, optional + }). +-endif. + +-ifndef('SDLARPRESPONSE_PB_H'). +-define('SDLARPRESPONSE_PB_H', true). +-record('SDLArpResponse', + {target_ip = 0 :: non_neg_integer() | undefined, % = 1, optional, 32 bits + target_mac = <<>> :: iodata() | undefined, % = 2, optional + origin_ip = 0 :: non_neg_integer() | undefined, % = 3, optional, 32 bits + context = <<>> :: iodata() | undefined % = 4, optional + }). +-endif. + +-ifndef('SDLPOLICYREQUEST_PB_H'). +-define('SDLPOLICYREQUEST_PB_H', true). +-record('SDLPolicyRequest', + {src_identity_id = 0 :: non_neg_integer() | undefined, % = 1, optional, 32 bits + dst_identity_id = 0 :: non_neg_integer() | undefined, % = 2, optional, 32 bits + version = 0 :: non_neg_integer() | undefined % = 3, optional, 32 bits + }). +-endif. + +-ifndef('SDLPOLICYRESPONSE_PB_H'). +-define('SDLPOLICYRESPONSE_PB_H', true). +-record('SDLPolicyResponse', + {src_identity_id = 0 :: non_neg_integer() | undefined, % = 1, optional, 32 bits + dst_identity_id = 0 :: non_neg_integer() | undefined, % = 2, optional, 32 bits + version = 0 :: non_neg_integer() | undefined, % = 3, optional, 32 bits + rules = <<>> :: iodata() | undefined % = 4, optional + }). +-endif. + +-ifndef('SDLEVENT.NATCHANGED_PB_H'). +-define('SDLEVENT.NATCHANGED_PB_H', true). +-record('SDLEvent.NatChanged', + {mac = <<>> :: iodata() | undefined, % = 1, optional + ip = 0 :: non_neg_integer() | undefined % = 2, optional, 32 bits + }). +-endif. + +-ifndef('SDLEVENT.SENDREGISTER_PB_H'). +-define('SDLEVENT.SENDREGISTER_PB_H', true). +-record('SDLEvent.SendRegister', + {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:'SDLV6Info'() | undefined % = 5, optional + }). +-endif. + +-ifndef('SDLEVENT.NETWORKSHUTDOWN_PB_H'). +-define('SDLEVENT.NETWORKSHUTDOWN_PB_H', true). +-record('SDLEvent.NetworkShutdown', + {message = <<>> :: unicode:chardata() | undefined % = 1, optional + }). +-endif. + +-ifndef('SDLEVENT.EXITNODECONTROL_PB_H'). +-define('SDLEVENT.EXITNODECONTROL_PB_H', true). +-record('SDLEvent.ExitNodeControl', + {action = 0 :: integer() | undefined, % = 1, optional, 32 bits + node_mac = <<>> :: iodata() | undefined, % = 2, optional + node_ip = 0 :: non_neg_integer() | undefined, % = 3, optional, 32 bits + remark = <<>> :: unicode:chardata() | undefined % = 4, optional + }). +-endif. + +-ifndef('SDLEVENT_PB_H'). +-define('SDLEVENT_PB_H', true). +-record('SDLEvent', + {event :: {nat_changed, sdlan_pb:'SDLEvent.NatChanged'()} | {send_register, sdlan_pb:'SDLEvent.SendRegister'()} | {shutdown, sdlan_pb:'SDLEvent.NetworkShutdown'()} | {exit_node, sdlan_pb:'SDLEvent.ExitNodeControl'()} | undefined % oneof + }). +-endif. + +-ifndef('SDLSTUNREQUEST_PB_H'). +-define('SDLSTUNREQUEST_PB_H', true). +-record('SDLStunRequest', + {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:'SDLV6Info'() | undefined, % = 6, optional + session_token = <<>> :: iodata() | undefined % = 7, optional + }). +-endif. + +-ifndef('SDLSTUNREPLY_PB_H'). +-define('SDLSTUNREPLY_PB_H', true). +-record('SDLStunReply', + { + }). +-endif. + +-ifndef('SDLDATA_PB_H'). +-define('SDLDATA_PB_H', true). +-record('SDLData', + {network_id = 0 :: non_neg_integer() | undefined, % = 1, optional, 32 bits + src_mac = <<>> :: iodata() | undefined, % = 2, optional + 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 + session_token = <<>> :: iodata() | undefined, % = 7, optional + identity_id = 0 :: non_neg_integer() | undefined % = 8, optional, 32 bits + }). +-endif. + +-ifndef('SDLSTUNPROBE_PB_H'). +-define('SDLSTUNPROBE_PB_H', true). +-record('SDLStunProbe', + {cookie = 0 :: non_neg_integer() | undefined, % = 1, optional, 32 bits + attr = 0 :: non_neg_integer() | undefined, % = 2, optional, 32 bits + step = 0 :: non_neg_integer() | undefined % = 3, optional, 32 bits + }). +-endif. + +-ifndef('SDLSTUNPROBEREPLY_PB_H'). +-define('SDLSTUNPROBEREPLY_PB_H', true). +-record('SDLStunProbeReply', + {cookie = 0 :: non_neg_integer() | undefined, % = 1, optional, 32 bits + step = 0 :: non_neg_integer() | undefined, % = 2, optional, 32 bits + port = 0 :: non_neg_integer() | undefined, % = 3, optional, 32 bits + ip = 0 :: non_neg_integer() | undefined % = 4, optional, 32 bits + }). +-endif. + +-ifndef('SDLREGISTER_PB_H'). +-define('SDLREGISTER_PB_H', true). +-record('SDLRegister', + {network_id = 0 :: non_neg_integer() | undefined, % = 1, optional, 32 bits + src_mac = <<>> :: iodata() | undefined, % = 2, optional + dst_mac = <<>> :: iodata() | undefined % = 3, optional + }). +-endif. + +-ifndef('SDLREGISTERACK_PB_H'). +-define('SDLREGISTERACK_PB_H', true). +-record('SDLRegisterAck', + {network_id = 0 :: non_neg_integer() | undefined, % = 1, optional, 32 bits + src_mac = <<>> :: iodata() | undefined, % = 2, optional + dst_mac = <<>> :: iodata() | undefined % = 3, optional + }). +-endif. + +-endif. diff --git a/apps/sdlan/priv/cert.pem b/priv/cert.pem similarity index 100% rename from apps/sdlan/priv/cert.pem rename to priv/cert.pem diff --git a/apps/sdlan/priv/key.pem b/priv/key.pem similarity index 100% rename from apps/sdlan/priv/key.pem rename to priv/key.pem diff --git a/apps/sdlan/priv/public_key_sha256.sh b/priv/public_key_sha256.sh similarity index 100% rename from apps/sdlan/priv/public_key_sha256.sh rename to priv/public_key_sha256.sh diff --git a/proto/sdlan.proto b/proto/sdlan.proto index 99f6f07..e91d8d9 100644 --- a/proto/sdlan.proto +++ b/proto/sdlan.proto @@ -1,7 +1,13 @@ syntax = "proto3"; +package mypkg; + // 基础公共类型定义 +message Hello { + +} + message SDLV4Info { uint32 port = 1; bytes v4 = 2; diff --git a/rebar.config b/rebar.config index 66bf18c..f7856a4 100644 --- a/rebar.config +++ b/rebar.config @@ -6,13 +6,20 @@ {rebar3_gpb_plugin, ".*", {git, "https://github.com/lrascao/rebar3_gpb_plugin.git", {tag, "2.23.8"}}} ]}. +% ====================== +% 核心:强制指定 proto 路径 + 输出到你的 apps/sdlan +% ====================== {gpb_opts, [ - {i, "proto"}, % proto 文件目录 - {module_name_suffix, "_pb"}, % 生成 xxx_pb.erl - {o_erl, "apps/sdlan/src"}, % .erl 输出到 src - {o_hrl, "apps/sdlan/include"}, % .hrl 输出到 include + {i, "proto"}, % proto 放在你的 app 里面 + {src_dirs, ["proto"]}, + recursive, + {module_name_suffix, "_pb"}, + {o_erl, "src"}, + {o_hrl, "include"}, {strings_as_binaries, true}, - type_specs + type_specs, + report, + verbose ]}. {deps, [ @@ -21,7 +28,6 @@ {jiffy, ".*", {git, "https://github.com/davisp/jiffy.git", {tag, "1.1.1"}}}, {cowboy, ".*", {git, "https://github.com/ninenines/cowboy.git", {tag, "2.12.0"}}}, {mysql, ".*", {git, "https://github.com/mysql-otp/mysql-otp", {tag, "1.8.0"}}}, - {gpb, ".*", {git, "https://github.com/tomas-abrahamsson/gpb.git", {tag, "4.21.1"}}}, {throttle, ".*", {git, "https://github.com/lambdaclass/throttle.git", {tag, "0.3.0"}}}, {dns_erlang, ".*", {git, "https://github.com/dnsimple/dns_erlang.git", {tag, "v4.4.0"}}}, {quicer, ".*", {git, "https://github.com/emqx/quic.git", {tag, "0.4.0"}}}, @@ -37,33 +43,10 @@ ]}. {relx, [{release, {sdlan, "0.1.0"}, - [sdlan, - sasl]}, - - {mode, dev}, - - %% automatically picked up if the files - %% exist but can be set manually, which - %% is required if the names aren't exactly - %% sys.config and vm.args - {sys_config, "./config/sys.config"}, - {vm_args, "./config/vm.args"} - - %% the .src form of the configuration files do - %% not require setting RELX_REPLACE_OS_VARS - %% {sys_config_src, "./config/sys.config.src"}, - %% {vm_args_src, "./config/vm.args.src"} -]}. - -{profiles, [{prod, [{relx, - [%% prod is the default mode when prod - %% profile is used, so does not have - %% to be explicitly included like this - {mode, prod} - - %% use minimal mode to exclude ERTS - %% {mode, minimal} - ] - }]}]}. + [sdlan, sasl]}, + {mode, dev}, + {sys_config, "./config/sys.config"}, + {vm_args, "./config/vm.args"}]}. +{profiles, [{prod, [{relx, [{mode, prod}]}]}]}. {rebar_packages_cdn, "https://hexpm.upyun.com"}. \ No newline at end of file diff --git a/rebar.lock b/rebar.lock index e43e3d7..72cdc87 100644 --- a/rebar.lock +++ b/rebar.lock @@ -1,5 +1,5 @@ {"1.2.0", -[{<<"base32">>,{pkg,<<"base32">>,<<"1.0.0">>},2}, +[{<<"base32">>,{pkg,<<"base32">>,<<"1.0.0">>},1}, {<<"certifi">>,{pkg,<<"certifi">>,<<"2.5.2">>},1}, {<<"cowboy">>, {git,"https://github.com/ninenines/cowboy.git", @@ -12,17 +12,8 @@ {<<"dns_erlang">>, {git,"https://github.com/dnsimple/dns_erlang.git", {ref,"e1149a2dd6f49c6560aa245bc6f3d40a5cbe70e1"}}, - 1}, - {<<"dns_proxy">>, - {git,"https://gitea.s5s8.com/anlicheng/dns_proxy.git", - {ref,"5ed832359e42ec99d148bf2ada1729b540017ab8"}}, 0}, {<<"fs">>,{pkg,<<"fs">>,<<"6.1.1">>},1}, - {<<"goldrush">>,{pkg,<<"goldrush">>,<<"0.1.9">>},1}, - {<<"gpb">>, - {git,"https://github.com/tomas-abrahamsson/gpb.git", - {ref,"a53bc4909b3dc5a78b996263d92db38fed9d4782"}}, - 0}, {<<"hackney">>, {git,"https://github.com/benoitc/hackney.git", {ref,"f3e9292db22c807e73f57a8422402d6b423ddf5f"}}, @@ -32,24 +23,17 @@ {git,"https://github.com/davisp/jiffy.git", {ref,"9ea1b35b6e60ba21dfd4adbd18e7916a831fd7d4"}}, 0}, - {<<"lager">>, - {git,"https://github.com/erlang-lager/lager.git", - {ref,"459a3b2cdd9eadd29e5a7ce5c43932f5ccd6eb88"}}, - 0}, {<<"metrics">>,{pkg,<<"metrics">>,<<"1.0.1">>},1}, {<<"mimerl">>,{pkg,<<"mimerl">>,<<"1.2.0">>},1}, {<<"mysql">>, {git,"https://github.com/mysql-otp/mysql-otp", {ref,"caf5ff96c677a8fe0ce6f4082bc036c8fd27dd62"}}, 0}, - {<<"parse_trans">>, - {git,"https://github.com/uwiger/parse_trans", - {ref,"6f3645afb43c7c57d61b54ef59aecab288ce1013"}}, - 0}, + {<<"parse_trans">>,{pkg,<<"parse_trans">>,<<"3.3.0">>},1}, {<<"pkt">>, {git,"https://github.com/msantos/pkt.git", {ref,"67a4a14f596fded5ad5f2d8f94318faa8ad2c288"}}, - 1}, + 0}, {<<"poolboy">>, {git,"https://github.com/devinus/poolboy.git", {ref,"3bb48a893ff5598f7c73731ac17545206d259fac"}}, @@ -78,10 +62,10 @@ {<<"base32">>, <<"1AB331F812FCC254C8F7D4348E1E5A6F2B9B32B7A260BF2BC3358E3BF14C841A">>}, {<<"certifi">>, <<"B7CFEAE9D2ED395695DD8201C57A2D019C0C43ECAF8B8BCB9320B40D6662F340">>}, {<<"fs">>, <<"9D147B944D60CFA48A349F12D06C8EE71128F610C90870BDF9A6773206452ED0">>}, - {<<"goldrush">>, <<"F06E5D5F1277DA5C413E84D5A2924174182FB108DABB39D5EC548B27424CD106">>}, {<<"idna">>, <<"1D038FB2E7668CE41FBF681D2C45902E52B3CB9E9C77B55334353B222C2EE50C">>}, {<<"metrics">>, <<"25F094DEA2CDA98213CECC3AEFF09E940299D950904393B2A29D191C346A8486">>}, {<<"mimerl">>, <<"67E2D3F571088D5CFD3E550C383094B47159F3EEE8FFA08E64106CDF5E981BE3">>}, + {<<"parse_trans">>, <<"09765507A3C7590A784615CFD421D101AEC25098D50B89D7AA1D66646BC571C1">>}, {<<"snabbkaffe">>, <<"9BE2F54F61FC6862391B666B2B5B76C3FA53598E2989A17CEF1B48CF347A8A63">>}, {<<"ssl_verify_fun">>, <<"CF344F5692C82D2CD7554F5EC8FD961548D4FD09E7D22F5B62482E5AEAEBD4B0">>}, {<<"unicode_util_compat">>, <<"8516502659002CEC19E244EBD90D312183064BE95025A319A6C7E89F4BCCD65B">>}]}, @@ -89,10 +73,10 @@ {<<"base32">>, <<"0449285348ED0C4CD83C7198E76C5FD5A0451C4EF18695B9FD43792A503E551A">>}, {<<"certifi">>, <<"3B3B5F36493004AC3455966991EAF6E768CE9884693D9968055AEEEB1E575040">>}, {<<"fs">>, <<"EF94E95FFE79916860649FED80AC62B04C322B0BB70F5128144C026B4D171F8B">>}, - {<<"goldrush">>, <<"99CB4128CFFCB3227581E5D4D803D5413FA643F4EB96523F77D9E6937D994CEB">>}, {<<"idna">>, <<"A02C8A1C4FD601215BB0B0324C8A6986749F807CE35F25449EC9E69758708122">>}, {<<"metrics">>, <<"69B09ADDDC4F74A40716AE54D140F93BEB0FB8978D8636EADED0C31B6F099F16">>}, {<<"mimerl">>, <<"F278585650AA581986264638EBF698F8BB19DF297F66AD91B18910DFC6E19323">>}, + {<<"parse_trans">>, <<"17EF63ABDE837AD30680EA7F857DD9E7CED9476CDD7B0394432AF4BFC241B960">>}, {<<"snabbkaffe">>, <<"70A98DF36AE756908D55B5770891D443D63C903833E3E87D544036E13D4FAC26">>}, {<<"ssl_verify_fun">>, <<"BDB0D2471F453C88FF3908E7686F86F9BE327D065CC1EC16FA4540197EA04680">>}, {<<"unicode_util_compat">>, <<"D48D002E15F5CC105A696CF2F1BBB3FC72B4B770A184D8420C8DB20DA2674B38">>}]} diff --git a/apps/sdlan/src/dns_proxy/dns_cache.erl b/src/dns_proxy/dns_cache.erl similarity index 100% rename from apps/sdlan/src/dns_proxy/dns_cache.erl rename to src/dns_proxy/dns_cache.erl diff --git a/apps/sdlan/src/dns_proxy/dns_handler.erl b/src/dns_proxy/dns_handler.erl similarity index 100% rename from apps/sdlan/src/dns_proxy/dns_handler.erl rename to src/dns_proxy/dns_handler.erl diff --git a/apps/sdlan/src/dns_proxy/dns_handler_sup.erl b/src/dns_proxy/dns_handler_sup.erl similarity index 100% rename from apps/sdlan/src/dns_proxy/dns_handler_sup.erl rename to src/dns_proxy/dns_handler_sup.erl diff --git a/apps/sdlan/src/dns_proxy/dns_pending_wheel.erl b/src/dns_proxy/dns_pending_wheel.erl similarity index 100% rename from apps/sdlan/src/dns_proxy/dns_pending_wheel.erl rename to src/dns_proxy/dns_pending_wheel.erl diff --git a/apps/sdlan/src/dns_proxy/dns_proxy_sup.erl b/src/dns_proxy/dns_proxy_sup.erl similarity index 100% rename from apps/sdlan/src/dns_proxy/dns_proxy_sup.erl rename to src/dns_proxy/dns_proxy_sup.erl diff --git a/apps/sdlan/src/dns_proxy/dns_resolver.erl b/src/dns_proxy/dns_resolver.erl similarity index 100% rename from apps/sdlan/src/dns_proxy/dns_resolver.erl rename to src/dns_proxy/dns_resolver.erl diff --git a/apps/sdlan/src/dns_proxy/dns_server.erl b/src/dns_proxy/dns_server.erl similarity index 100% rename from apps/sdlan/src/dns_proxy/dns_server.erl rename to src/dns_proxy/dns_server.erl diff --git a/apps/sdlan/src/dns_proxy/dns_utils.erl b/src/dns_proxy/dns_utils.erl similarity index 100% rename from apps/sdlan/src/dns_proxy/dns_utils.erl rename to src/dns_proxy/dns_utils.erl diff --git a/apps/sdlan/src/http_handler/api_handler.erl b/src/http_handler/api_handler.erl similarity index 100% rename from apps/sdlan/src/http_handler/api_handler.erl rename to src/http_handler/api_handler.erl diff --git a/apps/sdlan/src/http_handler/binlog_handler.erl b/src/http_handler/binlog_handler.erl similarity index 100% rename from apps/sdlan/src/http_handler/binlog_handler.erl rename to src/http_handler/binlog_handler.erl diff --git a/apps/sdlan/src/http_handler/http_protocol.erl b/src/http_handler/http_protocol.erl similarity index 100% rename from apps/sdlan/src/http_handler/http_protocol.erl rename to src/http_handler/http_protocol.erl diff --git a/apps/sdlan/src/http_handler/network_handler.erl b/src/http_handler/network_handler.erl similarity index 100% rename from apps/sdlan/src/http_handler/network_handler.erl rename to src/http_handler/network_handler.erl diff --git a/apps/sdlan/src/http_handler/node_handler.erl b/src/http_handler/node_handler.erl similarity index 100% rename from apps/sdlan/src/http_handler/node_handler.erl rename to src/http_handler/node_handler.erl diff --git a/apps/sdlan/src/http_handler/test_handler.erl b/src/http_handler/test_handler.erl similarity index 100% rename from apps/sdlan/src/http_handler/test_handler.erl rename to src/http_handler/test_handler.erl diff --git a/apps/sdlan/src/model/network_bo.erl b/src/model/network_bo.erl similarity index 100% rename from apps/sdlan/src/model/network_bo.erl rename to src/model/network_bo.erl diff --git a/apps/sdlan/src/mysql/mysql_pool.erl b/src/mysql/mysql_pool.erl similarity index 100% rename from apps/sdlan/src/mysql/mysql_pool.erl rename to src/mysql/mysql_pool.erl diff --git a/apps/sdlan/src/mysql/mysql_provider.erl b/src/mysql/mysql_provider.erl similarity index 100% rename from apps/sdlan/src/mysql/mysql_provider.erl rename to src/mysql/mysql_provider.erl diff --git a/apps/sdlan/src/policy/identity_policy_ets.erl b/src/policy/identity_policy_ets.erl similarity index 100% rename from apps/sdlan/src/policy/identity_policy_ets.erl rename to src/policy/identity_policy_ets.erl diff --git a/apps/sdlan/src/policy/maxwell_redis_channel.erl b/src/policy/maxwell_redis_channel.erl similarity index 100% rename from apps/sdlan/src/policy/maxwell_redis_channel.erl rename to src/policy/maxwell_redis_channel.erl diff --git a/apps/sdlan/src/policy/maxwell_redis_server.erl b/src/policy/maxwell_redis_server.erl similarity index 100% rename from apps/sdlan/src/policy/maxwell_redis_server.erl rename to src/policy/maxwell_redis_server.erl diff --git a/apps/sdlan/src/policy/rule_ets.erl b/src/policy/rule_ets.erl similarity index 100% rename from apps/sdlan/src/policy/rule_ets.erl rename to src/policy/rule_ets.erl diff --git a/apps/sdlan/src/quic/sdlan_quic_channel.erl b/src/quic/sdlan_quic_channel.erl similarity index 100% rename from apps/sdlan/src/quic/sdlan_quic_channel.erl rename to src/quic/sdlan_quic_channel.erl diff --git a/apps/sdlan/src/quic/sdlan_quic_channel_sup.erl b/src/quic/sdlan_quic_channel_sup.erl similarity index 100% rename from apps/sdlan/src/quic/sdlan_quic_channel_sup.erl rename to src/quic/sdlan_quic_channel_sup.erl diff --git a/apps/sdlan/src/quic/sdlan_quic_server.erl b/src/quic/sdlan_quic_server.erl similarity index 100% rename from apps/sdlan/src/quic/sdlan_quic_server.erl rename to src/quic/sdlan_quic_server.erl diff --git a/apps/sdlan/src/sdlan.app.src b/src/sdlan.app.src similarity index 100% rename from apps/sdlan/src/sdlan.app.src rename to src/sdlan.app.src diff --git a/apps/sdlan/src/sdlan_api.erl b/src/sdlan_api.erl similarity index 100% rename from apps/sdlan/src/sdlan_api.erl rename to src/sdlan_api.erl diff --git a/apps/sdlan/src/sdlan_app.erl b/src/sdlan_app.erl similarity index 100% rename from apps/sdlan/src/sdlan_app.erl rename to src/sdlan_app.erl diff --git a/apps/sdlan/src/sdlan_cipher.erl b/src/sdlan_cipher.erl similarity index 100% rename from apps/sdlan/src/sdlan_cipher.erl rename to src/sdlan_cipher.erl diff --git a/apps/sdlan/src/sdlan_domain_regedit.erl b/src/sdlan_domain_regedit.erl similarity index 100% rename from apps/sdlan/src/sdlan_domain_regedit.erl rename to src/sdlan_domain_regedit.erl diff --git a/apps/sdlan/src/sdlan_hostname_regedit.erl b/src/sdlan_hostname_regedit.erl similarity index 100% rename from apps/sdlan/src/sdlan_hostname_regedit.erl rename to src/sdlan_hostname_regedit.erl diff --git a/apps/sdlan/src/sdlan_network.erl b/src/sdlan_network.erl similarity index 100% rename from apps/sdlan/src/sdlan_network.erl rename to src/sdlan_network.erl diff --git a/apps/sdlan/src/sdlan_network_coordinator.erl b/src/sdlan_network_coordinator.erl similarity index 100% rename from apps/sdlan/src/sdlan_network_coordinator.erl rename to src/sdlan_network_coordinator.erl diff --git a/apps/sdlan/src/sdlan_network_sup.erl b/src/sdlan_network_sup.erl similarity index 100% rename from apps/sdlan/src/sdlan_network_sup.erl rename to src/sdlan_network_sup.erl diff --git a/src/sdlan_pb.erl b/src/sdlan_pb.erl new file mode 100644 index 0000000..dfa98a8 --- /dev/null +++ b/src/sdlan_pb.erl @@ -0,0 +1,4440 @@ +%% -*- coding: utf-8 -*- +%% @private +%% Automatically @generated, do not edit +%% Generated by gpb_compile version 4.21.7 +%% Version source: file +-module(sdlan_pb). + +-export([encode_msg/1, encode_msg/2, encode_msg/3]). +-export([decode_msg/2, decode_msg/3]). +-export([merge_msgs/2, merge_msgs/3, merge_msgs/4]). +-export([verify_msg/1, verify_msg/2, verify_msg/3]). +-export([get_msg_defs/0]). +-export([get_msg_names/0]). +-export([get_group_names/0]). +-export([get_msg_or_group_names/0]). +-export([get_enum_names/0]). +-export([find_msg_def/1, fetch_msg_def/1]). +-export([find_enum_def/1, fetch_enum_def/1]). +-export([enum_symbol_by_value/2, enum_value_by_symbol/2]). +-export([get_service_names/0]). +-export([get_service_def/1]). +-export([get_rpc_names/1]). +-export([find_rpc_def/2, fetch_rpc_def/2]). +-export([fqbin_to_service_name/1]). +-export([service_name_to_fqbin/1]). +-export([fqbins_to_service_and_rpc_name/2]). +-export([service_and_rpc_name_to_fqbins/2]). +-export([fqbin_to_msg_name/1]). +-export([msg_name_to_fqbin/1]). +-export([fqbin_to_enum_name/1]). +-export([enum_name_to_fqbin/1]). +-export([get_package_name/0]). +-export([uses_packages/0]). +-export([source_basename/0]). +-export([get_all_source_basenames/0]). +-export([get_all_proto_names/0]). +-export([get_msg_containment/1]). +-export([get_pkg_containment/1]). +-export([get_service_containment/1]). +-export([get_rpc_containment/1]). +-export([get_enum_containment/1]). +-export([get_proto_by_msg_name_as_fqbin/1]). +-export([get_proto_by_service_name_as_fqbin/1]). +-export([get_proto_by_enum_name_as_fqbin/1]). +-export([get_protos_by_pkg_name_as_fqbin/1]). +-export([gpb_version_as_string/0, gpb_version_as_list/0]). +-export([gpb_version_source/0]). + +-include("sdlan_pb.hrl"). +-include("gpb.hrl"). + +%% enumerated types + +-export_type([]). + +%% message types +-type 'Hello'() :: #'Hello'{}. + +-type 'SDLV4Info'() :: #'SDLV4Info'{}. + +-type 'SDLV6Info'() :: #'SDLV6Info'{}. + +-type 'SDLWelcome'() :: #'SDLWelcome'{}. + +-type 'SDLRegisterSuper'() :: #'SDLRegisterSuper'{}. + +-type 'SDLRegisterSuperAck'() :: #'SDLRegisterSuperAck'{}. + +-type 'SDLRegisterSuperNak'() :: #'SDLRegisterSuperNak'{}. + +-type 'SDLQueryInfo'() :: #'SDLQueryInfo'{}. + +-type 'SDLPeerInfo'() :: #'SDLPeerInfo'{}. + +-type 'SDLArpRequest'() :: #'SDLArpRequest'{}. + +-type 'SDLArpResponse'() :: #'SDLArpResponse'{}. + +-type 'SDLPolicyRequest'() :: #'SDLPolicyRequest'{}. + +-type 'SDLPolicyResponse'() :: #'SDLPolicyResponse'{}. + +-type 'SDLEvent.NatChanged'() :: #'SDLEvent.NatChanged'{}. + +-type 'SDLEvent.SendRegister'() :: #'SDLEvent.SendRegister'{}. + +-type 'SDLEvent.NetworkShutdown'() :: #'SDLEvent.NetworkShutdown'{}. + +-type 'SDLEvent.ExitNodeControl'() :: #'SDLEvent.ExitNodeControl'{}. + +-type 'SDLEvent'() :: #'SDLEvent'{}. + +-type 'SDLStunRequest'() :: #'SDLStunRequest'{}. + +-type 'SDLStunReply'() :: #'SDLStunReply'{}. + +-type 'SDLData'() :: #'SDLData'{}. + +-type 'SDLStunProbe'() :: #'SDLStunProbe'{}. + +-type 'SDLStunProbeReply'() :: #'SDLStunProbeReply'{}. + +-type 'SDLRegister'() :: #'SDLRegister'{}. + +-type 'SDLRegisterAck'() :: #'SDLRegisterAck'{}. + +-export_type(['Hello'/0, 'SDLV4Info'/0, 'SDLV6Info'/0, 'SDLWelcome'/0, 'SDLRegisterSuper'/0, 'SDLRegisterSuperAck'/0, 'SDLRegisterSuperNak'/0, 'SDLQueryInfo'/0, 'SDLPeerInfo'/0, 'SDLArpRequest'/0, 'SDLArpResponse'/0, 'SDLPolicyRequest'/0, 'SDLPolicyResponse'/0, 'SDLEvent.NatChanged'/0, 'SDLEvent.SendRegister'/0, 'SDLEvent.NetworkShutdown'/0, 'SDLEvent.ExitNodeControl'/0, 'SDLEvent'/0, 'SDLStunRequest'/0, 'SDLStunReply'/0, 'SDLData'/0, 'SDLStunProbe'/0, 'SDLStunProbeReply'/0, 'SDLRegister'/0, 'SDLRegisterAck'/0]). +-type '$msg_name'() :: 'Hello' | 'SDLV4Info' | 'SDLV6Info' | 'SDLWelcome' | 'SDLRegisterSuper' | 'SDLRegisterSuperAck' | 'SDLRegisterSuperNak' | 'SDLQueryInfo' | 'SDLPeerInfo' | 'SDLArpRequest' | 'SDLArpResponse' | 'SDLPolicyRequest' | 'SDLPolicyResponse' | 'SDLEvent.NatChanged' | 'SDLEvent.SendRegister' | 'SDLEvent.NetworkShutdown' | 'SDLEvent.ExitNodeControl' | 'SDLEvent' | 'SDLStunRequest' | 'SDLStunReply' | 'SDLData' | 'SDLStunProbe' | 'SDLStunProbeReply' | 'SDLRegister' | 'SDLRegisterAck'. +-type '$msg'() :: 'Hello'() | 'SDLV4Info'() | 'SDLV6Info'() | 'SDLWelcome'() | 'SDLRegisterSuper'() | 'SDLRegisterSuperAck'() | 'SDLRegisterSuperNak'() | 'SDLQueryInfo'() | 'SDLPeerInfo'() | 'SDLArpRequest'() | 'SDLArpResponse'() | 'SDLPolicyRequest'() | 'SDLPolicyResponse'() | 'SDLEvent.NatChanged'() | 'SDLEvent.SendRegister'() | 'SDLEvent.NetworkShutdown'() | 'SDLEvent.ExitNodeControl'() | 'SDLEvent'() | 'SDLStunRequest'() | 'SDLStunReply'() | 'SDLData'() | 'SDLStunProbe'() | 'SDLStunProbeReply'() | 'SDLRegister'() | 'SDLRegisterAck'(). +-export_type(['$msg_name'/0, '$msg'/0]). + +-if(?OTP_RELEASE >= 24). +-dialyzer({no_underspecs, encode_msg/1}). +-endif. +-spec encode_msg('$msg'()) -> binary(). +encode_msg(Msg) when tuple_size(Msg) >= 1 -> encode_msg(Msg, element(1, Msg), []). + +-if(?OTP_RELEASE >= 24). +-dialyzer({no_underspecs, encode_msg/2}). +-endif. +-spec encode_msg('$msg'(), '$msg_name'() | list()) -> binary(). +encode_msg(Msg, MsgName) when is_atom(MsgName) -> encode_msg(Msg, MsgName, []); +encode_msg(Msg, Opts) when tuple_size(Msg) >= 1, is_list(Opts) -> encode_msg(Msg, element(1, Msg), Opts). + +-if(?OTP_RELEASE >= 24). +-dialyzer({no_underspecs, encode_msg/3}). +-endif. +-spec encode_msg('$msg'(), '$msg_name'(), list()) -> binary(). +encode_msg(Msg, MsgName, Opts) -> + case proplists:get_bool(verify, Opts) of + true -> verify_msg(Msg, MsgName, Opts); + false -> ok + end, + TrUserData = proplists:get_value(user_data, Opts), + case MsgName of + 'Hello' -> encode_msg_Hello(id(Msg, TrUserData), TrUserData); + 'SDLV4Info' -> encode_msg_SDLV4Info(id(Msg, TrUserData), TrUserData); + 'SDLV6Info' -> encode_msg_SDLV6Info(id(Msg, TrUserData), TrUserData); + 'SDLWelcome' -> encode_msg_SDLWelcome(id(Msg, TrUserData), TrUserData); + 'SDLRegisterSuper' -> encode_msg_SDLRegisterSuper(id(Msg, TrUserData), TrUserData); + 'SDLRegisterSuperAck' -> encode_msg_SDLRegisterSuperAck(id(Msg, TrUserData), TrUserData); + 'SDLRegisterSuperNak' -> encode_msg_SDLRegisterSuperNak(id(Msg, TrUserData), TrUserData); + 'SDLQueryInfo' -> encode_msg_SDLQueryInfo(id(Msg, TrUserData), TrUserData); + 'SDLPeerInfo' -> encode_msg_SDLPeerInfo(id(Msg, TrUserData), TrUserData); + 'SDLArpRequest' -> encode_msg_SDLArpRequest(id(Msg, TrUserData), TrUserData); + 'SDLArpResponse' -> encode_msg_SDLArpResponse(id(Msg, TrUserData), TrUserData); + 'SDLPolicyRequest' -> encode_msg_SDLPolicyRequest(id(Msg, TrUserData), TrUserData); + 'SDLPolicyResponse' -> encode_msg_SDLPolicyResponse(id(Msg, TrUserData), TrUserData); + 'SDLEvent.NatChanged' -> 'encode_msg_SDLEvent.NatChanged'(id(Msg, TrUserData), TrUserData); + 'SDLEvent.SendRegister' -> 'encode_msg_SDLEvent.SendRegister'(id(Msg, TrUserData), TrUserData); + 'SDLEvent.NetworkShutdown' -> 'encode_msg_SDLEvent.NetworkShutdown'(id(Msg, TrUserData), TrUserData); + 'SDLEvent.ExitNodeControl' -> 'encode_msg_SDLEvent.ExitNodeControl'(id(Msg, TrUserData), TrUserData); + 'SDLEvent' -> encode_msg_SDLEvent(id(Msg, TrUserData), TrUserData); + 'SDLStunRequest' -> encode_msg_SDLStunRequest(id(Msg, TrUserData), TrUserData); + 'SDLStunReply' -> encode_msg_SDLStunReply(id(Msg, TrUserData), TrUserData); + 'SDLData' -> encode_msg_SDLData(id(Msg, TrUserData), TrUserData); + 'SDLStunProbe' -> encode_msg_SDLStunProbe(id(Msg, TrUserData), TrUserData); + 'SDLStunProbeReply' -> encode_msg_SDLStunProbeReply(id(Msg, TrUserData), TrUserData); + 'SDLRegister' -> encode_msg_SDLRegister(id(Msg, TrUserData), TrUserData); + 'SDLRegisterAck' -> encode_msg_SDLRegisterAck(id(Msg, TrUserData), TrUserData) + end. + + +encode_msg_Hello(_Msg, _TrUserData) -> <<>>. + +encode_msg_SDLV4Info(Msg, TrUserData) -> encode_msg_SDLV4Info(Msg, <<>>, TrUserData). + + +encode_msg_SDLV4Info(#'SDLV4Info'{port = F1, v4 = F2, nat_type = 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_SDLV6Info(Msg, TrUserData) -> encode_msg_SDLV6Info(Msg, <<>>, TrUserData). + + +encode_msg_SDLV6Info(#'SDLV6Info'{port = F1, v6 = 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 iolist_size(TrF2) of + 0 -> B1; + _ -> e_type_bytes(TrF2, <>, TrUserData) + end + end + end. + +encode_msg_SDLWelcome(Msg, TrUserData) -> encode_msg_SDLWelcome(Msg, <<>>, TrUserData). + + +encode_msg_SDLWelcome(#'SDLWelcome'{version = F1, max_bidi_streams = F2, max_packet_size = F3, heartbeat_sec = 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), + 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, + if F4 == undefined -> B3; + true -> + begin + TrF4 = id(F4, TrUserData), + if TrF4 =:= 0 -> B3; + true -> e_varint(TrF4, <>, TrUserData) + end + end + end. + +encode_msg_SDLRegisterSuper(Msg, TrUserData) -> encode_msg_SDLRegisterSuper(Msg, <<>>, TrUserData). + + +encode_msg_SDLRegisterSuper(#'SDLRegisterSuper'{client_id = F1, network_id = F2, mac = F3, ip = F4, mask_len = F5, hostname = F6, pub_key = F7, access_token = F8}, 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), + 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_SDLRegisterSuperAck(Msg, TrUserData) -> encode_msg_SDLRegisterSuperAck(Msg, <<>>, TrUserData). + + +encode_msg_SDLRegisterSuperAck(#'SDLRegisterSuperAck'{algorithm = F1, key = F2, region_id = F3, session_token = F4}, 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), + 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, + if F4 == undefined -> B3; + true -> + begin + TrF4 = id(F4, TrUserData), + case iolist_size(TrF4) of + 0 -> B3; + _ -> e_type_bytes(TrF4, <>, TrUserData) + end + end + end. + +encode_msg_SDLRegisterSuperNak(Msg, TrUserData) -> encode_msg_SDLRegisterSuperNak(Msg, <<>>, TrUserData). + + +encode_msg_SDLRegisterSuperNak(#'SDLRegisterSuperNak'{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_SDLQueryInfo(Msg, TrUserData) -> encode_msg_SDLQueryInfo(Msg, <<>>, TrUserData). + + +encode_msg_SDLQueryInfo(#'SDLQueryInfo'{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_SDLPeerInfo(Msg, TrUserData) -> encode_msg_SDLPeerInfo(Msg, <<>>, TrUserData). + + +encode_msg_SDLPeerInfo(#'SDLPeerInfo'{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), e_mfield_SDLPeerInfo_v4_info(TrF2, <>, TrUserData) end + end, + if F3 == undefined -> B2; + true -> begin TrF3 = id(F3, TrUserData), e_mfield_SDLPeerInfo_v6_info(TrF3, <>, TrUserData) end + end. + +encode_msg_SDLArpRequest(Msg, TrUserData) -> encode_msg_SDLArpRequest(Msg, <<>>, TrUserData). + + +encode_msg_SDLArpRequest(#'SDLArpRequest'{target_ip = F1, origin_ip = F2, context = 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), + case iolist_size(TrF3) of + 0 -> B2; + _ -> e_type_bytes(TrF3, <>, TrUserData) + end + end + end. + +encode_msg_SDLArpResponse(Msg, TrUserData) -> encode_msg_SDLArpResponse(Msg, <<>>, TrUserData). + + +encode_msg_SDLArpResponse(#'SDLArpResponse'{target_ip = F1, target_mac = F2, origin_ip = F3, context = 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 =:= 0 -> B2; + true -> e_varint(TrF3, <>, TrUserData) + end + end + end, + if F4 == undefined -> B3; + true -> + begin + TrF4 = id(F4, TrUserData), + case iolist_size(TrF4) of + 0 -> B3; + _ -> e_type_bytes(TrF4, <>, TrUserData) + end + end + end. + +encode_msg_SDLPolicyRequest(Msg, TrUserData) -> encode_msg_SDLPolicyRequest(Msg, <<>>, TrUserData). + + +encode_msg_SDLPolicyRequest(#'SDLPolicyRequest'{src_identity_id = F1, dst_identity_id = F2, version = 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_SDLPolicyResponse(Msg, TrUserData) -> encode_msg_SDLPolicyResponse(Msg, <<>>, TrUserData). + + +encode_msg_SDLPolicyResponse(#'SDLPolicyResponse'{src_identity_id = F1, dst_identity_id = F2, version = F3, rules = 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), + 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, + if F4 == undefined -> B3; + true -> + begin + TrF4 = id(F4, TrUserData), + case iolist_size(TrF4) of + 0 -> B3; + _ -> e_type_bytes(TrF4, <>, TrUserData) + end + end + end. + +'encode_msg_SDLEvent.NatChanged'(Msg, TrUserData) -> 'encode_msg_SDLEvent.NatChanged'(Msg, <<>>, TrUserData). + + +'encode_msg_SDLEvent.NatChanged'(#'SDLEvent.NatChanged'{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_SDLEvent.SendRegister'(Msg, TrUserData) -> 'encode_msg_SDLEvent.SendRegister'(Msg, <<>>, TrUserData). + + +'encode_msg_SDLEvent.SendRegister'(#'SDLEvent.SendRegister'{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_SDLEvent.SendRegister_v6_info'(TrF5, <>, TrUserData) end + end. + +'encode_msg_SDLEvent.NetworkShutdown'(Msg, TrUserData) -> 'encode_msg_SDLEvent.NetworkShutdown'(Msg, <<>>, TrUserData). + + +'encode_msg_SDLEvent.NetworkShutdown'(#'SDLEvent.NetworkShutdown'{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_SDLEvent.ExitNodeControl'(Msg, TrUserData) -> 'encode_msg_SDLEvent.ExitNodeControl'(Msg, <<>>, TrUserData). + + +'encode_msg_SDLEvent.ExitNodeControl'(#'SDLEvent.ExitNodeControl'{action = F1, node_mac = F2, node_ip = F3, remark = F4}, Bin, TrUserData) -> + B1 = if F1 == undefined -> Bin; + true -> + begin + TrF1 = id(F1, TrUserData), + if TrF1 =:= 0 -> Bin; + true -> e_type_int32(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, + if F4 == undefined -> B3; + true -> + begin + TrF4 = id(F4, TrUserData), + case is_empty_string(TrF4) of + true -> B3; + false -> e_type_string(TrF4, <>, TrUserData) + end + end + end. + +encode_msg_SDLEvent(Msg, TrUserData) -> encode_msg_SDLEvent(Msg, <<>>, TrUserData). + + +encode_msg_SDLEvent(#'SDLEvent'{event = F1}, Bin, TrUserData) -> + if F1 =:= undefined -> Bin; + true -> + case id(F1, TrUserData) of + {nat_changed, TF1} -> begin TrTF1 = id(TF1, TrUserData), e_mfield_SDLEvent_nat_changed(TrTF1, <>, TrUserData) end; + {send_register, TF1} -> begin TrTF1 = id(TF1, TrUserData), e_mfield_SDLEvent_send_register(TrTF1, <>, TrUserData) end; + {shutdown, TF1} -> begin TrTF1 = id(TF1, TrUserData), e_mfield_SDLEvent_shutdown(TrTF1, <>, TrUserData) end; + {exit_node, TF1} -> begin TrTF1 = id(TF1, TrUserData), e_mfield_SDLEvent_exit_node(TrTF1, <>, TrUserData) end + end + end. + +encode_msg_SDLStunRequest(Msg, TrUserData) -> encode_msg_SDLStunRequest(Msg, <<>>, TrUserData). + + +encode_msg_SDLStunRequest(#'SDLStunRequest'{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_SDLStunRequest_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. + +encode_msg_SDLStunReply(_Msg, _TrUserData) -> <<>>. + +encode_msg_SDLData(Msg, TrUserData) -> encode_msg_SDLData(Msg, <<>>, TrUserData). + + +encode_msg_SDLData(#'SDLData'{network_id = F1, src_mac = F2, dst_mac = F3, is_p2p = F4, ttl = F5, data = F6, session_token = F7, identity_id = 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 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), + 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 =:= false -> B3; + true -> e_type_bool(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), + case iolist_size(TrF6) of + 0 -> B5; + _ -> e_type_bytes(TrF6, <>, TrUserData) + end + end + end, + B7 = 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, + if F8 == undefined -> B7; + true -> + begin + TrF8 = id(F8, TrUserData), + if TrF8 =:= 0 -> B7; + true -> e_varint(TrF8, <>, TrUserData) + end + end + end. + +encode_msg_SDLStunProbe(Msg, TrUserData) -> encode_msg_SDLStunProbe(Msg, <<>>, TrUserData). + + +encode_msg_SDLStunProbe(#'SDLStunProbe'{cookie = F1, attr = F2, step = 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_SDLStunProbeReply(Msg, TrUserData) -> encode_msg_SDLStunProbeReply(Msg, <<>>, TrUserData). + + +encode_msg_SDLStunProbeReply(#'SDLStunProbeReply'{cookie = F1, step = F2, port = F3, ip = 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), + 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, + if F4 == undefined -> B3; + true -> + begin + TrF4 = id(F4, TrUserData), + if TrF4 =:= 0 -> B3; + true -> e_varint(TrF4, <>, TrUserData) + end + end + end. + +encode_msg_SDLRegister(Msg, TrUserData) -> encode_msg_SDLRegister(Msg, <<>>, TrUserData). + + +encode_msg_SDLRegister(#'SDLRegister'{network_id = F1, src_mac = F2, dst_mac = 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_SDLRegisterAck(Msg, TrUserData) -> encode_msg_SDLRegisterAck(Msg, <<>>, TrUserData). + + +encode_msg_SDLRegisterAck(#'SDLRegisterAck'{network_id = F1, src_mac = F2, dst_mac = 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. + +e_mfield_SDLPeerInfo_v4_info(Msg, Bin, TrUserData) -> + SubBin = encode_msg_SDLV4Info(Msg, <<>>, TrUserData), + Bin2 = e_varint(byte_size(SubBin), Bin), + <>. + +e_mfield_SDLPeerInfo_v6_info(Msg, Bin, TrUserData) -> + SubBin = encode_msg_SDLV6Info(Msg, <<>>, TrUserData), + Bin2 = e_varint(byte_size(SubBin), Bin), + <>. + +'e_mfield_SDLEvent.SendRegister_v6_info'(Msg, Bin, TrUserData) -> + SubBin = encode_msg_SDLV6Info(Msg, <<>>, TrUserData), + Bin2 = e_varint(byte_size(SubBin), Bin), + <>. + +e_mfield_SDLEvent_nat_changed(Msg, Bin, TrUserData) -> + SubBin = 'encode_msg_SDLEvent.NatChanged'(Msg, <<>>, TrUserData), + Bin2 = e_varint(byte_size(SubBin), Bin), + <>. + +e_mfield_SDLEvent_send_register(Msg, Bin, TrUserData) -> + SubBin = 'encode_msg_SDLEvent.SendRegister'(Msg, <<>>, TrUserData), + Bin2 = e_varint(byte_size(SubBin), Bin), + <>. + +e_mfield_SDLEvent_shutdown(Msg, Bin, TrUserData) -> + SubBin = 'encode_msg_SDLEvent.NetworkShutdown'(Msg, <<>>, TrUserData), + Bin2 = e_varint(byte_size(SubBin), Bin), + <>. + +e_mfield_SDLEvent_exit_node(Msg, Bin, TrUserData) -> + SubBin = 'encode_msg_SDLEvent.ExitNodeControl'(Msg, <<>>, TrUserData), + Bin2 = e_varint(byte_size(SubBin), Bin), + <>. + +e_mfield_SDLStunRequest_v6_info(Msg, Bin, TrUserData) -> + SubBin = encode_msg_SDLV6Info(Msg, <<>>, TrUserData), + Bin2 = e_varint(byte_size(SubBin), Bin), + <>. + +-compile({nowarn_unused_function,e_type_sint/3}). +e_type_sint(Value, Bin, _TrUserData) when Value >= 0 -> e_varint(Value * 2, Bin); +e_type_sint(Value, Bin, _TrUserData) -> e_varint(Value * -2 - 1, Bin). + +-compile({nowarn_unused_function,e_type_int32/3}). +e_type_int32(Value, Bin, _TrUserData) when 0 =< Value, Value =< 127 -> <>; +e_type_int32(Value, Bin, _TrUserData) -> + <> = <>, + e_varint(N, Bin). + +-compile({nowarn_unused_function,e_type_int64/3}). +e_type_int64(Value, Bin, _TrUserData) when 0 =< Value, Value =< 127 -> <>; +e_type_int64(Value, Bin, _TrUserData) -> + <> = <>, + e_varint(N, Bin). + +-compile({nowarn_unused_function,e_type_bool/3}). +e_type_bool(true, Bin, _TrUserData) -> <>; +e_type_bool(false, Bin, _TrUserData) -> <>; +e_type_bool(1, Bin, _TrUserData) -> <>; +e_type_bool(0, Bin, _TrUserData) -> <>. + +-compile({nowarn_unused_function,e_type_string/3}). +e_type_string(S, Bin, _TrUserData) -> + Utf8 = unicode:characters_to_binary(S), + Bin2 = e_varint(byte_size(Utf8), Bin), + <>. + +-compile({nowarn_unused_function,e_type_bytes/3}). +e_type_bytes(Bytes, Bin, _TrUserData) when is_binary(Bytes) -> + Bin2 = e_varint(byte_size(Bytes), Bin), + <>; +e_type_bytes(Bytes, Bin, _TrUserData) when is_list(Bytes) -> + BytesBin = iolist_to_binary(Bytes), + Bin2 = e_varint(byte_size(BytesBin), Bin), + <>. + +-compile({nowarn_unused_function,e_type_fixed32/3}). +e_type_fixed32(Value, Bin, _TrUserData) -> <>. + +-compile({nowarn_unused_function,e_type_sfixed32/3}). +e_type_sfixed32(Value, Bin, _TrUserData) -> <>. + +-compile({nowarn_unused_function,e_type_fixed64/3}). +e_type_fixed64(Value, Bin, _TrUserData) -> <>. + +-compile({nowarn_unused_function,e_type_sfixed64/3}). +e_type_sfixed64(Value, Bin, _TrUserData) -> <>. + +-compile({nowarn_unused_function,e_type_float/3}). +e_type_float(V, Bin, _) when is_number(V) -> <>; +e_type_float(infinity, Bin, _) -> <>; +e_type_float('-infinity', Bin, _) -> <>; +e_type_float(nan, Bin, _) -> <>. + +-compile({nowarn_unused_function,e_type_double/3}). +e_type_double(V, Bin, _) when is_number(V) -> <>; +e_type_double(infinity, Bin, _) -> <>; +e_type_double('-infinity', Bin, _) -> <>; +e_type_double(nan, Bin, _) -> <>. + +-compile({nowarn_unused_function,e_unknown_elems/2}). +e_unknown_elems([Elem | Rest], Bin) -> + BinR = case Elem of + {varint, FNum, N} -> + BinF = e_varint(FNum bsl 3, Bin), + e_varint(N, BinF); + {length_delimited, FNum, Data} -> + BinF = e_varint(FNum bsl 3 bor 2, Bin), + BinL = e_varint(byte_size(Data), BinF), + <>; + {group, FNum, GroupFields} -> + Bin1 = e_varint(FNum bsl 3 bor 3, Bin), + Bin2 = e_unknown_elems(GroupFields, Bin1), + e_varint(FNum bsl 3 bor 4, Bin2); + {fixed32, FNum, V} -> + BinF = e_varint(FNum bsl 3 bor 5, Bin), + <>; + {fixed64, FNum, V} -> + BinF = e_varint(FNum bsl 3 bor 1, Bin), + <> + end, + e_unknown_elems(Rest, BinR); +e_unknown_elems([], Bin) -> Bin. + +-compile({nowarn_unused_function,e_varint/3}). +e_varint(N, Bin, _TrUserData) -> e_varint(N, Bin). + +-compile({nowarn_unused_function,e_varint/2}). +e_varint(N, Bin) when N =< 127 -> <>; +e_varint(N, Bin) -> + Bin2 = <>, + e_varint(N bsr 7, Bin2). + +is_empty_string("") -> true; +is_empty_string(<<>>) -> true; +is_empty_string(L) when is_list(L) -> not string_has_chars(L); +is_empty_string(B) when is_binary(B) -> false. + +string_has_chars([C | _]) when is_integer(C) -> true; +string_has_chars([H | T]) -> + case string_has_chars(H) of + true -> true; + false -> string_has_chars(T) + end; +string_has_chars(B) when is_binary(B), byte_size(B) =/= 0 -> true; +string_has_chars(C) when is_integer(C) -> true; +string_has_chars(<<>>) -> false; +string_has_chars([]) -> false. + + +decode_msg(Bin, MsgName) when is_binary(Bin) -> decode_msg(Bin, MsgName, []). + +decode_msg(Bin, MsgName, Opts) when is_binary(Bin) -> + TrUserData = proplists:get_value(user_data, Opts), + decode_msg_1_catch(Bin, MsgName, TrUserData). + +-ifdef('OTP_RELEASE'). +decode_msg_1_catch(Bin, MsgName, TrUserData) -> + try decode_msg_2_doit(MsgName, Bin, TrUserData) + catch + error:{gpb_error,_}=Reason:StackTrace -> + erlang:raise(error, Reason, StackTrace); + Class:Reason:StackTrace -> error({gpb_error,{decoding_failure, {Bin, MsgName, {Class, Reason, StackTrace}}}}) + end. +-else. +decode_msg_1_catch(Bin, MsgName, TrUserData) -> + try decode_msg_2_doit(MsgName, Bin, TrUserData) + catch + error:{gpb_error,_}=Reason -> + erlang:raise(error, Reason, + erlang:get_stacktrace()); + Class:Reason -> + StackTrace = erlang:get_stacktrace(), + error({gpb_error,{decoding_failure, {Bin, MsgName, {Class, Reason, StackTrace}}}}) + end. +-endif. + +decode_msg_2_doit('Hello', Bin, TrUserData) -> id(decode_msg_Hello(Bin, TrUserData), TrUserData); +decode_msg_2_doit('SDLV4Info', Bin, TrUserData) -> id(decode_msg_SDLV4Info(Bin, TrUserData), TrUserData); +decode_msg_2_doit('SDLV6Info', Bin, TrUserData) -> id(decode_msg_SDLV6Info(Bin, TrUserData), TrUserData); +decode_msg_2_doit('SDLWelcome', Bin, TrUserData) -> id(decode_msg_SDLWelcome(Bin, TrUserData), TrUserData); +decode_msg_2_doit('SDLRegisterSuper', Bin, TrUserData) -> id(decode_msg_SDLRegisterSuper(Bin, TrUserData), TrUserData); +decode_msg_2_doit('SDLRegisterSuperAck', Bin, TrUserData) -> id(decode_msg_SDLRegisterSuperAck(Bin, TrUserData), TrUserData); +decode_msg_2_doit('SDLRegisterSuperNak', Bin, TrUserData) -> id(decode_msg_SDLRegisterSuperNak(Bin, TrUserData), TrUserData); +decode_msg_2_doit('SDLQueryInfo', Bin, TrUserData) -> id(decode_msg_SDLQueryInfo(Bin, TrUserData), TrUserData); +decode_msg_2_doit('SDLPeerInfo', Bin, TrUserData) -> id(decode_msg_SDLPeerInfo(Bin, TrUserData), TrUserData); +decode_msg_2_doit('SDLArpRequest', Bin, TrUserData) -> id(decode_msg_SDLArpRequest(Bin, TrUserData), TrUserData); +decode_msg_2_doit('SDLArpResponse', Bin, TrUserData) -> id(decode_msg_SDLArpResponse(Bin, TrUserData), TrUserData); +decode_msg_2_doit('SDLPolicyRequest', Bin, TrUserData) -> id(decode_msg_SDLPolicyRequest(Bin, TrUserData), TrUserData); +decode_msg_2_doit('SDLPolicyResponse', Bin, TrUserData) -> id(decode_msg_SDLPolicyResponse(Bin, TrUserData), TrUserData); +decode_msg_2_doit('SDLEvent.NatChanged', Bin, TrUserData) -> id('decode_msg_SDLEvent.NatChanged'(Bin, TrUserData), TrUserData); +decode_msg_2_doit('SDLEvent.SendRegister', Bin, TrUserData) -> id('decode_msg_SDLEvent.SendRegister'(Bin, TrUserData), TrUserData); +decode_msg_2_doit('SDLEvent.NetworkShutdown', Bin, TrUserData) -> id('decode_msg_SDLEvent.NetworkShutdown'(Bin, TrUserData), TrUserData); +decode_msg_2_doit('SDLEvent.ExitNodeControl', Bin, TrUserData) -> id('decode_msg_SDLEvent.ExitNodeControl'(Bin, TrUserData), TrUserData); +decode_msg_2_doit('SDLEvent', Bin, TrUserData) -> id(decode_msg_SDLEvent(Bin, TrUserData), TrUserData); +decode_msg_2_doit('SDLStunRequest', Bin, TrUserData) -> id(decode_msg_SDLStunRequest(Bin, TrUserData), TrUserData); +decode_msg_2_doit('SDLStunReply', Bin, TrUserData) -> id(decode_msg_SDLStunReply(Bin, TrUserData), TrUserData); +decode_msg_2_doit('SDLData', Bin, TrUserData) -> id(decode_msg_SDLData(Bin, TrUserData), TrUserData); +decode_msg_2_doit('SDLStunProbe', Bin, TrUserData) -> id(decode_msg_SDLStunProbe(Bin, TrUserData), TrUserData); +decode_msg_2_doit('SDLStunProbeReply', Bin, TrUserData) -> id(decode_msg_SDLStunProbeReply(Bin, TrUserData), TrUserData); +decode_msg_2_doit('SDLRegister', Bin, TrUserData) -> id(decode_msg_SDLRegister(Bin, TrUserData), TrUserData); +decode_msg_2_doit('SDLRegisterAck', Bin, TrUserData) -> id(decode_msg_SDLRegisterAck(Bin, TrUserData), TrUserData). + + + +decode_msg_Hello(Bin, TrUserData) -> dfp_read_field_def_Hello(Bin, 0, 0, 0, TrUserData). + +dfp_read_field_def_Hello(<<>>, 0, 0, _, _) -> #'Hello'{}; +dfp_read_field_def_Hello(Other, Z1, Z2, F, TrUserData) -> dg_read_field_def_Hello(Other, Z1, Z2, F, TrUserData). + +dg_read_field_def_Hello(<<1:1, X:7, Rest/binary>>, N, Acc, F, TrUserData) when N < 32 - 7 -> dg_read_field_def_Hello(Rest, N + 7, X bsl N + Acc, F, TrUserData); +dg_read_field_def_Hello(<<0:1, X:7, Rest/binary>>, N, Acc, _, TrUserData) -> + Key = X bsl N + Acc, + case Key band 7 of + 0 -> skip_varint_Hello(Rest, 0, 0, Key bsr 3, TrUserData); + 1 -> skip_64_Hello(Rest, 0, 0, Key bsr 3, TrUserData); + 2 -> skip_length_delimited_Hello(Rest, 0, 0, Key bsr 3, TrUserData); + 3 -> skip_group_Hello(Rest, 0, 0, Key bsr 3, TrUserData); + 5 -> skip_32_Hello(Rest, 0, 0, Key bsr 3, TrUserData) + end; +dg_read_field_def_Hello(<<>>, 0, 0, _, _) -> #'Hello'{}. + +skip_varint_Hello(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, TrUserData) -> skip_varint_Hello(Rest, Z1, Z2, F, TrUserData); +skip_varint_Hello(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, TrUserData) -> dfp_read_field_def_Hello(Rest, Z1, Z2, F, TrUserData). + +skip_length_delimited_Hello(<<1:1, X:7, Rest/binary>>, N, Acc, F, TrUserData) when N < 57 -> skip_length_delimited_Hello(Rest, N + 7, X bsl N + Acc, F, TrUserData); +skip_length_delimited_Hello(<<0:1, X:7, Rest/binary>>, N, Acc, F, TrUserData) -> + Length = X bsl N + Acc, + <<_:Length/binary, Rest2/binary>> = Rest, + dfp_read_field_def_Hello(Rest2, 0, 0, F, TrUserData). + +skip_group_Hello(Bin, _, Z2, FNum, TrUserData) -> + {_, Rest} = read_group(Bin, FNum), + dfp_read_field_def_Hello(Rest, 0, Z2, FNum, TrUserData). + +skip_32_Hello(<<_:32, Rest/binary>>, Z1, Z2, F, TrUserData) -> dfp_read_field_def_Hello(Rest, Z1, Z2, F, TrUserData). + +skip_64_Hello(<<_:64, Rest/binary>>, Z1, Z2, F, TrUserData) -> dfp_read_field_def_Hello(Rest, Z1, Z2, F, TrUserData). + +decode_msg_SDLV4Info(Bin, TrUserData) -> dfp_read_field_def_SDLV4Info(Bin, 0, 0, 0, id(0, TrUserData), id(<<>>, TrUserData), id(0, TrUserData), TrUserData). + +dfp_read_field_def_SDLV4Info(<<8, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_SDLV4Info_port(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); +dfp_read_field_def_SDLV4Info(<<18, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_SDLV4Info_v4(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); +dfp_read_field_def_SDLV4Info(<<24, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_SDLV4Info_nat_type(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); +dfp_read_field_def_SDLV4Info(<<>>, 0, 0, _, F@_1, F@_2, F@_3, _) -> #'SDLV4Info'{port = F@_1, v4 = F@_2, nat_type = F@_3}; +dfp_read_field_def_SDLV4Info(Other, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dg_read_field_def_SDLV4Info(Other, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). + +dg_read_field_def_SDLV4Info(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 32 - 7 -> dg_read_field_def_SDLV4Info(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +dg_read_field_def_SDLV4Info(<<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_SDLV4Info_port(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData); + 18 -> d_field_SDLV4Info_v4(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData); + 24 -> d_field_SDLV4Info_nat_type(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData); + _ -> + case Key band 7 of + 0 -> skip_varint_SDLV4Info(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); + 1 -> skip_64_SDLV4Info(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); + 2 -> skip_length_delimited_SDLV4Info(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); + 3 -> skip_group_SDLV4Info(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); + 5 -> skip_32_SDLV4Info(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData) + end + end; +dg_read_field_def_SDLV4Info(<<>>, 0, 0, _, F@_1, F@_2, F@_3, _) -> #'SDLV4Info'{port = F@_1, v4 = F@_2, nat_type = F@_3}. + +d_field_SDLV4Info_port(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_SDLV4Info_port(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +d_field_SDLV4Info_port(<<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_SDLV4Info(RestF, 0, 0, F, NewFValue, F@_2, F@_3, TrUserData). + +d_field_SDLV4Info_v4(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_SDLV4Info_v4(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +d_field_SDLV4Info_v4(<<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_SDLV4Info(RestF, 0, 0, F, F@_1, NewFValue, F@_3, TrUserData). + +d_field_SDLV4Info_nat_type(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_SDLV4Info_nat_type(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +d_field_SDLV4Info_nat_type(<<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_SDLV4Info(RestF, 0, 0, F, F@_1, F@_2, NewFValue, TrUserData). + +skip_varint_SDLV4Info(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> skip_varint_SDLV4Info(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); +skip_varint_SDLV4Info(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_SDLV4Info(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). + +skip_length_delimited_SDLV4Info(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> skip_length_delimited_SDLV4Info(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +skip_length_delimited_SDLV4Info(<<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_SDLV4Info(Rest2, 0, 0, F, F@_1, F@_2, F@_3, TrUserData). + +skip_group_SDLV4Info(Bin, _, Z2, FNum, F@_1, F@_2, F@_3, TrUserData) -> + {_, Rest} = read_group(Bin, FNum), + dfp_read_field_def_SDLV4Info(Rest, 0, Z2, FNum, F@_1, F@_2, F@_3, TrUserData). + +skip_32_SDLV4Info(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_SDLV4Info(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). + +skip_64_SDLV4Info(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_SDLV4Info(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). + +decode_msg_SDLV6Info(Bin, TrUserData) -> dfp_read_field_def_SDLV6Info(Bin, 0, 0, 0, id(0, TrUserData), id(<<>>, TrUserData), TrUserData). + +dfp_read_field_def_SDLV6Info(<<8, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> d_field_SDLV6Info_port(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); +dfp_read_field_def_SDLV6Info(<<18, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> d_field_SDLV6Info_v6(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); +dfp_read_field_def_SDLV6Info(<<>>, 0, 0, _, F@_1, F@_2, _) -> #'SDLV6Info'{port = F@_1, v6 = F@_2}; +dfp_read_field_def_SDLV6Info(Other, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dg_read_field_def_SDLV6Info(Other, Z1, Z2, F, F@_1, F@_2, TrUserData). + +dg_read_field_def_SDLV6Info(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 32 - 7 -> dg_read_field_def_SDLV6Info(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); +dg_read_field_def_SDLV6Info(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, F@_2, TrUserData) -> + Key = X bsl N + Acc, + case Key of + 8 -> d_field_SDLV6Info_port(Rest, 0, 0, 0, F@_1, F@_2, TrUserData); + 18 -> d_field_SDLV6Info_v6(Rest, 0, 0, 0, F@_1, F@_2, TrUserData); + _ -> + case Key band 7 of + 0 -> skip_varint_SDLV6Info(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); + 1 -> skip_64_SDLV6Info(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); + 2 -> skip_length_delimited_SDLV6Info(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); + 3 -> skip_group_SDLV6Info(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); + 5 -> skip_32_SDLV6Info(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData) + end + end; +dg_read_field_def_SDLV6Info(<<>>, 0, 0, _, F@_1, F@_2, _) -> #'SDLV6Info'{port = F@_1, v6 = F@_2}. + +d_field_SDLV6Info_port(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> d_field_SDLV6Info_port(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); +d_field_SDLV6Info_port(<<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_SDLV6Info(RestF, 0, 0, F, NewFValue, F@_2, TrUserData). + +d_field_SDLV6Info_v6(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> d_field_SDLV6Info_v6(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); +d_field_SDLV6Info_v6(<<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_SDLV6Info(RestF, 0, 0, F, F@_1, NewFValue, TrUserData). + +skip_varint_SDLV6Info(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> skip_varint_SDLV6Info(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); +skip_varint_SDLV6Info(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dfp_read_field_def_SDLV6Info(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). + +skip_length_delimited_SDLV6Info(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> skip_length_delimited_SDLV6Info(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); +skip_length_delimited_SDLV6Info(<<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_SDLV6Info(Rest2, 0, 0, F, F@_1, F@_2, TrUserData). + +skip_group_SDLV6Info(Bin, _, Z2, FNum, F@_1, F@_2, TrUserData) -> + {_, Rest} = read_group(Bin, FNum), + dfp_read_field_def_SDLV6Info(Rest, 0, Z2, FNum, F@_1, F@_2, TrUserData). + +skip_32_SDLV6Info(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dfp_read_field_def_SDLV6Info(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). + +skip_64_SDLV6Info(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dfp_read_field_def_SDLV6Info(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). + +decode_msg_SDLWelcome(Bin, TrUserData) -> dfp_read_field_def_SDLWelcome(Bin, 0, 0, 0, id(0, TrUserData), id(0, TrUserData), id(0, TrUserData), id(0, TrUserData), TrUserData). + +dfp_read_field_def_SDLWelcome(<<8, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> d_field_SDLWelcome_version(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +dfp_read_field_def_SDLWelcome(<<16, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> d_field_SDLWelcome_max_bidi_streams(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +dfp_read_field_def_SDLWelcome(<<24, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> d_field_SDLWelcome_max_packet_size(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +dfp_read_field_def_SDLWelcome(<<32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> d_field_SDLWelcome_heartbeat_sec(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +dfp_read_field_def_SDLWelcome(<<>>, 0, 0, _, F@_1, F@_2, F@_3, F@_4, _) -> #'SDLWelcome'{version = F@_1, max_bidi_streams = F@_2, max_packet_size = F@_3, heartbeat_sec = F@_4}; +dfp_read_field_def_SDLWelcome(Other, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> dg_read_field_def_SDLWelcome(Other, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData). + +dg_read_field_def_SDLWelcome(<<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_SDLWelcome(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +dg_read_field_def_SDLWelcome(<<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 + 8 -> d_field_SDLWelcome_version(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, TrUserData); + 16 -> d_field_SDLWelcome_max_bidi_streams(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, TrUserData); + 24 -> d_field_SDLWelcome_max_packet_size(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, TrUserData); + 32 -> d_field_SDLWelcome_heartbeat_sec(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, TrUserData); + _ -> + case Key band 7 of + 0 -> skip_varint_SDLWelcome(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, TrUserData); + 1 -> skip_64_SDLWelcome(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, TrUserData); + 2 -> skip_length_delimited_SDLWelcome(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, TrUserData); + 3 -> skip_group_SDLWelcome(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, TrUserData); + 5 -> skip_32_SDLWelcome(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, TrUserData) + end + end; +dg_read_field_def_SDLWelcome(<<>>, 0, 0, _, F@_1, F@_2, F@_3, F@_4, _) -> #'SDLWelcome'{version = F@_1, max_bidi_streams = F@_2, max_packet_size = F@_3, heartbeat_sec = F@_4}. + +d_field_SDLWelcome_version(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> d_field_SDLWelcome_version(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +d_field_SDLWelcome_version(<<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_SDLWelcome(RestF, 0, 0, F, NewFValue, F@_2, F@_3, F@_4, TrUserData). + +d_field_SDLWelcome_max_bidi_streams(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> d_field_SDLWelcome_max_bidi_streams(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +d_field_SDLWelcome_max_bidi_streams(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, _, F@_3, F@_4, TrUserData) -> + {NewFValue, RestF} = {id((X bsl N + Acc) band 4294967295, TrUserData), Rest}, + dfp_read_field_def_SDLWelcome(RestF, 0, 0, F, F@_1, NewFValue, F@_3, F@_4, TrUserData). + +d_field_SDLWelcome_max_packet_size(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> d_field_SDLWelcome_max_packet_size(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +d_field_SDLWelcome_max_packet_size(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, _, F@_4, TrUserData) -> + {NewFValue, RestF} = {id((X bsl N + Acc) band 4294967295, TrUserData), Rest}, + dfp_read_field_def_SDLWelcome(RestF, 0, 0, F, F@_1, F@_2, NewFValue, F@_4, TrUserData). + +d_field_SDLWelcome_heartbeat_sec(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> d_field_SDLWelcome_heartbeat_sec(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +d_field_SDLWelcome_heartbeat_sec(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, _, TrUserData) -> + {NewFValue, RestF} = {id((X bsl N + Acc) band 4294967295, TrUserData), Rest}, + dfp_read_field_def_SDLWelcome(RestF, 0, 0, F, F@_1, F@_2, F@_3, NewFValue, TrUserData). + +skip_varint_SDLWelcome(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> skip_varint_SDLWelcome(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +skip_varint_SDLWelcome(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> dfp_read_field_def_SDLWelcome(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData). + +skip_length_delimited_SDLWelcome(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> skip_length_delimited_SDLWelcome(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +skip_length_delimited_SDLWelcome(<<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_SDLWelcome(Rest2, 0, 0, F, F@_1, F@_2, F@_3, F@_4, TrUserData). + +skip_group_SDLWelcome(Bin, _, Z2, FNum, F@_1, F@_2, F@_3, F@_4, TrUserData) -> + {_, Rest} = read_group(Bin, FNum), + dfp_read_field_def_SDLWelcome(Rest, 0, Z2, FNum, F@_1, F@_2, F@_3, F@_4, TrUserData). + +skip_32_SDLWelcome(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> dfp_read_field_def_SDLWelcome(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData). + +skip_64_SDLWelcome(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> dfp_read_field_def_SDLWelcome(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData). + +decode_msg_SDLRegisterSuper(Bin, TrUserData) -> + dfp_read_field_def_SDLRegisterSuper(Bin, 0, 0, 0, id(<<>>, TrUserData), id(0, TrUserData), id(<<>>, TrUserData), id(0, TrUserData), id(0, TrUserData), id(<<>>, TrUserData), id(<<>>, TrUserData), id(<<>>, TrUserData), TrUserData). + +dfp_read_field_def_SDLRegisterSuper(<<10, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData) -> d_field_SDLRegisterSuper_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_SDLRegisterSuper(<<16, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData) -> d_field_SDLRegisterSuper_network_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_SDLRegisterSuper(<<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_SDLRegisterSuper_mac(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_SDLRegisterSuper(<<32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData) -> d_field_SDLRegisterSuper_ip(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_SDLRegisterSuper(<<40, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData) -> d_field_SDLRegisterSuper_mask_len(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_SDLRegisterSuper(<<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_SDLRegisterSuper_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_SDLRegisterSuper(<<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_SDLRegisterSuper_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_SDLRegisterSuper(<<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_SDLRegisterSuper_access_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_SDLRegisterSuper(<<>>, 0, 0, _, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, _) -> + #'SDLRegisterSuper'{client_id = F@_1, network_id = F@_2, mac = F@_3, ip = F@_4, mask_len = F@_5, hostname = F@_6, pub_key = F@_7, access_token = F@_8}; +dfp_read_field_def_SDLRegisterSuper(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_SDLRegisterSuper(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_SDLRegisterSuper(<<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_SDLRegisterSuper(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_SDLRegisterSuper(<<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) -> + Key = X bsl N + Acc, + case Key of + 10 -> d_field_SDLRegisterSuper_client_id(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData); + 16 -> d_field_SDLRegisterSuper_network_id(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData); + 26 -> d_field_SDLRegisterSuper_mac(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData); + 32 -> d_field_SDLRegisterSuper_ip(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData); + 40 -> d_field_SDLRegisterSuper_mask_len(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData); + 50 -> d_field_SDLRegisterSuper_hostname(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData); + 58 -> d_field_SDLRegisterSuper_pub_key(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData); + 66 -> d_field_SDLRegisterSuper_access_token(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData); + _ -> + case Key band 7 of + 0 -> skip_varint_SDLRegisterSuper(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_SDLRegisterSuper(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_SDLRegisterSuper(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_SDLRegisterSuper(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_SDLRegisterSuper(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData) + end + end; +dg_read_field_def_SDLRegisterSuper(<<>>, 0, 0, _, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, _) -> + #'SDLRegisterSuper'{client_id = F@_1, network_id = F@_2, mac = F@_3, ip = F@_4, mask_len = F@_5, hostname = F@_6, pub_key = F@_7, access_token = F@_8}. + +d_field_SDLRegisterSuper_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_SDLRegisterSuper_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_SDLRegisterSuper_client_id(<<0:1, X:7, Rest/binary>>, N, Acc, F, _, 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_SDLRegisterSuper(RestF, 0, 0, F, NewFValue, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData). + +d_field_SDLRegisterSuper_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, TrUserData) when N < 57 -> + d_field_SDLRegisterSuper_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, TrUserData); +d_field_SDLRegisterSuper_network_id(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, _, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData) -> + {NewFValue, RestF} = {id((X bsl N + Acc) band 4294967295, TrUserData), Rest}, + dfp_read_field_def_SDLRegisterSuper(RestF, 0, 0, F, F@_1, NewFValue, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData). + +d_field_SDLRegisterSuper_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, TrUserData) when N < 57 -> + d_field_SDLRegisterSuper_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, TrUserData); +d_field_SDLRegisterSuper_mac(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, _, 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_SDLRegisterSuper(RestF, 0, 0, F, F@_1, F@_2, NewFValue, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData). + +d_field_SDLRegisterSuper_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, TrUserData) when N < 57 -> + d_field_SDLRegisterSuper_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, TrUserData); +d_field_SDLRegisterSuper_ip(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, _, F@_5, F@_6, F@_7, F@_8, TrUserData) -> + {NewFValue, RestF} = {id((X bsl N + Acc) band 4294967295, TrUserData), Rest}, + dfp_read_field_def_SDLRegisterSuper(RestF, 0, 0, F, F@_1, F@_2, F@_3, NewFValue, F@_5, F@_6, F@_7, F@_8, TrUserData). + +d_field_SDLRegisterSuper_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, TrUserData) when N < 57 -> + d_field_SDLRegisterSuper_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, TrUserData); +d_field_SDLRegisterSuper_mask_len(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, _, F@_6, F@_7, F@_8, TrUserData) -> + {NewFValue, RestF} = {id((X bsl N + Acc) band 4294967295, TrUserData), Rest}, + dfp_read_field_def_SDLRegisterSuper(RestF, 0, 0, F, F@_1, F@_2, F@_3, F@_4, NewFValue, F@_6, F@_7, F@_8, TrUserData). + +d_field_SDLRegisterSuper_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_SDLRegisterSuper_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_SDLRegisterSuper_hostname(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, _, 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_SDLRegisterSuper(RestF, 0, 0, F, F@_1, F@_2, F@_3, F@_4, F@_5, NewFValue, F@_7, F@_8, TrUserData). + +d_field_SDLRegisterSuper_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_SDLRegisterSuper_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_SDLRegisterSuper_pub_key(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, _, 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_SDLRegisterSuper(RestF, 0, 0, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, NewFValue, F@_8, TrUserData). + +d_field_SDLRegisterSuper_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, TrUserData) when N < 57 -> + d_field_SDLRegisterSuper_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, TrUserData); +d_field_SDLRegisterSuper_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, _, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, + dfp_read_field_def_SDLRegisterSuper(RestF, 0, 0, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, NewFValue, TrUserData). + +skip_varint_SDLRegisterSuper(<<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_SDLRegisterSuper(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData); +skip_varint_SDLRegisterSuper(<<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_SDLRegisterSuper(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData). + +skip_length_delimited_SDLRegisterSuper(<<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_SDLRegisterSuper(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_SDLRegisterSuper(<<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) -> + Length = X bsl N + Acc, + <<_:Length/binary, Rest2/binary>> = Rest, + dfp_read_field_def_SDLRegisterSuper(Rest2, 0, 0, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData). + +skip_group_SDLRegisterSuper(Bin, _, Z2, FNum, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData) -> + {_, Rest} = read_group(Bin, FNum), + dfp_read_field_def_SDLRegisterSuper(Rest, 0, Z2, FNum, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData). + +skip_32_SDLRegisterSuper(<<_: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_SDLRegisterSuper(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData). + +skip_64_SDLRegisterSuper(<<_: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_SDLRegisterSuper(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData). + +decode_msg_SDLRegisterSuperAck(Bin, TrUserData) -> dfp_read_field_def_SDLRegisterSuperAck(Bin, 0, 0, 0, id(<<>>, TrUserData), id(<<>>, TrUserData), id(0, TrUserData), id(<<>>, TrUserData), TrUserData). + +dfp_read_field_def_SDLRegisterSuperAck(<<10, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> d_field_SDLRegisterSuperAck_algorithm(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +dfp_read_field_def_SDLRegisterSuperAck(<<18, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> d_field_SDLRegisterSuperAck_key(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +dfp_read_field_def_SDLRegisterSuperAck(<<24, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> d_field_SDLRegisterSuperAck_region_id(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +dfp_read_field_def_SDLRegisterSuperAck(<<34, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> d_field_SDLRegisterSuperAck_session_token(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +dfp_read_field_def_SDLRegisterSuperAck(<<>>, 0, 0, _, F@_1, F@_2, F@_3, F@_4, _) -> #'SDLRegisterSuperAck'{algorithm = F@_1, key = F@_2, region_id = F@_3, session_token = F@_4}; +dfp_read_field_def_SDLRegisterSuperAck(Other, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> dg_read_field_def_SDLRegisterSuperAck(Other, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData). + +dg_read_field_def_SDLRegisterSuperAck(<<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_SDLRegisterSuperAck(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +dg_read_field_def_SDLRegisterSuperAck(<<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_SDLRegisterSuperAck_algorithm(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, TrUserData); + 18 -> d_field_SDLRegisterSuperAck_key(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, TrUserData); + 24 -> d_field_SDLRegisterSuperAck_region_id(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, TrUserData); + 34 -> d_field_SDLRegisterSuperAck_session_token(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, TrUserData); + _ -> + case Key band 7 of + 0 -> skip_varint_SDLRegisterSuperAck(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, TrUserData); + 1 -> skip_64_SDLRegisterSuperAck(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, TrUserData); + 2 -> skip_length_delimited_SDLRegisterSuperAck(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, TrUserData); + 3 -> skip_group_SDLRegisterSuperAck(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, TrUserData); + 5 -> skip_32_SDLRegisterSuperAck(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, TrUserData) + end + end; +dg_read_field_def_SDLRegisterSuperAck(<<>>, 0, 0, _, F@_1, F@_2, F@_3, F@_4, _) -> #'SDLRegisterSuperAck'{algorithm = F@_1, key = F@_2, region_id = F@_3, session_token = F@_4}. + +d_field_SDLRegisterSuperAck_algorithm(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> d_field_SDLRegisterSuperAck_algorithm(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +d_field_SDLRegisterSuperAck_algorithm(<<0:1, X:7, Rest/binary>>, N, Acc, F, _, 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_SDLRegisterSuperAck(RestF, 0, 0, F, NewFValue, F@_2, F@_3, F@_4, TrUserData). + +d_field_SDLRegisterSuperAck_key(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> d_field_SDLRegisterSuperAck_key(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +d_field_SDLRegisterSuperAck_key(<<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_SDLRegisterSuperAck(RestF, 0, 0, F, F@_1, NewFValue, F@_3, F@_4, TrUserData). + +d_field_SDLRegisterSuperAck_region_id(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> d_field_SDLRegisterSuperAck_region_id(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +d_field_SDLRegisterSuperAck_region_id(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, _, F@_4, TrUserData) -> + {NewFValue, RestF} = {id((X bsl N + Acc) band 4294967295, TrUserData), Rest}, + dfp_read_field_def_SDLRegisterSuperAck(RestF, 0, 0, F, F@_1, F@_2, NewFValue, F@_4, TrUserData). + +d_field_SDLRegisterSuperAck_session_token(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> d_field_SDLRegisterSuperAck_session_token(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +d_field_SDLRegisterSuperAck_session_token(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, 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_SDLRegisterSuperAck(RestF, 0, 0, F, F@_1, F@_2, F@_3, NewFValue, TrUserData). + +skip_varint_SDLRegisterSuperAck(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> skip_varint_SDLRegisterSuperAck(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +skip_varint_SDLRegisterSuperAck(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> dfp_read_field_def_SDLRegisterSuperAck(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData). + +skip_length_delimited_SDLRegisterSuperAck(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> skip_length_delimited_SDLRegisterSuperAck(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +skip_length_delimited_SDLRegisterSuperAck(<<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_SDLRegisterSuperAck(Rest2, 0, 0, F, F@_1, F@_2, F@_3, F@_4, TrUserData). + +skip_group_SDLRegisterSuperAck(Bin, _, Z2, FNum, F@_1, F@_2, F@_3, F@_4, TrUserData) -> + {_, Rest} = read_group(Bin, FNum), + dfp_read_field_def_SDLRegisterSuperAck(Rest, 0, Z2, FNum, F@_1, F@_2, F@_3, F@_4, TrUserData). + +skip_32_SDLRegisterSuperAck(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> dfp_read_field_def_SDLRegisterSuperAck(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData). + +skip_64_SDLRegisterSuperAck(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> dfp_read_field_def_SDLRegisterSuperAck(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData). + +decode_msg_SDLRegisterSuperNak(Bin, TrUserData) -> dfp_read_field_def_SDLRegisterSuperNak(Bin, 0, 0, 0, id(0, TrUserData), id(<<>>, TrUserData), TrUserData). + +dfp_read_field_def_SDLRegisterSuperNak(<<8, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> d_field_SDLRegisterSuperNak_error_code(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); +dfp_read_field_def_SDLRegisterSuperNak(<<18, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> d_field_SDLRegisterSuperNak_error_message(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); +dfp_read_field_def_SDLRegisterSuperNak(<<>>, 0, 0, _, F@_1, F@_2, _) -> #'SDLRegisterSuperNak'{error_code = F@_1, error_message = F@_2}; +dfp_read_field_def_SDLRegisterSuperNak(Other, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dg_read_field_def_SDLRegisterSuperNak(Other, Z1, Z2, F, F@_1, F@_2, TrUserData). + +dg_read_field_def_SDLRegisterSuperNak(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 32 - 7 -> dg_read_field_def_SDLRegisterSuperNak(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); +dg_read_field_def_SDLRegisterSuperNak(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, F@_2, TrUserData) -> + Key = X bsl N + Acc, + case Key of + 8 -> d_field_SDLRegisterSuperNak_error_code(Rest, 0, 0, 0, F@_1, F@_2, TrUserData); + 18 -> d_field_SDLRegisterSuperNak_error_message(Rest, 0, 0, 0, F@_1, F@_2, TrUserData); + _ -> + case Key band 7 of + 0 -> skip_varint_SDLRegisterSuperNak(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); + 1 -> skip_64_SDLRegisterSuperNak(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); + 2 -> skip_length_delimited_SDLRegisterSuperNak(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); + 3 -> skip_group_SDLRegisterSuperNak(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); + 5 -> skip_32_SDLRegisterSuperNak(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData) + end + end; +dg_read_field_def_SDLRegisterSuperNak(<<>>, 0, 0, _, F@_1, F@_2, _) -> #'SDLRegisterSuperNak'{error_code = F@_1, error_message = F@_2}. + +d_field_SDLRegisterSuperNak_error_code(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> d_field_SDLRegisterSuperNak_error_code(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); +d_field_SDLRegisterSuperNak_error_code(<<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_SDLRegisterSuperNak(RestF, 0, 0, F, NewFValue, F@_2, TrUserData). + +d_field_SDLRegisterSuperNak_error_message(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> d_field_SDLRegisterSuperNak_error_message(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); +d_field_SDLRegisterSuperNak_error_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_SDLRegisterSuperNak(RestF, 0, 0, F, F@_1, NewFValue, TrUserData). + +skip_varint_SDLRegisterSuperNak(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> skip_varint_SDLRegisterSuperNak(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); +skip_varint_SDLRegisterSuperNak(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dfp_read_field_def_SDLRegisterSuperNak(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). + +skip_length_delimited_SDLRegisterSuperNak(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> skip_length_delimited_SDLRegisterSuperNak(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); +skip_length_delimited_SDLRegisterSuperNak(<<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_SDLRegisterSuperNak(Rest2, 0, 0, F, F@_1, F@_2, TrUserData). + +skip_group_SDLRegisterSuperNak(Bin, _, Z2, FNum, F@_1, F@_2, TrUserData) -> + {_, Rest} = read_group(Bin, FNum), + dfp_read_field_def_SDLRegisterSuperNak(Rest, 0, Z2, FNum, F@_1, F@_2, TrUserData). + +skip_32_SDLRegisterSuperNak(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dfp_read_field_def_SDLRegisterSuperNak(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). + +skip_64_SDLRegisterSuperNak(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dfp_read_field_def_SDLRegisterSuperNak(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). + +decode_msg_SDLQueryInfo(Bin, TrUserData) -> dfp_read_field_def_SDLQueryInfo(Bin, 0, 0, 0, id(<<>>, TrUserData), TrUserData). + +dfp_read_field_def_SDLQueryInfo(<<10, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> d_field_SDLQueryInfo_dst_mac(Rest, Z1, Z2, F, F@_1, TrUserData); +dfp_read_field_def_SDLQueryInfo(<<>>, 0, 0, _, F@_1, _) -> #'SDLQueryInfo'{dst_mac = F@_1}; +dfp_read_field_def_SDLQueryInfo(Other, Z1, Z2, F, F@_1, TrUserData) -> dg_read_field_def_SDLQueryInfo(Other, Z1, Z2, F, F@_1, TrUserData). + +dg_read_field_def_SDLQueryInfo(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) when N < 32 - 7 -> dg_read_field_def_SDLQueryInfo(Rest, N + 7, X bsl N + Acc, F, F@_1, TrUserData); +dg_read_field_def_SDLQueryInfo(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, TrUserData) -> + Key = X bsl N + Acc, + case Key of + 10 -> d_field_SDLQueryInfo_dst_mac(Rest, 0, 0, 0, F@_1, TrUserData); + _ -> + case Key band 7 of + 0 -> skip_varint_SDLQueryInfo(Rest, 0, 0, Key bsr 3, F@_1, TrUserData); + 1 -> skip_64_SDLQueryInfo(Rest, 0, 0, Key bsr 3, F@_1, TrUserData); + 2 -> skip_length_delimited_SDLQueryInfo(Rest, 0, 0, Key bsr 3, F@_1, TrUserData); + 3 -> skip_group_SDLQueryInfo(Rest, 0, 0, Key bsr 3, F@_1, TrUserData); + 5 -> skip_32_SDLQueryInfo(Rest, 0, 0, Key bsr 3, F@_1, TrUserData) + end + end; +dg_read_field_def_SDLQueryInfo(<<>>, 0, 0, _, F@_1, _) -> #'SDLQueryInfo'{dst_mac = F@_1}. + +d_field_SDLQueryInfo_dst_mac(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) when N < 57 -> d_field_SDLQueryInfo_dst_mac(Rest, N + 7, X bsl N + Acc, F, F@_1, TrUserData); +d_field_SDLQueryInfo_dst_mac(<<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_SDLQueryInfo(RestF, 0, 0, F, NewFValue, TrUserData). + +skip_varint_SDLQueryInfo(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> skip_varint_SDLQueryInfo(Rest, Z1, Z2, F, F@_1, TrUserData); +skip_varint_SDLQueryInfo(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> dfp_read_field_def_SDLQueryInfo(Rest, Z1, Z2, F, F@_1, TrUserData). + +skip_length_delimited_SDLQueryInfo(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) when N < 57 -> skip_length_delimited_SDLQueryInfo(Rest, N + 7, X bsl N + Acc, F, F@_1, TrUserData); +skip_length_delimited_SDLQueryInfo(<<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_SDLQueryInfo(Rest2, 0, 0, F, F@_1, TrUserData). + +skip_group_SDLQueryInfo(Bin, _, Z2, FNum, F@_1, TrUserData) -> + {_, Rest} = read_group(Bin, FNum), + dfp_read_field_def_SDLQueryInfo(Rest, 0, Z2, FNum, F@_1, TrUserData). + +skip_32_SDLQueryInfo(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> dfp_read_field_def_SDLQueryInfo(Rest, Z1, Z2, F, F@_1, TrUserData). + +skip_64_SDLQueryInfo(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> dfp_read_field_def_SDLQueryInfo(Rest, Z1, Z2, F, F@_1, TrUserData). + +decode_msg_SDLPeerInfo(Bin, TrUserData) -> dfp_read_field_def_SDLPeerInfo(Bin, 0, 0, 0, id(<<>>, TrUserData), id(undefined, TrUserData), id(undefined, TrUserData), TrUserData). + +dfp_read_field_def_SDLPeerInfo(<<10, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_SDLPeerInfo_dst_mac(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); +dfp_read_field_def_SDLPeerInfo(<<18, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_SDLPeerInfo_v4_info(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); +dfp_read_field_def_SDLPeerInfo(<<26, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_SDLPeerInfo_v6_info(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); +dfp_read_field_def_SDLPeerInfo(<<>>, 0, 0, _, F@_1, F@_2, F@_3, _) -> #'SDLPeerInfo'{dst_mac = F@_1, v4_info = F@_2, v6_info = F@_3}; +dfp_read_field_def_SDLPeerInfo(Other, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dg_read_field_def_SDLPeerInfo(Other, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). + +dg_read_field_def_SDLPeerInfo(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 32 - 7 -> dg_read_field_def_SDLPeerInfo(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +dg_read_field_def_SDLPeerInfo(<<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_SDLPeerInfo_dst_mac(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData); + 18 -> d_field_SDLPeerInfo_v4_info(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData); + 26 -> d_field_SDLPeerInfo_v6_info(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData); + _ -> + case Key band 7 of + 0 -> skip_varint_SDLPeerInfo(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); + 1 -> skip_64_SDLPeerInfo(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); + 2 -> skip_length_delimited_SDLPeerInfo(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); + 3 -> skip_group_SDLPeerInfo(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); + 5 -> skip_32_SDLPeerInfo(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData) + end + end; +dg_read_field_def_SDLPeerInfo(<<>>, 0, 0, _, F@_1, F@_2, F@_3, _) -> #'SDLPeerInfo'{dst_mac = F@_1, v4_info = F@_2, v6_info = F@_3}. + +d_field_SDLPeerInfo_dst_mac(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_SDLPeerInfo_dst_mac(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +d_field_SDLPeerInfo_dst_mac(<<0:1, X:7, Rest/binary>>, N, Acc, F, _, F@_2, 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_SDLPeerInfo(RestF, 0, 0, F, NewFValue, F@_2, F@_3, TrUserData). + +d_field_SDLPeerInfo_v4_info(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_SDLPeerInfo_v4_info(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +d_field_SDLPeerInfo_v4_info(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, Prev, F@_3, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, {id(decode_msg_SDLV4Info(Bs, TrUserData), TrUserData), Rest2} end, + dfp_read_field_def_SDLPeerInfo(RestF, + 0, + 0, + F, + F@_1, + if Prev == undefined -> NewFValue; + true -> merge_msg_SDLV4Info(Prev, NewFValue, TrUserData) + end, + F@_3, + TrUserData). + +d_field_SDLPeerInfo_v6_info(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_SDLPeerInfo_v6_info(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +d_field_SDLPeerInfo_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_SDLV6Info(Bs, TrUserData), TrUserData), Rest2} end, + dfp_read_field_def_SDLPeerInfo(RestF, + 0, + 0, + F, + F@_1, + F@_2, + if Prev == undefined -> NewFValue; + true -> merge_msg_SDLV6Info(Prev, NewFValue, TrUserData) + end, + TrUserData). + +skip_varint_SDLPeerInfo(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> skip_varint_SDLPeerInfo(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); +skip_varint_SDLPeerInfo(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_SDLPeerInfo(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). + +skip_length_delimited_SDLPeerInfo(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> skip_length_delimited_SDLPeerInfo(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +skip_length_delimited_SDLPeerInfo(<<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_SDLPeerInfo(Rest2, 0, 0, F, F@_1, F@_2, F@_3, TrUserData). + +skip_group_SDLPeerInfo(Bin, _, Z2, FNum, F@_1, F@_2, F@_3, TrUserData) -> + {_, Rest} = read_group(Bin, FNum), + dfp_read_field_def_SDLPeerInfo(Rest, 0, Z2, FNum, F@_1, F@_2, F@_3, TrUserData). + +skip_32_SDLPeerInfo(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_SDLPeerInfo(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). + +skip_64_SDLPeerInfo(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_SDLPeerInfo(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). + +decode_msg_SDLArpRequest(Bin, TrUserData) -> dfp_read_field_def_SDLArpRequest(Bin, 0, 0, 0, id(0, TrUserData), id(0, TrUserData), id(<<>>, TrUserData), TrUserData). + +dfp_read_field_def_SDLArpRequest(<<8, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_SDLArpRequest_target_ip(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); +dfp_read_field_def_SDLArpRequest(<<16, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_SDLArpRequest_origin_ip(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); +dfp_read_field_def_SDLArpRequest(<<26, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_SDLArpRequest_context(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); +dfp_read_field_def_SDLArpRequest(<<>>, 0, 0, _, F@_1, F@_2, F@_3, _) -> #'SDLArpRequest'{target_ip = F@_1, origin_ip = F@_2, context = F@_3}; +dfp_read_field_def_SDLArpRequest(Other, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dg_read_field_def_SDLArpRequest(Other, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). + +dg_read_field_def_SDLArpRequest(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 32 - 7 -> dg_read_field_def_SDLArpRequest(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +dg_read_field_def_SDLArpRequest(<<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_SDLArpRequest_target_ip(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData); + 16 -> d_field_SDLArpRequest_origin_ip(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData); + 26 -> d_field_SDLArpRequest_context(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData); + _ -> + case Key band 7 of + 0 -> skip_varint_SDLArpRequest(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); + 1 -> skip_64_SDLArpRequest(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); + 2 -> skip_length_delimited_SDLArpRequest(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); + 3 -> skip_group_SDLArpRequest(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); + 5 -> skip_32_SDLArpRequest(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData) + end + end; +dg_read_field_def_SDLArpRequest(<<>>, 0, 0, _, F@_1, F@_2, F@_3, _) -> #'SDLArpRequest'{target_ip = F@_1, origin_ip = F@_2, context = F@_3}. + +d_field_SDLArpRequest_target_ip(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_SDLArpRequest_target_ip(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +d_field_SDLArpRequest_target_ip(<<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_SDLArpRequest(RestF, 0, 0, F, NewFValue, F@_2, F@_3, TrUserData). + +d_field_SDLArpRequest_origin_ip(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_SDLArpRequest_origin_ip(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +d_field_SDLArpRequest_origin_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_SDLArpRequest(RestF, 0, 0, F, F@_1, NewFValue, F@_3, TrUserData). + +d_field_SDLArpRequest_context(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_SDLArpRequest_context(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +d_field_SDLArpRequest_context(<<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_SDLArpRequest(RestF, 0, 0, F, F@_1, F@_2, NewFValue, TrUserData). + +skip_varint_SDLArpRequest(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> skip_varint_SDLArpRequest(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); +skip_varint_SDLArpRequest(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_SDLArpRequest(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). + +skip_length_delimited_SDLArpRequest(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> skip_length_delimited_SDLArpRequest(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +skip_length_delimited_SDLArpRequest(<<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_SDLArpRequest(Rest2, 0, 0, F, F@_1, F@_2, F@_3, TrUserData). + +skip_group_SDLArpRequest(Bin, _, Z2, FNum, F@_1, F@_2, F@_3, TrUserData) -> + {_, Rest} = read_group(Bin, FNum), + dfp_read_field_def_SDLArpRequest(Rest, 0, Z2, FNum, F@_1, F@_2, F@_3, TrUserData). + +skip_32_SDLArpRequest(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_SDLArpRequest(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). + +skip_64_SDLArpRequest(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_SDLArpRequest(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). + +decode_msg_SDLArpResponse(Bin, TrUserData) -> dfp_read_field_def_SDLArpResponse(Bin, 0, 0, 0, id(0, TrUserData), id(<<>>, TrUserData), id(0, TrUserData), id(<<>>, TrUserData), TrUserData). + +dfp_read_field_def_SDLArpResponse(<<8, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> d_field_SDLArpResponse_target_ip(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +dfp_read_field_def_SDLArpResponse(<<18, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> d_field_SDLArpResponse_target_mac(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +dfp_read_field_def_SDLArpResponse(<<24, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> d_field_SDLArpResponse_origin_ip(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +dfp_read_field_def_SDLArpResponse(<<34, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> d_field_SDLArpResponse_context(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +dfp_read_field_def_SDLArpResponse(<<>>, 0, 0, _, F@_1, F@_2, F@_3, F@_4, _) -> #'SDLArpResponse'{target_ip = F@_1, target_mac = F@_2, origin_ip = F@_3, context = F@_4}; +dfp_read_field_def_SDLArpResponse(Other, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> dg_read_field_def_SDLArpResponse(Other, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData). + +dg_read_field_def_SDLArpResponse(<<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_SDLArpResponse(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +dg_read_field_def_SDLArpResponse(<<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 + 8 -> d_field_SDLArpResponse_target_ip(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, TrUserData); + 18 -> d_field_SDLArpResponse_target_mac(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, TrUserData); + 24 -> d_field_SDLArpResponse_origin_ip(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, TrUserData); + 34 -> d_field_SDLArpResponse_context(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, TrUserData); + _ -> + case Key band 7 of + 0 -> skip_varint_SDLArpResponse(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, TrUserData); + 1 -> skip_64_SDLArpResponse(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, TrUserData); + 2 -> skip_length_delimited_SDLArpResponse(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, TrUserData); + 3 -> skip_group_SDLArpResponse(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, TrUserData); + 5 -> skip_32_SDLArpResponse(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, TrUserData) + end + end; +dg_read_field_def_SDLArpResponse(<<>>, 0, 0, _, F@_1, F@_2, F@_3, F@_4, _) -> #'SDLArpResponse'{target_ip = F@_1, target_mac = F@_2, origin_ip = F@_3, context = F@_4}. + +d_field_SDLArpResponse_target_ip(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> d_field_SDLArpResponse_target_ip(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +d_field_SDLArpResponse_target_ip(<<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_SDLArpResponse(RestF, 0, 0, F, NewFValue, F@_2, F@_3, F@_4, TrUserData). + +d_field_SDLArpResponse_target_mac(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> d_field_SDLArpResponse_target_mac(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +d_field_SDLArpResponse_target_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_SDLArpResponse(RestF, 0, 0, F, F@_1, NewFValue, F@_3, F@_4, TrUserData). + +d_field_SDLArpResponse_origin_ip(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> d_field_SDLArpResponse_origin_ip(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +d_field_SDLArpResponse_origin_ip(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, _, F@_4, TrUserData) -> + {NewFValue, RestF} = {id((X bsl N + Acc) band 4294967295, TrUserData), Rest}, + dfp_read_field_def_SDLArpResponse(RestF, 0, 0, F, F@_1, F@_2, NewFValue, F@_4, TrUserData). + +d_field_SDLArpResponse_context(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> d_field_SDLArpResponse_context(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +d_field_SDLArpResponse_context(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, 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_SDLArpResponse(RestF, 0, 0, F, F@_1, F@_2, F@_3, NewFValue, TrUserData). + +skip_varint_SDLArpResponse(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> skip_varint_SDLArpResponse(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +skip_varint_SDLArpResponse(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> dfp_read_field_def_SDLArpResponse(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData). + +skip_length_delimited_SDLArpResponse(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> skip_length_delimited_SDLArpResponse(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +skip_length_delimited_SDLArpResponse(<<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_SDLArpResponse(Rest2, 0, 0, F, F@_1, F@_2, F@_3, F@_4, TrUserData). + +skip_group_SDLArpResponse(Bin, _, Z2, FNum, F@_1, F@_2, F@_3, F@_4, TrUserData) -> + {_, Rest} = read_group(Bin, FNum), + dfp_read_field_def_SDLArpResponse(Rest, 0, Z2, FNum, F@_1, F@_2, F@_3, F@_4, TrUserData). + +skip_32_SDLArpResponse(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> dfp_read_field_def_SDLArpResponse(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData). + +skip_64_SDLArpResponse(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> dfp_read_field_def_SDLArpResponse(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData). + +decode_msg_SDLPolicyRequest(Bin, TrUserData) -> dfp_read_field_def_SDLPolicyRequest(Bin, 0, 0, 0, id(0, TrUserData), id(0, TrUserData), id(0, TrUserData), TrUserData). + +dfp_read_field_def_SDLPolicyRequest(<<8, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_SDLPolicyRequest_src_identity_id(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); +dfp_read_field_def_SDLPolicyRequest(<<16, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_SDLPolicyRequest_dst_identity_id(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); +dfp_read_field_def_SDLPolicyRequest(<<24, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_SDLPolicyRequest_version(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); +dfp_read_field_def_SDLPolicyRequest(<<>>, 0, 0, _, F@_1, F@_2, F@_3, _) -> #'SDLPolicyRequest'{src_identity_id = F@_1, dst_identity_id = F@_2, version = F@_3}; +dfp_read_field_def_SDLPolicyRequest(Other, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dg_read_field_def_SDLPolicyRequest(Other, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). + +dg_read_field_def_SDLPolicyRequest(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 32 - 7 -> dg_read_field_def_SDLPolicyRequest(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +dg_read_field_def_SDLPolicyRequest(<<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_SDLPolicyRequest_src_identity_id(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData); + 16 -> d_field_SDLPolicyRequest_dst_identity_id(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData); + 24 -> d_field_SDLPolicyRequest_version(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData); + _ -> + case Key band 7 of + 0 -> skip_varint_SDLPolicyRequest(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); + 1 -> skip_64_SDLPolicyRequest(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); + 2 -> skip_length_delimited_SDLPolicyRequest(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); + 3 -> skip_group_SDLPolicyRequest(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); + 5 -> skip_32_SDLPolicyRequest(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData) + end + end; +dg_read_field_def_SDLPolicyRequest(<<>>, 0, 0, _, F@_1, F@_2, F@_3, _) -> #'SDLPolicyRequest'{src_identity_id = F@_1, dst_identity_id = F@_2, version = F@_3}. + +d_field_SDLPolicyRequest_src_identity_id(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_SDLPolicyRequest_src_identity_id(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +d_field_SDLPolicyRequest_src_identity_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_SDLPolicyRequest(RestF, 0, 0, F, NewFValue, F@_2, F@_3, TrUserData). + +d_field_SDLPolicyRequest_dst_identity_id(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_SDLPolicyRequest_dst_identity_id(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +d_field_SDLPolicyRequest_dst_identity_id(<<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_SDLPolicyRequest(RestF, 0, 0, F, F@_1, NewFValue, F@_3, TrUserData). + +d_field_SDLPolicyRequest_version(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_SDLPolicyRequest_version(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +d_field_SDLPolicyRequest_version(<<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_SDLPolicyRequest(RestF, 0, 0, F, F@_1, F@_2, NewFValue, TrUserData). + +skip_varint_SDLPolicyRequest(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> skip_varint_SDLPolicyRequest(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); +skip_varint_SDLPolicyRequest(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_SDLPolicyRequest(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). + +skip_length_delimited_SDLPolicyRequest(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> skip_length_delimited_SDLPolicyRequest(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +skip_length_delimited_SDLPolicyRequest(<<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_SDLPolicyRequest(Rest2, 0, 0, F, F@_1, F@_2, F@_3, TrUserData). + +skip_group_SDLPolicyRequest(Bin, _, Z2, FNum, F@_1, F@_2, F@_3, TrUserData) -> + {_, Rest} = read_group(Bin, FNum), + dfp_read_field_def_SDLPolicyRequest(Rest, 0, Z2, FNum, F@_1, F@_2, F@_3, TrUserData). + +skip_32_SDLPolicyRequest(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_SDLPolicyRequest(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). + +skip_64_SDLPolicyRequest(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_SDLPolicyRequest(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). + +decode_msg_SDLPolicyResponse(Bin, TrUserData) -> dfp_read_field_def_SDLPolicyResponse(Bin, 0, 0, 0, id(0, TrUserData), id(0, TrUserData), id(0, TrUserData), id(<<>>, TrUserData), TrUserData). + +dfp_read_field_def_SDLPolicyResponse(<<8, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> d_field_SDLPolicyResponse_src_identity_id(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +dfp_read_field_def_SDLPolicyResponse(<<16, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> d_field_SDLPolicyResponse_dst_identity_id(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +dfp_read_field_def_SDLPolicyResponse(<<24, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> d_field_SDLPolicyResponse_version(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +dfp_read_field_def_SDLPolicyResponse(<<34, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> d_field_SDLPolicyResponse_rules(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +dfp_read_field_def_SDLPolicyResponse(<<>>, 0, 0, _, F@_1, F@_2, F@_3, F@_4, _) -> #'SDLPolicyResponse'{src_identity_id = F@_1, dst_identity_id = F@_2, version = F@_3, rules = F@_4}; +dfp_read_field_def_SDLPolicyResponse(Other, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> dg_read_field_def_SDLPolicyResponse(Other, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData). + +dg_read_field_def_SDLPolicyResponse(<<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_SDLPolicyResponse(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +dg_read_field_def_SDLPolicyResponse(<<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 + 8 -> d_field_SDLPolicyResponse_src_identity_id(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, TrUserData); + 16 -> d_field_SDLPolicyResponse_dst_identity_id(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, TrUserData); + 24 -> d_field_SDLPolicyResponse_version(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, TrUserData); + 34 -> d_field_SDLPolicyResponse_rules(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, TrUserData); + _ -> + case Key band 7 of + 0 -> skip_varint_SDLPolicyResponse(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, TrUserData); + 1 -> skip_64_SDLPolicyResponse(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, TrUserData); + 2 -> skip_length_delimited_SDLPolicyResponse(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, TrUserData); + 3 -> skip_group_SDLPolicyResponse(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, TrUserData); + 5 -> skip_32_SDLPolicyResponse(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, TrUserData) + end + end; +dg_read_field_def_SDLPolicyResponse(<<>>, 0, 0, _, F@_1, F@_2, F@_3, F@_4, _) -> #'SDLPolicyResponse'{src_identity_id = F@_1, dst_identity_id = F@_2, version = F@_3, rules = F@_4}. + +d_field_SDLPolicyResponse_src_identity_id(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> d_field_SDLPolicyResponse_src_identity_id(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +d_field_SDLPolicyResponse_src_identity_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_SDLPolicyResponse(RestF, 0, 0, F, NewFValue, F@_2, F@_3, F@_4, TrUserData). + +d_field_SDLPolicyResponse_dst_identity_id(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> d_field_SDLPolicyResponse_dst_identity_id(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +d_field_SDLPolicyResponse_dst_identity_id(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, _, F@_3, F@_4, TrUserData) -> + {NewFValue, RestF} = {id((X bsl N + Acc) band 4294967295, TrUserData), Rest}, + dfp_read_field_def_SDLPolicyResponse(RestF, 0, 0, F, F@_1, NewFValue, F@_3, F@_4, TrUserData). + +d_field_SDLPolicyResponse_version(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> d_field_SDLPolicyResponse_version(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +d_field_SDLPolicyResponse_version(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, _, F@_4, TrUserData) -> + {NewFValue, RestF} = {id((X bsl N + Acc) band 4294967295, TrUserData), Rest}, + dfp_read_field_def_SDLPolicyResponse(RestF, 0, 0, F, F@_1, F@_2, NewFValue, F@_4, TrUserData). + +d_field_SDLPolicyResponse_rules(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> d_field_SDLPolicyResponse_rules(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +d_field_SDLPolicyResponse_rules(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, 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_SDLPolicyResponse(RestF, 0, 0, F, F@_1, F@_2, F@_3, NewFValue, TrUserData). + +skip_varint_SDLPolicyResponse(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> skip_varint_SDLPolicyResponse(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +skip_varint_SDLPolicyResponse(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> dfp_read_field_def_SDLPolicyResponse(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData). + +skip_length_delimited_SDLPolicyResponse(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> skip_length_delimited_SDLPolicyResponse(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +skip_length_delimited_SDLPolicyResponse(<<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_SDLPolicyResponse(Rest2, 0, 0, F, F@_1, F@_2, F@_3, F@_4, TrUserData). + +skip_group_SDLPolicyResponse(Bin, _, Z2, FNum, F@_1, F@_2, F@_3, F@_4, TrUserData) -> + {_, Rest} = read_group(Bin, FNum), + dfp_read_field_def_SDLPolicyResponse(Rest, 0, Z2, FNum, F@_1, F@_2, F@_3, F@_4, TrUserData). + +skip_32_SDLPolicyResponse(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> dfp_read_field_def_SDLPolicyResponse(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData). + +skip_64_SDLPolicyResponse(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> dfp_read_field_def_SDLPolicyResponse(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData). + +'decode_msg_SDLEvent.NatChanged'(Bin, TrUserData) -> 'dfp_read_field_def_SDLEvent.NatChanged'(Bin, 0, 0, 0, id(<<>>, TrUserData), id(0, TrUserData), TrUserData). + +'dfp_read_field_def_SDLEvent.NatChanged'(<<10, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> 'd_field_SDLEvent.NatChanged_mac'(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); +'dfp_read_field_def_SDLEvent.NatChanged'(<<16, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> 'd_field_SDLEvent.NatChanged_ip'(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); +'dfp_read_field_def_SDLEvent.NatChanged'(<<>>, 0, 0, _, F@_1, F@_2, _) -> #'SDLEvent.NatChanged'{mac = F@_1, ip = F@_2}; +'dfp_read_field_def_SDLEvent.NatChanged'(Other, Z1, Z2, F, F@_1, F@_2, TrUserData) -> 'dg_read_field_def_SDLEvent.NatChanged'(Other, Z1, Z2, F, F@_1, F@_2, TrUserData). + +'dg_read_field_def_SDLEvent.NatChanged'(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 32 - 7 -> 'dg_read_field_def_SDLEvent.NatChanged'(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); +'dg_read_field_def_SDLEvent.NatChanged'(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, F@_2, TrUserData) -> + Key = X bsl N + Acc, + case Key of + 10 -> 'd_field_SDLEvent.NatChanged_mac'(Rest, 0, 0, 0, F@_1, F@_2, TrUserData); + 16 -> 'd_field_SDLEvent.NatChanged_ip'(Rest, 0, 0, 0, F@_1, F@_2, TrUserData); + _ -> + case Key band 7 of + 0 -> 'skip_varint_SDLEvent.NatChanged'(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); + 1 -> 'skip_64_SDLEvent.NatChanged'(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); + 2 -> 'skip_length_delimited_SDLEvent.NatChanged'(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); + 3 -> 'skip_group_SDLEvent.NatChanged'(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData); + 5 -> 'skip_32_SDLEvent.NatChanged'(Rest, 0, 0, Key bsr 3, F@_1, F@_2, TrUserData) + end + end; +'dg_read_field_def_SDLEvent.NatChanged'(<<>>, 0, 0, _, F@_1, F@_2, _) -> #'SDLEvent.NatChanged'{mac = F@_1, ip = F@_2}. + +'d_field_SDLEvent.NatChanged_mac'(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> 'd_field_SDLEvent.NatChanged_mac'(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); +'d_field_SDLEvent.NatChanged_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_SDLEvent.NatChanged'(RestF, 0, 0, F, NewFValue, F@_2, TrUserData). + +'d_field_SDLEvent.NatChanged_ip'(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> 'd_field_SDLEvent.NatChanged_ip'(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); +'d_field_SDLEvent.NatChanged_ip'(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, _, TrUserData) -> + {NewFValue, RestF} = {id((X bsl N + Acc) band 4294967295, TrUserData), Rest}, + 'dfp_read_field_def_SDLEvent.NatChanged'(RestF, 0, 0, F, F@_1, NewFValue, TrUserData). + +'skip_varint_SDLEvent.NatChanged'(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> 'skip_varint_SDLEvent.NatChanged'(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData); +'skip_varint_SDLEvent.NatChanged'(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> 'dfp_read_field_def_SDLEvent.NatChanged'(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). + +'skip_length_delimited_SDLEvent.NatChanged'(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, TrUserData) when N < 57 -> 'skip_length_delimited_SDLEvent.NatChanged'(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, TrUserData); +'skip_length_delimited_SDLEvent.NatChanged'(<<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_SDLEvent.NatChanged'(Rest2, 0, 0, F, F@_1, F@_2, TrUserData). + +'skip_group_SDLEvent.NatChanged'(Bin, _, Z2, FNum, F@_1, F@_2, TrUserData) -> + {_, Rest} = read_group(Bin, FNum), + 'dfp_read_field_def_SDLEvent.NatChanged'(Rest, 0, Z2, FNum, F@_1, F@_2, TrUserData). + +'skip_32_SDLEvent.NatChanged'(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> 'dfp_read_field_def_SDLEvent.NatChanged'(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). + +'skip_64_SDLEvent.NatChanged'(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> 'dfp_read_field_def_SDLEvent.NatChanged'(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). + +'decode_msg_SDLEvent.SendRegister'(Bin, TrUserData) -> 'dfp_read_field_def_SDLEvent.SendRegister'(Bin, 0, 0, 0, id(<<>>, TrUserData), id(0, TrUserData), id(0, TrUserData), id(0, TrUserData), id(undefined, TrUserData), TrUserData). + +'dfp_read_field_def_SDLEvent.SendRegister'(<<10, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) -> 'd_field_SDLEvent.SendRegister_dst_mac'(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); +'dfp_read_field_def_SDLEvent.SendRegister'(<<16, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) -> 'd_field_SDLEvent.SendRegister_nat_ip'(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); +'dfp_read_field_def_SDLEvent.SendRegister'(<<24, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) -> 'd_field_SDLEvent.SendRegister_nat_port'(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); +'dfp_read_field_def_SDLEvent.SendRegister'(<<32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) -> 'd_field_SDLEvent.SendRegister_nat_type'(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); +'dfp_read_field_def_SDLEvent.SendRegister'(<<42, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) -> 'd_field_SDLEvent.SendRegister_v6_info'(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); +'dfp_read_field_def_SDLEvent.SendRegister'(<<>>, 0, 0, _, F@_1, F@_2, F@_3, F@_4, F@_5, _) -> #'SDLEvent.SendRegister'{dst_mac = F@_1, nat_ip = F@_2, nat_port = F@_3, nat_type = F@_4, v6_info = F@_5}; +'dfp_read_field_def_SDLEvent.SendRegister'(Other, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) -> 'dg_read_field_def_SDLEvent.SendRegister'(Other, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData). + +'dg_read_field_def_SDLEvent.SendRegister'(<<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_SDLEvent.SendRegister'(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); +'dg_read_field_def_SDLEvent.SendRegister'(<<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 + 10 -> 'd_field_SDLEvent.SendRegister_dst_mac'(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); + 16 -> 'd_field_SDLEvent.SendRegister_nat_ip'(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); + 24 -> 'd_field_SDLEvent.SendRegister_nat_port'(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); + 32 -> 'd_field_SDLEvent.SendRegister_nat_type'(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); + 42 -> 'd_field_SDLEvent.SendRegister_v6_info'(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); + _ -> + case Key band 7 of + 0 -> 'skip_varint_SDLEvent.SendRegister'(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); + 1 -> 'skip_64_SDLEvent.SendRegister'(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); + 2 -> 'skip_length_delimited_SDLEvent.SendRegister'(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); + 3 -> 'skip_group_SDLEvent.SendRegister'(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); + 5 -> 'skip_32_SDLEvent.SendRegister'(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) + end + end; +'dg_read_field_def_SDLEvent.SendRegister'(<<>>, 0, 0, _, F@_1, F@_2, F@_3, F@_4, F@_5, _) -> #'SDLEvent.SendRegister'{dst_mac = F@_1, nat_ip = F@_2, nat_port = F@_3, nat_type = F@_4, v6_info = F@_5}. + +'d_field_SDLEvent.SendRegister_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_SDLEvent.SendRegister_dst_mac'(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); +'d_field_SDLEvent.SendRegister_dst_mac'(<<0:1, X:7, Rest/binary>>, N, Acc, F, _, F@_2, 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_SDLEvent.SendRegister'(RestF, 0, 0, F, NewFValue, F@_2, F@_3, F@_4, F@_5, TrUserData). + +'d_field_SDLEvent.SendRegister_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_SDLEvent.SendRegister_nat_ip'(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); +'d_field_SDLEvent.SendRegister_nat_ip'(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, _, F@_3, F@_4, F@_5, TrUserData) -> + {NewFValue, RestF} = {id((X bsl N + Acc) band 4294967295, TrUserData), Rest}, + 'dfp_read_field_def_SDLEvent.SendRegister'(RestF, 0, 0, F, F@_1, NewFValue, F@_3, F@_4, F@_5, TrUserData). + +'d_field_SDLEvent.SendRegister_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_SDLEvent.SendRegister_nat_port'(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); +'d_field_SDLEvent.SendRegister_nat_port'(<<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_SDLEvent.SendRegister'(RestF, 0, 0, F, F@_1, F@_2, NewFValue, F@_4, F@_5, TrUserData). + +'d_field_SDLEvent.SendRegister_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_SDLEvent.SendRegister_nat_type'(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); +'d_field_SDLEvent.SendRegister_nat_type'(<<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_SDLEvent.SendRegister'(RestF, 0, 0, F, F@_1, F@_2, F@_3, NewFValue, F@_5, TrUserData). + +'d_field_SDLEvent.SendRegister_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_SDLEvent.SendRegister_v6_info'(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); +'d_field_SDLEvent.SendRegister_v6_info'(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, Prev, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, {id(decode_msg_SDLV6Info(Bs, TrUserData), TrUserData), Rest2} end, + 'dfp_read_field_def_SDLEvent.SendRegister'(RestF, + 0, + 0, + F, + F@_1, + F@_2, + F@_3, + F@_4, + if Prev == undefined -> NewFValue; + true -> merge_msg_SDLV6Info(Prev, NewFValue, TrUserData) + end, + TrUserData). + +'skip_varint_SDLEvent.SendRegister'(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) -> 'skip_varint_SDLEvent.SendRegister'(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); +'skip_varint_SDLEvent.SendRegister'(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) -> 'dfp_read_field_def_SDLEvent.SendRegister'(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData). + +'skip_length_delimited_SDLEvent.SendRegister'(<<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_SDLEvent.SendRegister'(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); +'skip_length_delimited_SDLEvent.SendRegister'(<<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_SDLEvent.SendRegister'(Rest2, 0, 0, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData). + +'skip_group_SDLEvent.SendRegister'(Bin, _, Z2, FNum, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) -> + {_, Rest} = read_group(Bin, FNum), + 'dfp_read_field_def_SDLEvent.SendRegister'(Rest, 0, Z2, FNum, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData). + +'skip_32_SDLEvent.SendRegister'(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) -> 'dfp_read_field_def_SDLEvent.SendRegister'(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData). + +'skip_64_SDLEvent.SendRegister'(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) -> 'dfp_read_field_def_SDLEvent.SendRegister'(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData). + +'decode_msg_SDLEvent.NetworkShutdown'(Bin, TrUserData) -> 'dfp_read_field_def_SDLEvent.NetworkShutdown'(Bin, 0, 0, 0, id(<<>>, TrUserData), TrUserData). + +'dfp_read_field_def_SDLEvent.NetworkShutdown'(<<10, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> 'd_field_SDLEvent.NetworkShutdown_message'(Rest, Z1, Z2, F, F@_1, TrUserData); +'dfp_read_field_def_SDLEvent.NetworkShutdown'(<<>>, 0, 0, _, F@_1, _) -> #'SDLEvent.NetworkShutdown'{message = F@_1}; +'dfp_read_field_def_SDLEvent.NetworkShutdown'(Other, Z1, Z2, F, F@_1, TrUserData) -> 'dg_read_field_def_SDLEvent.NetworkShutdown'(Other, Z1, Z2, F, F@_1, TrUserData). + +'dg_read_field_def_SDLEvent.NetworkShutdown'(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) when N < 32 - 7 -> 'dg_read_field_def_SDLEvent.NetworkShutdown'(Rest, N + 7, X bsl N + Acc, F, F@_1, TrUserData); +'dg_read_field_def_SDLEvent.NetworkShutdown'(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, TrUserData) -> + Key = X bsl N + Acc, + case Key of + 10 -> 'd_field_SDLEvent.NetworkShutdown_message'(Rest, 0, 0, 0, F@_1, TrUserData); + _ -> + case Key band 7 of + 0 -> 'skip_varint_SDLEvent.NetworkShutdown'(Rest, 0, 0, Key bsr 3, F@_1, TrUserData); + 1 -> 'skip_64_SDLEvent.NetworkShutdown'(Rest, 0, 0, Key bsr 3, F@_1, TrUserData); + 2 -> 'skip_length_delimited_SDLEvent.NetworkShutdown'(Rest, 0, 0, Key bsr 3, F@_1, TrUserData); + 3 -> 'skip_group_SDLEvent.NetworkShutdown'(Rest, 0, 0, Key bsr 3, F@_1, TrUserData); + 5 -> 'skip_32_SDLEvent.NetworkShutdown'(Rest, 0, 0, Key bsr 3, F@_1, TrUserData) + end + end; +'dg_read_field_def_SDLEvent.NetworkShutdown'(<<>>, 0, 0, _, F@_1, _) -> #'SDLEvent.NetworkShutdown'{message = F@_1}. + +'d_field_SDLEvent.NetworkShutdown_message'(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) when N < 57 -> 'd_field_SDLEvent.NetworkShutdown_message'(Rest, N + 7, X bsl N + Acc, F, F@_1, TrUserData); +'d_field_SDLEvent.NetworkShutdown_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_SDLEvent.NetworkShutdown'(RestF, 0, 0, F, NewFValue, TrUserData). + +'skip_varint_SDLEvent.NetworkShutdown'(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> 'skip_varint_SDLEvent.NetworkShutdown'(Rest, Z1, Z2, F, F@_1, TrUserData); +'skip_varint_SDLEvent.NetworkShutdown'(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> 'dfp_read_field_def_SDLEvent.NetworkShutdown'(Rest, Z1, Z2, F, F@_1, TrUserData). + +'skip_length_delimited_SDLEvent.NetworkShutdown'(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) when N < 57 -> 'skip_length_delimited_SDLEvent.NetworkShutdown'(Rest, N + 7, X bsl N + Acc, F, F@_1, TrUserData); +'skip_length_delimited_SDLEvent.NetworkShutdown'(<<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_SDLEvent.NetworkShutdown'(Rest2, 0, 0, F, F@_1, TrUserData). + +'skip_group_SDLEvent.NetworkShutdown'(Bin, _, Z2, FNum, F@_1, TrUserData) -> + {_, Rest} = read_group(Bin, FNum), + 'dfp_read_field_def_SDLEvent.NetworkShutdown'(Rest, 0, Z2, FNum, F@_1, TrUserData). + +'skip_32_SDLEvent.NetworkShutdown'(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> 'dfp_read_field_def_SDLEvent.NetworkShutdown'(Rest, Z1, Z2, F, F@_1, TrUserData). + +'skip_64_SDLEvent.NetworkShutdown'(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> 'dfp_read_field_def_SDLEvent.NetworkShutdown'(Rest, Z1, Z2, F, F@_1, TrUserData). + +'decode_msg_SDLEvent.ExitNodeControl'(Bin, TrUserData) -> 'dfp_read_field_def_SDLEvent.ExitNodeControl'(Bin, 0, 0, 0, id(0, TrUserData), id(<<>>, TrUserData), id(0, TrUserData), id(<<>>, TrUserData), TrUserData). + +'dfp_read_field_def_SDLEvent.ExitNodeControl'(<<8, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> 'd_field_SDLEvent.ExitNodeControl_action'(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +'dfp_read_field_def_SDLEvent.ExitNodeControl'(<<18, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> 'd_field_SDLEvent.ExitNodeControl_node_mac'(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +'dfp_read_field_def_SDLEvent.ExitNodeControl'(<<24, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> 'd_field_SDLEvent.ExitNodeControl_node_ip'(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +'dfp_read_field_def_SDLEvent.ExitNodeControl'(<<34, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> 'd_field_SDLEvent.ExitNodeControl_remark'(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +'dfp_read_field_def_SDLEvent.ExitNodeControl'(<<>>, 0, 0, _, F@_1, F@_2, F@_3, F@_4, _) -> #'SDLEvent.ExitNodeControl'{action = F@_1, node_mac = F@_2, node_ip = F@_3, remark = F@_4}; +'dfp_read_field_def_SDLEvent.ExitNodeControl'(Other, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> 'dg_read_field_def_SDLEvent.ExitNodeControl'(Other, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData). + +'dg_read_field_def_SDLEvent.ExitNodeControl'(<<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_SDLEvent.ExitNodeControl'(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +'dg_read_field_def_SDLEvent.ExitNodeControl'(<<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 + 8 -> 'd_field_SDLEvent.ExitNodeControl_action'(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, TrUserData); + 18 -> 'd_field_SDLEvent.ExitNodeControl_node_mac'(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, TrUserData); + 24 -> 'd_field_SDLEvent.ExitNodeControl_node_ip'(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, TrUserData); + 34 -> 'd_field_SDLEvent.ExitNodeControl_remark'(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, TrUserData); + _ -> + case Key band 7 of + 0 -> 'skip_varint_SDLEvent.ExitNodeControl'(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, TrUserData); + 1 -> 'skip_64_SDLEvent.ExitNodeControl'(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, TrUserData); + 2 -> 'skip_length_delimited_SDLEvent.ExitNodeControl'(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, TrUserData); + 3 -> 'skip_group_SDLEvent.ExitNodeControl'(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, TrUserData); + 5 -> 'skip_32_SDLEvent.ExitNodeControl'(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, TrUserData) + end + end; +'dg_read_field_def_SDLEvent.ExitNodeControl'(<<>>, 0, 0, _, F@_1, F@_2, F@_3, F@_4, _) -> #'SDLEvent.ExitNodeControl'{action = F@_1, node_mac = F@_2, node_ip = F@_3, remark = F@_4}. + +'d_field_SDLEvent.ExitNodeControl_action'(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> 'd_field_SDLEvent.ExitNodeControl_action'(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +'d_field_SDLEvent.ExitNodeControl_action'(<<0:1, X:7, Rest/binary>>, N, Acc, F, _, F@_2, F@_3, F@_4, TrUserData) -> + {NewFValue, RestF} = {begin <> = <<(X bsl N + Acc):32/unsigned-native>>, id(Res, TrUserData) end, Rest}, + 'dfp_read_field_def_SDLEvent.ExitNodeControl'(RestF, 0, 0, F, NewFValue, F@_2, F@_3, F@_4, TrUserData). + +'d_field_SDLEvent.ExitNodeControl_node_mac'(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> 'd_field_SDLEvent.ExitNodeControl_node_mac'(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +'d_field_SDLEvent.ExitNodeControl_node_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_SDLEvent.ExitNodeControl'(RestF, 0, 0, F, F@_1, NewFValue, F@_3, F@_4, TrUserData). + +'d_field_SDLEvent.ExitNodeControl_node_ip'(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> 'd_field_SDLEvent.ExitNodeControl_node_ip'(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +'d_field_SDLEvent.ExitNodeControl_node_ip'(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, _, F@_4, TrUserData) -> + {NewFValue, RestF} = {id((X bsl N + Acc) band 4294967295, TrUserData), Rest}, + 'dfp_read_field_def_SDLEvent.ExitNodeControl'(RestF, 0, 0, F, F@_1, F@_2, NewFValue, F@_4, TrUserData). + +'d_field_SDLEvent.ExitNodeControl_remark'(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> 'd_field_SDLEvent.ExitNodeControl_remark'(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +'d_field_SDLEvent.ExitNodeControl_remark'(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, 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_SDLEvent.ExitNodeControl'(RestF, 0, 0, F, F@_1, F@_2, F@_3, NewFValue, TrUserData). + +'skip_varint_SDLEvent.ExitNodeControl'(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> 'skip_varint_SDLEvent.ExitNodeControl'(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +'skip_varint_SDLEvent.ExitNodeControl'(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> 'dfp_read_field_def_SDLEvent.ExitNodeControl'(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData). + +'skip_length_delimited_SDLEvent.ExitNodeControl'(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> + 'skip_length_delimited_SDLEvent.ExitNodeControl'(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +'skip_length_delimited_SDLEvent.ExitNodeControl'(<<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_SDLEvent.ExitNodeControl'(Rest2, 0, 0, F, F@_1, F@_2, F@_3, F@_4, TrUserData). + +'skip_group_SDLEvent.ExitNodeControl'(Bin, _, Z2, FNum, F@_1, F@_2, F@_3, F@_4, TrUserData) -> + {_, Rest} = read_group(Bin, FNum), + 'dfp_read_field_def_SDLEvent.ExitNodeControl'(Rest, 0, Z2, FNum, F@_1, F@_2, F@_3, F@_4, TrUserData). + +'skip_32_SDLEvent.ExitNodeControl'(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> 'dfp_read_field_def_SDLEvent.ExitNodeControl'(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData). + +'skip_64_SDLEvent.ExitNodeControl'(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> 'dfp_read_field_def_SDLEvent.ExitNodeControl'(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData). + +decode_msg_SDLEvent(Bin, TrUserData) -> dfp_read_field_def_SDLEvent(Bin, 0, 0, 0, id(undefined, TrUserData), TrUserData). + +dfp_read_field_def_SDLEvent(<<10, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> d_field_SDLEvent_nat_changed(Rest, Z1, Z2, F, F@_1, TrUserData); +dfp_read_field_def_SDLEvent(<<18, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> d_field_SDLEvent_send_register(Rest, Z1, Z2, F, F@_1, TrUserData); +dfp_read_field_def_SDLEvent(<<26, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> d_field_SDLEvent_shutdown(Rest, Z1, Z2, F, F@_1, TrUserData); +dfp_read_field_def_SDLEvent(<<34, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> d_field_SDLEvent_exit_node(Rest, Z1, Z2, F, F@_1, TrUserData); +dfp_read_field_def_SDLEvent(<<>>, 0, 0, _, F@_1, _) -> #'SDLEvent'{event = F@_1}; +dfp_read_field_def_SDLEvent(Other, Z1, Z2, F, F@_1, TrUserData) -> dg_read_field_def_SDLEvent(Other, Z1, Z2, F, F@_1, TrUserData). + +dg_read_field_def_SDLEvent(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) when N < 32 - 7 -> dg_read_field_def_SDLEvent(Rest, N + 7, X bsl N + Acc, F, F@_1, TrUserData); +dg_read_field_def_SDLEvent(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, TrUserData) -> + Key = X bsl N + Acc, + case Key of + 10 -> d_field_SDLEvent_nat_changed(Rest, 0, 0, 0, F@_1, TrUserData); + 18 -> d_field_SDLEvent_send_register(Rest, 0, 0, 0, F@_1, TrUserData); + 26 -> d_field_SDLEvent_shutdown(Rest, 0, 0, 0, F@_1, TrUserData); + 34 -> d_field_SDLEvent_exit_node(Rest, 0, 0, 0, F@_1, TrUserData); + _ -> + case Key band 7 of + 0 -> skip_varint_SDLEvent(Rest, 0, 0, Key bsr 3, F@_1, TrUserData); + 1 -> skip_64_SDLEvent(Rest, 0, 0, Key bsr 3, F@_1, TrUserData); + 2 -> skip_length_delimited_SDLEvent(Rest, 0, 0, Key bsr 3, F@_1, TrUserData); + 3 -> skip_group_SDLEvent(Rest, 0, 0, Key bsr 3, F@_1, TrUserData); + 5 -> skip_32_SDLEvent(Rest, 0, 0, Key bsr 3, F@_1, TrUserData) + end + end; +dg_read_field_def_SDLEvent(<<>>, 0, 0, _, F@_1, _) -> #'SDLEvent'{event = F@_1}. + +d_field_SDLEvent_nat_changed(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) when N < 57 -> d_field_SDLEvent_nat_changed(Rest, N + 7, X bsl N + Acc, F, F@_1, TrUserData); +d_field_SDLEvent_nat_changed(<<0:1, X:7, Rest/binary>>, N, Acc, F, Prev, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, {id('decode_msg_SDLEvent.NatChanged'(Bs, TrUserData), TrUserData), Rest2} end, + dfp_read_field_def_SDLEvent(RestF, + 0, + 0, + F, + case Prev of + undefined -> id({nat_changed, NewFValue}, TrUserData); + {nat_changed, MVPrev} -> id({nat_changed, 'merge_msg_SDLEvent.NatChanged'(MVPrev, NewFValue, TrUserData)}, TrUserData); + _ -> id({nat_changed, NewFValue}, TrUserData) + end, + TrUserData). + +d_field_SDLEvent_send_register(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) when N < 57 -> d_field_SDLEvent_send_register(Rest, N + 7, X bsl N + Acc, F, F@_1, TrUserData); +d_field_SDLEvent_send_register(<<0:1, X:7, Rest/binary>>, N, Acc, F, Prev, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, {id('decode_msg_SDLEvent.SendRegister'(Bs, TrUserData), TrUserData), Rest2} end, + dfp_read_field_def_SDLEvent(RestF, + 0, + 0, + F, + case Prev of + undefined -> id({send_register, NewFValue}, TrUserData); + {send_register, MVPrev} -> id({send_register, 'merge_msg_SDLEvent.SendRegister'(MVPrev, NewFValue, TrUserData)}, TrUserData); + _ -> id({send_register, NewFValue}, TrUserData) + end, + TrUserData). + +d_field_SDLEvent_shutdown(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) when N < 57 -> d_field_SDLEvent_shutdown(Rest, N + 7, X bsl N + Acc, F, F@_1, TrUserData); +d_field_SDLEvent_shutdown(<<0:1, X:7, Rest/binary>>, N, Acc, F, Prev, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, {id('decode_msg_SDLEvent.NetworkShutdown'(Bs, TrUserData), TrUserData), Rest2} end, + dfp_read_field_def_SDLEvent(RestF, + 0, + 0, + F, + case Prev of + undefined -> id({shutdown, NewFValue}, TrUserData); + {shutdown, MVPrev} -> id({shutdown, 'merge_msg_SDLEvent.NetworkShutdown'(MVPrev, NewFValue, TrUserData)}, TrUserData); + _ -> id({shutdown, NewFValue}, TrUserData) + end, + TrUserData). + +d_field_SDLEvent_exit_node(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) when N < 57 -> d_field_SDLEvent_exit_node(Rest, N + 7, X bsl N + Acc, F, F@_1, TrUserData); +d_field_SDLEvent_exit_node(<<0:1, X:7, Rest/binary>>, N, Acc, F, Prev, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, {id('decode_msg_SDLEvent.ExitNodeControl'(Bs, TrUserData), TrUserData), Rest2} end, + dfp_read_field_def_SDLEvent(RestF, + 0, + 0, + F, + case Prev of + undefined -> id({exit_node, NewFValue}, TrUserData); + {exit_node, MVPrev} -> id({exit_node, 'merge_msg_SDLEvent.ExitNodeControl'(MVPrev, NewFValue, TrUserData)}, TrUserData); + _ -> id({exit_node, NewFValue}, TrUserData) + end, + TrUserData). + +skip_varint_SDLEvent(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> skip_varint_SDLEvent(Rest, Z1, Z2, F, F@_1, TrUserData); +skip_varint_SDLEvent(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> dfp_read_field_def_SDLEvent(Rest, Z1, Z2, F, F@_1, TrUserData). + +skip_length_delimited_SDLEvent(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) when N < 57 -> skip_length_delimited_SDLEvent(Rest, N + 7, X bsl N + Acc, F, F@_1, TrUserData); +skip_length_delimited_SDLEvent(<<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_SDLEvent(Rest2, 0, 0, F, F@_1, TrUserData). + +skip_group_SDLEvent(Bin, _, Z2, FNum, F@_1, TrUserData) -> + {_, Rest} = read_group(Bin, FNum), + dfp_read_field_def_SDLEvent(Rest, 0, Z2, FNum, F@_1, TrUserData). + +skip_32_SDLEvent(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> dfp_read_field_def_SDLEvent(Rest, Z1, Z2, F, F@_1, TrUserData). + +skip_64_SDLEvent(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> dfp_read_field_def_SDLEvent(Rest, Z1, Z2, F, F@_1, TrUserData). + +decode_msg_SDLStunRequest(Bin, TrUserData) -> + dfp_read_field_def_SDLStunRequest(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_SDLStunRequest(<<10, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData) -> d_field_SDLStunRequest_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_SDLStunRequest(<<16, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData) -> d_field_SDLStunRequest_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_SDLStunRequest(<<26, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData) -> d_field_SDLStunRequest_mac(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData); +dfp_read_field_def_SDLStunRequest(<<32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData) -> d_field_SDLStunRequest_ip(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData); +dfp_read_field_def_SDLStunRequest(<<40, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData) -> d_field_SDLStunRequest_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_SDLStunRequest(<<50, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData) -> d_field_SDLStunRequest_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_SDLStunRequest(<<58, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData) -> d_field_SDLStunRequest_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_SDLStunRequest(<<>>, 0, 0, _, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, _) -> #'SDLStunRequest'{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_SDLStunRequest(Other, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData) -> dg_read_field_def_SDLStunRequest(Other, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData). + +dg_read_field_def_SDLStunRequest(<<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_SDLStunRequest(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_SDLStunRequest(<<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 + 10 -> d_field_SDLStunRequest_client_id(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData); + 16 -> d_field_SDLStunRequest_network_id(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData); + 26 -> d_field_SDLStunRequest_mac(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData); + 32 -> d_field_SDLStunRequest_ip(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData); + 40 -> d_field_SDLStunRequest_nat_type(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData); + 50 -> d_field_SDLStunRequest_v6_info(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData); + 58 -> d_field_SDLStunRequest_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_SDLStunRequest(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData); + 1 -> skip_64_SDLStunRequest(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_SDLStunRequest(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData); + 3 -> skip_group_SDLStunRequest(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData); + 5 -> skip_32_SDLStunRequest(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_SDLStunRequest(<<>>, 0, 0, _, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, _) -> #'SDLStunRequest'{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_SDLStunRequest_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_SDLStunRequest_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_SDLStunRequest_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_SDLStunRequest(RestF, 0, 0, F, NewFValue, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData). + +d_field_SDLStunRequest_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_SDLStunRequest_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_SDLStunRequest_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_SDLStunRequest(RestF, 0, 0, F, F@_1, NewFValue, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData). + +d_field_SDLStunRequest_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_SDLStunRequest_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_SDLStunRequest_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_SDLStunRequest(RestF, 0, 0, F, F@_1, F@_2, NewFValue, F@_4, F@_5, F@_6, F@_7, TrUserData). + +d_field_SDLStunRequest_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_SDLStunRequest_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_SDLStunRequest_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_SDLStunRequest(RestF, 0, 0, F, F@_1, F@_2, F@_3, NewFValue, F@_5, F@_6, F@_7, TrUserData). + +d_field_SDLStunRequest_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_SDLStunRequest_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_SDLStunRequest_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_SDLStunRequest(RestF, 0, 0, F, F@_1, F@_2, F@_3, F@_4, NewFValue, F@_6, F@_7, TrUserData). + +d_field_SDLStunRequest_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_SDLStunRequest_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_SDLStunRequest_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_SDLV6Info(Bs, TrUserData), TrUserData), Rest2} end, + dfp_read_field_def_SDLStunRequest(RestF, + 0, + 0, + F, + F@_1, + F@_2, + F@_3, + F@_4, + F@_5, + if Prev == undefined -> NewFValue; + true -> merge_msg_SDLV6Info(Prev, NewFValue, TrUserData) + end, + F@_7, + TrUserData). + +d_field_SDLStunRequest_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_SDLStunRequest_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_SDLStunRequest_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_SDLStunRequest(RestF, 0, 0, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, NewFValue, TrUserData). + +skip_varint_SDLStunRequest(<<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_SDLStunRequest(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData); +skip_varint_SDLStunRequest(<<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_SDLStunRequest(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData). + +skip_length_delimited_SDLStunRequest(<<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_SDLStunRequest(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_SDLStunRequest(<<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_SDLStunRequest(Rest2, 0, 0, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData). + +skip_group_SDLStunRequest(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_SDLStunRequest(Rest, 0, Z2, FNum, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData). + +skip_32_SDLStunRequest(<<_: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_SDLStunRequest(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData). + +skip_64_SDLStunRequest(<<_: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_SDLStunRequest(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData). + +decode_msg_SDLStunReply(Bin, TrUserData) -> dfp_read_field_def_SDLStunReply(Bin, 0, 0, 0, TrUserData). + +dfp_read_field_def_SDLStunReply(<<>>, 0, 0, _, _) -> #'SDLStunReply'{}; +dfp_read_field_def_SDLStunReply(Other, Z1, Z2, F, TrUserData) -> dg_read_field_def_SDLStunReply(Other, Z1, Z2, F, TrUserData). + +dg_read_field_def_SDLStunReply(<<1:1, X:7, Rest/binary>>, N, Acc, F, TrUserData) when N < 32 - 7 -> dg_read_field_def_SDLStunReply(Rest, N + 7, X bsl N + Acc, F, TrUserData); +dg_read_field_def_SDLStunReply(<<0:1, X:7, Rest/binary>>, N, Acc, _, TrUserData) -> + Key = X bsl N + Acc, + case Key band 7 of + 0 -> skip_varint_SDLStunReply(Rest, 0, 0, Key bsr 3, TrUserData); + 1 -> skip_64_SDLStunReply(Rest, 0, 0, Key bsr 3, TrUserData); + 2 -> skip_length_delimited_SDLStunReply(Rest, 0, 0, Key bsr 3, TrUserData); + 3 -> skip_group_SDLStunReply(Rest, 0, 0, Key bsr 3, TrUserData); + 5 -> skip_32_SDLStunReply(Rest, 0, 0, Key bsr 3, TrUserData) + end; +dg_read_field_def_SDLStunReply(<<>>, 0, 0, _, _) -> #'SDLStunReply'{}. + +skip_varint_SDLStunReply(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, TrUserData) -> skip_varint_SDLStunReply(Rest, Z1, Z2, F, TrUserData); +skip_varint_SDLStunReply(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, TrUserData) -> dfp_read_field_def_SDLStunReply(Rest, Z1, Z2, F, TrUserData). + +skip_length_delimited_SDLStunReply(<<1:1, X:7, Rest/binary>>, N, Acc, F, TrUserData) when N < 57 -> skip_length_delimited_SDLStunReply(Rest, N + 7, X bsl N + Acc, F, TrUserData); +skip_length_delimited_SDLStunReply(<<0:1, X:7, Rest/binary>>, N, Acc, F, TrUserData) -> + Length = X bsl N + Acc, + <<_:Length/binary, Rest2/binary>> = Rest, + dfp_read_field_def_SDLStunReply(Rest2, 0, 0, F, TrUserData). + +skip_group_SDLStunReply(Bin, _, Z2, FNum, TrUserData) -> + {_, Rest} = read_group(Bin, FNum), + dfp_read_field_def_SDLStunReply(Rest, 0, Z2, FNum, TrUserData). + +skip_32_SDLStunReply(<<_:32, Rest/binary>>, Z1, Z2, F, TrUserData) -> dfp_read_field_def_SDLStunReply(Rest, Z1, Z2, F, TrUserData). + +skip_64_SDLStunReply(<<_:64, Rest/binary>>, Z1, Z2, F, TrUserData) -> dfp_read_field_def_SDLStunReply(Rest, Z1, Z2, F, TrUserData). + +decode_msg_SDLData(Bin, TrUserData) -> + dfp_read_field_def_SDLData(Bin, 0, 0, 0, id(0, TrUserData), id(<<>>, TrUserData), id(<<>>, TrUserData), id(false, TrUserData), id(0, TrUserData), id(<<>>, TrUserData), id(<<>>, TrUserData), id(0, TrUserData), TrUserData). + +dfp_read_field_def_SDLData(<<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_SDLData_network_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_SDLData(<<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_SDLData_src_mac(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_SDLData(<<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_SDLData_dst_mac(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_SDLData(<<32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData) -> d_field_SDLData_is_p2p(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_SDLData(<<40, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData) -> d_field_SDLData_ttl(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_SDLData(<<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_SDLData_data(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_SDLData(<<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_SDLData_session_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_SDLData(<<64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData) -> d_field_SDLData_identity_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_SDLData(<<>>, 0, 0, _, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, _) -> #'SDLData'{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, identity_id = F@_8}; +dfp_read_field_def_SDLData(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_SDLData(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_SDLData(<<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_SDLData(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_SDLData(<<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) -> + Key = X bsl N + Acc, + case Key of + 8 -> d_field_SDLData_network_id(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData); + 18 -> d_field_SDLData_src_mac(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData); + 26 -> d_field_SDLData_dst_mac(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData); + 32 -> d_field_SDLData_is_p2p(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData); + 40 -> d_field_SDLData_ttl(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData); + 50 -> d_field_SDLData_data(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData); + 58 -> d_field_SDLData_session_token(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData); + 64 -> d_field_SDLData_identity_id(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData); + _ -> + case Key band 7 of + 0 -> skip_varint_SDLData(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_SDLData(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_SDLData(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_SDLData(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_SDLData(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData) + end + end; +dg_read_field_def_SDLData(<<>>, 0, 0, _, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, _) -> #'SDLData'{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, identity_id = F@_8}. + +d_field_SDLData_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, TrUserData) when N < 57 -> + d_field_SDLData_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, TrUserData); +d_field_SDLData_network_id(<<0:1, X:7, Rest/binary>>, N, Acc, F, _, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData) -> + {NewFValue, RestF} = {id((X bsl N + Acc) band 4294967295, TrUserData), Rest}, + dfp_read_field_def_SDLData(RestF, 0, 0, F, NewFValue, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData). + +d_field_SDLData_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, F@_8, TrUserData) when N < 57 -> + d_field_SDLData_src_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, TrUserData); +d_field_SDLData_src_mac(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, _, 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_SDLData(RestF, 0, 0, F, F@_1, NewFValue, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData). + +d_field_SDLData_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, F@_8, TrUserData) when N < 57 -> + d_field_SDLData_dst_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, TrUserData); +d_field_SDLData_dst_mac(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, _, 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_SDLData(RestF, 0, 0, F, F@_1, F@_2, NewFValue, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData). + +d_field_SDLData_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, F@_8, TrUserData) when N < 57 -> d_field_SDLData_is_p2p(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_SDLData_is_p2p(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, _, F@_5, F@_6, F@_7, F@_8, TrUserData) -> + {NewFValue, RestF} = {id(X bsl N + Acc =/= 0, TrUserData), Rest}, + dfp_read_field_def_SDLData(RestF, 0, 0, F, F@_1, F@_2, F@_3, NewFValue, F@_5, F@_6, F@_7, F@_8, TrUserData). + +d_field_SDLData_ttl(<<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_SDLData_ttl(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_SDLData_ttl(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, _, F@_6, F@_7, F@_8, TrUserData) -> + {NewFValue, RestF} = {id((X bsl N + Acc) band 4294967295, TrUserData), Rest}, + dfp_read_field_def_SDLData(RestF, 0, 0, F, F@_1, F@_2, F@_3, F@_4, NewFValue, F@_6, F@_7, F@_8, TrUserData). + +d_field_SDLData_data(<<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_SDLData_data(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_SDLData_data(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, _, 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_SDLData(RestF, 0, 0, F, F@_1, F@_2, F@_3, F@_4, F@_5, NewFValue, F@_7, F@_8, TrUserData). + +d_field_SDLData_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, F@_8, TrUserData) when N < 57 -> + d_field_SDLData_session_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_SDLData_session_token(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, _, 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_SDLData(RestF, 0, 0, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, NewFValue, F@_8, TrUserData). + +d_field_SDLData_identity_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_SDLData_identity_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_SDLData_identity_id(<<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} = {id((X bsl N + Acc) band 4294967295, TrUserData), Rest}, + dfp_read_field_def_SDLData(RestF, 0, 0, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, NewFValue, TrUserData). + +skip_varint_SDLData(<<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_SDLData(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData); +skip_varint_SDLData(<<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_SDLData(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData). + +skip_length_delimited_SDLData(<<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_SDLData(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_SDLData(<<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) -> + Length = X bsl N + Acc, + <<_:Length/binary, Rest2/binary>> = Rest, + dfp_read_field_def_SDLData(Rest2, 0, 0, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData). + +skip_group_SDLData(Bin, _, Z2, FNum, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData) -> + {_, Rest} = read_group(Bin, FNum), + dfp_read_field_def_SDLData(Rest, 0, Z2, FNum, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData). + +skip_32_SDLData(<<_: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_SDLData(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData). + +skip_64_SDLData(<<_: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_SDLData(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, F@_8, TrUserData). + +decode_msg_SDLStunProbe(Bin, TrUserData) -> dfp_read_field_def_SDLStunProbe(Bin, 0, 0, 0, id(0, TrUserData), id(0, TrUserData), id(0, TrUserData), TrUserData). + +dfp_read_field_def_SDLStunProbe(<<8, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_SDLStunProbe_cookie(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); +dfp_read_field_def_SDLStunProbe(<<16, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_SDLStunProbe_attr(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); +dfp_read_field_def_SDLStunProbe(<<24, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_SDLStunProbe_step(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); +dfp_read_field_def_SDLStunProbe(<<>>, 0, 0, _, F@_1, F@_2, F@_3, _) -> #'SDLStunProbe'{cookie = F@_1, attr = F@_2, step = F@_3}; +dfp_read_field_def_SDLStunProbe(Other, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dg_read_field_def_SDLStunProbe(Other, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). + +dg_read_field_def_SDLStunProbe(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 32 - 7 -> dg_read_field_def_SDLStunProbe(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +dg_read_field_def_SDLStunProbe(<<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_SDLStunProbe_cookie(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData); + 16 -> d_field_SDLStunProbe_attr(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData); + 24 -> d_field_SDLStunProbe_step(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData); + _ -> + case Key band 7 of + 0 -> skip_varint_SDLStunProbe(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); + 1 -> skip_64_SDLStunProbe(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); + 2 -> skip_length_delimited_SDLStunProbe(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); + 3 -> skip_group_SDLStunProbe(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); + 5 -> skip_32_SDLStunProbe(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData) + end + end; +dg_read_field_def_SDLStunProbe(<<>>, 0, 0, _, F@_1, F@_2, F@_3, _) -> #'SDLStunProbe'{cookie = F@_1, attr = F@_2, step = F@_3}. + +d_field_SDLStunProbe_cookie(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_SDLStunProbe_cookie(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +d_field_SDLStunProbe_cookie(<<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_SDLStunProbe(RestF, 0, 0, F, NewFValue, F@_2, F@_3, TrUserData). + +d_field_SDLStunProbe_attr(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_SDLStunProbe_attr(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +d_field_SDLStunProbe_attr(<<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_SDLStunProbe(RestF, 0, 0, F, F@_1, NewFValue, F@_3, TrUserData). + +d_field_SDLStunProbe_step(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_SDLStunProbe_step(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +d_field_SDLStunProbe_step(<<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_SDLStunProbe(RestF, 0, 0, F, F@_1, F@_2, NewFValue, TrUserData). + +skip_varint_SDLStunProbe(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> skip_varint_SDLStunProbe(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); +skip_varint_SDLStunProbe(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_SDLStunProbe(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). + +skip_length_delimited_SDLStunProbe(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> skip_length_delimited_SDLStunProbe(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +skip_length_delimited_SDLStunProbe(<<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_SDLStunProbe(Rest2, 0, 0, F, F@_1, F@_2, F@_3, TrUserData). + +skip_group_SDLStunProbe(Bin, _, Z2, FNum, F@_1, F@_2, F@_3, TrUserData) -> + {_, Rest} = read_group(Bin, FNum), + dfp_read_field_def_SDLStunProbe(Rest, 0, Z2, FNum, F@_1, F@_2, F@_3, TrUserData). + +skip_32_SDLStunProbe(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_SDLStunProbe(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). + +skip_64_SDLStunProbe(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_SDLStunProbe(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). + +decode_msg_SDLStunProbeReply(Bin, TrUserData) -> dfp_read_field_def_SDLStunProbeReply(Bin, 0, 0, 0, id(0, TrUserData), id(0, TrUserData), id(0, TrUserData), id(0, TrUserData), TrUserData). + +dfp_read_field_def_SDLStunProbeReply(<<8, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> d_field_SDLStunProbeReply_cookie(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +dfp_read_field_def_SDLStunProbeReply(<<16, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> d_field_SDLStunProbeReply_step(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +dfp_read_field_def_SDLStunProbeReply(<<24, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> d_field_SDLStunProbeReply_port(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +dfp_read_field_def_SDLStunProbeReply(<<32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> d_field_SDLStunProbeReply_ip(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +dfp_read_field_def_SDLStunProbeReply(<<>>, 0, 0, _, F@_1, F@_2, F@_3, F@_4, _) -> #'SDLStunProbeReply'{cookie = F@_1, step = F@_2, port = F@_3, ip = F@_4}; +dfp_read_field_def_SDLStunProbeReply(Other, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> dg_read_field_def_SDLStunProbeReply(Other, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData). + +dg_read_field_def_SDLStunProbeReply(<<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_SDLStunProbeReply(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +dg_read_field_def_SDLStunProbeReply(<<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 + 8 -> d_field_SDLStunProbeReply_cookie(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, TrUserData); + 16 -> d_field_SDLStunProbeReply_step(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, TrUserData); + 24 -> d_field_SDLStunProbeReply_port(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, TrUserData); + 32 -> d_field_SDLStunProbeReply_ip(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, TrUserData); + _ -> + case Key band 7 of + 0 -> skip_varint_SDLStunProbeReply(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, TrUserData); + 1 -> skip_64_SDLStunProbeReply(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, TrUserData); + 2 -> skip_length_delimited_SDLStunProbeReply(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, TrUserData); + 3 -> skip_group_SDLStunProbeReply(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, TrUserData); + 5 -> skip_32_SDLStunProbeReply(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, TrUserData) + end + end; +dg_read_field_def_SDLStunProbeReply(<<>>, 0, 0, _, F@_1, F@_2, F@_3, F@_4, _) -> #'SDLStunProbeReply'{cookie = F@_1, step = F@_2, port = F@_3, ip = F@_4}. + +d_field_SDLStunProbeReply_cookie(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> d_field_SDLStunProbeReply_cookie(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +d_field_SDLStunProbeReply_cookie(<<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_SDLStunProbeReply(RestF, 0, 0, F, NewFValue, F@_2, F@_3, F@_4, TrUserData). + +d_field_SDLStunProbeReply_step(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> d_field_SDLStunProbeReply_step(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +d_field_SDLStunProbeReply_step(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, _, F@_3, F@_4, TrUserData) -> + {NewFValue, RestF} = {id((X bsl N + Acc) band 4294967295, TrUserData), Rest}, + dfp_read_field_def_SDLStunProbeReply(RestF, 0, 0, F, F@_1, NewFValue, F@_3, F@_4, TrUserData). + +d_field_SDLStunProbeReply_port(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> d_field_SDLStunProbeReply_port(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +d_field_SDLStunProbeReply_port(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, _, F@_4, TrUserData) -> + {NewFValue, RestF} = {id((X bsl N + Acc) band 4294967295, TrUserData), Rest}, + dfp_read_field_def_SDLStunProbeReply(RestF, 0, 0, F, F@_1, F@_2, NewFValue, F@_4, TrUserData). + +d_field_SDLStunProbeReply_ip(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> d_field_SDLStunProbeReply_ip(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +d_field_SDLStunProbeReply_ip(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, _, TrUserData) -> + {NewFValue, RestF} = {id((X bsl N + Acc) band 4294967295, TrUserData), Rest}, + dfp_read_field_def_SDLStunProbeReply(RestF, 0, 0, F, F@_1, F@_2, F@_3, NewFValue, TrUserData). + +skip_varint_SDLStunProbeReply(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> skip_varint_SDLStunProbeReply(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +skip_varint_SDLStunProbeReply(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> dfp_read_field_def_SDLStunProbeReply(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData). + +skip_length_delimited_SDLStunProbeReply(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> skip_length_delimited_SDLStunProbeReply(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); +skip_length_delimited_SDLStunProbeReply(<<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_SDLStunProbeReply(Rest2, 0, 0, F, F@_1, F@_2, F@_3, F@_4, TrUserData). + +skip_group_SDLStunProbeReply(Bin, _, Z2, FNum, F@_1, F@_2, F@_3, F@_4, TrUserData) -> + {_, Rest} = read_group(Bin, FNum), + dfp_read_field_def_SDLStunProbeReply(Rest, 0, Z2, FNum, F@_1, F@_2, F@_3, F@_4, TrUserData). + +skip_32_SDLStunProbeReply(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> dfp_read_field_def_SDLStunProbeReply(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData). + +skip_64_SDLStunProbeReply(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> dfp_read_field_def_SDLStunProbeReply(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData). + +decode_msg_SDLRegister(Bin, TrUserData) -> dfp_read_field_def_SDLRegister(Bin, 0, 0, 0, id(0, TrUserData), id(<<>>, TrUserData), id(<<>>, TrUserData), TrUserData). + +dfp_read_field_def_SDLRegister(<<8, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_SDLRegister_network_id(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); +dfp_read_field_def_SDLRegister(<<18, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_SDLRegister_src_mac(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); +dfp_read_field_def_SDLRegister(<<26, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_SDLRegister_dst_mac(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); +dfp_read_field_def_SDLRegister(<<>>, 0, 0, _, F@_1, F@_2, F@_3, _) -> #'SDLRegister'{network_id = F@_1, src_mac = F@_2, dst_mac = F@_3}; +dfp_read_field_def_SDLRegister(Other, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dg_read_field_def_SDLRegister(Other, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). + +dg_read_field_def_SDLRegister(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 32 - 7 -> dg_read_field_def_SDLRegister(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +dg_read_field_def_SDLRegister(<<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_SDLRegister_network_id(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData); + 18 -> d_field_SDLRegister_src_mac(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData); + 26 -> d_field_SDLRegister_dst_mac(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData); + _ -> + case Key band 7 of + 0 -> skip_varint_SDLRegister(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); + 1 -> skip_64_SDLRegister(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); + 2 -> skip_length_delimited_SDLRegister(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); + 3 -> skip_group_SDLRegister(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); + 5 -> skip_32_SDLRegister(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData) + end + end; +dg_read_field_def_SDLRegister(<<>>, 0, 0, _, F@_1, F@_2, F@_3, _) -> #'SDLRegister'{network_id = F@_1, src_mac = F@_2, dst_mac = F@_3}. + +d_field_SDLRegister_network_id(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_SDLRegister_network_id(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +d_field_SDLRegister_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_SDLRegister(RestF, 0, 0, F, NewFValue, F@_2, F@_3, TrUserData). + +d_field_SDLRegister_src_mac(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_SDLRegister_src_mac(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +d_field_SDLRegister_src_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_SDLRegister(RestF, 0, 0, F, F@_1, NewFValue, F@_3, TrUserData). + +d_field_SDLRegister_dst_mac(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_SDLRegister_dst_mac(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +d_field_SDLRegister_dst_mac(<<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_SDLRegister(RestF, 0, 0, F, F@_1, F@_2, NewFValue, TrUserData). + +skip_varint_SDLRegister(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> skip_varint_SDLRegister(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); +skip_varint_SDLRegister(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_SDLRegister(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). + +skip_length_delimited_SDLRegister(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> skip_length_delimited_SDLRegister(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +skip_length_delimited_SDLRegister(<<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_SDLRegister(Rest2, 0, 0, F, F@_1, F@_2, F@_3, TrUserData). + +skip_group_SDLRegister(Bin, _, Z2, FNum, F@_1, F@_2, F@_3, TrUserData) -> + {_, Rest} = read_group(Bin, FNum), + dfp_read_field_def_SDLRegister(Rest, 0, Z2, FNum, F@_1, F@_2, F@_3, TrUserData). + +skip_32_SDLRegister(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_SDLRegister(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). + +skip_64_SDLRegister(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_SDLRegister(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). + +decode_msg_SDLRegisterAck(Bin, TrUserData) -> dfp_read_field_def_SDLRegisterAck(Bin, 0, 0, 0, id(0, TrUserData), id(<<>>, TrUserData), id(<<>>, TrUserData), TrUserData). + +dfp_read_field_def_SDLRegisterAck(<<8, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_SDLRegisterAck_network_id(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); +dfp_read_field_def_SDLRegisterAck(<<18, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_SDLRegisterAck_src_mac(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); +dfp_read_field_def_SDLRegisterAck(<<26, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_SDLRegisterAck_dst_mac(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); +dfp_read_field_def_SDLRegisterAck(<<>>, 0, 0, _, F@_1, F@_2, F@_3, _) -> #'SDLRegisterAck'{network_id = F@_1, src_mac = F@_2, dst_mac = F@_3}; +dfp_read_field_def_SDLRegisterAck(Other, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dg_read_field_def_SDLRegisterAck(Other, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). + +dg_read_field_def_SDLRegisterAck(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 32 - 7 -> dg_read_field_def_SDLRegisterAck(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +dg_read_field_def_SDLRegisterAck(<<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_SDLRegisterAck_network_id(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData); + 18 -> d_field_SDLRegisterAck_src_mac(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData); + 26 -> d_field_SDLRegisterAck_dst_mac(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData); + _ -> + case Key band 7 of + 0 -> skip_varint_SDLRegisterAck(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); + 1 -> skip_64_SDLRegisterAck(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); + 2 -> skip_length_delimited_SDLRegisterAck(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); + 3 -> skip_group_SDLRegisterAck(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData); + 5 -> skip_32_SDLRegisterAck(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData) + end + end; +dg_read_field_def_SDLRegisterAck(<<>>, 0, 0, _, F@_1, F@_2, F@_3, _) -> #'SDLRegisterAck'{network_id = F@_1, src_mac = F@_2, dst_mac = F@_3}. + +d_field_SDLRegisterAck_network_id(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_SDLRegisterAck_network_id(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +d_field_SDLRegisterAck_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_SDLRegisterAck(RestF, 0, 0, F, NewFValue, F@_2, F@_3, TrUserData). + +d_field_SDLRegisterAck_src_mac(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_SDLRegisterAck_src_mac(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +d_field_SDLRegisterAck_src_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_SDLRegisterAck(RestF, 0, 0, F, F@_1, NewFValue, F@_3, TrUserData). + +d_field_SDLRegisterAck_dst_mac(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_SDLRegisterAck_dst_mac(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +d_field_SDLRegisterAck_dst_mac(<<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_SDLRegisterAck(RestF, 0, 0, F, F@_1, F@_2, NewFValue, TrUserData). + +skip_varint_SDLRegisterAck(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> skip_varint_SDLRegisterAck(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData); +skip_varint_SDLRegisterAck(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_SDLRegisterAck(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). + +skip_length_delimited_SDLRegisterAck(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> skip_length_delimited_SDLRegisterAck(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData); +skip_length_delimited_SDLRegisterAck(<<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_SDLRegisterAck(Rest2, 0, 0, F, F@_1, F@_2, F@_3, TrUserData). + +skip_group_SDLRegisterAck(Bin, _, Z2, FNum, F@_1, F@_2, F@_3, TrUserData) -> + {_, Rest} = read_group(Bin, FNum), + dfp_read_field_def_SDLRegisterAck(Rest, 0, Z2, FNum, F@_1, F@_2, F@_3, TrUserData). + +skip_32_SDLRegisterAck(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_SDLRegisterAck(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). + +skip_64_SDLRegisterAck(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_SDLRegisterAck(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData). + +read_group(Bin, FieldNum) -> + {NumBytes, EndTagLen} = read_gr_b(Bin, 0, 0, 0, 0, FieldNum), + <> = Bin, + {Group, Rest}. + +%% Like skipping over fields, but record the total length, +%% Each field is <(FieldNum bsl 3) bor FieldType> ++ +%% Record the length because varints may be non-optimally encoded. +%% +%% Groups can be nested, but assume the same FieldNum cannot be nested +%% because group field numbers are shared with the rest of the fields +%% numbers. Thus we can search just for an group-end with the same +%% field number. +%% +%% (The only time the same group field number could occur would +%% be in a nested sub message, but then it would be inside a +%% length-delimited entry, which we skip-read by length.) +read_gr_b(<<1:1, X:7, Tl/binary>>, N, Acc, NumBytes, TagLen, FieldNum) + when N < (32-7) -> + read_gr_b(Tl, N+7, X bsl N + Acc, NumBytes, TagLen+1, FieldNum); +read_gr_b(<<0:1, X:7, Tl/binary>>, N, Acc, NumBytes, TagLen, + FieldNum) -> + Key = X bsl N + Acc, + TagLen1 = TagLen + 1, + case {Key bsr 3, Key band 7} of + {FieldNum, 4} -> % 4 = group_end + {NumBytes, TagLen1}; + {_, 0} -> % 0 = varint + read_gr_vi(Tl, 0, NumBytes + TagLen1, FieldNum); + {_, 1} -> % 1 = bits64 + <<_:64, Tl2/binary>> = Tl, + read_gr_b(Tl2, 0, 0, NumBytes + TagLen1 + 8, 0, FieldNum); + {_, 2} -> % 2 = length_delimited + read_gr_ld(Tl, 0, 0, NumBytes + TagLen1, FieldNum); + {_, 3} -> % 3 = group_start + read_gr_b(Tl, 0, 0, NumBytes + TagLen1, 0, FieldNum); + {_, 4} -> % 4 = group_end + read_gr_b(Tl, 0, 0, NumBytes + TagLen1, 0, FieldNum); + {_, 5} -> % 5 = bits32 + <<_:32, Tl2/binary>> = Tl, + read_gr_b(Tl2, 0, 0, NumBytes + TagLen1 + 4, 0, FieldNum) + end. + +read_gr_vi(<<1:1, _:7, Tl/binary>>, N, NumBytes, FieldNum) + when N < (64-7) -> + read_gr_vi(Tl, N+7, NumBytes+1, FieldNum); +read_gr_vi(<<0:1, _:7, Tl/binary>>, _, NumBytes, FieldNum) -> + read_gr_b(Tl, 0, 0, NumBytes+1, 0, FieldNum). + +read_gr_ld(<<1:1, X:7, Tl/binary>>, N, Acc, NumBytes, FieldNum) + when N < (64-7) -> + read_gr_ld(Tl, N+7, X bsl N + Acc, NumBytes+1, FieldNum); +read_gr_ld(<<0:1, X:7, Tl/binary>>, N, Acc, NumBytes, FieldNum) -> + Len = X bsl N + Acc, + NumBytes1 = NumBytes + 1, + <<_:Len/binary, Tl2/binary>> = Tl, + read_gr_b(Tl2, 0, 0, NumBytes1 + Len, 0, FieldNum). + +merge_msgs(Prev, New) when element(1, Prev) =:= element(1, New) -> merge_msgs(Prev, New, element(1, Prev), []). + +merge_msgs(Prev, New, MsgName) when is_atom(MsgName) -> merge_msgs(Prev, New, MsgName, []); +merge_msgs(Prev, New, Opts) when element(1, Prev) =:= element(1, New), is_list(Opts) -> merge_msgs(Prev, New, element(1, Prev), Opts). + +merge_msgs(Prev, New, MsgName, Opts) -> + TrUserData = proplists:get_value(user_data, Opts), + case MsgName of + 'Hello' -> merge_msg_Hello(Prev, New, TrUserData); + 'SDLV4Info' -> merge_msg_SDLV4Info(Prev, New, TrUserData); + 'SDLV6Info' -> merge_msg_SDLV6Info(Prev, New, TrUserData); + 'SDLWelcome' -> merge_msg_SDLWelcome(Prev, New, TrUserData); + 'SDLRegisterSuper' -> merge_msg_SDLRegisterSuper(Prev, New, TrUserData); + 'SDLRegisterSuperAck' -> merge_msg_SDLRegisterSuperAck(Prev, New, TrUserData); + 'SDLRegisterSuperNak' -> merge_msg_SDLRegisterSuperNak(Prev, New, TrUserData); + 'SDLQueryInfo' -> merge_msg_SDLQueryInfo(Prev, New, TrUserData); + 'SDLPeerInfo' -> merge_msg_SDLPeerInfo(Prev, New, TrUserData); + 'SDLArpRequest' -> merge_msg_SDLArpRequest(Prev, New, TrUserData); + 'SDLArpResponse' -> merge_msg_SDLArpResponse(Prev, New, TrUserData); + 'SDLPolicyRequest' -> merge_msg_SDLPolicyRequest(Prev, New, TrUserData); + 'SDLPolicyResponse' -> merge_msg_SDLPolicyResponse(Prev, New, TrUserData); + 'SDLEvent.NatChanged' -> 'merge_msg_SDLEvent.NatChanged'(Prev, New, TrUserData); + 'SDLEvent.SendRegister' -> 'merge_msg_SDLEvent.SendRegister'(Prev, New, TrUserData); + 'SDLEvent.NetworkShutdown' -> 'merge_msg_SDLEvent.NetworkShutdown'(Prev, New, TrUserData); + 'SDLEvent.ExitNodeControl' -> 'merge_msg_SDLEvent.ExitNodeControl'(Prev, New, TrUserData); + 'SDLEvent' -> merge_msg_SDLEvent(Prev, New, TrUserData); + 'SDLStunRequest' -> merge_msg_SDLStunRequest(Prev, New, TrUserData); + 'SDLStunReply' -> merge_msg_SDLStunReply(Prev, New, TrUserData); + 'SDLData' -> merge_msg_SDLData(Prev, New, TrUserData); + 'SDLStunProbe' -> merge_msg_SDLStunProbe(Prev, New, TrUserData); + 'SDLStunProbeReply' -> merge_msg_SDLStunProbeReply(Prev, New, TrUserData); + 'SDLRegister' -> merge_msg_SDLRegister(Prev, New, TrUserData); + 'SDLRegisterAck' -> merge_msg_SDLRegisterAck(Prev, New, TrUserData) + end. + +-compile({nowarn_unused_function,merge_msg_Hello/3}). +merge_msg_Hello(_Prev, New, _TrUserData) -> New. + +-compile({nowarn_unused_function,merge_msg_SDLV4Info/3}). +merge_msg_SDLV4Info(#'SDLV4Info'{port = PFport, v4 = PFv4, nat_type = PFnat_type}, #'SDLV4Info'{port = NFport, v4 = NFv4, nat_type = NFnat_type}, _) -> + #'SDLV4Info'{port = + if NFport =:= undefined -> PFport; + true -> NFport + end, + v4 = + if NFv4 =:= undefined -> PFv4; + true -> NFv4 + end, + nat_type = + if NFnat_type =:= undefined -> PFnat_type; + true -> NFnat_type + end}. + +-compile({nowarn_unused_function,merge_msg_SDLV6Info/3}). +merge_msg_SDLV6Info(#'SDLV6Info'{port = PFport, v6 = PFv6}, #'SDLV6Info'{port = NFport, v6 = NFv6}, _) -> + #'SDLV6Info'{port = + if NFport =:= undefined -> PFport; + true -> NFport + end, + v6 = + if NFv6 =:= undefined -> PFv6; + true -> NFv6 + end}. + +-compile({nowarn_unused_function,merge_msg_SDLWelcome/3}). +merge_msg_SDLWelcome(#'SDLWelcome'{version = PFversion, max_bidi_streams = PFmax_bidi_streams, max_packet_size = PFmax_packet_size, heartbeat_sec = PFheartbeat_sec}, + #'SDLWelcome'{version = NFversion, max_bidi_streams = NFmax_bidi_streams, max_packet_size = NFmax_packet_size, heartbeat_sec = NFheartbeat_sec}, _) -> + #'SDLWelcome'{version = + if NFversion =:= undefined -> PFversion; + true -> NFversion + end, + max_bidi_streams = + if NFmax_bidi_streams =:= undefined -> PFmax_bidi_streams; + true -> NFmax_bidi_streams + end, + max_packet_size = + if NFmax_packet_size =:= undefined -> PFmax_packet_size; + true -> NFmax_packet_size + end, + heartbeat_sec = + if NFheartbeat_sec =:= undefined -> PFheartbeat_sec; + true -> NFheartbeat_sec + end}. + +-compile({nowarn_unused_function,merge_msg_SDLRegisterSuper/3}). +merge_msg_SDLRegisterSuper(#'SDLRegisterSuper'{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}, + #'SDLRegisterSuper'{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}, _) -> + #'SDLRegisterSuper'{client_id = + if NFclient_id =:= undefined -> PFclient_id; + true -> NFclient_id + end, + 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, + access_token = + if NFaccess_token =:= undefined -> PFaccess_token; + true -> NFaccess_token + end}. + +-compile({nowarn_unused_function,merge_msg_SDLRegisterSuperAck/3}). +merge_msg_SDLRegisterSuperAck(#'SDLRegisterSuperAck'{algorithm = PFalgorithm, key = PFkey, region_id = PFregion_id, session_token = PFsession_token}, + #'SDLRegisterSuperAck'{algorithm = NFalgorithm, key = NFkey, region_id = NFregion_id, session_token = NFsession_token}, _) -> + #'SDLRegisterSuperAck'{algorithm = + if NFalgorithm =:= undefined -> PFalgorithm; + true -> NFalgorithm + end, + key = + if NFkey =:= undefined -> PFkey; + true -> NFkey + end, + region_id = + if NFregion_id =:= undefined -> PFregion_id; + true -> NFregion_id + end, + session_token = + if NFsession_token =:= undefined -> PFsession_token; + true -> NFsession_token + end}. + +-compile({nowarn_unused_function,merge_msg_SDLRegisterSuperNak/3}). +merge_msg_SDLRegisterSuperNak(#'SDLRegisterSuperNak'{error_code = PFerror_code, error_message = PFerror_message}, #'SDLRegisterSuperNak'{error_code = NFerror_code, error_message = NFerror_message}, _) -> + #'SDLRegisterSuperNak'{error_code = + if NFerror_code =:= undefined -> PFerror_code; + true -> NFerror_code + end, + error_message = + if NFerror_message =:= undefined -> PFerror_message; + true -> NFerror_message + end}. + +-compile({nowarn_unused_function,merge_msg_SDLQueryInfo/3}). +merge_msg_SDLQueryInfo(#'SDLQueryInfo'{dst_mac = PFdst_mac}, #'SDLQueryInfo'{dst_mac = NFdst_mac}, _) -> + #'SDLQueryInfo'{dst_mac = + if NFdst_mac =:= undefined -> PFdst_mac; + true -> NFdst_mac + end}. + +-compile({nowarn_unused_function,merge_msg_SDLPeerInfo/3}). +merge_msg_SDLPeerInfo(#'SDLPeerInfo'{dst_mac = PFdst_mac, v4_info = PFv4_info, v6_info = PFv6_info}, #'SDLPeerInfo'{dst_mac = NFdst_mac, v4_info = NFv4_info, v6_info = NFv6_info}, TrUserData) -> + #'SDLPeerInfo'{dst_mac = + if NFdst_mac =:= undefined -> PFdst_mac; + true -> NFdst_mac + end, + v4_info = + if PFv4_info /= undefined, NFv4_info /= undefined -> merge_msg_SDLV4Info(PFv4_info, NFv4_info, TrUserData); + PFv4_info == undefined -> NFv4_info; + NFv4_info == undefined -> PFv4_info + end, + v6_info = + if PFv6_info /= undefined, NFv6_info /= undefined -> merge_msg_SDLV6Info(PFv6_info, NFv6_info, TrUserData); + PFv6_info == undefined -> NFv6_info; + NFv6_info == undefined -> PFv6_info + end}. + +-compile({nowarn_unused_function,merge_msg_SDLArpRequest/3}). +merge_msg_SDLArpRequest(#'SDLArpRequest'{target_ip = PFtarget_ip, origin_ip = PForigin_ip, context = PFcontext}, #'SDLArpRequest'{target_ip = NFtarget_ip, origin_ip = NForigin_ip, context = NFcontext}, _) -> + #'SDLArpRequest'{target_ip = + if NFtarget_ip =:= undefined -> PFtarget_ip; + true -> NFtarget_ip + end, + origin_ip = + if NForigin_ip =:= undefined -> PForigin_ip; + true -> NForigin_ip + end, + context = + if NFcontext =:= undefined -> PFcontext; + true -> NFcontext + end}. + +-compile({nowarn_unused_function,merge_msg_SDLArpResponse/3}). +merge_msg_SDLArpResponse(#'SDLArpResponse'{target_ip = PFtarget_ip, target_mac = PFtarget_mac, origin_ip = PForigin_ip, context = PFcontext}, + #'SDLArpResponse'{target_ip = NFtarget_ip, target_mac = NFtarget_mac, origin_ip = NForigin_ip, context = NFcontext}, _) -> + #'SDLArpResponse'{target_ip = + if NFtarget_ip =:= undefined -> PFtarget_ip; + true -> NFtarget_ip + end, + target_mac = + if NFtarget_mac =:= undefined -> PFtarget_mac; + true -> NFtarget_mac + end, + origin_ip = + if NForigin_ip =:= undefined -> PForigin_ip; + true -> NForigin_ip + end, + context = + if NFcontext =:= undefined -> PFcontext; + true -> NFcontext + end}. + +-compile({nowarn_unused_function,merge_msg_SDLPolicyRequest/3}). +merge_msg_SDLPolicyRequest(#'SDLPolicyRequest'{src_identity_id = PFsrc_identity_id, dst_identity_id = PFdst_identity_id, version = PFversion}, + #'SDLPolicyRequest'{src_identity_id = NFsrc_identity_id, dst_identity_id = NFdst_identity_id, version = NFversion}, _) -> + #'SDLPolicyRequest'{src_identity_id = + if NFsrc_identity_id =:= undefined -> PFsrc_identity_id; + true -> NFsrc_identity_id + end, + dst_identity_id = + if NFdst_identity_id =:= undefined -> PFdst_identity_id; + true -> NFdst_identity_id + end, + version = + if NFversion =:= undefined -> PFversion; + true -> NFversion + end}. + +-compile({nowarn_unused_function,merge_msg_SDLPolicyResponse/3}). +merge_msg_SDLPolicyResponse(#'SDLPolicyResponse'{src_identity_id = PFsrc_identity_id, dst_identity_id = PFdst_identity_id, version = PFversion, rules = PFrules}, + #'SDLPolicyResponse'{src_identity_id = NFsrc_identity_id, dst_identity_id = NFdst_identity_id, version = NFversion, rules = NFrules}, _) -> + #'SDLPolicyResponse'{src_identity_id = + if NFsrc_identity_id =:= undefined -> PFsrc_identity_id; + true -> NFsrc_identity_id + end, + dst_identity_id = + if NFdst_identity_id =:= undefined -> PFdst_identity_id; + true -> NFdst_identity_id + end, + version = + if NFversion =:= undefined -> PFversion; + true -> NFversion + end, + rules = + if NFrules =:= undefined -> PFrules; + true -> NFrules + end}. + +-compile({nowarn_unused_function,'merge_msg_SDLEvent.NatChanged'/3}). +'merge_msg_SDLEvent.NatChanged'(#'SDLEvent.NatChanged'{mac = PFmac, ip = PFip}, #'SDLEvent.NatChanged'{mac = NFmac, ip = NFip}, _) -> + #'SDLEvent.NatChanged'{mac = + if NFmac =:= undefined -> PFmac; + true -> NFmac + end, + ip = + if NFip =:= undefined -> PFip; + true -> NFip + end}. + +-compile({nowarn_unused_function,'merge_msg_SDLEvent.SendRegister'/3}). +'merge_msg_SDLEvent.SendRegister'(#'SDLEvent.SendRegister'{dst_mac = PFdst_mac, nat_ip = PFnat_ip, nat_port = PFnat_port, nat_type = PFnat_type, v6_info = PFv6_info}, + #'SDLEvent.SendRegister'{dst_mac = NFdst_mac, nat_ip = NFnat_ip, nat_port = NFnat_port, nat_type = NFnat_type, v6_info = NFv6_info}, TrUserData) -> + #'SDLEvent.SendRegister'{dst_mac = + if NFdst_mac =:= undefined -> PFdst_mac; + true -> NFdst_mac + end, + nat_ip = + if NFnat_ip =:= undefined -> PFnat_ip; + true -> NFnat_ip + end, + nat_port = + if NFnat_port =:= undefined -> PFnat_port; + true -> NFnat_port + end, + nat_type = + if NFnat_type =:= undefined -> PFnat_type; + true -> NFnat_type + end, + v6_info = + if PFv6_info /= undefined, NFv6_info /= undefined -> merge_msg_SDLV6Info(PFv6_info, NFv6_info, TrUserData); + PFv6_info == undefined -> NFv6_info; + NFv6_info == undefined -> PFv6_info + end}. + +-compile({nowarn_unused_function,'merge_msg_SDLEvent.NetworkShutdown'/3}). +'merge_msg_SDLEvent.NetworkShutdown'(#'SDLEvent.NetworkShutdown'{message = PFmessage}, #'SDLEvent.NetworkShutdown'{message = NFmessage}, _) -> + #'SDLEvent.NetworkShutdown'{message = + if NFmessage =:= undefined -> PFmessage; + true -> NFmessage + end}. + +-compile({nowarn_unused_function,'merge_msg_SDLEvent.ExitNodeControl'/3}). +'merge_msg_SDLEvent.ExitNodeControl'(#'SDLEvent.ExitNodeControl'{action = PFaction, node_mac = PFnode_mac, node_ip = PFnode_ip, remark = PFremark}, + #'SDLEvent.ExitNodeControl'{action = NFaction, node_mac = NFnode_mac, node_ip = NFnode_ip, remark = NFremark}, _) -> + #'SDLEvent.ExitNodeControl'{action = + if NFaction =:= undefined -> PFaction; + true -> NFaction + end, + node_mac = + if NFnode_mac =:= undefined -> PFnode_mac; + true -> NFnode_mac + end, + node_ip = + if NFnode_ip =:= undefined -> PFnode_ip; + true -> NFnode_ip + end, + remark = + if NFremark =:= undefined -> PFremark; + true -> NFremark + end}. + +-compile({nowarn_unused_function,merge_msg_SDLEvent/3}). +merge_msg_SDLEvent(#'SDLEvent'{event = PFevent}, #'SDLEvent'{event = NFevent}, TrUserData) -> + #'SDLEvent'{event = + case {PFevent, NFevent} of + {{nat_changed, OPFevent}, {nat_changed, ONFevent}} -> {nat_changed, 'merge_msg_SDLEvent.NatChanged'(OPFevent, ONFevent, TrUserData)}; + {{send_register, OPFevent}, {send_register, ONFevent}} -> {send_register, 'merge_msg_SDLEvent.SendRegister'(OPFevent, ONFevent, TrUserData)}; + {{shutdown, OPFevent}, {shutdown, ONFevent}} -> {shutdown, 'merge_msg_SDLEvent.NetworkShutdown'(OPFevent, ONFevent, TrUserData)}; + {{exit_node, OPFevent}, {exit_node, ONFevent}} -> {exit_node, 'merge_msg_SDLEvent.ExitNodeControl'(OPFevent, ONFevent, TrUserData)}; + {_, undefined} -> PFevent; + _ -> NFevent + end}. + +-compile({nowarn_unused_function,merge_msg_SDLStunRequest/3}). +merge_msg_SDLStunRequest(#'SDLStunRequest'{client_id = PFclient_id, network_id = PFnetwork_id, mac = PFmac, ip = PFip, nat_type = PFnat_type, v6_info = PFv6_info, session_token = PFsession_token}, + #'SDLStunRequest'{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) -> + #'SDLStunRequest'{client_id = + if NFclient_id =:= undefined -> PFclient_id; + true -> NFclient_id + end, + 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, + nat_type = + if NFnat_type =:= undefined -> PFnat_type; + true -> NFnat_type + end, + v6_info = + if PFv6_info /= undefined, NFv6_info /= undefined -> merge_msg_SDLV6Info(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_SDLStunReply/3}). +merge_msg_SDLStunReply(_Prev, New, _TrUserData) -> New. + +-compile({nowarn_unused_function,merge_msg_SDLData/3}). +merge_msg_SDLData(#'SDLData'{network_id = PFnetwork_id, src_mac = PFsrc_mac, dst_mac = PFdst_mac, is_p2p = PFis_p2p, ttl = PFttl, data = PFdata, session_token = PFsession_token, identity_id = PFidentity_id}, + #'SDLData'{network_id = NFnetwork_id, src_mac = NFsrc_mac, dst_mac = NFdst_mac, is_p2p = NFis_p2p, ttl = NFttl, data = NFdata, session_token = NFsession_token, identity_id = NFidentity_id}, _) -> + #'SDLData'{network_id = + if NFnetwork_id =:= undefined -> PFnetwork_id; + true -> NFnetwork_id + end, + src_mac = + if NFsrc_mac =:= undefined -> PFsrc_mac; + true -> NFsrc_mac + end, + dst_mac = + if NFdst_mac =:= undefined -> PFdst_mac; + true -> NFdst_mac + end, + is_p2p = + if NFis_p2p =:= undefined -> PFis_p2p; + true -> NFis_p2p + end, + ttl = + if NFttl =:= undefined -> PFttl; + true -> NFttl + end, + data = + if NFdata =:= undefined -> PFdata; + true -> NFdata + end, + session_token = + if NFsession_token =:= undefined -> PFsession_token; + true -> NFsession_token + end, + identity_id = + if NFidentity_id =:= undefined -> PFidentity_id; + true -> NFidentity_id + end}. + +-compile({nowarn_unused_function,merge_msg_SDLStunProbe/3}). +merge_msg_SDLStunProbe(#'SDLStunProbe'{cookie = PFcookie, attr = PFattr, step = PFstep}, #'SDLStunProbe'{cookie = NFcookie, attr = NFattr, step = NFstep}, _) -> + #'SDLStunProbe'{cookie = + if NFcookie =:= undefined -> PFcookie; + true -> NFcookie + end, + attr = + if NFattr =:= undefined -> PFattr; + true -> NFattr + end, + step = + if NFstep =:= undefined -> PFstep; + true -> NFstep + end}. + +-compile({nowarn_unused_function,merge_msg_SDLStunProbeReply/3}). +merge_msg_SDLStunProbeReply(#'SDLStunProbeReply'{cookie = PFcookie, step = PFstep, port = PFport, ip = PFip}, #'SDLStunProbeReply'{cookie = NFcookie, step = NFstep, port = NFport, ip = NFip}, _) -> + #'SDLStunProbeReply'{cookie = + if NFcookie =:= undefined -> PFcookie; + true -> NFcookie + end, + step = + if NFstep =:= undefined -> PFstep; + true -> NFstep + end, + port = + if NFport =:= undefined -> PFport; + true -> NFport + end, + ip = + if NFip =:= undefined -> PFip; + true -> NFip + end}. + +-compile({nowarn_unused_function,merge_msg_SDLRegister/3}). +merge_msg_SDLRegister(#'SDLRegister'{network_id = PFnetwork_id, src_mac = PFsrc_mac, dst_mac = PFdst_mac}, #'SDLRegister'{network_id = NFnetwork_id, src_mac = NFsrc_mac, dst_mac = NFdst_mac}, _) -> + #'SDLRegister'{network_id = + if NFnetwork_id =:= undefined -> PFnetwork_id; + true -> NFnetwork_id + end, + src_mac = + if NFsrc_mac =:= undefined -> PFsrc_mac; + true -> NFsrc_mac + end, + dst_mac = + if NFdst_mac =:= undefined -> PFdst_mac; + true -> NFdst_mac + end}. + +-compile({nowarn_unused_function,merge_msg_SDLRegisterAck/3}). +merge_msg_SDLRegisterAck(#'SDLRegisterAck'{network_id = PFnetwork_id, src_mac = PFsrc_mac, dst_mac = PFdst_mac}, #'SDLRegisterAck'{network_id = NFnetwork_id, src_mac = NFsrc_mac, dst_mac = NFdst_mac}, _) -> + #'SDLRegisterAck'{network_id = + if NFnetwork_id =:= undefined -> PFnetwork_id; + true -> NFnetwork_id + end, + src_mac = + if NFsrc_mac =:= undefined -> PFsrc_mac; + true -> NFsrc_mac + end, + dst_mac = + if NFdst_mac =:= undefined -> PFdst_mac; + true -> NFdst_mac + end}. + + +verify_msg(Msg) when tuple_size(Msg) >= 1 -> verify_msg(Msg, element(1, Msg), []); +verify_msg(X) -> mk_type_error(not_a_known_message, X, []). + +verify_msg(Msg, MsgName) when is_atom(MsgName) -> verify_msg(Msg, MsgName, []); +verify_msg(Msg, Opts) when tuple_size(Msg) >= 1 -> verify_msg(Msg, element(1, Msg), Opts); +verify_msg(X, _Opts) -> mk_type_error(not_a_known_message, X, []). + +verify_msg(Msg, MsgName, Opts) -> + TrUserData = proplists:get_value(user_data, Opts), + case MsgName of + 'Hello' -> v_msg_Hello(Msg, [MsgName], TrUserData); + 'SDLV4Info' -> v_msg_SDLV4Info(Msg, [MsgName], TrUserData); + 'SDLV6Info' -> v_msg_SDLV6Info(Msg, [MsgName], TrUserData); + 'SDLWelcome' -> v_msg_SDLWelcome(Msg, [MsgName], TrUserData); + 'SDLRegisterSuper' -> v_msg_SDLRegisterSuper(Msg, [MsgName], TrUserData); + 'SDLRegisterSuperAck' -> v_msg_SDLRegisterSuperAck(Msg, [MsgName], TrUserData); + 'SDLRegisterSuperNak' -> v_msg_SDLRegisterSuperNak(Msg, [MsgName], TrUserData); + 'SDLQueryInfo' -> v_msg_SDLQueryInfo(Msg, [MsgName], TrUserData); + 'SDLPeerInfo' -> v_msg_SDLPeerInfo(Msg, [MsgName], TrUserData); + 'SDLArpRequest' -> v_msg_SDLArpRequest(Msg, [MsgName], TrUserData); + 'SDLArpResponse' -> v_msg_SDLArpResponse(Msg, [MsgName], TrUserData); + 'SDLPolicyRequest' -> v_msg_SDLPolicyRequest(Msg, [MsgName], TrUserData); + 'SDLPolicyResponse' -> v_msg_SDLPolicyResponse(Msg, [MsgName], TrUserData); + 'SDLEvent.NatChanged' -> 'v_msg_SDLEvent.NatChanged'(Msg, [MsgName], TrUserData); + 'SDLEvent.SendRegister' -> 'v_msg_SDLEvent.SendRegister'(Msg, [MsgName], TrUserData); + 'SDLEvent.NetworkShutdown' -> 'v_msg_SDLEvent.NetworkShutdown'(Msg, [MsgName], TrUserData); + 'SDLEvent.ExitNodeControl' -> 'v_msg_SDLEvent.ExitNodeControl'(Msg, [MsgName], TrUserData); + 'SDLEvent' -> v_msg_SDLEvent(Msg, [MsgName], TrUserData); + 'SDLStunRequest' -> v_msg_SDLStunRequest(Msg, [MsgName], TrUserData); + 'SDLStunReply' -> v_msg_SDLStunReply(Msg, [MsgName], TrUserData); + 'SDLData' -> v_msg_SDLData(Msg, [MsgName], TrUserData); + 'SDLStunProbe' -> v_msg_SDLStunProbe(Msg, [MsgName], TrUserData); + 'SDLStunProbeReply' -> v_msg_SDLStunProbeReply(Msg, [MsgName], TrUserData); + 'SDLRegister' -> v_msg_SDLRegister(Msg, [MsgName], TrUserData); + 'SDLRegisterAck' -> v_msg_SDLRegisterAck(Msg, [MsgName], TrUserData); + _ -> mk_type_error(not_a_known_message, Msg, []) + end. + + +-compile({nowarn_unused_function,v_msg_Hello/3}). +-dialyzer({nowarn_function,v_msg_Hello/3}). +v_msg_Hello(#'Hello'{}, _Path, _) -> ok; +v_msg_Hello(X, Path, _TrUserData) -> mk_type_error({expected_msg, 'Hello'}, X, Path). + +-compile({nowarn_unused_function,v_submsg_SDLV4Info/3}). +-dialyzer({nowarn_function,v_submsg_SDLV4Info/3}). +v_submsg_SDLV4Info(Msg, Path, TrUserData) -> v_msg_SDLV4Info(Msg, Path, TrUserData). + +-compile({nowarn_unused_function,v_msg_SDLV4Info/3}). +-dialyzer({nowarn_function,v_msg_SDLV4Info/3}). +v_msg_SDLV4Info(#'SDLV4Info'{port = F1, v4 = F2, nat_type = F3}, Path, TrUserData) -> + if F1 == undefined -> ok; + true -> v_type_uint32(F1, [port | Path], TrUserData) + end, + if F2 == undefined -> ok; + true -> v_type_bytes(F2, [v4 | Path], TrUserData) + end, + if F3 == undefined -> ok; + true -> v_type_uint32(F3, [nat_type | Path], TrUserData) + end, + ok; +v_msg_SDLV4Info(X, Path, _TrUserData) -> mk_type_error({expected_msg, 'SDLV4Info'}, X, Path). + +-compile({nowarn_unused_function,v_submsg_SDLV6Info/3}). +-dialyzer({nowarn_function,v_submsg_SDLV6Info/3}). +v_submsg_SDLV6Info(Msg, Path, TrUserData) -> v_msg_SDLV6Info(Msg, Path, TrUserData). + +-compile({nowarn_unused_function,v_msg_SDLV6Info/3}). +-dialyzer({nowarn_function,v_msg_SDLV6Info/3}). +v_msg_SDLV6Info(#'SDLV6Info'{port = F1, v6 = F2}, Path, TrUserData) -> + if F1 == undefined -> ok; + true -> v_type_uint32(F1, [port | Path], TrUserData) + end, + if F2 == undefined -> ok; + true -> v_type_bytes(F2, [v6 | Path], TrUserData) + end, + ok; +v_msg_SDLV6Info(X, Path, _TrUserData) -> mk_type_error({expected_msg, 'SDLV6Info'}, X, Path). + +-compile({nowarn_unused_function,v_msg_SDLWelcome/3}). +-dialyzer({nowarn_function,v_msg_SDLWelcome/3}). +v_msg_SDLWelcome(#'SDLWelcome'{version = F1, max_bidi_streams = F2, max_packet_size = F3, heartbeat_sec = F4}, Path, TrUserData) -> + if F1 == undefined -> ok; + true -> v_type_uint32(F1, [version | Path], TrUserData) + end, + if F2 == undefined -> ok; + true -> v_type_uint32(F2, [max_bidi_streams | Path], TrUserData) + end, + if F3 == undefined -> ok; + true -> v_type_uint32(F3, [max_packet_size | Path], TrUserData) + end, + if F4 == undefined -> ok; + true -> v_type_uint32(F4, [heartbeat_sec | Path], TrUserData) + end, + ok; +v_msg_SDLWelcome(X, Path, _TrUserData) -> mk_type_error({expected_msg, 'SDLWelcome'}, X, Path). + +-compile({nowarn_unused_function,v_msg_SDLRegisterSuper/3}). +-dialyzer({nowarn_function,v_msg_SDLRegisterSuper/3}). +v_msg_SDLRegisterSuper(#'SDLRegisterSuper'{client_id = F1, network_id = F2, mac = F3, ip = F4, mask_len = F5, hostname = F6, pub_key = F7, access_token = F8}, Path, TrUserData) -> + if F1 == undefined -> ok; + true -> v_type_string(F1, [client_id | Path], TrUserData) + end, + if F2 == undefined -> ok; + true -> v_type_uint32(F2, [network_id | Path], TrUserData) + end, + if F3 == undefined -> ok; + true -> v_type_bytes(F3, [mac | Path], TrUserData) + end, + if F4 == undefined -> ok; + true -> v_type_uint32(F4, [ip | Path], TrUserData) + end, + if F5 == undefined -> ok; + true -> v_type_uint32(F5, [mask_len | Path], TrUserData) + end, + if F6 == undefined -> ok; + true -> v_type_string(F6, [hostname | Path], TrUserData) + end, + if F7 == undefined -> ok; + true -> v_type_string(F7, [pub_key | Path], TrUserData) + end, + if F8 == undefined -> ok; + true -> v_type_string(F8, [access_token | Path], TrUserData) + end, + ok; +v_msg_SDLRegisterSuper(X, Path, _TrUserData) -> mk_type_error({expected_msg, 'SDLRegisterSuper'}, X, Path). + +-compile({nowarn_unused_function,v_msg_SDLRegisterSuperAck/3}). +-dialyzer({nowarn_function,v_msg_SDLRegisterSuperAck/3}). +v_msg_SDLRegisterSuperAck(#'SDLRegisterSuperAck'{algorithm = F1, key = F2, region_id = F3, session_token = F4}, Path, TrUserData) -> + if F1 == undefined -> ok; + true -> v_type_string(F1, [algorithm | Path], TrUserData) + end, + if F2 == undefined -> ok; + true -> v_type_bytes(F2, [key | Path], TrUserData) + end, + if F3 == undefined -> ok; + true -> v_type_uint32(F3, [region_id | Path], TrUserData) + end, + if F4 == undefined -> ok; + true -> v_type_bytes(F4, [session_token | Path], TrUserData) + end, + ok; +v_msg_SDLRegisterSuperAck(X, Path, _TrUserData) -> mk_type_error({expected_msg, 'SDLRegisterSuperAck'}, X, Path). + +-compile({nowarn_unused_function,v_msg_SDLRegisterSuperNak/3}). +-dialyzer({nowarn_function,v_msg_SDLRegisterSuperNak/3}). +v_msg_SDLRegisterSuperNak(#'SDLRegisterSuperNak'{error_code = F1, error_message = F2}, Path, TrUserData) -> + if F1 == undefined -> ok; + true -> v_type_uint32(F1, [error_code | Path], TrUserData) + end, + if F2 == undefined -> ok; + true -> v_type_string(F2, [error_message | Path], TrUserData) + end, + ok; +v_msg_SDLRegisterSuperNak(X, Path, _TrUserData) -> mk_type_error({expected_msg, 'SDLRegisterSuperNak'}, X, Path). + +-compile({nowarn_unused_function,v_msg_SDLQueryInfo/3}). +-dialyzer({nowarn_function,v_msg_SDLQueryInfo/3}). +v_msg_SDLQueryInfo(#'SDLQueryInfo'{dst_mac = F1}, Path, TrUserData) -> + if F1 == undefined -> ok; + true -> v_type_bytes(F1, [dst_mac | Path], TrUserData) + end, + ok; +v_msg_SDLQueryInfo(X, Path, _TrUserData) -> mk_type_error({expected_msg, 'SDLQueryInfo'}, X, Path). + +-compile({nowarn_unused_function,v_msg_SDLPeerInfo/3}). +-dialyzer({nowarn_function,v_msg_SDLPeerInfo/3}). +v_msg_SDLPeerInfo(#'SDLPeerInfo'{dst_mac = F1, v4_info = F2, v6_info = F3}, Path, TrUserData) -> + if F1 == undefined -> ok; + true -> v_type_bytes(F1, [dst_mac | Path], TrUserData) + end, + if F2 == undefined -> ok; + true -> v_submsg_SDLV4Info(F2, [v4_info | Path], TrUserData) + end, + if F3 == undefined -> ok; + true -> v_submsg_SDLV6Info(F3, [v6_info | Path], TrUserData) + end, + ok; +v_msg_SDLPeerInfo(X, Path, _TrUserData) -> mk_type_error({expected_msg, 'SDLPeerInfo'}, X, Path). + +-compile({nowarn_unused_function,v_msg_SDLArpRequest/3}). +-dialyzer({nowarn_function,v_msg_SDLArpRequest/3}). +v_msg_SDLArpRequest(#'SDLArpRequest'{target_ip = F1, origin_ip = F2, context = F3}, Path, TrUserData) -> + if F1 == undefined -> ok; + true -> v_type_uint32(F1, [target_ip | Path], TrUserData) + end, + if F2 == undefined -> ok; + true -> v_type_uint32(F2, [origin_ip | Path], TrUserData) + end, + if F3 == undefined -> ok; + true -> v_type_bytes(F3, [context | Path], TrUserData) + end, + ok; +v_msg_SDLArpRequest(X, Path, _TrUserData) -> mk_type_error({expected_msg, 'SDLArpRequest'}, X, Path). + +-compile({nowarn_unused_function,v_msg_SDLArpResponse/3}). +-dialyzer({nowarn_function,v_msg_SDLArpResponse/3}). +v_msg_SDLArpResponse(#'SDLArpResponse'{target_ip = F1, target_mac = F2, origin_ip = F3, context = F4}, Path, TrUserData) -> + if F1 == undefined -> ok; + true -> v_type_uint32(F1, [target_ip | Path], TrUserData) + end, + if F2 == undefined -> ok; + true -> v_type_bytes(F2, [target_mac | Path], TrUserData) + end, + if F3 == undefined -> ok; + true -> v_type_uint32(F3, [origin_ip | Path], TrUserData) + end, + if F4 == undefined -> ok; + true -> v_type_bytes(F4, [context | Path], TrUserData) + end, + ok; +v_msg_SDLArpResponse(X, Path, _TrUserData) -> mk_type_error({expected_msg, 'SDLArpResponse'}, X, Path). + +-compile({nowarn_unused_function,v_msg_SDLPolicyRequest/3}). +-dialyzer({nowarn_function,v_msg_SDLPolicyRequest/3}). +v_msg_SDLPolicyRequest(#'SDLPolicyRequest'{src_identity_id = F1, dst_identity_id = F2, version = F3}, Path, TrUserData) -> + if F1 == undefined -> ok; + true -> v_type_uint32(F1, [src_identity_id | Path], TrUserData) + end, + if F2 == undefined -> ok; + true -> v_type_uint32(F2, [dst_identity_id | Path], TrUserData) + end, + if F3 == undefined -> ok; + true -> v_type_uint32(F3, [version | Path], TrUserData) + end, + ok; +v_msg_SDLPolicyRequest(X, Path, _TrUserData) -> mk_type_error({expected_msg, 'SDLPolicyRequest'}, X, Path). + +-compile({nowarn_unused_function,v_msg_SDLPolicyResponse/3}). +-dialyzer({nowarn_function,v_msg_SDLPolicyResponse/3}). +v_msg_SDLPolicyResponse(#'SDLPolicyResponse'{src_identity_id = F1, dst_identity_id = F2, version = F3, rules = F4}, Path, TrUserData) -> + if F1 == undefined -> ok; + true -> v_type_uint32(F1, [src_identity_id | Path], TrUserData) + end, + if F2 == undefined -> ok; + true -> v_type_uint32(F2, [dst_identity_id | Path], TrUserData) + end, + if F3 == undefined -> ok; + true -> v_type_uint32(F3, [version | Path], TrUserData) + end, + if F4 == undefined -> ok; + true -> v_type_bytes(F4, [rules | Path], TrUserData) + end, + ok; +v_msg_SDLPolicyResponse(X, Path, _TrUserData) -> mk_type_error({expected_msg, 'SDLPolicyResponse'}, X, Path). + +-compile({nowarn_unused_function,'v_submsg_SDLEvent.NatChanged'/3}). +-dialyzer({nowarn_function,'v_submsg_SDLEvent.NatChanged'/3}). +'v_submsg_SDLEvent.NatChanged'(Msg, Path, TrUserData) -> 'v_msg_SDLEvent.NatChanged'(Msg, Path, TrUserData). + +-compile({nowarn_unused_function,'v_msg_SDLEvent.NatChanged'/3}). +-dialyzer({nowarn_function,'v_msg_SDLEvent.NatChanged'/3}). +'v_msg_SDLEvent.NatChanged'(#'SDLEvent.NatChanged'{mac = F1, ip = F2}, Path, TrUserData) -> + if F1 == undefined -> ok; + true -> v_type_bytes(F1, [mac | Path], TrUserData) + end, + if F2 == undefined -> ok; + true -> v_type_uint32(F2, [ip | Path], TrUserData) + end, + ok; +'v_msg_SDLEvent.NatChanged'(X, Path, _TrUserData) -> mk_type_error({expected_msg, 'SDLEvent.NatChanged'}, X, Path). + +-compile({nowarn_unused_function,'v_submsg_SDLEvent.SendRegister'/3}). +-dialyzer({nowarn_function,'v_submsg_SDLEvent.SendRegister'/3}). +'v_submsg_SDLEvent.SendRegister'(Msg, Path, TrUserData) -> 'v_msg_SDLEvent.SendRegister'(Msg, Path, TrUserData). + +-compile({nowarn_unused_function,'v_msg_SDLEvent.SendRegister'/3}). +-dialyzer({nowarn_function,'v_msg_SDLEvent.SendRegister'/3}). +'v_msg_SDLEvent.SendRegister'(#'SDLEvent.SendRegister'{dst_mac = F1, nat_ip = F2, nat_port = F3, nat_type = F4, v6_info = F5}, Path, TrUserData) -> + if F1 == undefined -> ok; + true -> v_type_bytes(F1, [dst_mac | Path], TrUserData) + end, + if F2 == undefined -> ok; + true -> v_type_uint32(F2, [nat_ip | Path], TrUserData) + end, + if F3 == undefined -> ok; + true -> v_type_uint32(F3, [nat_port | Path], TrUserData) + end, + if F4 == undefined -> ok; + true -> v_type_uint32(F4, [nat_type | Path], TrUserData) + end, + if F5 == undefined -> ok; + true -> v_submsg_SDLV6Info(F5, [v6_info | Path], TrUserData) + end, + ok; +'v_msg_SDLEvent.SendRegister'(X, Path, _TrUserData) -> mk_type_error({expected_msg, 'SDLEvent.SendRegister'}, X, Path). + +-compile({nowarn_unused_function,'v_submsg_SDLEvent.NetworkShutdown'/3}). +-dialyzer({nowarn_function,'v_submsg_SDLEvent.NetworkShutdown'/3}). +'v_submsg_SDLEvent.NetworkShutdown'(Msg, Path, TrUserData) -> 'v_msg_SDLEvent.NetworkShutdown'(Msg, Path, TrUserData). + +-compile({nowarn_unused_function,'v_msg_SDLEvent.NetworkShutdown'/3}). +-dialyzer({nowarn_function,'v_msg_SDLEvent.NetworkShutdown'/3}). +'v_msg_SDLEvent.NetworkShutdown'(#'SDLEvent.NetworkShutdown'{message = F1}, Path, TrUserData) -> + if F1 == undefined -> ok; + true -> v_type_string(F1, [message | Path], TrUserData) + end, + ok; +'v_msg_SDLEvent.NetworkShutdown'(X, Path, _TrUserData) -> mk_type_error({expected_msg, 'SDLEvent.NetworkShutdown'}, X, Path). + +-compile({nowarn_unused_function,'v_submsg_SDLEvent.ExitNodeControl'/3}). +-dialyzer({nowarn_function,'v_submsg_SDLEvent.ExitNodeControl'/3}). +'v_submsg_SDLEvent.ExitNodeControl'(Msg, Path, TrUserData) -> 'v_msg_SDLEvent.ExitNodeControl'(Msg, Path, TrUserData). + +-compile({nowarn_unused_function,'v_msg_SDLEvent.ExitNodeControl'/3}). +-dialyzer({nowarn_function,'v_msg_SDLEvent.ExitNodeControl'/3}). +'v_msg_SDLEvent.ExitNodeControl'(#'SDLEvent.ExitNodeControl'{action = F1, node_mac = F2, node_ip = F3, remark = F4}, Path, TrUserData) -> + if F1 == undefined -> ok; + true -> v_type_int32(F1, [action | Path], TrUserData) + end, + if F2 == undefined -> ok; + true -> v_type_bytes(F2, [node_mac | Path], TrUserData) + end, + if F3 == undefined -> ok; + true -> v_type_uint32(F3, [node_ip | Path], TrUserData) + end, + if F4 == undefined -> ok; + true -> v_type_string(F4, [remark | Path], TrUserData) + end, + ok; +'v_msg_SDLEvent.ExitNodeControl'(X, Path, _TrUserData) -> mk_type_error({expected_msg, 'SDLEvent.ExitNodeControl'}, X, Path). + +-compile({nowarn_unused_function,v_msg_SDLEvent/3}). +-dialyzer({nowarn_function,v_msg_SDLEvent/3}). +v_msg_SDLEvent(#'SDLEvent'{event = F1}, Path, TrUserData) -> + case F1 of + undefined -> ok; + {nat_changed, OF1} -> 'v_submsg_SDLEvent.NatChanged'(OF1, [nat_changed, event | Path], TrUserData); + {send_register, OF1} -> 'v_submsg_SDLEvent.SendRegister'(OF1, [send_register, event | Path], TrUserData); + {shutdown, OF1} -> 'v_submsg_SDLEvent.NetworkShutdown'(OF1, [shutdown, event | Path], TrUserData); + {exit_node, OF1} -> 'v_submsg_SDLEvent.ExitNodeControl'(OF1, [exit_node, event | Path], TrUserData); + _ -> mk_type_error(invalid_oneof, F1, [event | Path]) + end, + ok; +v_msg_SDLEvent(X, Path, _TrUserData) -> mk_type_error({expected_msg, 'SDLEvent'}, X, Path). + +-compile({nowarn_unused_function,v_msg_SDLStunRequest/3}). +-dialyzer({nowarn_function,v_msg_SDLStunRequest/3}). +v_msg_SDLStunRequest(#'SDLStunRequest'{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_string(F1, [client_id | Path], TrUserData) + end, + if F2 == undefined -> ok; + true -> v_type_uint32(F2, [network_id | Path], TrUserData) + end, + if F3 == undefined -> ok; + true -> v_type_bytes(F3, [mac | Path], TrUserData) + end, + if F4 == undefined -> ok; + true -> v_type_uint32(F4, [ip | Path], TrUserData) + end, + if F5 == undefined -> ok; + true -> v_type_uint32(F5, [nat_type | Path], TrUserData) + end, + if F6 == undefined -> ok; + true -> v_submsg_SDLV6Info(F6, [v6_info | Path], TrUserData) + end, + if F7 == undefined -> ok; + true -> v_type_bytes(F7, [session_token | Path], TrUserData) + end, + ok; +v_msg_SDLStunRequest(X, Path, _TrUserData) -> mk_type_error({expected_msg, 'SDLStunRequest'}, X, Path). + +-compile({nowarn_unused_function,v_msg_SDLStunReply/3}). +-dialyzer({nowarn_function,v_msg_SDLStunReply/3}). +v_msg_SDLStunReply(#'SDLStunReply'{}, _Path, _) -> ok; +v_msg_SDLStunReply(X, Path, _TrUserData) -> mk_type_error({expected_msg, 'SDLStunReply'}, X, Path). + +-compile({nowarn_unused_function,v_msg_SDLData/3}). +-dialyzer({nowarn_function,v_msg_SDLData/3}). +v_msg_SDLData(#'SDLData'{network_id = F1, src_mac = F2, dst_mac = F3, is_p2p = F4, ttl = F5, data = F6, session_token = F7, identity_id = F8}, 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, [src_mac | Path], TrUserData) + end, + if F3 == undefined -> ok; + true -> v_type_bytes(F3, [dst_mac | Path], TrUserData) + end, + if F4 == undefined -> ok; + true -> v_type_bool(F4, [is_p2p | Path], TrUserData) + end, + if F5 == undefined -> ok; + true -> v_type_uint32(F5, [ttl | Path], TrUserData) + end, + 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, + if F8 == undefined -> ok; + true -> v_type_uint32(F8, [identity_id | Path], TrUserData) + end, + ok; +v_msg_SDLData(X, Path, _TrUserData) -> mk_type_error({expected_msg, 'SDLData'}, X, Path). + +-compile({nowarn_unused_function,v_msg_SDLStunProbe/3}). +-dialyzer({nowarn_function,v_msg_SDLStunProbe/3}). +v_msg_SDLStunProbe(#'SDLStunProbe'{cookie = F1, attr = F2, step = F3}, Path, TrUserData) -> + if F1 == undefined -> ok; + true -> v_type_uint32(F1, [cookie | Path], TrUserData) + end, + if F2 == undefined -> ok; + true -> v_type_uint32(F2, [attr | Path], TrUserData) + end, + if F3 == undefined -> ok; + true -> v_type_uint32(F3, [step | Path], TrUserData) + end, + ok; +v_msg_SDLStunProbe(X, Path, _TrUserData) -> mk_type_error({expected_msg, 'SDLStunProbe'}, X, Path). + +-compile({nowarn_unused_function,v_msg_SDLStunProbeReply/3}). +-dialyzer({nowarn_function,v_msg_SDLStunProbeReply/3}). +v_msg_SDLStunProbeReply(#'SDLStunProbeReply'{cookie = F1, step = F2, port = F3, ip = F4}, Path, TrUserData) -> + if F1 == undefined -> ok; + true -> v_type_uint32(F1, [cookie | Path], TrUserData) + end, + if F2 == undefined -> ok; + true -> v_type_uint32(F2, [step | Path], TrUserData) + end, + if F3 == undefined -> ok; + true -> v_type_uint32(F3, [port | Path], TrUserData) + end, + if F4 == undefined -> ok; + true -> v_type_uint32(F4, [ip | Path], TrUserData) + end, + ok; +v_msg_SDLStunProbeReply(X, Path, _TrUserData) -> mk_type_error({expected_msg, 'SDLStunProbeReply'}, X, Path). + +-compile({nowarn_unused_function,v_msg_SDLRegister/3}). +-dialyzer({nowarn_function,v_msg_SDLRegister/3}). +v_msg_SDLRegister(#'SDLRegister'{network_id = F1, src_mac = F2, dst_mac = F3}, 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, [src_mac | Path], TrUserData) + end, + if F3 == undefined -> ok; + true -> v_type_bytes(F3, [dst_mac | Path], TrUserData) + end, + ok; +v_msg_SDLRegister(X, Path, _TrUserData) -> mk_type_error({expected_msg, 'SDLRegister'}, X, Path). + +-compile({nowarn_unused_function,v_msg_SDLRegisterAck/3}). +-dialyzer({nowarn_function,v_msg_SDLRegisterAck/3}). +v_msg_SDLRegisterAck(#'SDLRegisterAck'{network_id = F1, src_mac = F2, dst_mac = F3}, 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, [src_mac | Path], TrUserData) + end, + if F3 == undefined -> ok; + true -> v_type_bytes(F3, [dst_mac | Path], TrUserData) + end, + ok; +v_msg_SDLRegisterAck(X, Path, _TrUserData) -> mk_type_error({expected_msg, 'SDLRegisterAck'}, X, Path). + +-compile({nowarn_unused_function,v_type_int32/3}). +-dialyzer({nowarn_function,v_type_int32/3}). +v_type_int32(N, _Path, _TrUserData) when is_integer(N), -2147483648 =< N, N =< 2147483647 -> ok; +v_type_int32(N, Path, _TrUserData) when is_integer(N) -> mk_type_error({value_out_of_range, int32, signed, 32}, N, Path); +v_type_int32(X, Path, _TrUserData) -> mk_type_error({bad_integer, int32, signed, 32}, X, Path). + +-compile({nowarn_unused_function,v_type_uint32/3}). +-dialyzer({nowarn_function,v_type_uint32/3}). +v_type_uint32(N, _Path, _TrUserData) when is_integer(N), 0 =< N, N =< 4294967295 -> ok; +v_type_uint32(N, Path, _TrUserData) when is_integer(N) -> mk_type_error({value_out_of_range, uint32, unsigned, 32}, N, Path); +v_type_uint32(X, Path, _TrUserData) -> mk_type_error({bad_integer, uint32, unsigned, 32}, X, Path). + +-compile({nowarn_unused_function,v_type_bool/3}). +-dialyzer({nowarn_function,v_type_bool/3}). +v_type_bool(false, _Path, _TrUserData) -> ok; +v_type_bool(true, _Path, _TrUserData) -> ok; +v_type_bool(0, _Path, _TrUserData) -> ok; +v_type_bool(1, _Path, _TrUserData) -> ok; +v_type_bool(X, Path, _TrUserData) -> mk_type_error(bad_boolean_value, X, Path). + +-compile({nowarn_unused_function,v_type_string/3}). +-dialyzer({nowarn_function,v_type_string/3}). +v_type_string(S, Path, _TrUserData) when is_list(S); is_binary(S) -> + try unicode:characters_to_binary(S) of + B when is_binary(B) -> ok; + {error, _, _} -> mk_type_error(bad_unicode_string, S, Path) + catch + error:badarg -> mk_type_error(bad_unicode_string, S, Path) + end; +v_type_string(X, Path, _TrUserData) -> mk_type_error(bad_unicode_string, X, Path). + +-compile({nowarn_unused_function,v_type_bytes/3}). +-dialyzer({nowarn_function,v_type_bytes/3}). +v_type_bytes(B, _Path, _TrUserData) when is_binary(B) -> ok; +v_type_bytes(B, _Path, _TrUserData) when is_list(B) -> ok; +v_type_bytes(X, Path, _TrUserData) -> mk_type_error(bad_binary_value, X, Path). + +-compile({nowarn_unused_function,mk_type_error/3}). +-spec mk_type_error(_, _, list()) -> no_return(). +mk_type_error(Error, ValueSeen, Path) -> + Path2 = prettify_path(Path), + erlang:error({gpb_type_error, {Error, [{value, ValueSeen}, {path, Path2}]}}). + + +-compile({nowarn_unused_function,prettify_path/1}). +-dialyzer({nowarn_function,prettify_path/1}). +prettify_path([]) -> top_level; +prettify_path(PathR) -> lists:append(lists:join(".", lists:map(fun atom_to_list/1, lists:reverse(PathR)))). + + +-compile({nowarn_unused_function,id/2}). +-compile({inline,id/2}). +id(X, _TrUserData) -> X. + +-compile({nowarn_unused_function,v_ok/3}). +-compile({inline,v_ok/3}). +v_ok(_Value, _Path, _TrUserData) -> ok. + +-compile({nowarn_unused_function,m_overwrite/3}). +-compile({inline,m_overwrite/3}). +m_overwrite(_Prev, New, _TrUserData) -> New. + +-compile({nowarn_unused_function,cons/3}). +-compile({inline,cons/3}). +cons(Elem, Acc, _TrUserData) -> [Elem | Acc]. + +-compile({nowarn_unused_function,lists_reverse/2}). +-compile({inline,lists_reverse/2}). +'lists_reverse'(L, _TrUserData) -> lists:reverse(L). +-compile({nowarn_unused_function,'erlang_++'/3}). +-compile({inline,'erlang_++'/3}). +'erlang_++'(A, B, _TrUserData) -> A ++ B. + + +get_msg_defs() -> + [{{msg, 'Hello'}, []}, + {{msg, 'SDLV4Info'}, + [#field{name = port, fnum = 1, rnum = 2, type = uint32, occurrence = defaulty, opts = []}, + #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, 'SDLV6Info'}, [#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, 'SDLWelcome'}, + [#field{name = version, fnum = 1, rnum = 2, type = uint32, occurrence = defaulty, opts = []}, + #field{name = max_bidi_streams, fnum = 2, rnum = 3, type = uint32, occurrence = defaulty, opts = []}, + #field{name = max_packet_size, fnum = 3, rnum = 4, type = uint32, occurrence = defaulty, opts = []}, + #field{name = heartbeat_sec, fnum = 4, rnum = 5, type = uint32, occurrence = defaulty, opts = []}]}, + {{msg, 'SDLRegisterSuper'}, + [#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 = mask_len, fnum = 5, rnum = 6, type = uint32, occurrence = defaulty, opts = []}, + #field{name = hostname, fnum = 6, rnum = 7, type = string, occurrence = defaulty, opts = []}, + #field{name = pub_key, fnum = 7, rnum = 8, type = string, occurrence = defaulty, opts = []}, + #field{name = access_token, fnum = 8, rnum = 9, type = string, occurrence = defaulty, opts = []}]}, + {{msg, 'SDLRegisterSuperAck'}, + [#field{name = algorithm, fnum = 1, rnum = 2, type = string, occurrence = defaulty, opts = []}, + #field{name = key, fnum = 2, rnum = 3, type = bytes, occurrence = defaulty, opts = []}, + #field{name = region_id, fnum = 3, rnum = 4, type = uint32, occurrence = defaulty, opts = []}, + #field{name = session_token, fnum = 4, rnum = 5, type = bytes, occurrence = defaulty, opts = []}]}, + {{msg, 'SDLRegisterSuperNak'}, [#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, 'SDLQueryInfo'}, [#field{name = dst_mac, fnum = 1, rnum = 2, type = bytes, occurrence = defaulty, opts = []}]}, + {{msg, 'SDLPeerInfo'}, + [#field{name = dst_mac, fnum = 1, rnum = 2, type = bytes, occurrence = defaulty, opts = []}, + #field{name = v4_info, fnum = 2, rnum = 3, type = {msg, 'SDLV4Info'}, occurrence = optional, opts = []}, + #field{name = v6_info, fnum = 3, rnum = 4, type = {msg, 'SDLV6Info'}, occurrence = optional, opts = []}]}, + {{msg, 'SDLArpRequest'}, + [#field{name = target_ip, fnum = 1, rnum = 2, type = uint32, occurrence = defaulty, opts = []}, + #field{name = origin_ip, fnum = 2, rnum = 3, type = uint32, occurrence = defaulty, opts = []}, + #field{name = context, fnum = 3, rnum = 4, type = bytes, occurrence = defaulty, opts = []}]}, + {{msg, 'SDLArpResponse'}, + [#field{name = target_ip, fnum = 1, rnum = 2, type = uint32, occurrence = defaulty, opts = []}, + #field{name = target_mac, fnum = 2, rnum = 3, type = bytes, occurrence = defaulty, opts = []}, + #field{name = origin_ip, fnum = 3, rnum = 4, type = uint32, occurrence = defaulty, opts = []}, + #field{name = context, fnum = 4, rnum = 5, type = bytes, occurrence = defaulty, opts = []}]}, + {{msg, 'SDLPolicyRequest'}, + [#field{name = src_identity_id, fnum = 1, rnum = 2, type = uint32, occurrence = defaulty, opts = []}, + #field{name = dst_identity_id, fnum = 2, rnum = 3, type = uint32, occurrence = defaulty, opts = []}, + #field{name = version, fnum = 3, rnum = 4, type = uint32, occurrence = defaulty, opts = []}]}, + {{msg, 'SDLPolicyResponse'}, + [#field{name = src_identity_id, fnum = 1, rnum = 2, type = uint32, occurrence = defaulty, opts = []}, + #field{name = dst_identity_id, fnum = 2, rnum = 3, type = uint32, occurrence = defaulty, opts = []}, + #field{name = version, fnum = 3, rnum = 4, type = uint32, occurrence = defaulty, opts = []}, + #field{name = rules, fnum = 4, rnum = 5, type = bytes, occurrence = defaulty, opts = []}]}, + {{msg, 'SDLEvent.NatChanged'}, [#field{name = mac, fnum = 1, rnum = 2, type = bytes, occurrence = defaulty, opts = []}, #field{name = ip, fnum = 2, rnum = 3, type = uint32, occurrence = defaulty, opts = []}]}, + {{msg, 'SDLEvent.SendRegister'}, + [#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, 'SDLV6Info'}, occurrence = optional, opts = []}]}, + {{msg, 'SDLEvent.NetworkShutdown'}, [#field{name = message, fnum = 1, rnum = 2, type = string, occurrence = defaulty, opts = []}]}, + {{msg, 'SDLEvent.ExitNodeControl'}, + [#field{name = action, fnum = 1, rnum = 2, type = int32, occurrence = defaulty, opts = []}, + #field{name = node_mac, fnum = 2, rnum = 3, type = bytes, occurrence = defaulty, opts = []}, + #field{name = node_ip, fnum = 3, rnum = 4, type = uint32, occurrence = defaulty, opts = []}, + #field{name = remark, fnum = 4, rnum = 5, type = string, occurrence = defaulty, opts = []}]}, + {{msg, 'SDLEvent'}, + [#gpb_oneof{name = event, rnum = 2, + fields = + [#field{name = nat_changed, fnum = 1, rnum = 2, type = {msg, 'SDLEvent.NatChanged'}, occurrence = optional, opts = []}, + #field{name = send_register, fnum = 2, rnum = 2, type = {msg, 'SDLEvent.SendRegister'}, occurrence = optional, opts = []}, + #field{name = shutdown, fnum = 3, rnum = 2, type = {msg, 'SDLEvent.NetworkShutdown'}, occurrence = optional, opts = []}, + #field{name = exit_node, fnum = 4, rnum = 2, type = {msg, 'SDLEvent.ExitNodeControl'}, occurrence = optional, opts = []}], + opts = []}]}, + {{msg, 'SDLStunRequest'}, + [#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, 'SDLV6Info'}, occurrence = optional, opts = []}, + #field{name = session_token, fnum = 7, rnum = 8, type = bytes, occurrence = defaulty, opts = []}]}, + {{msg, 'SDLStunReply'}, []}, + {{msg, 'SDLData'}, + [#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 = session_token, fnum = 7, rnum = 8, type = bytes, occurrence = defaulty, opts = []}, + #field{name = identity_id, fnum = 8, rnum = 9, type = uint32, occurrence = defaulty, opts = []}]}, + {{msg, 'SDLStunProbe'}, + [#field{name = cookie, fnum = 1, rnum = 2, type = uint32, occurrence = defaulty, opts = []}, + #field{name = attr, fnum = 2, rnum = 3, type = uint32, occurrence = defaulty, opts = []}, + #field{name = step, fnum = 3, rnum = 4, type = uint32, occurrence = defaulty, opts = []}]}, + {{msg, 'SDLStunProbeReply'}, + [#field{name = cookie, fnum = 1, rnum = 2, type = uint32, occurrence = defaulty, opts = []}, + #field{name = step, fnum = 2, rnum = 3, type = uint32, occurrence = defaulty, opts = []}, + #field{name = port, fnum = 3, rnum = 4, type = uint32, occurrence = defaulty, opts = []}, + #field{name = ip, fnum = 4, rnum = 5, type = uint32, occurrence = defaulty, opts = []}]}, + {{msg, 'SDLRegister'}, + [#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 = []}]}, + {{msg, 'SDLRegisterAck'}, + [#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 = []}]}]. + + +get_msg_names() -> + ['Hello', + 'SDLV4Info', + 'SDLV6Info', + 'SDLWelcome', + 'SDLRegisterSuper', + 'SDLRegisterSuperAck', + 'SDLRegisterSuperNak', + 'SDLQueryInfo', + 'SDLPeerInfo', + 'SDLArpRequest', + 'SDLArpResponse', + 'SDLPolicyRequest', + 'SDLPolicyResponse', + 'SDLEvent.NatChanged', + 'SDLEvent.SendRegister', + 'SDLEvent.NetworkShutdown', + 'SDLEvent.ExitNodeControl', + 'SDLEvent', + 'SDLStunRequest', + 'SDLStunReply', + 'SDLData', + 'SDLStunProbe', + 'SDLStunProbeReply', + 'SDLRegister', + 'SDLRegisterAck']. + + +get_group_names() -> []. + + +get_msg_or_group_names() -> + ['Hello', + 'SDLV4Info', + 'SDLV6Info', + 'SDLWelcome', + 'SDLRegisterSuper', + 'SDLRegisterSuperAck', + 'SDLRegisterSuperNak', + 'SDLQueryInfo', + 'SDLPeerInfo', + 'SDLArpRequest', + 'SDLArpResponse', + 'SDLPolicyRequest', + 'SDLPolicyResponse', + 'SDLEvent.NatChanged', + 'SDLEvent.SendRegister', + 'SDLEvent.NetworkShutdown', + 'SDLEvent.ExitNodeControl', + 'SDLEvent', + 'SDLStunRequest', + 'SDLStunReply', + 'SDLData', + 'SDLStunProbe', + 'SDLStunProbeReply', + 'SDLRegister', + 'SDLRegisterAck']. + + +get_enum_names() -> []. + + +fetch_msg_def(MsgName) -> + case find_msg_def(MsgName) of + Fs when is_list(Fs) -> Fs; + error -> erlang:error({no_such_msg, MsgName}) + end. + + +-spec fetch_enum_def(_) -> no_return(). +fetch_enum_def(EnumName) -> erlang:error({no_such_enum, EnumName}). + + +find_msg_def('Hello') -> []; +find_msg_def('SDLV4Info') -> + [#field{name = port, fnum = 1, rnum = 2, type = uint32, occurrence = defaulty, opts = []}, + #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('SDLV6Info') -> [#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('SDLWelcome') -> + [#field{name = version, fnum = 1, rnum = 2, type = uint32, occurrence = defaulty, opts = []}, + #field{name = max_bidi_streams, fnum = 2, rnum = 3, type = uint32, occurrence = defaulty, opts = []}, + #field{name = max_packet_size, fnum = 3, rnum = 4, type = uint32, occurrence = defaulty, opts = []}, + #field{name = heartbeat_sec, fnum = 4, rnum = 5, type = uint32, occurrence = defaulty, opts = []}]; +find_msg_def('SDLRegisterSuper') -> + [#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 = mask_len, fnum = 5, rnum = 6, type = uint32, occurrence = defaulty, opts = []}, + #field{name = hostname, fnum = 6, rnum = 7, type = string, occurrence = defaulty, opts = []}, + #field{name = pub_key, fnum = 7, rnum = 8, type = string, occurrence = defaulty, opts = []}, + #field{name = access_token, fnum = 8, rnum = 9, type = string, occurrence = defaulty, opts = []}]; +find_msg_def('SDLRegisterSuperAck') -> + [#field{name = algorithm, fnum = 1, rnum = 2, type = string, occurrence = defaulty, opts = []}, + #field{name = key, fnum = 2, rnum = 3, type = bytes, occurrence = defaulty, opts = []}, + #field{name = region_id, fnum = 3, rnum = 4, type = uint32, occurrence = defaulty, opts = []}, + #field{name = session_token, fnum = 4, rnum = 5, type = bytes, occurrence = defaulty, opts = []}]; +find_msg_def('SDLRegisterSuperNak') -> [#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('SDLQueryInfo') -> [#field{name = dst_mac, fnum = 1, rnum = 2, type = bytes, occurrence = defaulty, opts = []}]; +find_msg_def('SDLPeerInfo') -> + [#field{name = dst_mac, fnum = 1, rnum = 2, type = bytes, occurrence = defaulty, opts = []}, + #field{name = v4_info, fnum = 2, rnum = 3, type = {msg, 'SDLV4Info'}, occurrence = optional, opts = []}, + #field{name = v6_info, fnum = 3, rnum = 4, type = {msg, 'SDLV6Info'}, occurrence = optional, opts = []}]; +find_msg_def('SDLArpRequest') -> + [#field{name = target_ip, fnum = 1, rnum = 2, type = uint32, occurrence = defaulty, opts = []}, + #field{name = origin_ip, fnum = 2, rnum = 3, type = uint32, occurrence = defaulty, opts = []}, + #field{name = context, fnum = 3, rnum = 4, type = bytes, occurrence = defaulty, opts = []}]; +find_msg_def('SDLArpResponse') -> + [#field{name = target_ip, fnum = 1, rnum = 2, type = uint32, occurrence = defaulty, opts = []}, + #field{name = target_mac, fnum = 2, rnum = 3, type = bytes, occurrence = defaulty, opts = []}, + #field{name = origin_ip, fnum = 3, rnum = 4, type = uint32, occurrence = defaulty, opts = []}, + #field{name = context, fnum = 4, rnum = 5, type = bytes, occurrence = defaulty, opts = []}]; +find_msg_def('SDLPolicyRequest') -> + [#field{name = src_identity_id, fnum = 1, rnum = 2, type = uint32, occurrence = defaulty, opts = []}, + #field{name = dst_identity_id, fnum = 2, rnum = 3, type = uint32, occurrence = defaulty, opts = []}, + #field{name = version, fnum = 3, rnum = 4, type = uint32, occurrence = defaulty, opts = []}]; +find_msg_def('SDLPolicyResponse') -> + [#field{name = src_identity_id, fnum = 1, rnum = 2, type = uint32, occurrence = defaulty, opts = []}, + #field{name = dst_identity_id, fnum = 2, rnum = 3, type = uint32, occurrence = defaulty, opts = []}, + #field{name = version, fnum = 3, rnum = 4, type = uint32, occurrence = defaulty, opts = []}, + #field{name = rules, fnum = 4, rnum = 5, type = bytes, occurrence = defaulty, opts = []}]; +find_msg_def('SDLEvent.NatChanged') -> [#field{name = mac, fnum = 1, rnum = 2, type = bytes, occurrence = defaulty, opts = []}, #field{name = ip, fnum = 2, rnum = 3, type = uint32, occurrence = defaulty, opts = []}]; +find_msg_def('SDLEvent.SendRegister') -> + [#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, 'SDLV6Info'}, occurrence = optional, opts = []}]; +find_msg_def('SDLEvent.NetworkShutdown') -> [#field{name = message, fnum = 1, rnum = 2, type = string, occurrence = defaulty, opts = []}]; +find_msg_def('SDLEvent.ExitNodeControl') -> + [#field{name = action, fnum = 1, rnum = 2, type = int32, occurrence = defaulty, opts = []}, + #field{name = node_mac, fnum = 2, rnum = 3, type = bytes, occurrence = defaulty, opts = []}, + #field{name = node_ip, fnum = 3, rnum = 4, type = uint32, occurrence = defaulty, opts = []}, + #field{name = remark, fnum = 4, rnum = 5, type = string, occurrence = defaulty, opts = []}]; +find_msg_def('SDLEvent') -> + [#gpb_oneof{name = event, rnum = 2, + fields = + [#field{name = nat_changed, fnum = 1, rnum = 2, type = {msg, 'SDLEvent.NatChanged'}, occurrence = optional, opts = []}, + #field{name = send_register, fnum = 2, rnum = 2, type = {msg, 'SDLEvent.SendRegister'}, occurrence = optional, opts = []}, + #field{name = shutdown, fnum = 3, rnum = 2, type = {msg, 'SDLEvent.NetworkShutdown'}, occurrence = optional, opts = []}, + #field{name = exit_node, fnum = 4, rnum = 2, type = {msg, 'SDLEvent.ExitNodeControl'}, occurrence = optional, opts = []}], + opts = []}]; +find_msg_def('SDLStunRequest') -> + [#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, 'SDLV6Info'}, occurrence = optional, opts = []}, + #field{name = session_token, fnum = 7, rnum = 8, type = bytes, occurrence = defaulty, opts = []}]; +find_msg_def('SDLStunReply') -> []; +find_msg_def('SDLData') -> + [#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 = session_token, fnum = 7, rnum = 8, type = bytes, occurrence = defaulty, opts = []}, + #field{name = identity_id, fnum = 8, rnum = 9, type = uint32, occurrence = defaulty, opts = []}]; +find_msg_def('SDLStunProbe') -> + [#field{name = cookie, fnum = 1, rnum = 2, type = uint32, occurrence = defaulty, opts = []}, + #field{name = attr, fnum = 2, rnum = 3, type = uint32, occurrence = defaulty, opts = []}, + #field{name = step, fnum = 3, rnum = 4, type = uint32, occurrence = defaulty, opts = []}]; +find_msg_def('SDLStunProbeReply') -> + [#field{name = cookie, fnum = 1, rnum = 2, type = uint32, occurrence = defaulty, opts = []}, + #field{name = step, fnum = 2, rnum = 3, type = uint32, occurrence = defaulty, opts = []}, + #field{name = port, fnum = 3, rnum = 4, type = uint32, occurrence = defaulty, opts = []}, + #field{name = ip, fnum = 4, rnum = 5, type = uint32, occurrence = defaulty, opts = []}]; +find_msg_def('SDLRegister') -> + [#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 = []}]; +find_msg_def('SDLRegisterAck') -> + [#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 = []}]; +find_msg_def(_) -> error. + + +find_enum_def(_) -> error. + + +-spec enum_symbol_by_value(_, _) -> no_return(). +enum_symbol_by_value(E, V) -> erlang:error({no_enum_defs, E, V}). + + +-spec enum_value_by_symbol(_, _) -> no_return(). +enum_value_by_symbol(E, V) -> erlang:error({no_enum_defs, E, V}). + + + +get_service_names() -> []. + + +get_service_def(_) -> error. + + +get_rpc_names(_) -> error. + + +find_rpc_def(_, _) -> error. + + + +-spec fetch_rpc_def(_, _) -> no_return(). +fetch_rpc_def(ServiceName, RpcName) -> erlang:error({no_such_rpc, ServiceName, RpcName}). + + +%% Convert a a fully qualified (ie with package name) service name +%% as a binary to a service name as an atom. +-spec fqbin_to_service_name(_) -> no_return(). +fqbin_to_service_name(X) -> error({gpb_error, {badservice, X}}). + + +%% Convert a service name as an atom to a fully qualified +%% (ie with package name) name as a binary. +-spec service_name_to_fqbin(_) -> no_return(). +service_name_to_fqbin(X) -> error({gpb_error, {badservice, X}}). + + +%% Convert a a fully qualified (ie with package name) service name +%% and an rpc name, both as binaries to a service name and an rpc +%% name, as atoms. +-spec fqbins_to_service_and_rpc_name(_, _) -> no_return(). +fqbins_to_service_and_rpc_name(S, R) -> error({gpb_error, {badservice_or_rpc, {S, R}}}). + + +%% Convert a service name and an rpc name, both as atoms, +%% to a fully qualified (ie with package name) service name and +%% an rpc name as binaries. +-spec service_and_rpc_name_to_fqbins(_, _) -> no_return(). +service_and_rpc_name_to_fqbins(S, R) -> error({gpb_error, {badservice_or_rpc, {S, R}}}). + + +fqbin_to_msg_name(<<"mypkg.Hello">>) -> 'Hello'; +fqbin_to_msg_name(<<"mypkg.SDLV4Info">>) -> 'SDLV4Info'; +fqbin_to_msg_name(<<"mypkg.SDLV6Info">>) -> 'SDLV6Info'; +fqbin_to_msg_name(<<"mypkg.SDLWelcome">>) -> 'SDLWelcome'; +fqbin_to_msg_name(<<"mypkg.SDLRegisterSuper">>) -> 'SDLRegisterSuper'; +fqbin_to_msg_name(<<"mypkg.SDLRegisterSuperAck">>) -> 'SDLRegisterSuperAck'; +fqbin_to_msg_name(<<"mypkg.SDLRegisterSuperNak">>) -> 'SDLRegisterSuperNak'; +fqbin_to_msg_name(<<"mypkg.SDLQueryInfo">>) -> 'SDLQueryInfo'; +fqbin_to_msg_name(<<"mypkg.SDLPeerInfo">>) -> 'SDLPeerInfo'; +fqbin_to_msg_name(<<"mypkg.SDLArpRequest">>) -> 'SDLArpRequest'; +fqbin_to_msg_name(<<"mypkg.SDLArpResponse">>) -> 'SDLArpResponse'; +fqbin_to_msg_name(<<"mypkg.SDLPolicyRequest">>) -> 'SDLPolicyRequest'; +fqbin_to_msg_name(<<"mypkg.SDLPolicyResponse">>) -> 'SDLPolicyResponse'; +fqbin_to_msg_name(<<"mypkg.SDLEvent.NatChanged">>) -> 'SDLEvent.NatChanged'; +fqbin_to_msg_name(<<"mypkg.SDLEvent.SendRegister">>) -> 'SDLEvent.SendRegister'; +fqbin_to_msg_name(<<"mypkg.SDLEvent.NetworkShutdown">>) -> 'SDLEvent.NetworkShutdown'; +fqbin_to_msg_name(<<"mypkg.SDLEvent.ExitNodeControl">>) -> 'SDLEvent.ExitNodeControl'; +fqbin_to_msg_name(<<"mypkg.SDLEvent">>) -> 'SDLEvent'; +fqbin_to_msg_name(<<"mypkg.SDLStunRequest">>) -> 'SDLStunRequest'; +fqbin_to_msg_name(<<"mypkg.SDLStunReply">>) -> 'SDLStunReply'; +fqbin_to_msg_name(<<"mypkg.SDLData">>) -> 'SDLData'; +fqbin_to_msg_name(<<"mypkg.SDLStunProbe">>) -> 'SDLStunProbe'; +fqbin_to_msg_name(<<"mypkg.SDLStunProbeReply">>) -> 'SDLStunProbeReply'; +fqbin_to_msg_name(<<"mypkg.SDLRegister">>) -> 'SDLRegister'; +fqbin_to_msg_name(<<"mypkg.SDLRegisterAck">>) -> 'SDLRegisterAck'; +fqbin_to_msg_name(E) -> error({gpb_error, {badmsg, E}}). + + +msg_name_to_fqbin('Hello') -> <<"mypkg.Hello">>; +msg_name_to_fqbin('SDLV4Info') -> <<"mypkg.SDLV4Info">>; +msg_name_to_fqbin('SDLV6Info') -> <<"mypkg.SDLV6Info">>; +msg_name_to_fqbin('SDLWelcome') -> <<"mypkg.SDLWelcome">>; +msg_name_to_fqbin('SDLRegisterSuper') -> <<"mypkg.SDLRegisterSuper">>; +msg_name_to_fqbin('SDLRegisterSuperAck') -> <<"mypkg.SDLRegisterSuperAck">>; +msg_name_to_fqbin('SDLRegisterSuperNak') -> <<"mypkg.SDLRegisterSuperNak">>; +msg_name_to_fqbin('SDLQueryInfo') -> <<"mypkg.SDLQueryInfo">>; +msg_name_to_fqbin('SDLPeerInfo') -> <<"mypkg.SDLPeerInfo">>; +msg_name_to_fqbin('SDLArpRequest') -> <<"mypkg.SDLArpRequest">>; +msg_name_to_fqbin('SDLArpResponse') -> <<"mypkg.SDLArpResponse">>; +msg_name_to_fqbin('SDLPolicyRequest') -> <<"mypkg.SDLPolicyRequest">>; +msg_name_to_fqbin('SDLPolicyResponse') -> <<"mypkg.SDLPolicyResponse">>; +msg_name_to_fqbin('SDLEvent.NatChanged') -> <<"mypkg.SDLEvent.NatChanged">>; +msg_name_to_fqbin('SDLEvent.SendRegister') -> <<"mypkg.SDLEvent.SendRegister">>; +msg_name_to_fqbin('SDLEvent.NetworkShutdown') -> <<"mypkg.SDLEvent.NetworkShutdown">>; +msg_name_to_fqbin('SDLEvent.ExitNodeControl') -> <<"mypkg.SDLEvent.ExitNodeControl">>; +msg_name_to_fqbin('SDLEvent') -> <<"mypkg.SDLEvent">>; +msg_name_to_fqbin('SDLStunRequest') -> <<"mypkg.SDLStunRequest">>; +msg_name_to_fqbin('SDLStunReply') -> <<"mypkg.SDLStunReply">>; +msg_name_to_fqbin('SDLData') -> <<"mypkg.SDLData">>; +msg_name_to_fqbin('SDLStunProbe') -> <<"mypkg.SDLStunProbe">>; +msg_name_to_fqbin('SDLStunProbeReply') -> <<"mypkg.SDLStunProbeReply">>; +msg_name_to_fqbin('SDLRegister') -> <<"mypkg.SDLRegister">>; +msg_name_to_fqbin('SDLRegisterAck') -> <<"mypkg.SDLRegisterAck">>; +msg_name_to_fqbin(E) -> error({gpb_error, {badmsg, E}}). + + +-spec fqbin_to_enum_name(_) -> no_return(). +fqbin_to_enum_name(E) -> error({gpb_error, {badenum, E}}). + + +-spec enum_name_to_fqbin(_) -> no_return(). +enum_name_to_fqbin(E) -> error({gpb_error, {badenum, E}}). + + +get_package_name() -> mypkg. + + +%% Whether or not the message names +%% are prepended with package name or not. +uses_packages() -> false. + + +source_basename() -> "sdlan.proto". + + +%% Retrieve all proto file names, also imported ones. +%% The order is top-down. The first element is always the main +%% source file. The files are returned with extension, +%% see get_all_proto_names/0 for a version that returns +%% the basenames sans extension +get_all_source_basenames() -> ["sdlan.proto"]. + + +%% Retrieve all proto file names, also imported ones. +%% The order is top-down. The first element is always the main +%% source file. The files are returned sans .proto extension, +%% to make it easier to use them with the various get_xyz_containment +%% functions. +get_all_proto_names() -> ["sdlan"]. + + +get_msg_containment("sdlan") -> + ['Hello', + 'SDLArpRequest', + 'SDLArpResponse', + 'SDLData', + 'SDLEvent', + 'SDLEvent.ExitNodeControl', + 'SDLEvent.NatChanged', + 'SDLEvent.NetworkShutdown', + 'SDLEvent.SendRegister', + 'SDLPeerInfo', + 'SDLPolicyRequest', + 'SDLPolicyResponse', + 'SDLQueryInfo', + 'SDLRegister', + 'SDLRegisterAck', + 'SDLRegisterSuper', + 'SDLRegisterSuperAck', + 'SDLRegisterSuperNak', + 'SDLStunProbe', + 'SDLStunProbeReply', + 'SDLStunReply', + 'SDLStunRequest', + 'SDLV4Info', + 'SDLV6Info', + 'SDLWelcome']; +get_msg_containment(P) -> error({gpb_error, {badproto, P}}). + + +get_pkg_containment("sdlan") -> undefined; +get_pkg_containment(P) -> error({gpb_error, {badproto, P}}). + + +get_service_containment("sdlan") -> []; +get_service_containment(P) -> error({gpb_error, {badproto, P}}). + + +get_rpc_containment("sdlan") -> []; +get_rpc_containment(P) -> error({gpb_error, {badproto, P}}). + + +get_enum_containment("sdlan") -> []; +get_enum_containment(P) -> error({gpb_error, {badproto, P}}). + + +get_proto_by_msg_name_as_fqbin(<<"mypkg.SDLData">>) -> "sdlan"; +get_proto_by_msg_name_as_fqbin(<<"mypkg.SDLRegisterSuper">>) -> "sdlan"; +get_proto_by_msg_name_as_fqbin(<<"mypkg.SDLRegister">>) -> "sdlan"; +get_proto_by_msg_name_as_fqbin(<<"mypkg.SDLEvent.SendRegister">>) -> "sdlan"; +get_proto_by_msg_name_as_fqbin(<<"mypkg.SDLStunRequest">>) -> "sdlan"; +get_proto_by_msg_name_as_fqbin(<<"mypkg.SDLPolicyRequest">>) -> "sdlan"; +get_proto_by_msg_name_as_fqbin(<<"mypkg.SDLEvent.NatChanged">>) -> "sdlan"; +get_proto_by_msg_name_as_fqbin(<<"mypkg.SDLEvent">>) -> "sdlan"; +get_proto_by_msg_name_as_fqbin(<<"mypkg.SDLArpRequest">>) -> "sdlan"; +get_proto_by_msg_name_as_fqbin(<<"mypkg.SDLWelcome">>) -> "sdlan"; +get_proto_by_msg_name_as_fqbin(<<"mypkg.SDLStunProbe">>) -> "sdlan"; +get_proto_by_msg_name_as_fqbin(<<"mypkg.SDLPolicyResponse">>) -> "sdlan"; +get_proto_by_msg_name_as_fqbin(<<"mypkg.SDLArpResponse">>) -> "sdlan"; +get_proto_by_msg_name_as_fqbin(<<"mypkg.SDLStunReply">>) -> "sdlan"; +get_proto_by_msg_name_as_fqbin(<<"mypkg.SDLStunProbeReply">>) -> "sdlan"; +get_proto_by_msg_name_as_fqbin(<<"mypkg.SDLRegisterSuperNak">>) -> "sdlan"; +get_proto_by_msg_name_as_fqbin(<<"mypkg.SDLRegisterSuperAck">>) -> "sdlan"; +get_proto_by_msg_name_as_fqbin(<<"mypkg.SDLRegisterAck">>) -> "sdlan"; +get_proto_by_msg_name_as_fqbin(<<"mypkg.SDLEvent.ExitNodeControl">>) -> "sdlan"; +get_proto_by_msg_name_as_fqbin(<<"mypkg.SDLEvent.NetworkShutdown">>) -> "sdlan"; +get_proto_by_msg_name_as_fqbin(<<"mypkg.SDLV6Info">>) -> "sdlan"; +get_proto_by_msg_name_as_fqbin(<<"mypkg.SDLV4Info">>) -> "sdlan"; +get_proto_by_msg_name_as_fqbin(<<"mypkg.SDLQueryInfo">>) -> "sdlan"; +get_proto_by_msg_name_as_fqbin(<<"mypkg.SDLPeerInfo">>) -> "sdlan"; +get_proto_by_msg_name_as_fqbin(<<"mypkg.Hello">>) -> "sdlan"; +get_proto_by_msg_name_as_fqbin(E) -> error({gpb_error, {badmsg, E}}). + + +-spec get_proto_by_service_name_as_fqbin(_) -> no_return(). +get_proto_by_service_name_as_fqbin(E) -> error({gpb_error, {badservice, E}}). + + +-spec get_proto_by_enum_name_as_fqbin(_) -> no_return(). +get_proto_by_enum_name_as_fqbin(E) -> error({gpb_error, {badenum, E}}). + + +-spec get_protos_by_pkg_name_as_fqbin(_) -> no_return(). +get_protos_by_pkg_name_as_fqbin(E) -> error({gpb_error, {badpkg, E}}). + + + +gpb_version_as_string() -> + "4.21.7". + +gpb_version_as_list() -> + [4,21,7]. + +gpb_version_source() -> + "file". diff --git a/apps/sdlan/src/sdlan_stun.erl b/src/sdlan_stun.erl similarity index 100% rename from apps/sdlan/src/sdlan_stun.erl rename to src/sdlan_stun.erl diff --git a/apps/sdlan/src/sdlan_stun_peer_assist.erl b/src/sdlan_stun_peer_assist.erl similarity index 100% rename from apps/sdlan/src/sdlan_stun_peer_assist.erl rename to src/sdlan_stun_peer_assist.erl diff --git a/apps/sdlan/src/sdlan_stun_port_assist.erl b/src/sdlan_stun_port_assist.erl similarity index 100% rename from apps/sdlan/src/sdlan_stun_port_assist.erl rename to src/sdlan_stun_port_assist.erl diff --git a/apps/sdlan/src/sdlan_stun_sup.erl b/src/sdlan_stun_sup.erl similarity index 100% rename from apps/sdlan/src/sdlan_stun_sup.erl rename to src/sdlan_stun_sup.erl diff --git a/apps/sdlan/src/sdlan_sup.erl b/src/sdlan_sup.erl similarity index 100% rename from apps/sdlan/src/sdlan_sup.erl rename to src/sdlan_sup.erl diff --git a/apps/sdlan/src/sdlan_sync_mysql.erl b/src/sdlan_sync_mysql.erl similarity index 100% rename from apps/sdlan/src/sdlan_sync_mysql.erl rename to src/sdlan_sync_mysql.erl diff --git a/apps/sdlan/src/sdlan_util.erl b/src/sdlan_util.erl similarity index 100% rename from apps/sdlan/src/sdlan_util.erl rename to src/sdlan_util.erl diff --git a/apps/sdlan/src/test/quic_client.erl b/src/test/quic_client.erl similarity index 100% rename from apps/sdlan/src/test/quic_client.erl rename to src/test/quic_client.erl