diff --git a/router/handler_ctrl/dial.go b/router/handler_ctrl/dial.go index 16fc37644..134c7fa1e 100644 --- a/router/handler_ctrl/dial.go +++ b/router/handler_ctrl/dial.go @@ -66,7 +66,8 @@ func (self *dialHandler) handle(msg *channel2.Message, _ channel2.Channel) { if err := proto.Unmarshal(msg.Body, dial); err == nil { linkId := self.id.ShallowCloneWithNewToken(dial.LinkId) if len(self.dialers) == 1 { - if err := self.dialers[0].Dial(dial.Address, linkId); err == nil { + logrus.Infof("dialing link to [r/%s]", dial.RouterId) + if err := self.dialers[0].Dial(dial.Address, linkId, self.id.Token); err == nil { if err := self.sendLinkMessage(linkId); err != nil { logrus.Errorf("error sending link message [l/%s] (%v)", linkId.Token, err) } diff --git a/router/xlink/xlink.go b/router/xlink/xlink.go index 959b1b3db..f32d0da9c 100644 --- a/router/xlink/xlink.go +++ b/router/xlink/xlink.go @@ -38,7 +38,7 @@ type Accepter interface { } type Dialer interface { - Dial(address string, id *identity.TokenId) error + Dial(address string, id *identity.TokenId, routerId string) error } type Xlink interface { diff --git a/router/xlink_transport/dialer.go b/router/xlink_transport/dialer.go index ab588a6b7..1f7b89b19 100644 --- a/router/xlink_transport/dialer.go +++ b/router/xlink_transport/dialer.go @@ -26,7 +26,7 @@ import ( "github.com/sirupsen/logrus" ) -func (self *dialer) Dial(addressString string, linkId *identity.TokenId) error { +func (self *dialer) Dial(addressString string, linkId *identity.TokenId, routerId string) error { address, err := transport.ParseAddress(addressString) if err != nil { return fmt.Errorf("error parsing link address [%s] (%w)", addressString, err) @@ -36,8 +36,9 @@ func (self *dialer) Dial(addressString string, linkId *identity.TokenId) error { connId := uuid.New().String() payloadDialer := channel2.NewClassicDialer(linkId, address, map[int32][]byte{ - LinkHeaderConnId: []byte(connId), - LinkHeaderType: {PayloadChannel}, + LinkHeaderRouterId: []byte(routerId), + LinkHeaderConnId: []byte(connId), + LinkHeaderType: {PayloadChannel}, }) logrus.Infof("dialing payload channel for link [l/%s]", linkId.Token) diff --git a/router/xlink_transport/factory.go b/router/xlink_transport/factory.go index 4cefeb387..416790be7 100644 --- a/router/xlink_transport/factory.go +++ b/router/xlink_transport/factory.go @@ -24,8 +24,9 @@ import ( ) const ( - LinkHeaderConnId = 0 - LinkHeaderType = 1 + LinkHeaderConnId = 0 + LinkHeaderType = 1 + LinkHeaderRouterId = 2 PayloadChannel = 1 AckChannel = 2 diff --git a/router/xlink_transport/listener.go b/router/xlink_transport/listener.go index 1a7e613ef..cd444c322 100644 --- a/router/xlink_transport/listener.go +++ b/router/xlink_transport/listener.go @@ -62,6 +62,9 @@ func (self *listener) acceptLoop() { headers := ch.Underlay().Headers() channelType := byte(0) if headers != nil { + if v, ok := headers[LinkHeaderRouterId]; ok { + logrus.Infof("accepting link from [r/%s]", string(v)) + } if val, ok := headers[LinkHeaderType]; ok { channelType = val[0] }