diff --git a/src/sdlan.app.src b/src/sdlan.app.src index 26bccb6..3b454ab 100644 --- a/src/sdlan.app.src +++ b/src/sdlan.app.src @@ -12,7 +12,6 @@ mysql, jiffy, hackney, - gpb, throttle, dns_erlang, pkt, diff --git a/src/sdlan_network.erl b/src/sdlan_network.erl index 4afd8fc..7f25434 100644 --- a/src/sdlan_network.erl +++ b/src/sdlan_network.erl @@ -467,7 +467,7 @@ insert_endpoint(Table, Mac, Endpoint = #endpoint{}) when is_binary(Mac) -> delete_endpoint(Table, Mac) when is_binary(Mac) -> ets:delete(Table, Mac). --spec lookup_endpoint(ets:tid(), Mac :: binary()) -> #endpoint{} | undefined. +-spec lookup_endpoint(atom() | ets:tid(), Mac :: binary()) -> #endpoint{} | undefined. lookup_endpoint(Table, Mac) when is_binary(Mac) -> try ets:lookup(Table, Mac) of [{Mac, Endpoint = #endpoint{}}] -> @@ -478,9 +478,7 @@ lookup_endpoint(Table, Mac) when is_binary(Mac) -> undefined end. --spec list_endpoints(NetworkIdOrTable :: integer() | ets:tid()) -> [{binary(), #endpoint{}}]. -list_endpoints(NetworkId) when is_integer(NetworkId) -> - list_endpoints(endpoint_table_name(NetworkId)); +-spec list_endpoints(atom() | ets:tid()) -> [{binary(), #endpoint{}}]. list_endpoints(Table) -> try ets:tab2list(Table) of Endpoints when is_list(Endpoints) -> @@ -533,12 +531,13 @@ forward_unicast_by_ets(NetworkId, Sock, SrcMac, DstMac, Packet) -> -spec forward_broadcast_by_ets(NetworkId :: integer(), Sock :: any(), SrcMac :: binary(), DstMac :: binary(), Packet :: binary()) -> {ok, integer()}. forward_broadcast_by_ets(NetworkId, Sock, SrcMac, DstMac, Packet) -> + Table = endpoint_table_name(NetworkId), lists:foreach(fun ({Mac, #endpoint{hole = #hole{peer = {NatIp, NatPort}}}}) when Mac =/= SrcMac -> gen_udp:send(Sock, NatIp, NatPort, Packet); (_) -> ok - end, list_endpoints(NetworkId)), + end, list_endpoints(Table)), logger:debug("[sdlan_network] broadcast data by ets networkd_id: ~p, src_mac: ~p, dst_mac: ~p", [NetworkId, sdlan_util:format_mac(SrcMac), sdlan_util:format_mac(DstMac)]), {ok, byte_size(Packet)}. diff --git a/src/test/quic_client.erl b/src/test/quic_client.erl deleted file mode 100644 index dc22e8d..0000000 --- a/src/test/quic_client.erl +++ /dev/null @@ -1,36 +0,0 @@ -%%%------------------------------------------------------------------- -%%% @author anlicheng -%%% @copyright (C) 2026, -%%% @doc -%%% -%%% @end -%%% Created : 13. 2月 2026 12:46 -%%%------------------------------------------------------------------- --module(quic_client). --author("anlicheng"). - -%% API --export([start/0]). --export([do_start/0]). - -start() -> - erlang:spawn(?MODULE, do_start, []). - -do_start() -> - Port = 1365, - {ok, Conn} = quicer:connect("localhost", Port, [{alpn, ["punchnet/1.0"]}, {verify, none}], 5000), - {ok, Stm} = quicer:start_stream(Conn, []), - - receive - Info -> - logger:debug("get info: ~p", [Info]) - end, - - Data = <<"ping">>, - Len = byte_size(Data), - Payload = <>, - - {ok, SendLen} = quicer:send(Stm, Payload), - logger:debug("[quic_client] client send success: ~p", [SendLen]), - receive {quic, <<"pong">>, Stm, _Props} -> ok end, - ok = quicer:close_connection(Conn). \ No newline at end of file