Skip to content

Commit 5f62c01

Browse files
authored
Merge pull request #1719 from fcrisciani/data_path
Add the datapath-addr in libnetwork
2 parents 1acf40a + 0c175ff commit 5f62c01

3 files changed

Lines changed: 29 additions & 14 deletions

File tree

agent.go

Lines changed: 24 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -39,11 +39,21 @@ type agent struct {
3939
networkDB *networkdb.NetworkDB
4040
bindAddr string
4141
advertiseAddr string
42+
dataPathAddr string
4243
epTblCancel func()
4344
driverCancelFuncs map[string][]func()
4445
sync.Mutex
4546
}
4647

48+
func (a *agent) dataPathAddress() string {
49+
a.Lock()
50+
defer a.Unlock()
51+
if a.dataPathAddr != "" {
52+
return a.dataPathAddr
53+
}
54+
return a.advertiseAddr
55+
}
56+
4757
const libnetworkEPTable = "endpoint_table"
4858

4959
func getBindAddr(ifaceName string) (string, error) {
@@ -196,14 +206,16 @@ func (c *controller) agentSetup() error {
196206

197207
bindAddr := clusterProvider.GetLocalAddress()
198208
advAddr := clusterProvider.GetAdvertiseAddress()
209+
dataAddr := clusterProvider.GetDataPathAddress()
199210
remote := clusterProvider.GetRemoteAddress()
200211
remoteAddr, _, _ := net.SplitHostPort(remote)
201212
listen := clusterProvider.GetListenAddress()
202213
listenAddr, _, _ := net.SplitHostPort(listen)
203214

204-
logrus.Infof("Initializing Libnetwork Agent Listen-Addr=%s Local-addr=%s Adv-addr=%s Remote-addr =%s", listenAddr, bindAddr, advAddr, remoteAddr)
215+
logrus.Infof("Initializing Libnetwork Agent Listen-Addr=%s Local-addr=%s Adv-addr=%s Data-addr=%s Remote-addr=%s",
216+
listenAddr, bindAddr, advAddr, dataAddr, remoteAddr)
205217
if advAddr != "" && agent == nil {
206-
if err := c.agentInit(listenAddr, bindAddr, advAddr); err != nil {
218+
if err := c.agentInit(listenAddr, bindAddr, advAddr, dataAddr); err != nil {
207219
logrus.Errorf("Error in agentInit : %v", err)
208220
} else {
209221
c.drvRegistry.WalkDrivers(func(name string, driver driverapi.Driver, capability driverapi.Capability) bool {
@@ -269,7 +281,7 @@ func (c *controller) getPrimaryKeyTag(subsys string) ([]byte, uint64, error) {
269281
return keys[1].Key, keys[1].LamportTime, nil
270282
}
271283

272-
func (c *controller) agentInit(listenAddr, bindAddrOrInterface, advertiseAddr string) error {
284+
func (c *controller) agentInit(listenAddr, bindAddrOrInterface, advertiseAddr, dataPathAddr string) error {
273285
if !c.isAgent() {
274286
return nil
275287
}
@@ -303,6 +315,7 @@ func (c *controller) agentInit(listenAddr, bindAddrOrInterface, advertiseAddr st
303315
networkDB: nDB,
304316
bindAddr: bindAddr,
305317
advertiseAddr: advertiseAddr,
318+
dataPathAddr: dataPathAddr,
306319
epTblCancel: cancel,
307320
driverCancelFuncs: make(map[string][]func()),
308321
}
@@ -343,25 +356,22 @@ func (c *controller) agentDriverNotify(d driverapi.Driver) {
343356
return
344357
}
345358

346-
d.DiscoverNew(discoverapi.NodeDiscovery, discoverapi.NodeDiscoveryData{
347-
Address: agent.advertiseAddr,
359+
if err := d.DiscoverNew(discoverapi.NodeDiscovery, discoverapi.NodeDiscoveryData{
360+
Address: agent.dataPathAddress(),
348361
BindAddress: agent.bindAddr,
349362
Self: true,
350-
})
363+
}); err != nil {
364+
logrus.Warnf("Failed the node discovery in driver: %v", err)
365+
}
351366

352367
drvEnc := discoverapi.DriverEncryptionConfig{}
353368
keys, tags := c.getKeys(subsysIPSec)
354369
drvEnc.Keys = keys
355370
drvEnc.Tags = tags
356371

357-
c.drvRegistry.WalkDrivers(func(name string, driver driverapi.Driver, capability driverapi.Capability) bool {
358-
err := driver.DiscoverNew(discoverapi.EncryptionKeysConfig, drvEnc)
359-
if err != nil {
360-
logrus.Warnf("Failed to set datapath keys in driver %s: %v", name, err)
361-
}
362-
return false
363-
})
364-
372+
if err := d.DiscoverNew(discoverapi.EncryptionKeysConfig, drvEnc); err != nil {
373+
logrus.Warnf("Failed to set datapath keys in driver: %v", err)
374+
}
365375
}
366376

367377
func (c *controller) agentClose() {

cluster/provider.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ type Provider interface {
1212
GetLocalAddress() string
1313
GetListenAddress() string
1414
GetAdvertiseAddress() string
15+
GetDataPathAddress() string
1516
GetRemoteAddress() string
1617
ListenClusterEvents() <-chan struct{}
1718
AttachNetwork(string, string, []string) (*network.NetworkingConfig, error)

cmd/dnet/dnet.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -312,6 +312,10 @@ func (d *dnetConnection) GetAdvertiseAddress() string {
312312
return d.Orchestration.Bind
313313
}
314314

315+
func (d *dnetConnection) GetDataPathAddress() string {
316+
return d.Orchestration.Bind
317+
}
318+
315319
func (d *dnetConnection) GetLocalAddress() string {
316320
return d.Orchestration.Bind
317321
}

0 commit comments

Comments
 (0)