mirror of
https://github.com/containers/podman.git
synced 2025-09-25 15:55:32 +08:00
use libnetwork from c/common
The libpod/network packages were moved to c/common so that buildah can use it as well. To prevent duplication use it in podman as well and remove it from here. Signed-off-by: Paul Holzinger <pholzing@redhat.com>
This commit is contained in:
56
vendor/github.com/containers/common/libnetwork/util/ip.go
generated
vendored
Normal file
56
vendor/github.com/containers/common/libnetwork/util/ip.go
generated
vendored
Normal file
@ -0,0 +1,56 @@
|
||||
package util
|
||||
|
||||
import (
|
||||
"net"
|
||||
)
|
||||
|
||||
// IsIPv6 returns true if netIP is IPv6.
|
||||
func IsIPv6(netIP net.IP) bool {
|
||||
return netIP != nil && netIP.To4() == nil
|
||||
}
|
||||
|
||||
// IsIPv4 returns true if netIP is IPv4.
|
||||
func IsIPv4(netIP net.IP) bool {
|
||||
return netIP != nil && netIP.To4() != nil
|
||||
}
|
||||
|
||||
// LastIPInSubnet gets the last IP in a subnet
|
||||
func LastIPInSubnet(addr *net.IPNet) (net.IP, error) { //nolint:interfacer
|
||||
// re-parse to ensure clean network address
|
||||
_, cidr, err := net.ParseCIDR(addr.String())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
ones, bits := cidr.Mask.Size()
|
||||
if ones == bits {
|
||||
return cidr.IP, nil
|
||||
}
|
||||
for i := range cidr.IP {
|
||||
cidr.IP[i] |= ^cidr.Mask[i]
|
||||
}
|
||||
return cidr.IP, nil
|
||||
}
|
||||
|
||||
// FirstIPInSubnet gets the first IP in a subnet
|
||||
func FirstIPInSubnet(addr *net.IPNet) (net.IP, error) { //nolint:interfacer
|
||||
// re-parse to ensure clean network address
|
||||
_, cidr, err := net.ParseCIDR(addr.String())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
ones, bits := cidr.Mask.Size()
|
||||
if ones == bits {
|
||||
return cidr.IP, nil
|
||||
}
|
||||
cidr.IP[len(cidr.IP)-1]++
|
||||
return cidr.IP, nil
|
||||
}
|
||||
|
||||
// NormalizeIP will transform the given ip to the 4 byte len ipv4 if possible
|
||||
func NormalizeIP(ip *net.IP) {
|
||||
ipv4 := ip.To4()
|
||||
if ipv4 != nil {
|
||||
*ip = ipv4
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user