mirror of
https://github.com/openziti/ziti.git
synced 2026-10-12 07:18:36 +00:00
Wire router ids through both the dialer and listener side of xlink. (#238)
This commit is contained in:
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -24,8 +24,9 @@ import (
|
||||
)
|
||||
|
||||
const (
|
||||
LinkHeaderConnId = 0
|
||||
LinkHeaderType = 1
|
||||
LinkHeaderConnId = 0
|
||||
LinkHeaderType = 1
|
||||
LinkHeaderRouterId = 2
|
||||
|
||||
PayloadChannel = 1
|
||||
AckChannel = 2
|
||||
|
||||
@@ -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]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user