diff --git a/apps/sdlan/include/sdlan_pb.hrl b/apps/sdlan/include/sdlan_pb.hrl index 7330b43..022fd2d 100644 --- a/apps/sdlan/include/sdlan_pb.hrl +++ b/apps/sdlan/include/sdlan_pb.hrl @@ -31,7 +31,8 @@ {network_id = 0 :: non_neg_integer() | undefined, % = 1, optional, 32 bits mac = <<>> :: iodata() | undefined, % = 2, optional net_addr = 0 :: non_neg_integer() | undefined, % = 3, optional, 32 bits - net_bit_len = 0 :: non_neg_integer() | undefined % = 4, optional, 32 bits + net_bit_len = 0 :: non_neg_integer() | undefined, % = 4, optional, 32 bits + network_domain = <<>> :: unicode:chardata() | undefined % = 5, optional }). -endif. diff --git a/apps/sdlan/src/sdlan_channel.erl b/apps/sdlan/src/sdlan_channel.erl index 8c8e19c..171ce86 100644 --- a/apps/sdlan/src/sdlan_channel.erl +++ b/apps/sdlan/src/sdlan_channel.erl @@ -148,7 +148,8 @@ handle_info({tcp, Sock, <>}, S network_id = NetworkId, net_addr = NetAddr, mac = Mac, - net_bit_len = NetBitLen + net_bit_len = NetBitLen, + network_domain = Domain }, aes_key = EncodedAesKey, upgrade_type = UpgradeType, @@ -231,7 +232,7 @@ handle_info({tcp, Sock, <>}, State {noreply, State} end; -handle_info({tcp, _Sock, <<0:32, ?PACKET_PING>>}, State = #state{transport = Transport, socket = Sock, client_id = ClientId, ping_counter = PingCounter}) -> +handle_info({tcp, _Sock, <<0:32, ?PACKET_PING>>}, State = #state{transport = Transport, socket = Sock, ping_counter = PingCounter}) -> %lager:debug("[sdlan_channel] client_id: ~p, get ping", [ClientId]), Transport:send(Sock, <<0:32, ?PACKET_PONG>>), {noreply, State#state{ping_counter = PingCounter + 1}}; @@ -263,7 +264,8 @@ handle_info({move_network, ReceiverPid, Ref, NetworkPid}, dev_addr = #sdl_dev_addr { network_id = NetworkId, net_addr = NetAddr, - net_bit_len = NetBitLen + net_bit_len = NetBitLen, + network_domain = Domain }, aes_key = EncodedAesKey }), diff --git a/apps/sdlan/src/sdlan_pb.erl b/apps/sdlan/src/sdlan_pb.erl index 571ec89..2b5ac85 100644 --- a/apps/sdlan/src/sdlan_pb.erl +++ b/apps/sdlan/src/sdlan_pb.erl @@ -213,7 +213,7 @@ encode_msg_sdl_v6_info(#sdl_v6_info{port = F1, v6 = F2}, Bin, TrUserData) -> encode_msg_sdl_dev_addr(Msg, TrUserData) -> encode_msg_sdl_dev_addr(Msg, <<>>, TrUserData). -encode_msg_sdl_dev_addr(#sdl_dev_addr{network_id = F1, mac = F2, net_addr = F3, net_bit_len = F4}, Bin, TrUserData) -> +encode_msg_sdl_dev_addr(#sdl_dev_addr{network_id = F1, mac = F2, net_addr = F3, net_bit_len = F4, network_domain = F5}, Bin, TrUserData) -> B1 = if F1 == undefined -> Bin; true -> begin @@ -242,12 +242,22 @@ encode_msg_sdl_dev_addr(#sdl_dev_addr{network_id = F1, mac = F2, net_addr = F3, end end end, - if F4 == undefined -> B3; + 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 - TrF4 = id(F4, TrUserData), - if TrF4 =:= 0 -> B3; - true -> e_varint(TrF4, <>, TrUserData) + TrF5 = id(F5, TrUserData), + case is_empty_string(TrF5) of + true -> B4; + false -> e_type_string(TrF5, <>, TrUserData) end end end. @@ -1159,70 +1169,77 @@ skip_32_sdl_v6_info(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> skip_64_sdl_v6_info(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, TrUserData) -> dfp_read_field_def_sdl_v6_info(Rest, Z1, Z2, F, F@_1, F@_2, TrUserData). -decode_msg_sdl_dev_addr(Bin, TrUserData) -> dfp_read_field_def_sdl_dev_addr(Bin, 0, 0, 0, id(0, TrUserData), id(<<>>, TrUserData), id(0, TrUserData), id(0, TrUserData), TrUserData). +decode_msg_sdl_dev_addr(Bin, TrUserData) -> dfp_read_field_def_sdl_dev_addr(Bin, 0, 0, 0, id(0, TrUserData), id(<<>>, TrUserData), id(0, TrUserData), id(0, TrUserData), id(<<>>, TrUserData), TrUserData). -dfp_read_field_def_sdl_dev_addr(<<8, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> d_field_sdl_dev_addr_network_id(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData); -dfp_read_field_def_sdl_dev_addr(<<18, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> d_field_sdl_dev_addr_mac(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData); -dfp_read_field_def_sdl_dev_addr(<<24, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> d_field_sdl_dev_addr_net_addr(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData); -dfp_read_field_def_sdl_dev_addr(<<32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> d_field_sdl_dev_addr_net_bit_len(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData); -dfp_read_field_def_sdl_dev_addr(<<>>, 0, 0, _, F@_1, F@_2, F@_3, F@_4, _) -> #sdl_dev_addr{network_id = F@_1, mac = F@_2, net_addr = F@_3, net_bit_len = F@_4}; -dfp_read_field_def_sdl_dev_addr(Other, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> dg_read_field_def_sdl_dev_addr(Other, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData). +dfp_read_field_def_sdl_dev_addr(<<8, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) -> d_field_sdl_dev_addr_network_id(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); +dfp_read_field_def_sdl_dev_addr(<<18, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) -> d_field_sdl_dev_addr_mac(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); +dfp_read_field_def_sdl_dev_addr(<<24, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) -> d_field_sdl_dev_addr_net_addr(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); +dfp_read_field_def_sdl_dev_addr(<<32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) -> d_field_sdl_dev_addr_net_bit_len(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); +dfp_read_field_def_sdl_dev_addr(<<42, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) -> d_field_sdl_dev_addr_network_domain(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); +dfp_read_field_def_sdl_dev_addr(<<>>, 0, 0, _, F@_1, F@_2, F@_3, F@_4, F@_5, _) -> #sdl_dev_addr{network_id = F@_1, mac = F@_2, net_addr = F@_3, net_bit_len = F@_4, network_domain = F@_5}; +dfp_read_field_def_sdl_dev_addr(Other, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) -> dg_read_field_def_sdl_dev_addr(Other, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData). -dg_read_field_def_sdl_dev_addr(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 32 - 7 -> dg_read_field_def_sdl_dev_addr(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); -dg_read_field_def_sdl_dev_addr(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, F@_2, F@_3, F@_4, TrUserData) -> +dg_read_field_def_sdl_dev_addr(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) when N < 32 - 7 -> dg_read_field_def_sdl_dev_addr(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); +dg_read_field_def_sdl_dev_addr(<<0:1, X:7, Rest/binary>>, N, Acc, _, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) -> Key = X bsl N + Acc, case Key of - 8 -> d_field_sdl_dev_addr_network_id(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, TrUserData); - 18 -> d_field_sdl_dev_addr_mac(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, TrUserData); - 24 -> d_field_sdl_dev_addr_net_addr(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, TrUserData); - 32 -> d_field_sdl_dev_addr_net_bit_len(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, TrUserData); + 8 -> d_field_sdl_dev_addr_network_id(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); + 18 -> d_field_sdl_dev_addr_mac(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); + 24 -> d_field_sdl_dev_addr_net_addr(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); + 32 -> d_field_sdl_dev_addr_net_bit_len(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); + 42 -> d_field_sdl_dev_addr_network_domain(Rest, 0, 0, 0, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); _ -> case Key band 7 of - 0 -> skip_varint_sdl_dev_addr(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, TrUserData); - 1 -> skip_64_sdl_dev_addr(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, TrUserData); - 2 -> skip_length_delimited_sdl_dev_addr(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, TrUserData); - 3 -> skip_group_sdl_dev_addr(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, TrUserData); - 5 -> skip_32_sdl_dev_addr(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, TrUserData) + 0 -> skip_varint_sdl_dev_addr(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); + 1 -> skip_64_sdl_dev_addr(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); + 2 -> skip_length_delimited_sdl_dev_addr(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); + 3 -> skip_group_sdl_dev_addr(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); + 5 -> skip_32_sdl_dev_addr(Rest, 0, 0, Key bsr 3, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) end end; -dg_read_field_def_sdl_dev_addr(<<>>, 0, 0, _, F@_1, F@_2, F@_3, F@_4, _) -> #sdl_dev_addr{network_id = F@_1, mac = F@_2, net_addr = F@_3, net_bit_len = F@_4}. +dg_read_field_def_sdl_dev_addr(<<>>, 0, 0, _, F@_1, F@_2, F@_3, F@_4, F@_5, _) -> #sdl_dev_addr{network_id = F@_1, mac = F@_2, net_addr = F@_3, net_bit_len = F@_4, network_domain = F@_5}. -d_field_sdl_dev_addr_network_id(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> d_field_sdl_dev_addr_network_id(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); -d_field_sdl_dev_addr_network_id(<<0:1, X:7, Rest/binary>>, N, Acc, F, _, F@_2, F@_3, F@_4, TrUserData) -> +d_field_sdl_dev_addr_network_id(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) when N < 57 -> d_field_sdl_dev_addr_network_id(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); +d_field_sdl_dev_addr_network_id(<<0:1, X:7, Rest/binary>>, N, Acc, F, _, F@_2, F@_3, F@_4, F@_5, TrUserData) -> {NewFValue, RestF} = {id((X bsl N + Acc) band 4294967295, TrUserData), Rest}, - dfp_read_field_def_sdl_dev_addr(RestF, 0, 0, F, NewFValue, F@_2, F@_3, F@_4, TrUserData). + dfp_read_field_def_sdl_dev_addr(RestF, 0, 0, F, NewFValue, F@_2, F@_3, F@_4, F@_5, TrUserData). -d_field_sdl_dev_addr_mac(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> d_field_sdl_dev_addr_mac(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); -d_field_sdl_dev_addr_mac(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, _, F@_3, F@_4, TrUserData) -> +d_field_sdl_dev_addr_mac(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) when N < 57 -> d_field_sdl_dev_addr_mac(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); +d_field_sdl_dev_addr_mac(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, _, F@_3, F@_4, F@_5, TrUserData) -> {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, - dfp_read_field_def_sdl_dev_addr(RestF, 0, 0, F, F@_1, NewFValue, F@_3, F@_4, TrUserData). + dfp_read_field_def_sdl_dev_addr(RestF, 0, 0, F, F@_1, NewFValue, F@_3, F@_4, F@_5, TrUserData). -d_field_sdl_dev_addr_net_addr(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> d_field_sdl_dev_addr_net_addr(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); -d_field_sdl_dev_addr_net_addr(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, _, F@_4, TrUserData) -> +d_field_sdl_dev_addr_net_addr(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) when N < 57 -> d_field_sdl_dev_addr_net_addr(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); +d_field_sdl_dev_addr_net_addr(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, _, F@_4, F@_5, TrUserData) -> {NewFValue, RestF} = {id((X bsl N + Acc) band 4294967295, TrUserData), Rest}, - dfp_read_field_def_sdl_dev_addr(RestF, 0, 0, F, F@_1, F@_2, NewFValue, F@_4, TrUserData). + dfp_read_field_def_sdl_dev_addr(RestF, 0, 0, F, F@_1, F@_2, NewFValue, F@_4, F@_5, TrUserData). -d_field_sdl_dev_addr_net_bit_len(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> d_field_sdl_dev_addr_net_bit_len(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); -d_field_sdl_dev_addr_net_bit_len(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, _, TrUserData) -> +d_field_sdl_dev_addr_net_bit_len(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) when N < 57 -> d_field_sdl_dev_addr_net_bit_len(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); +d_field_sdl_dev_addr_net_bit_len(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, _, F@_5, TrUserData) -> {NewFValue, RestF} = {id((X bsl N + Acc) band 4294967295, TrUserData), Rest}, - dfp_read_field_def_sdl_dev_addr(RestF, 0, 0, F, F@_1, F@_2, F@_3, NewFValue, TrUserData). + dfp_read_field_def_sdl_dev_addr(RestF, 0, 0, F, F@_1, F@_2, F@_3, NewFValue, F@_5, TrUserData). -skip_varint_sdl_dev_addr(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> skip_varint_sdl_dev_addr(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData); -skip_varint_sdl_dev_addr(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> dfp_read_field_def_sdl_dev_addr(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData). +d_field_sdl_dev_addr_network_domain(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) when N < 57 -> d_field_sdl_dev_addr_network_domain(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); +d_field_sdl_dev_addr_network_domain(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, _, TrUserData) -> + {NewFValue, RestF} = begin Len = X bsl N + Acc, <> = Rest, Bytes2 = binary:copy(Bytes), {id(Bytes2, TrUserData), Rest2} end, + dfp_read_field_def_sdl_dev_addr(RestF, 0, 0, F, F@_1, F@_2, F@_3, F@_4, NewFValue, TrUserData). -skip_length_delimited_sdl_dev_addr(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) when N < 57 -> skip_length_delimited_sdl_dev_addr(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData); -skip_length_delimited_sdl_dev_addr(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> +skip_varint_sdl_dev_addr(<<1:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) -> skip_varint_sdl_dev_addr(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); +skip_varint_sdl_dev_addr(<<0:1, _:7, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) -> dfp_read_field_def_sdl_dev_addr(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData). + +skip_length_delimited_sdl_dev_addr(<<1:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) when N < 57 -> skip_length_delimited_sdl_dev_addr(Rest, N + 7, X bsl N + Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData); +skip_length_delimited_sdl_dev_addr(<<0:1, X:7, Rest/binary>>, N, Acc, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) -> Length = X bsl N + Acc, <<_:Length/binary, Rest2/binary>> = Rest, - dfp_read_field_def_sdl_dev_addr(Rest2, 0, 0, F, F@_1, F@_2, F@_3, F@_4, TrUserData). + dfp_read_field_def_sdl_dev_addr(Rest2, 0, 0, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData). -skip_group_sdl_dev_addr(Bin, _, Z2, FNum, F@_1, F@_2, F@_3, F@_4, TrUserData) -> +skip_group_sdl_dev_addr(Bin, _, Z2, FNum, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) -> {_, Rest} = read_group(Bin, FNum), - dfp_read_field_def_sdl_dev_addr(Rest, 0, Z2, FNum, F@_1, F@_2, F@_3, F@_4, TrUserData). + dfp_read_field_def_sdl_dev_addr(Rest, 0, Z2, FNum, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData). -skip_32_sdl_dev_addr(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> dfp_read_field_def_sdl_dev_addr(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData). +skip_32_sdl_dev_addr(<<_:32, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) -> dfp_read_field_def_sdl_dev_addr(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData). -skip_64_sdl_dev_addr(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData) -> dfp_read_field_def_sdl_dev_addr(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, TrUserData). +skip_64_sdl_dev_addr(<<_:64, Rest/binary>>, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData) -> dfp_read_field_def_sdl_dev_addr(Rest, Z1, Z2, F, F@_1, F@_2, F@_3, F@_4, F@_5, TrUserData). decode_msg_sdl_empty(Bin, TrUserData) -> dfp_read_field_def_sdl_empty(Bin, 0, 0, 0, TrUserData). @@ -2546,7 +2563,8 @@ merge_msg_sdl_v6_info(#sdl_v6_info{port = PFport, v6 = PFv6}, #sdl_v6_info{port end}. -compile({nowarn_unused_function,merge_msg_sdl_dev_addr/3}). -merge_msg_sdl_dev_addr(#sdl_dev_addr{network_id = PFnetwork_id, mac = PFmac, net_addr = PFnet_addr, net_bit_len = PFnet_bit_len}, #sdl_dev_addr{network_id = NFnetwork_id, mac = NFmac, net_addr = NFnet_addr, net_bit_len = NFnet_bit_len}, _) -> +merge_msg_sdl_dev_addr(#sdl_dev_addr{network_id = PFnetwork_id, mac = PFmac, net_addr = PFnet_addr, net_bit_len = PFnet_bit_len, network_domain = PFnetwork_domain}, + #sdl_dev_addr{network_id = NFnetwork_id, mac = NFmac, net_addr = NFnet_addr, net_bit_len = NFnet_bit_len, network_domain = NFnetwork_domain}, _) -> #sdl_dev_addr{network_id = if NFnetwork_id =:= undefined -> PFnetwork_id; true -> NFnetwork_id @@ -2562,6 +2580,10 @@ merge_msg_sdl_dev_addr(#sdl_dev_addr{network_id = PFnetwork_id, mac = PFmac, net net_bit_len = if NFnet_bit_len =:= undefined -> PFnet_bit_len; true -> NFnet_bit_len + end, + network_domain = + if NFnetwork_domain =:= undefined -> PFnetwork_domain; + true -> NFnetwork_domain end}. -compile({nowarn_unused_function,merge_msg_sdl_empty/3}). @@ -2943,7 +2965,7 @@ v_submsg_sdl_dev_addr(Msg, Path, TrUserData) -> v_msg_sdl_dev_addr(Msg, Path, Tr -compile({nowarn_unused_function,v_msg_sdl_dev_addr/3}). -dialyzer({nowarn_function,v_msg_sdl_dev_addr/3}). -v_msg_sdl_dev_addr(#sdl_dev_addr{network_id = F1, mac = F2, net_addr = F3, net_bit_len = F4}, Path, TrUserData) -> +v_msg_sdl_dev_addr(#sdl_dev_addr{network_id = F1, mac = F2, net_addr = F3, net_bit_len = F4, network_domain = F5}, Path, TrUserData) -> if F1 == undefined -> ok; true -> v_type_uint32(F1, [network_id | Path], TrUserData) end, @@ -2956,6 +2978,9 @@ v_msg_sdl_dev_addr(#sdl_dev_addr{network_id = F1, mac = F2, net_addr = F3, net_b if F4 == undefined -> ok; true -> v_type_uint32(F4, [net_bit_len | Path], TrUserData) end, + if F5 == undefined -> ok; + true -> v_type_string(F5, [network_domain | Path], TrUserData) + end, ok; v_msg_sdl_dev_addr(X, Path, _TrUserData) -> mk_type_error({expected_msg, sdl_dev_addr}, X, Path). @@ -3324,7 +3349,8 @@ get_msg_defs() -> [#field{name = network_id, fnum = 1, rnum = 2, type = uint32, occurrence = defaulty, opts = []}, #field{name = mac, fnum = 2, rnum = 3, type = bytes, occurrence = defaulty, opts = []}, #field{name = net_addr, fnum = 3, rnum = 4, type = uint32, occurrence = defaulty, opts = []}, - #field{name = net_bit_len, fnum = 4, rnum = 5, type = uint32, occurrence = defaulty, opts = []}]}, + #field{name = net_bit_len, fnum = 4, rnum = 5, type = uint32, occurrence = defaulty, opts = []}, + #field{name = network_domain, fnum = 5, rnum = 6, type = string, occurrence = defaulty, opts = []}]}, {{msg, sdl_empty}, []}, {{msg, sdl_register_super}, [#field{name = version, fnum = 1, rnum = 2, type = uint32, occurrence = defaulty, opts = []}, @@ -3467,7 +3493,8 @@ find_msg_def(sdl_dev_addr) -> [#field{name = network_id, fnum = 1, rnum = 2, type = uint32, occurrence = defaulty, opts = []}, #field{name = mac, fnum = 2, rnum = 3, type = bytes, occurrence = defaulty, opts = []}, #field{name = net_addr, fnum = 3, rnum = 4, type = uint32, occurrence = defaulty, opts = []}, - #field{name = net_bit_len, fnum = 4, rnum = 5, type = uint32, occurrence = defaulty, opts = []}]; + #field{name = net_bit_len, fnum = 4, rnum = 5, type = uint32, occurrence = defaulty, opts = []}, + #field{name = network_domain, fnum = 5, rnum = 6, type = string, occurrence = defaulty, opts = []}]; find_msg_def(sdl_empty) -> []; find_msg_def(sdl_register_super) -> [#field{name = version, fnum = 1, rnum = 2, type = uint32, occurrence = defaulty, opts = []}, diff --git a/message.proto b/message.proto index 4256b36..70bb9a0 100644 --- a/message.proto +++ b/message.proto @@ -16,10 +16,10 @@ message SDLV6Info { // 设备网络地址信息 message SDLDevAddr { uint32 network_id = 1; - string network_domain = 2; - bytes mac = 3; - uint32 net_addr = 4; - uint32 net_bit_len = 5; + bytes mac = 2; + uint32 net_addr = 3; + uint32 net_bit_len = 4; + string network_domain = 5; } // tcp通讯消息