diff --git a/router/fastdp.go b/router/fastdp.go index 7208094a..e292c9f6 100644 --- a/router/fastdp.go +++ b/router/fastdp.go @@ -662,6 +662,10 @@ func (fwd *fastDatapathForwarder) ControlMessage(tag byte, msg []byte) { } } +func (fwd *fastDatapathForwarder) DisplayName() string { + return "fastdp" +} + func (fwd *fastDatapathForwarder) handleHeartbeatAck() { log.Debug(fwd.logPrefix(), "handleHeartbeatAck") diff --git a/router/overlay.go b/router/overlay.go index e8b44ab1..85e23e42 100644 --- a/router/overlay.go +++ b/router/overlay.go @@ -88,6 +88,9 @@ type OverlayForwarder interface { // compatibility, and should always be // ProtocolOverlayControlMessage for non-sleeve overlays. ControlMessage(tag byte, msg []byte) + + // User facing overlay name + DisplayName() string } type NullOverlay struct{} @@ -129,3 +132,7 @@ func (NullOverlay) Stop() { func (NullOverlay) ControlMessage(byte, []byte) { } + +func (NullOverlay) DisplayName() string { + return "null" +} diff --git a/router/overlay_switch.go b/router/overlay_switch.go index b2ae6af3..1022c5e3 100644 --- a/router/overlay_switch.go +++ b/router/overlay_switch.go @@ -393,3 +393,15 @@ func (fwd *overlaySwitchForwarder) ControlMessage(tag byte, msg []byte) { subFwd.ControlMessage(msg[1], msg[2:]) } } + +func (fwd *overlaySwitchForwarder) DisplayName() string { + fwd.lock.Lock() + best := fwd.best + fwd.lock.Unlock() + + if best == nil { + return "none" + } + + return best.DisplayName() +} diff --git a/router/sleeve.go b/router/sleeve.go index a2e2fd2e..e24956aa 100644 --- a/router/sleeve.go +++ b/router/sleeve.go @@ -593,6 +593,10 @@ func (fwd *sleeveForwarder) ControlMessage(tag byte, msg []byte) { } } +func (fwd *sleeveForwarder) DisplayName() string { + return "sleeve" +} + func (fwd *sleeveForwarder) Stop() { fwd.sleeve.removeForwarder(fwd.remotePeer.Name, fwd) diff --git a/router/status.go b/router/status.go index bbb10d41..f2e97c99 100644 --- a/router/status.go +++ b/router/status.go @@ -1,6 +1,7 @@ package router import ( + "fmt" "time" ) @@ -170,7 +171,9 @@ func NewLocalConnectionStatusSlice(cm *ConnectionMaker) []LocalConnectionStatus if conn.Established() { state = "established" } - slice = append(slice, LocalConnectionStatus{conn.RemoteTCPAddr(), conn.Outbound(), state, conn.Remote().String()}) + lc, _ := conn.(*LocalConnection) + info := fmt.Sprintf("%-6v %v", lc.forwarder.DisplayName(), conn.Remote()) + slice = append(slice, LocalConnectionStatus{conn.RemoteTCPAddr(), conn.Outbound(), state, info}) } for address, target := range cm.targets { add := func(state, info string) {