@@ -9,7 +9,13 @@ import (
9
9
10
10
"github.com/hyperhq/hyperd/daemon/daemondb"
11
11
"github.com/hyperhq/hyperd/daemon/pod"
12
+ "github.com/hyperhq/hyperd/networking/portmapping"
12
13
apitypes "github.com/hyperhq/hyperd/types"
14
+ "github.com/hyperhq/hyperd/utils"
15
+ "github.com/hyperhq/runv/driverloader"
16
+ "github.com/hyperhq/runv/factory"
17
+ "github.com/hyperhq/runv/hypervisor"
18
+ "github.com/hyperhq/runv/hypervisor/network"
13
19
14
20
docker "github.com/docker/docker/daemon"
15
21
"github.com/docker/docker/daemon/logger/jsonfilelog"
@@ -18,12 +24,7 @@ import (
18
24
"github.com/docker/docker/registry"
19
25
dockerutils "github.com/docker/docker/utils"
20
26
"github.com/golang/glog"
21
- "github.com/hyperhq/hyperd/networking/portmapping"
22
- "github.com/hyperhq/hyperd/utils"
23
- "github.com/hyperhq/runv/driverloader"
24
- "github.com/hyperhq/runv/factory"
25
- "github.com/hyperhq/runv/hypervisor"
26
- "github.com/hyperhq/runv/hypervisor/network"
27
+ "github.com/vishvananda/netlink"
27
28
)
28
29
29
30
var (
@@ -230,12 +231,22 @@ func (daemon *Daemon) initNetworks(c *apitypes.HyperConfig) error {
230
231
glog .Errorf ("InitNetwork failed, %s" , err .Error ())
231
232
return err
232
233
}
233
- addr , err := network .GetIfaceAddr (network .BridgeIface )
234
+ brlink , err := netlink .LinkByName (network .BridgeIface )
235
+ if err != nil {
236
+ glog .Errorf ("failed to get link of the configured bridge (%s): %v" , network .BridgeIface , err )
237
+ return err
238
+ }
239
+ addrs , err := netlink .AddrList (brlink , netlink .FAMILY_V4 )
234
240
if err != nil {
235
- glog .Errorf ("failed to get address of the configured bridge: %v" , err )
241
+ glog .Errorf ("failed to get ip address of the configured bridge (%s): %v" , network .BridgeIface , err )
242
+ return err
243
+ }
244
+ if len (addrs ) == 0 {
245
+ err = fmt .Errorf ("configured bridge (%s) has no IPv4 addresses" )
246
+ glog .Error (err )
236
247
return err
237
248
}
238
- if err := portmapping .Setup (network .BridgeIface , addr , c .DisableIptables ); err != nil {
249
+ if err := portmapping .Setup (network .BridgeIface , fmt . Sprintf ( "%s" , addrs [ 0 ]. IPNet ) , c .DisableIptables ); err != nil {
239
250
glog .Errorf ("Setup portmapping failed: %v" , err )
240
251
}
241
252
return nil
0 commit comments