diff options
| author | OpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com> | 2021-11-11 19:12:43 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-11-11 19:12:43 +0100 |
| commit | 375ff223f430301edf25ef5a5f03a1ae1e029bef (patch) | |
| tree | 96993f98fa27d39a93589a93179e7c914746b876 /libpod/network/util/ip_calc.go | |
| parent | d5b411c484f9e45c71ad3552b796bd3343ec7a0c (diff) | |
| parent | 3af19917a1666fc3f29d98f7f0b937eb488f706c (diff) | |
| download | podman-375ff223f430301edf25ef5a5f03a1ae1e029bef.tar.gz podman-375ff223f430301edf25ef5a5f03a1ae1e029bef.tar.bz2 podman-375ff223f430301edf25ef5a5f03a1ae1e029bef.zip | |
Merge pull request #12131 from Luap99/netavark-interface
Netavark interface
Diffstat (limited to 'libpod/network/util/ip_calc.go')
| -rw-r--r-- | libpod/network/util/ip_calc.go | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/libpod/network/util/ip_calc.go b/libpod/network/util/ip_calc.go new file mode 100644 index 000000000..a27ddf78b --- /dev/null +++ b/libpod/network/util/ip_calc.go @@ -0,0 +1,53 @@ +// Copyright 2015 CNI authors +// +// Licensed 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. + +package util + +import ( + "math/big" + "net" +) + +// NextIP returns IP incremented by 1 +func NextIP(ip net.IP) net.IP { + i := ipToInt(ip) + return intToIP(i.Add(i, big.NewInt(1))) +} + +// PrevIP returns IP decremented by 1 +func PrevIP(ip net.IP) net.IP { + i := ipToInt(ip) + return intToIP(i.Sub(i, big.NewInt(1))) +} + +// Cmp compares two IPs, returning the usual ordering: +// a < b : -1 +// a == b : 0 +// a > b : 1 +func Cmp(a, b net.IP) int { + aa := ipToInt(a) + bb := ipToInt(b) + return aa.Cmp(bb) +} + +func ipToInt(ip net.IP) *big.Int { + if v := ip.To4(); v != nil { + return big.NewInt(0).SetBytes(v) + } + return big.NewInt(0).SetBytes(ip.To16()) +} + +func intToIP(i *big.Int) net.IP { + return net.IP(i.Bytes()) +} |
