blob: 24c55de587867597797fe6020bc20191c5e1285b [file] [log] [blame]
%%------------------------------------------------------------------------------
%% Licensed to the Apache Software Foundation (ASF) under one or more
%% contributor license agreements. See the NOTICE file distributed with
%% this work for additional information regarding copyright ownership.
%% The ASF licenses this file to You under the Apache License, Version 2.0
%% (the "License"); you may not use this file except in compliance with
%% the License. You may obtain a copy of the License at
%%
%% http://www.apache.org/licenses/LICENSE-2.0
%%
%% Unless required by applicable law or agreed to in writing, software
%% distributed under the License is distributed on an "AS IS" BASIS,
%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
%% See the License for the specific language governing permissions and
%% limitations under the License.
%%------------------------------------------------------------------------------
-module(dubbo_network_tools).
%% API
-export([local_ip_v4/0, local_ipv4/0, local_ipv4_binary/0]).
local_ip_v4() ->
{ok, Addrs} = inet:getifaddrs(),
hd([
Addr || {_, Opts} <- Addrs, {addr, Addr} <- Opts,
size(Addr) == 4, Addr =/= {127, 0, 0, 1}
]).
local_ipv4_binary() ->
{I1, I2, I3, I4} = local_ip_v4(),
list_to_binary(io_lib:format("~p.~p.~p.~p", [I1, I2, I3, I4])).
local_ipv4() ->
{I1, I2, I3, I4} = local_ip_v4(),
lists:flatten(io_lib:format("~p.~p.~p.~p", [I1, I2, I3, I4])).