Skip to content

Commit 511c951

Browse files
committed
Fix macOS default network gateway reporting
1 parent ba280a6 commit 511c951

2 files changed

Lines changed: 21 additions & 10 deletions

File tree

lib/network/default_network_test.go

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,9 @@ import (
99
"github.com/stretchr/testify/require"
1010
)
1111

12-
// TestDefaultNetworkPrefersInitializedNetwork proves DefaultNetwork returns
13-
// the effective default network established at Initialize time, including the
14-
// guest-visible gateway, without touching host kernel state.
15-
func TestDefaultNetworkPrefersInitializedNetwork(t *testing.T) {
12+
// TestDefaultNetworkReturnsGuestVisibleValues proves DefaultNetwork reports
13+
// guest-visible gateway/subnet details for the active host networking model.
14+
func TestDefaultNetworkReturnsGuestVisibleValues(t *testing.T) {
1615
t.Parallel()
1716
cfg := &config.Config{}
1817
m := NewManager(paths.New(t.TempDir()), cfg, nil).(*manager)
@@ -28,14 +27,23 @@ func TestDefaultNetworkPrefersInitializedNetwork(t *testing.T) {
2827

2928
nw, err := m.DefaultNetwork(context.Background())
3029
require.NoError(t, err)
31-
require.Equal(t, "10.100.0.1", nw.Gateway)
32-
require.Equal(t, "10.100.0.0/16", nw.Subnet)
30+
if NetworkModel() == "nat" {
31+
require.Equal(t, "192.168.64.1", nw.Gateway)
32+
require.Equal(t, "192.168.64.0/24", nw.Subnet)
33+
} else {
34+
require.Equal(t, "10.100.0.1", nw.Gateway)
35+
require.Equal(t, "10.100.0.0/16", nw.Subnet)
36+
}
3337

3438
// Mutating the returned copy must not affect the cached network.
3539
nw.Gateway = " mutated "
3640
again, err := m.DefaultNetwork(context.Background())
3741
require.NoError(t, err)
38-
require.Equal(t, "10.100.0.1", again.Gateway)
42+
if NetworkModel() == "nat" {
43+
require.Equal(t, "192.168.64.1", again.Gateway)
44+
} else {
45+
require.Equal(t, "10.100.0.1", again.Gateway)
46+
}
3947
}
4048

4149
func TestGuestToGuestEnabled(t *testing.T) {

lib/network/manager.go

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -167,10 +167,13 @@ func (m *manager) setDefaultNetwork(network *Network) {
167167
m.defaultNetwork = cloneNetwork(network)
168168
}
169169

170-
// DefaultNetwork returns the effective default network. It prefers the
171-
// network established during Initialize and falls back to querying live
172-
// host state (kernel bridge on Linux, the vz NAT stub on macOS).
170+
// DefaultNetwork returns the effective default network. Linux hosts prefer
171+
// the network established during Initialize, while macOS hosts always query
172+
// live NAT state because config subnet/gateway settings are not guest-visible.
173173
func (m *manager) DefaultNetwork(ctx context.Context) (*Network, error) {
174+
if NetworkModel() == "nat" {
175+
return m.getDefaultNetwork(ctx)
176+
}
174177
if network := m.cachedDefaultNetwork(); network != nil {
175178
return network, nil
176179
}

0 commit comments

Comments
 (0)