mirror of
https://github.com/containers/podman.git
synced 2025-09-10 12:32:21 +08:00
@ -191,7 +191,7 @@ func createBridge(r *libpod.Runtime, name string, options entities.NetworkCreate
|
||||
var plugins []network.CNIPlugins
|
||||
var routes []network.IPAMRoute
|
||||
|
||||
defaultRoute, err := network.NewIPAMDefaultRoute()
|
||||
defaultRoute, err := network.NewIPAMDefaultRoute(network.IsIPv6(subnet.IP))
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
@ -12,3 +12,8 @@ func CalcGatewayIP(ipn *net.IPNet) net.IP {
|
||||
nid := ipn.IP.Mask(ipn.Mask)
|
||||
return ip.NextIP(nid)
|
||||
}
|
||||
|
||||
// IsIPv6 returns if netIP is IPv6.
|
||||
func IsIPv6(netIP net.IP) bool {
|
||||
return netIP != nil && netIP.To4() == nil
|
||||
}
|
||||
|
@ -6,6 +6,11 @@ import (
|
||||
"path/filepath"
|
||||
)
|
||||
|
||||
const (
|
||||
defaultIPv4Route = "0.0.0.0/0"
|
||||
defaultIPv6Route = "::/0"
|
||||
)
|
||||
|
||||
// NcList describes a generic map
|
||||
type NcList map[string]interface{}
|
||||
|
||||
@ -86,9 +91,13 @@ func NewIPAMRoute(r *net.IPNet) IPAMRoute { //nolint:interfacer
|
||||
}
|
||||
|
||||
// NewIPAMDefaultRoute creates a new IPAMDefault route of
|
||||
// 0.0.0.0/0
|
||||
func NewIPAMDefaultRoute() (IPAMRoute, error) {
|
||||
_, n, err := net.ParseCIDR("0.0.0.0/0")
|
||||
// 0.0.0.0/0 for IPv4 or ::/0 for IPv6
|
||||
func NewIPAMDefaultRoute(isIPv6 bool) (IPAMRoute, error) {
|
||||
route := defaultIPv4Route
|
||||
if isIPv6 {
|
||||
route = defaultIPv6Route
|
||||
}
|
||||
_, n, err := net.ParseCIDR(route)
|
||||
if err != nil {
|
||||
return IPAMRoute{}, err
|
||||
}
|
||||
|
38
pkg/network/netconflist_test.go
Normal file
38
pkg/network/netconflist_test.go
Normal file
@ -0,0 +1,38 @@
|
||||
package network
|
||||
|
||||
import (
|
||||
"reflect"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestNewIPAMDefaultRoute(t *testing.T) {
|
||||
|
||||
tests := []struct {
|
||||
name string
|
||||
isIPv6 bool
|
||||
want IPAMRoute
|
||||
}{
|
||||
{
|
||||
name: "IPv4 default route",
|
||||
isIPv6: false,
|
||||
want: IPAMRoute{defaultIPv4Route},
|
||||
},
|
||||
{
|
||||
name: "IPv6 default route",
|
||||
isIPv6: true,
|
||||
want: IPAMRoute{defaultIPv6Route},
|
||||
},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
tt := tt
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
got, err := NewIPAMDefaultRoute(tt.isIPv6)
|
||||
if err != nil {
|
||||
t.Errorf("no errorr expected: %v", err)
|
||||
}
|
||||
if !reflect.DeepEqual(got, tt.want) {
|
||||
t.Errorf("NewIPAMDefaultRoute() = %v, want %v", got, tt.want)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user