fix proto

This commit is contained in:
anlicheng 2026-01-28 18:12:35 +08:00
parent 11ac0a5b8c
commit 37d46e5bbc
5 changed files with 145 additions and 247 deletions

View File

@ -59,8 +59,6 @@
%%
-define(PACKET_STUN_REQUEST, 16#30).
%%
-define(PACKET_STUN_REPLY, 16#31).
%% stun网络类型检测
%%

View File

@ -146,15 +146,6 @@
}).
-endif.
-ifndef('SDL_STUN_REPLY_PB_H').
-define('SDL_STUN_REPLY_PB_H', true).
-record(sdl_stun_reply,
{network_id = 0 :: non_neg_integer() | undefined, % = 1, optional, 32 bits
code = 0 :: non_neg_integer() | undefined, % = 2, optional, 32 bits
message = <<>> :: unicode:chardata() | undefined % = 3, optional
}).
-endif.
-ifndef('SDL_DATA_PB_H').
-define('SDL_DATA_PB_H', true).
-record(sdl_data,
@ -190,7 +181,9 @@
-ifndef('SDL_STUN_PROBE_PB_H').
-define('SDL_STUN_PROBE_PB_H', true).
-record(sdl_stun_probe,
{cookie = 0 :: non_neg_integer() | undefined % = 1, optional, 32 bits
{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.
@ -198,9 +191,9 @@
-define('SDL_STUN_PROBE_REPLY_PB_H', true).
-record(sdl_stun_probe_reply,
{cookie = 0 :: non_neg_integer() | undefined, % = 1, optional, 32 bits
port = 0 :: non_neg_integer() | undefined, % = 2, optional, 32 bits
ip = 0 :: non_neg_integer() | undefined, % = 3, optional, 32 bits
attr = 0 :: non_neg_integer() | undefined % = 4, 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.

View File

@ -83,8 +83,6 @@
-type sdl_stun_request() :: #sdl_stun_request{}.
-type sdl_stun_reply() :: #sdl_stun_reply{}.
-type sdl_data() :: #sdl_data{}.
-type sdl_register() :: #sdl_register{}.
@ -99,9 +97,9 @@
-type sdl_arp_response() :: #sdl_arp_response{}.
-export_type(['sdl_v4_info'/0, 'sdl_v6_info'/0, 'sdl_register_super'/0, 'sdl_register_super_ack'/0, 'sdl_register_super_nak'/0, 'sdl_query_info'/0, 'sdl_peer_info'/0, 'sdl_empty_peer_info'/0, 'sdl_nat_changed_event'/0, 'sdl_drop_macs_event'/0, 'sdl_refresh_auth_event'/0, 'sdl_send_register_event'/0, 'sdl_network_shutdown_event'/0, 'sdl_stun_request'/0, 'sdl_stun_reply'/0, 'sdl_data'/0, 'sdl_register'/0, 'sdl_register_ack'/0, 'sdl_stun_probe'/0, 'sdl_stun_probe_reply'/0, 'sdl_arp_request'/0, 'sdl_arp_response'/0]).
-type '$msg_name'() :: sdl_v4_info | sdl_v6_info | sdl_register_super | sdl_register_super_ack | sdl_register_super_nak | sdl_query_info | sdl_peer_info | sdl_empty_peer_info | sdl_nat_changed_event | sdl_drop_macs_event | sdl_refresh_auth_event | sdl_send_register_event | sdl_network_shutdown_event | sdl_stun_request | sdl_stun_reply | sdl_data | sdl_register | sdl_register_ack | sdl_stun_probe | sdl_stun_probe_reply | sdl_arp_request | sdl_arp_response.
-type '$msg'() :: sdl_v4_info() | sdl_v6_info() | sdl_register_super() | sdl_register_super_ack() | sdl_register_super_nak() | sdl_query_info() | sdl_peer_info() | sdl_empty_peer_info() | sdl_nat_changed_event() | sdl_drop_macs_event() | sdl_refresh_auth_event() | sdl_send_register_event() | sdl_network_shutdown_event() | sdl_stun_request() | sdl_stun_reply() | sdl_data() | sdl_register() | sdl_register_ack() | sdl_stun_probe() | sdl_stun_probe_reply() | sdl_arp_request() | sdl_arp_response().
-export_type(['sdl_v4_info'/0, 'sdl_v6_info'/0, 'sdl_register_super'/0, 'sdl_register_super_ack'/0, 'sdl_register_super_nak'/0, 'sdl_query_info'/0, 'sdl_peer_info'/0, 'sdl_empty_peer_info'/0, 'sdl_nat_changed_event'/0, 'sdl_drop_macs_event'/0, 'sdl_refresh_auth_event'/0, 'sdl_send_register_event'/0, 'sdl_network_shutdown_event'/0, 'sdl_stun_request'/0, 'sdl_data'/0, 'sdl_register'/0, 'sdl_register_ack'/0, 'sdl_stun_probe'/0, 'sdl_stun_probe_reply'/0, 'sdl_arp_request'/0, 'sdl_arp_response'/0]).
-type '$msg_name'() :: sdl_v4_info | sdl_v6_info | sdl_register_super | sdl_register_super_ack | sdl_register_super_nak | sdl_query_info | sdl_peer_info | sdl_empty_peer_info | sdl_nat_changed_event | sdl_drop_macs_event | sdl_refresh_auth_event | sdl_send_register_event | sdl_network_shutdown_event | sdl_stun_request | sdl_data | sdl_register | sdl_register_ack | sdl_stun_probe | sdl_stun_probe_reply | sdl_arp_request | sdl_arp_response.
-type '$msg'() :: sdl_v4_info() | sdl_v6_info() | sdl_register_super() | sdl_register_super_ack() | sdl_register_super_nak() | sdl_query_info() | sdl_peer_info() | sdl_empty_peer_info() | sdl_nat_changed_event() | sdl_drop_macs_event() | sdl_refresh_auth_event() | sdl_send_register_event() | sdl_network_shutdown_event() | sdl_stun_request() | sdl_data() | sdl_register() | sdl_register_ack() | sdl_stun_probe() | sdl_stun_probe_reply() | sdl_arp_request() | sdl_arp_response().
-export_type(['$msg_name'/0, '$msg'/0]).
-if(?OTP_RELEASE >= 24).
@ -142,7 +140,6 @@ encode_msg(Msg, MsgName, Opts) ->
sdl_send_register_event -> encode_msg_sdl_send_register_event(id(Msg, TrUserData), TrUserData);
sdl_network_shutdown_event -> encode_msg_sdl_network_shutdown_event(id(Msg, TrUserData), TrUserData);
sdl_stun_request -> encode_msg_sdl_stun_request(id(Msg, TrUserData), TrUserData);
sdl_stun_reply -> encode_msg_sdl_stun_reply(id(Msg, TrUserData), TrUserData);
sdl_data -> encode_msg_sdl_data(id(Msg, TrUserData), TrUserData);
sdl_register -> encode_msg_sdl_register(id(Msg, TrUserData), TrUserData);
sdl_register_ack -> encode_msg_sdl_register_ack(id(Msg, TrUserData), TrUserData);
@ -709,39 +706,6 @@ encode_msg_sdl_stun_request(#sdl_stun_request{client_id = F1, network_id = F2, m
end
end.
encode_msg_sdl_stun_reply(Msg, TrUserData) -> encode_msg_sdl_stun_reply(Msg, <<>>, TrUserData).
encode_msg_sdl_stun_reply(#sdl_stun_reply{network_id = F1, code = F2, message = F3}, Bin, TrUserData) ->
B1 = if F1 == undefined -> Bin;
true ->
begin
TrF1 = id(F1, TrUserData),
if TrF1 =:= 0 -> Bin;
true -> e_varint(TrF1, <<Bin/binary, 8>>, TrUserData)
end
end
end,
B2 = if F2 == undefined -> B1;
true ->
begin
TrF2 = id(F2, TrUserData),
if TrF2 =:= 0 -> B1;
true -> e_varint(TrF2, <<B1/binary, 16>>, TrUserData)
end
end
end,
if F3 == undefined -> B2;
true ->
begin
TrF3 = id(F3, TrUserData),
case is_empty_string(TrF3) of
true -> B2;
false -> e_type_string(TrF3, <<B2/binary, 26>>, TrUserData)
end
end
end.
encode_msg_sdl_data(Msg, TrUserData) -> encode_msg_sdl_data(Msg, <<>>, TrUserData).
@ -894,13 +858,31 @@ encode_msg_sdl_register_ack(#sdl_register_ack{network_id = F1, src_mac = F2, dst
encode_msg_sdl_stun_probe(Msg, TrUserData) -> encode_msg_sdl_stun_probe(Msg, <<>>, TrUserData).
encode_msg_sdl_stun_probe(#sdl_stun_probe{cookie = F1}, Bin, TrUserData) ->
if F1 == undefined -> Bin;
encode_msg_sdl_stun_probe(#sdl_stun_probe{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, <<Bin/binary, 8>>, TrUserData)
end
end
end,
B2 = if F2 == undefined -> B1;
true ->
begin
TrF2 = id(F2, TrUserData),
if TrF2 =:= 0 -> B1;
true -> e_varint(TrF2, <<B1/binary, 16>>, TrUserData)
end
end
end,
if F3 == undefined -> B2;
true ->
begin
TrF1 = id(F1, TrUserData),
if TrF1 =:= 0 -> Bin;
true -> e_varint(TrF1, <<Bin/binary, 8>>, TrUserData)
TrF3 = id(F3, TrUserData),
if TrF3 =:= 0 -> B2;
true -> e_varint(TrF3, <<B2/binary, 24>>, TrUserData)
end
end
end.
@ -908,7 +890,7 @@ encode_msg_sdl_stun_probe(#sdl_stun_probe{cookie = F1}, Bin, TrUserData) ->
encode_msg_sdl_stun_probe_reply(Msg, TrUserData) -> encode_msg_sdl_stun_probe_reply(Msg, <<>>, TrUserData).
encode_msg_sdl_stun_probe_reply(#sdl_stun_probe_reply{cookie = F1, port = F2, ip = F3, attr = F4}, Bin, TrUserData) ->
encode_msg_sdl_stun_probe_reply(#sdl_stun_probe_reply{cookie = F1, step = F2, port = F3, ip = F4}, Bin, TrUserData) ->
B1 = if F1 == undefined -> Bin;
true ->
begin
@ -1190,7 +1172,6 @@ decode_msg_2_doit(sdl_refresh_auth_event, Bin, TrUserData) -> id(decode_msg_sdl_
decode_msg_2_doit(sdl_send_register_event, Bin, TrUserData) -> id(decode_msg_sdl_send_register_event(Bin, TrUserData), TrUserData);
decode_msg_2_doit(sdl_network_shutdown_event, Bin, TrUserData) -> id(decode_msg_sdl_network_shutdown_event(Bin, TrUserData), TrUserData);
decode_msg_2_doit(sdl_stun_request, Bin, TrUserData) -> id(decode_msg_sdl_stun_request(Bin, TrUserData), TrUserData);
decode_msg_2_doit(sdl_stun_reply, Bin, TrUserData) -> id(decode_msg_sdl_stun_reply(Bin, TrUserData), TrUserData);
decode_msg_2_doit(sdl_data, Bin, TrUserData) -> id(decode_msg_sdl_data(Bin, TrUserData), TrUserData);
decode_msg_2_doit(sdl_register, Bin, TrUserData) -> id(decode_msg_sdl_register(Bin, TrUserData), TrUserData);
decode_msg_2_doit(sdl_register_ack, Bin, TrUserData) -> id(decode_msg_sdl_register_ack(Bin, TrUserData), TrUserData);
@ -2187,64 +2168,6 @@ skip_32_sdl_stun_request(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_
skip_64_sdl_stun_request(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData) -> dfp_read_field_def_sdl_stun_request(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, F@_6, F@_7, TrUserData).
decode_msg_sdl_stun_reply(Bin, TrUserData) -> dfp_read_field_def_sdl_stun_reply(Bin, 0, 0, 0, id(0, TrUserData), id(0, TrUserData), id(<<>>, TrUserData), TrUserData).
dfp_read_field_def_sdl_stun_reply(<<8, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_sdl_stun_reply_network_id(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData);
dfp_read_field_def_sdl_stun_reply(<<16, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_sdl_stun_reply_code(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData);
dfp_read_field_def_sdl_stun_reply(<<26, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_sdl_stun_reply_message(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData);
dfp_read_field_def_sdl_stun_reply(<<>>, 0, 0, _, F@_1, F@_2, F@_3, _) -> #sdl_stun_reply{network_id = F@_1, code = F@_2, message = F@_3};
dfp_read_field_def_sdl_stun_reply(Other, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dg_read_field_def_sdl_stun_reply(Other, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData).
dg_read_field_def_sdl_stun_reply(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 32 - 7 -> dg_read_field_def_sdl_stun_reply(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData);
dg_read_field_def_sdl_stun_reply(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, F@_2, F@_3, TrUserData) ->
Key = X bsl N + Acc,
case Key of
8 -> d_field_sdl_stun_reply_network_id(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData);
16 -> d_field_sdl_stun_reply_code(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData);
26 -> d_field_sdl_stun_reply_message(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData);
_ ->
case Key band 7 of
0 -> skip_varint_sdl_stun_reply(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData);
1 -> skip_64_sdl_stun_reply(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData);
2 -> skip_length_delimited_sdl_stun_reply(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData);
3 -> skip_group_sdl_stun_reply(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData);
5 -> skip_32_sdl_stun_reply(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData)
end
end;
dg_read_field_def_sdl_stun_reply(<<>>, 0, 0, _, F@_1, F@_2, F@_3, _) -> #sdl_stun_reply{network_id = F@_1, code = F@_2, message = F@_3}.
d_field_sdl_stun_reply_network_id(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_sdl_stun_reply_network_id(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData);
d_field_sdl_stun_reply_network_id(<<0:1, X:7, Rest/binary>>, N, Acc, F, _, F@_2, F@_3, TrUserData) ->
{NewFValue, RestF} = {id((X bsl N + Acc) band 4294967295, TrUserData), Rest},
dfp_read_field_def_sdl_stun_reply(RestF, 0, 0, F, NewFValue, F@_2, F@_3, TrUserData).
d_field_sdl_stun_reply_code(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_sdl_stun_reply_code(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData);
d_field_sdl_stun_reply_code(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, _, F@_3, TrUserData) ->
{NewFValue, RestF} = {id((X bsl N + Acc) band 4294967295, TrUserData), Rest},
dfp_read_field_def_sdl_stun_reply(RestF, 0, 0, F, F@_1, NewFValue, F@_3, TrUserData).
d_field_sdl_stun_reply_message(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_sdl_stun_reply_message(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData);
d_field_sdl_stun_reply_message(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, _, TrUserData) ->
{NewFValue, RestF} = begin Len = X bsl N + Acc, <<Bytes:Len/binary, Rest2/binary>> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end,
dfp_read_field_def_sdl_stun_reply(RestF, 0, 0, F, F@_1, F@_2, NewFValue, TrUserData).
skip_varint_sdl_stun_reply(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> skip_varint_sdl_stun_reply(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData);
skip_varint_sdl_stun_reply(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_sdl_stun_reply(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData).
skip_length_delimited_sdl_stun_reply(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> skip_length_delimited_sdl_stun_reply(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData);
skip_length_delimited_sdl_stun_reply(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) ->
Length = X bsl N + Acc,
<<_:Length/binary, Rest2/binary>> = Rest,
dfp_read_field_def_sdl_stun_reply(Rest2, 0, 0, F, F@_1, F@_2, F@_3, TrUserData).
skip_group_sdl_stun_reply(Bin, _, Z2, FNum, F@_1, F@_2, F@_3, TrUserData) ->
{_, Rest} = read_group(Bin, FNum),
dfp_read_field_def_sdl_stun_reply(Rest, 0, Z2, FNum, F@_1, F@_2, F@_3, TrUserData).
skip_32_sdl_stun_reply(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_sdl_stun_reply(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData).
skip_64_sdl_stun_reply(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_sdl_stun_reply(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData).
decode_msg_sdl_data(Bin, TrUserData) ->
dfp_read_field_def_sdl_data(Bin, 0, 0, 0, id(0, TrUserData), id(<<>>, TrUserData), id(<<>>, TrUserData), id(false, TrUserData), id(0, TrUserData), id(<<>>, TrUserData), id(<<>>, TrUserData), id(0, TrUserData), TrUserData).
@ -2463,57 +2386,71 @@ skip_32_sdl_register_ack(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrU
skip_64_sdl_register_ack(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_sdl_register_ack(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData).
decode_msg_sdl_stun_probe(Bin, TrUserData) -> dfp_read_field_def_sdl_stun_probe(Bin, 0, 0, 0, id(0, TrUserData), TrUserData).
decode_msg_sdl_stun_probe(Bin, TrUserData) -> dfp_read_field_def_sdl_stun_probe(Bin, 0, 0, 0, id(0, TrUserData), id(0, TrUserData), id(0, TrUserData), TrUserData).
dfp_read_field_def_sdl_stun_probe(<<8, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> d_field_sdl_stun_probe_cookie(Rest, Z1, Z2, F, F@_1, TrUserData);
dfp_read_field_def_sdl_stun_probe(<<>>, 0, 0, _, F@_1, _) -> #sdl_stun_probe{cookie = F@_1};
dfp_read_field_def_sdl_stun_probe(Other, Z1, Z2, F, F@_1, TrUserData) -> dg_read_field_def_sdl_stun_probe(Other, Z1, Z2, F, F@_1, TrUserData).
dfp_read_field_def_sdl_stun_probe(<<8, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_sdl_stun_probe_cookie(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData);
dfp_read_field_def_sdl_stun_probe(<<16, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_sdl_stun_probe_attr(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData);
dfp_read_field_def_sdl_stun_probe(<<24, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> d_field_sdl_stun_probe_step(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData);
dfp_read_field_def_sdl_stun_probe(<<>>, 0, 0, _, F@_1, F@_2, F@_3, _) -> #sdl_stun_probe{cookie = F@_1, attr = F@_2, step = F@_3};
dfp_read_field_def_sdl_stun_probe(Other, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dg_read_field_def_sdl_stun_probe(Other, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData).
dg_read_field_def_sdl_stun_probe(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) when N < 32 - 7 -> dg_read_field_def_sdl_stun_probe(Rest, N + 7, X bsl N + Acc, F, F@_1, TrUserData);
dg_read_field_def_sdl_stun_probe(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, TrUserData) ->
dg_read_field_def_sdl_stun_probe(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 32 - 7 -> dg_read_field_def_sdl_stun_probe(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData);
dg_read_field_def_sdl_stun_probe(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, F@_2, F@_3, TrUserData) ->
Key = X bsl N + Acc,
case Key of
8 -> d_field_sdl_stun_probe_cookie(Rest, 0, 0, 0, F@_1, TrUserData);
8 -> d_field_sdl_stun_probe_cookie(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData);
16 -> d_field_sdl_stun_probe_attr(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData);
24 -> d_field_sdl_stun_probe_step(Rest, 0, 0, 0, F@_1, F@_2, F@_3, TrUserData);
_ ->
case Key band 7 of
0 -> skip_varint_sdl_stun_probe(Rest, 0, 0, Key bsr 3, F@_1, TrUserData);
1 -> skip_64_sdl_stun_probe(Rest, 0, 0, Key bsr 3, F@_1, TrUserData);
2 -> skip_length_delimited_sdl_stun_probe(Rest, 0, 0, Key bsr 3, F@_1, TrUserData);
3 -> skip_group_sdl_stun_probe(Rest, 0, 0, Key bsr 3, F@_1, TrUserData);
5 -> skip_32_sdl_stun_probe(Rest, 0, 0, Key bsr 3, F@_1, TrUserData)
0 -> skip_varint_sdl_stun_probe(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData);
1 -> skip_64_sdl_stun_probe(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData);
2 -> skip_length_delimited_sdl_stun_probe(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData);
3 -> skip_group_sdl_stun_probe(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData);
5 -> skip_32_sdl_stun_probe(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, TrUserData)
end
end;
dg_read_field_def_sdl_stun_probe(<<>>, 0, 0, _, F@_1, _) -> #sdl_stun_probe{cookie = F@_1}.
dg_read_field_def_sdl_stun_probe(<<>>, 0, 0, _, F@_1, F@_2, F@_3, _) -> #sdl_stun_probe{cookie = F@_1, attr = F@_2, step = F@_3}.
d_field_sdl_stun_probe_cookie(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) when N < 57 -> d_field_sdl_stun_probe_cookie(Rest, N + 7, X bsl N + Acc, F, F@_1, TrUserData);
d_field_sdl_stun_probe_cookie(<<0:1, X:7, Rest/binary>>, N, Acc, F, _, TrUserData) ->
d_field_sdl_stun_probe_cookie(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_sdl_stun_probe_cookie(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData);
d_field_sdl_stun_probe_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_sdl_stun_probe(RestF, 0, 0, F, NewFValue, TrUserData).
dfp_read_field_def_sdl_stun_probe(RestF, 0, 0, F, NewFValue, F@_2, F@_3, TrUserData).
skip_varint_sdl_stun_probe(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> skip_varint_sdl_stun_probe(Rest, Z1, Z2, F, F@_1, TrUserData);
skip_varint_sdl_stun_probe(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> dfp_read_field_def_sdl_stun_probe(Rest, Z1, Z2, F, F@_1, TrUserData).
d_field_sdl_stun_probe_attr(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_sdl_stun_probe_attr(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData);
d_field_sdl_stun_probe_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_sdl_stun_probe(RestF, 0, 0, F, F@_1, NewFValue, F@_3, TrUserData).
skip_length_delimited_sdl_stun_probe(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) when N < 57 -> skip_length_delimited_sdl_stun_probe(Rest, N + 7, X bsl N + Acc, F, F@_1, TrUserData);
skip_length_delimited_sdl_stun_probe(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, TrUserData) ->
d_field_sdl_stun_probe_step(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> d_field_sdl_stun_probe_step(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData);
d_field_sdl_stun_probe_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_sdl_stun_probe(RestF, 0, 0, F, F@_1, F@_2, NewFValue, TrUserData).
skip_varint_sdl_stun_probe(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> skip_varint_sdl_stun_probe(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData);
skip_varint_sdl_stun_probe(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_sdl_stun_probe(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData).
skip_length_delimited_sdl_stun_probe(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) when N < 57 -> skip_length_delimited_sdl_stun_probe(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, TrUserData);
skip_length_delimited_sdl_stun_probe(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, TrUserData) ->
Length = X bsl N + Acc,
<<_:Length/binary, Rest2/binary>> = Rest,
dfp_read_field_def_sdl_stun_probe(Rest2, 0, 0, F, F@_1, TrUserData).
dfp_read_field_def_sdl_stun_probe(Rest2, 0, 0, F, F@_1, F@_2, F@_3, TrUserData).
skip_group_sdl_stun_probe(Bin, _, Z2, FNum, F@_1, TrUserData) ->
skip_group_sdl_stun_probe(Bin, _, Z2, FNum, F@_1, F@_2, F@_3, TrUserData) ->
{_, Rest} = read_group(Bin, FNum),
dfp_read_field_def_sdl_stun_probe(Rest, 0, Z2, FNum, F@_1, TrUserData).
dfp_read_field_def_sdl_stun_probe(Rest, 0, Z2, FNum, F@_1, F@_2, F@_3, TrUserData).
skip_32_sdl_stun_probe(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> dfp_read_field_def_sdl_stun_probe(Rest, Z1, Z2, F, F@_1, TrUserData).
skip_32_sdl_stun_probe(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_sdl_stun_probe(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData).
skip_64_sdl_stun_probe(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, TrUserData) -> dfp_read_field_def_sdl_stun_probe(Rest, Z1, Z2, F, F@_1, TrUserData).
skip_64_sdl_stun_probe(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData) -> dfp_read_field_def_sdl_stun_probe(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, TrUserData).
decode_msg_sdl_stun_probe_reply(Bin, TrUserData) -> dfp_read_field_def_sdl_stun_probe_reply(Bin, 0, 0, 0, id(0, TrUserData), id(0, TrUserData), id(0, TrUserData), id(0, TrUserData), TrUserData).
dfp_read_field_def_sdl_stun_probe_reply(<<8, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> d_field_sdl_stun_probe_reply_cookie(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData);
dfp_read_field_def_sdl_stun_probe_reply(<<16, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> d_field_sdl_stun_probe_reply_port(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData);
dfp_read_field_def_sdl_stun_probe_reply(<<24, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> d_field_sdl_stun_probe_reply_ip(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData);
dfp_read_field_def_sdl_stun_probe_reply(<<32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> d_field_sdl_stun_probe_reply_attr(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData);
dfp_read_field_def_sdl_stun_probe_reply(<<>>, 0, 0, _, F@_1, F@_2, F@_3, F@_4, _) -> #sdl_stun_probe_reply{cookie = F@_1, port = F@_2, ip = F@_3, attr = F@_4};
dfp_read_field_def_sdl_stun_probe_reply(<<16, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> d_field_sdl_stun_probe_reply_step(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData);
dfp_read_field_def_sdl_stun_probe_reply(<<24, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> d_field_sdl_stun_probe_reply_port(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData);
dfp_read_field_def_sdl_stun_probe_reply(<<32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> d_field_sdl_stun_probe_reply_ip(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData);
dfp_read_field_def_sdl_stun_probe_reply(<<>>, 0, 0, _, F@_1, F@_2, F@_3, F@_4, _) -> #sdl_stun_probe_reply{cookie = F@_1, step = F@_2, port = F@_3, ip = F@_4};
dfp_read_field_def_sdl_stun_probe_reply(Other, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> dg_read_field_def_sdl_stun_probe_reply(Other, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData).
dg_read_field_def_sdl_stun_probe_reply(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 32 - 7 -> dg_read_field_def_sdl_stun_probe_reply(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData);
@ -2521,9 +2458,9 @@ dg_read_field_def_sdl_stun_probe_reply(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_
Key = X bsl N + Acc,
case Key of
8 -> d_field_sdl_stun_probe_reply_cookie(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, TrUserData);
16 -> d_field_sdl_stun_probe_reply_port(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, TrUserData);
24 -> d_field_sdl_stun_probe_reply_ip(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, TrUserData);
32 -> d_field_sdl_stun_probe_reply_attr(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, TrUserData);
16 -> d_field_sdl_stun_probe_reply_step(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, TrUserData);
24 -> d_field_sdl_stun_probe_reply_port(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, TrUserData);
32 -> d_field_sdl_stun_probe_reply_ip(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, TrUserData);
_ ->
case Key band 7 of
0 -> skip_varint_sdl_stun_probe_reply(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, TrUserData);
@ -2533,25 +2470,25 @@ dg_read_field_def_sdl_stun_probe_reply(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_
5 -> skip_32_sdl_stun_probe_reply(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, TrUserData)
end
end;
dg_read_field_def_sdl_stun_probe_reply(<<>>, 0, 0, _, F@_1, F@_2, F@_3, F@_4, _) -> #sdl_stun_probe_reply{cookie = F@_1, port = F@_2, ip = F@_3, attr = F@_4}.
dg_read_field_def_sdl_stun_probe_reply(<<>>, 0, 0, _, F@_1, F@_2, F@_3, F@_4, _) -> #sdl_stun_probe_reply{cookie = F@_1, step = F@_2, port = F@_3, ip = F@_4}.
d_field_sdl_stun_probe_reply_cookie(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> d_field_sdl_stun_probe_reply_cookie(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData);
d_field_sdl_stun_probe_reply_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_sdl_stun_probe_reply(RestF, 0, 0, F, NewFValue, F@_2, F@_3, F@_4, TrUserData).
d_field_sdl_stun_probe_reply_port(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> d_field_sdl_stun_probe_reply_port(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData);
d_field_sdl_stun_probe_reply_port(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, _, F@_3, F@_4, TrUserData) ->
d_field_sdl_stun_probe_reply_step(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> d_field_sdl_stun_probe_reply_step(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData);
d_field_sdl_stun_probe_reply_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_sdl_stun_probe_reply(RestF, 0, 0, F, F@_1, NewFValue, F@_3, F@_4, TrUserData).
d_field_sdl_stun_probe_reply_ip(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> d_field_sdl_stun_probe_reply_ip(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData);
d_field_sdl_stun_probe_reply_ip(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, _, F@_4, TrUserData) ->
d_field_sdl_stun_probe_reply_port(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> d_field_sdl_stun_probe_reply_port(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData);
d_field_sdl_stun_probe_reply_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_sdl_stun_probe_reply(RestF, 0, 0, F, F@_1, F@_2, NewFValue, F@_4, TrUserData).
d_field_sdl_stun_probe_reply_attr(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> d_field_sdl_stun_probe_reply_attr(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData);
d_field_sdl_stun_probe_reply_attr(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, _, TrUserData) ->
d_field_sdl_stun_probe_reply_ip(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> d_field_sdl_stun_probe_reply_ip(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData);
d_field_sdl_stun_probe_reply_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_sdl_stun_probe_reply(RestF, 0, 0, F, F@_1, F@_2, F@_3, NewFValue, TrUserData).
@ -2768,7 +2705,6 @@ merge_msgs(Prev, New, MsgName, Opts) ->
sdl_send_register_event -> merge_msg_sdl_send_register_event(Prev, New, TrUserData);
sdl_network_shutdown_event -> merge_msg_sdl_network_shutdown_event(Prev, New, TrUserData);
sdl_stun_request -> merge_msg_sdl_stun_request(Prev, New, TrUserData);
sdl_stun_reply -> merge_msg_sdl_stun_reply(Prev, New, TrUserData);
sdl_data -> merge_msg_sdl_data(Prev, New, TrUserData);
sdl_register -> merge_msg_sdl_register(Prev, New, TrUserData);
sdl_register_ack -> merge_msg_sdl_register_ack(Prev, New, TrUserData);
@ -3046,21 +2982,6 @@ merge_msg_sdl_stun_request(#sdl_stun_request{client_id = PFclient_id, network_id
true -> NFsession_token
end}.
-compile({nowarn_unused_function,merge_msg_sdl_stun_reply/3}).
merge_msg_sdl_stun_reply(#sdl_stun_reply{network_id = PFnetwork_id, code = PFcode, message = PFmessage}, #sdl_stun_reply{network_id = NFnetwork_id, code = NFcode, message = NFmessage}, _) ->
#sdl_stun_reply{network_id =
if NFnetwork_id =:= undefined -> PFnetwork_id;
true -> NFnetwork_id
end,
code =
if NFcode =:= undefined -> PFcode;
true -> NFcode
end,
message =
if NFmessage =:= undefined -> PFmessage;
true -> NFmessage
end}.
-compile({nowarn_unused_function,merge_msg_sdl_data/3}).
merge_msg_sdl_data(#sdl_data{network_id = PFnetwork_id, src_mac = PFsrc_mac, dst_mac = PFdst_mac, is_p2p = PFis_p2p, ttl = PFttl, data = PFdata, session_token = PFsession_token, identity_id = PFidentity_id},
#sdl_data{network_id = NFnetwork_id, src_mac = NFsrc_mac, dst_mac = NFdst_mac, is_p2p = NFis_p2p, ttl = NFttl, data = NFdata, session_token = NFsession_token, identity_id = NFidentity_id}, _) ->
@ -3128,18 +3049,30 @@ merge_msg_sdl_register_ack(#sdl_register_ack{network_id = PFnetwork_id, src_mac
end}.
-compile({nowarn_unused_function,merge_msg_sdl_stun_probe/3}).
merge_msg_sdl_stun_probe(#sdl_stun_probe{cookie = PFcookie}, #sdl_stun_probe{cookie = NFcookie}, _) ->
merge_msg_sdl_stun_probe(#sdl_stun_probe{cookie = PFcookie, attr = PFattr, step = PFstep}, #sdl_stun_probe{cookie = NFcookie, attr = NFattr, step = NFstep}, _) ->
#sdl_stun_probe{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_sdl_stun_probe_reply/3}).
merge_msg_sdl_stun_probe_reply(#sdl_stun_probe_reply{cookie = PFcookie, port = PFport, ip = PFip, attr = PFattr}, #sdl_stun_probe_reply{cookie = NFcookie, port = NFport, ip = NFip, attr = NFattr}, _) ->
merge_msg_sdl_stun_probe_reply(#sdl_stun_probe_reply{cookie = PFcookie, step = PFstep, port = PFport, ip = PFip}, #sdl_stun_probe_reply{cookie = NFcookie, step = NFstep, port = NFport, ip = NFip}, _) ->
#sdl_stun_probe_reply{cookie =
if NFcookie =:= undefined -> PFcookie;
true -> NFcookie
end,
step =
if NFstep =:= undefined -> PFstep;
true -> NFstep
end,
port =
if NFport =:= undefined -> PFport;
true -> NFport
@ -3147,10 +3080,6 @@ merge_msg_sdl_stun_probe_reply(#sdl_stun_probe_reply{cookie = PFcookie, port = P
ip =
if NFip =:= undefined -> PFip;
true -> NFip
end,
attr =
if NFattr =:= undefined -> PFattr;
true -> NFattr
end}.
-compile({nowarn_unused_function,merge_msg_sdl_arp_request/3}).
@ -3208,7 +3137,6 @@ verify_msg(Msg, MsgName, Opts) ->
sdl_send_register_event -> v_msg_sdl_send_register_event(Msg, [MsgName], TrUserData);
sdl_network_shutdown_event -> v_msg_sdl_network_shutdown_event(Msg, [MsgName], TrUserData);
sdl_stun_request -> v_msg_sdl_stun_request(Msg, [MsgName], TrUserData);
sdl_stun_reply -> v_msg_sdl_stun_reply(Msg, [MsgName], TrUserData);
sdl_data -> v_msg_sdl_data(Msg, [MsgName], TrUserData);
sdl_register -> v_msg_sdl_register(Msg, [MsgName], TrUserData);
sdl_register_ack -> v_msg_sdl_register_ack(Msg, [MsgName], TrUserData);
@ -3476,21 +3404,6 @@ v_msg_sdl_stun_request(#sdl_stun_request{client_id = F1, network_id = F2, mac =
ok;
v_msg_sdl_stun_request(X, Path, _TrUserData) -> mk_type_error({expected_msg, sdl_stun_request}, X, Path).
-compile({nowarn_unused_function,v_msg_sdl_stun_reply/3}).
-dialyzer({nowarn_function,v_msg_sdl_stun_reply/3}).
v_msg_sdl_stun_reply(#sdl_stun_reply{network_id = F1, code = F2, message = F3}, Path, TrUserData) ->
if F1 == undefined -> ok;
true -> v_type_uint32(F1, [network_id | Path], TrUserData)
end,
if F2 == undefined -> ok;
true -> v_type_uint32(F2, [code | Path], TrUserData)
end,
if F3 == undefined -> ok;
true -> v_type_string(F3, [message | Path], TrUserData)
end,
ok;
v_msg_sdl_stun_reply(X, Path, _TrUserData) -> mk_type_error({expected_msg, sdl_stun_reply}, X, Path).
-compile({nowarn_unused_function,v_msg_sdl_data/3}).
-dialyzer({nowarn_function,v_msg_sdl_data/3}).
v_msg_sdl_data(#sdl_data{network_id = F1, src_mac = F2, dst_mac = F3, is_p2p = F4, ttl = F5, data = F6, session_token = F7, identity_id = F8}, Path, TrUserData) ->
@ -3553,27 +3466,33 @@ v_msg_sdl_register_ack(X, Path, _TrUserData) -> mk_type_error({expected_msg, sdl
-compile({nowarn_unused_function,v_msg_sdl_stun_probe/3}).
-dialyzer({nowarn_function,v_msg_sdl_stun_probe/3}).
v_msg_sdl_stun_probe(#sdl_stun_probe{cookie = F1}, Path, TrUserData) ->
v_msg_sdl_stun_probe(#sdl_stun_probe{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_sdl_stun_probe(X, Path, _TrUserData) -> mk_type_error({expected_msg, sdl_stun_probe}, X, Path).
-compile({nowarn_unused_function,v_msg_sdl_stun_probe_reply/3}).
-dialyzer({nowarn_function,v_msg_sdl_stun_probe_reply/3}).
v_msg_sdl_stun_probe_reply(#sdl_stun_probe_reply{cookie = F1, port = F2, ip = F3, attr = F4}, Path, TrUserData) ->
v_msg_sdl_stun_probe_reply(#sdl_stun_probe_reply{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, [port | Path], TrUserData)
true -> v_type_uint32(F2, [step | Path], TrUserData)
end,
if F3 == undefined -> ok;
true -> v_type_uint32(F3, [ip | Path], TrUserData)
true -> v_type_uint32(F3, [port | Path], TrUserData)
end,
if F4 == undefined -> ok;
true -> v_type_uint32(F4, [attr | Path], TrUserData)
true -> v_type_uint32(F4, [ip | Path], TrUserData)
end,
ok;
v_msg_sdl_stun_probe_reply(X, Path, _TrUserData) -> mk_type_error({expected_msg, sdl_stun_probe_reply}, X, Path).
@ -3738,10 +3657,6 @@ get_msg_defs() ->
#field{name = nat_type, fnum = 5, rnum = 6, type = uint32, occurrence = defaulty, opts = []},
#field{name = v6_info, fnum = 6, rnum = 7, type = {msg, sdl_v6_info}, occurrence = optional, opts = []},
#field{name = session_token, fnum = 7, rnum = 8, type = bytes, occurrence = defaulty, opts = []}]},
{{msg, sdl_stun_reply},
[#field{name = network_id, fnum = 1, rnum = 2, type = uint32, occurrence = defaulty, opts = []},
#field{name = code, fnum = 2, rnum = 3, type = uint32, occurrence = defaulty, opts = []},
#field{name = message, fnum = 3, rnum = 4, type = string, occurrence = defaulty, opts = []}]},
{{msg, sdl_data},
[#field{name = network_id, fnum = 1, rnum = 2, type = uint32, occurrence = defaulty, opts = []},
#field{name = src_mac, fnum = 2, rnum = 3, type = bytes, occurrence = defaulty, opts = []},
@ -3759,12 +3674,15 @@ get_msg_defs() ->
[#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, sdl_stun_probe}, [#field{name = cookie, fnum = 1, rnum = 2, type = uint32, occurrence = defaulty, opts = []}]},
{{msg, sdl_stun_probe},
[#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, sdl_stun_probe_reply},
[#field{name = cookie, fnum = 1, rnum = 2, type = uint32, occurrence = defaulty, opts = []},
#field{name = port, fnum = 2, rnum = 3, type = uint32, occurrence = defaulty, opts = []},
#field{name = ip, fnum = 3, rnum = 4, type = uint32, occurrence = defaulty, opts = []},
#field{name = attr, fnum = 4, rnum = 5, 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, sdl_arp_request},
[#field{name = network_id, fnum = 1, rnum = 2, type = uint32, occurrence = defaulty, opts = []},
#field{name = target_ip, fnum = 2, rnum = 3, type = uint32, occurrence = defaulty, opts = []},
@ -3790,7 +3708,6 @@ get_msg_names() ->
sdl_send_register_event,
sdl_network_shutdown_event,
sdl_stun_request,
sdl_stun_reply,
sdl_data,
sdl_register,
sdl_register_ack,
@ -3818,7 +3735,6 @@ get_msg_or_group_names() ->
sdl_send_register_event,
sdl_network_shutdown_event,
sdl_stun_request,
sdl_stun_reply,
sdl_data,
sdl_register,
sdl_register_ack,
@ -3903,10 +3819,6 @@ find_msg_def(sdl_stun_request) ->
#field{name = nat_type, fnum = 5, rnum = 6, type = uint32, occurrence = defaulty, opts = []},
#field{name = v6_info, fnum = 6, rnum = 7, type = {msg, sdl_v6_info}, occurrence = optional, opts = []},
#field{name = session_token, fnum = 7, rnum = 8, type = bytes, occurrence = defaulty, opts = []}];
find_msg_def(sdl_stun_reply) ->
[#field{name = network_id, fnum = 1, rnum = 2, type = uint32, occurrence = defaulty, opts = []},
#field{name = code, fnum = 2, rnum = 3, type = uint32, occurrence = defaulty, opts = []},
#field{name = message, fnum = 3, rnum = 4, type = string, occurrence = defaulty, opts = []}];
find_msg_def(sdl_data) ->
[#field{name = network_id, fnum = 1, rnum = 2, type = uint32, occurrence = defaulty, opts = []},
#field{name = src_mac, fnum = 2, rnum = 3, type = bytes, occurrence = defaulty, opts = []},
@ -3924,12 +3836,15 @@ find_msg_def(sdl_register_ack) ->
[#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(sdl_stun_probe) -> [#field{name = cookie, fnum = 1, rnum = 2, type = uint32, occurrence = defaulty, opts = []}];
find_msg_def(sdl_stun_probe) ->
[#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(sdl_stun_probe_reply) ->
[#field{name = cookie, fnum = 1, rnum = 2, type = uint32, occurrence = defaulty, opts = []},
#field{name = port, fnum = 2, rnum = 3, type = uint32, occurrence = defaulty, opts = []},
#field{name = ip, fnum = 3, rnum = 4, type = uint32, occurrence = defaulty, opts = []},
#field{name = attr, fnum = 4, rnum = 5, 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(sdl_arp_request) ->
[#field{name = network_id, fnum = 1, rnum = 2, type = uint32, occurrence = defaulty, opts = []},
#field{name = target_ip, fnum = 2, rnum = 3, type = uint32, occurrence = defaulty, opts = []},
@ -4010,7 +3925,6 @@ fqbin_to_msg_name(<<"SDLRefreshAuthEvent">>) -> sdl_refresh_auth_event;
fqbin_to_msg_name(<<"SDLSendRegisterEvent">>) -> sdl_send_register_event;
fqbin_to_msg_name(<<"SDLNetworkShutdownEvent">>) -> sdl_network_shutdown_event;
fqbin_to_msg_name(<<"SDLStunRequest">>) -> sdl_stun_request;
fqbin_to_msg_name(<<"SDLStunReply">>) -> sdl_stun_reply;
fqbin_to_msg_name(<<"SDLData">>) -> sdl_data;
fqbin_to_msg_name(<<"SDLRegister">>) -> sdl_register;
fqbin_to_msg_name(<<"SDLRegisterAck">>) -> sdl_register_ack;
@ -4035,7 +3949,6 @@ msg_name_to_fqbin(sdl_refresh_auth_event) -> <<"SDLRefreshAuthEvent">>;
msg_name_to_fqbin(sdl_send_register_event) -> <<"SDLSendRegisterEvent">>;
msg_name_to_fqbin(sdl_network_shutdown_event) -> <<"SDLNetworkShutdownEvent">>;
msg_name_to_fqbin(sdl_stun_request) -> <<"SDLStunRequest">>;
msg_name_to_fqbin(sdl_stun_reply) -> <<"SDLStunReply">>;
msg_name_to_fqbin(sdl_data) -> <<"SDLData">>;
msg_name_to_fqbin(sdl_register) -> <<"SDLRegister">>;
msg_name_to_fqbin(sdl_register_ack) -> <<"SDLRegisterAck">>;
@ -4100,7 +4013,6 @@ get_msg_containment("sdlan_pb") ->
sdl_send_register_event,
sdl_stun_probe,
sdl_stun_probe_reply,
sdl_stun_reply,
sdl_stun_request,
sdl_v4_info,
sdl_v6_info];
@ -4135,7 +4047,6 @@ get_proto_by_msg_name_as_fqbin(<<"SDLDropMacsEvent">>) -> "sdlan_pb";
get_proto_by_msg_name_as_fqbin(<<"SDLArpRequest">>) -> "sdlan_pb";
get_proto_by_msg_name_as_fqbin(<<"SDLStunProbe">>) -> "sdlan_pb";
get_proto_by_msg_name_as_fqbin(<<"SDLArpResponse">>) -> "sdlan_pb";
get_proto_by_msg_name_as_fqbin(<<"SDLStunReply">>) -> "sdlan_pb";
get_proto_by_msg_name_as_fqbin(<<"SDLStunProbeReply">>) -> "sdlan_pb";
get_proto_by_msg_name_as_fqbin(<<"SDLRegisterSuperNak">>) -> "sdlan_pb";
get_proto_by_msg_name_as_fqbin(<<"SDLRegisterSuperAck">>) -> "sdlan_pb";

View File

@ -165,27 +165,27 @@ handle_packet(Sock, ClientIp, ClientPort, <<?PACKET_STUN_REQUEST:8, Body/binary>
%% assist的配置attr = 2
handle_packet(Sock, Ip, Port, <<?PACKET_STUN_PROBE:8, Body/binary>>) ->
maybe
#sdl_stun_probe{cookie = Cookie} ?= sdlan_pb:decode_msg(Body, sdl_stun_probe),
#sdl_stun_probe{cookie = Cookie, step = Step, attr = Attr} ?= sdlan_pb:decode_msg(Body, sdl_stun_probe),
logger:debug("[sdlan_stun] get stun_probe request, cookie: ~p", [Cookie]),
ProbeReply = #sdl_stun_probe_reply {
ProbeReplyPacket = sdlan_pb:encode_msg(#sdl_stun_probe_reply {
cookie = Cookie,
ip = int_ip(Ip),
port = Port,
attr = ?STUN_ATTR_CHANGE_NONE
},
step = Step
}),
%%
ProbeReplyNonePacket = sdlan_pb:encode_msg(ProbeReply),
gen_udp:send(Sock, Ip, Port, <<?PACKET_STUN_PROBE_REPLY, ProbeReplyNonePacket/binary>>),
%%
ProbeReplyPortPacket = sdlan_pb:encode_msg(ProbeReply#sdl_stun_probe_reply{attr = ?STUN_ATTR_CHANGE_PORT}),
sdlan_stun_port_assist:stun_relay(Ip, Port, ProbeReplyPortPacket),
%% ip
ProbeReplyPeerPacket = sdlan_pb:encode_msg(ProbeReply#sdl_stun_probe_reply{attr = ?STUN_ATTR_CHANGE_PEER}),
sdlan_stun_peer_assist:stun_relay(Ip, Port, ProbeReplyPeerPacket)
case Attr of
?STUN_ATTR_CHANGE_NONE ->
%%
gen_udp:send(Sock, Ip, Port, <<?PACKET_STUN_PROBE_REPLY, ProbeReplyPacket/binary>>);
?STUN_ATTR_CHANGE_PEER ->
%% ip
sdlan_stun_peer_assist:stun_relay(Ip, Port, ProbeReplyPacket);
?STUN_ATTR_CHANGE_PORT ->
%%
sdlan_stun_port_assist:stun_relay(Ip, Port, ProbeReplyPacket)
end
end;
%% , stun_reply的转发通过socket来转发

View File

@ -111,12 +111,6 @@ message SDLStunRequest {
bytes session_token = 7;
}
message SDLStunReply {
uint32 network_id = 1;
uint32 code = 2;
string message = 3;
}
message SDLData {
uint32 network_id = 1;
bytes src_mac = 2;
@ -146,13 +140,15 @@ message SDLRegisterAck {
message SDLStunProbe {
uint32 cookie = 1;
uint32 attr = 2;
uint32 step = 3;
}
message SDLStunProbeReply {
uint32 cookie = 1;
uint32 port = 2;
uint32 ip = 3;
uint32 attr = 4;
uint32 step = 2;
uint32 port = 3;
uint32 ip = 4;
}
// ARP查询相关