tres/ipv4_address: Refactor netmask calculation logic with Erlang way
This commit is contained in:
parent
d0683cf721
commit
79fc75ea67
1 changed files with 2 additions and 9 deletions
|
|
@ -21,16 +21,9 @@ defmodule Tres.IPv4Address do
|
||||||
[netaddr, cidr_str] ->
|
[netaddr, cidr_str] ->
|
||||||
cidr = String.to_integer(cidr_str)
|
cidr = String.to_integer(cidr_str)
|
||||||
mask = (0xFFFFFFFF >>> (32 - cidr)) <<< (32 - cidr)
|
mask = (0xFFFFFFFF >>> (32 - cidr)) <<< (32 - cidr)
|
||||||
|
<<m1, m2, m3, m4>> = <<mask::32>>
|
||||||
net_mask = {
|
|
||||||
(0xFF000000 &&& mask) >>> 24,
|
|
||||||
(0x00FF0000 &&& mask) >>> 16,
|
|
||||||
(0x0000FF00 &&& mask) >>> 8,
|
|
||||||
(0x000000FF &&& mask)
|
|
||||||
}
|
|
||||||
|
|
||||||
{:ok, ipaddr} = netaddr |> to_charlist |> :inet.parse_address()
|
{:ok, ipaddr} = netaddr |> to_charlist |> :inet.parse_address()
|
||||||
{ipaddr, net_mask}
|
{ipaddr, {m1, m2, m3, m4}}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue