From b7ffc3996d8dd81d8f407056bf5c9661cd9d14ee Mon Sep 17 00:00:00 2001 From: fumiama Date: Thu, 30 Dec 2021 17:36:28 +0800 Subject: [PATCH] fix transfer --- gold/link/link.go | 4 ++-- gold/link/router.go | 11 ++++++----- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/gold/link/link.go b/gold/link/link.go index 115915c..347b755 100644 --- a/gold/link/link.go +++ b/gold/link/link.go @@ -88,11 +88,11 @@ func (l *Link) Write(p *head.Packet, istransfer bool) (n int, err error) { } logrus.Debugln("[link] write", len(d), "bytes data") if err == nil { - peerlink := l.me.router.NextHop(l.peerip.String()) + peerlink := l.me.router.NextHop(p.Dst.String()) if peerlink != nil { peerep := peerlink.endpoint if peerep == nil { - return 0, errors.New("[link] nil endpoint of " + l.peerip.String()) + return 0, errors.New("[link] nil endpoint of " + p.Dst.String()) } logrus.Infoln("[link] write data from ep", l.me.myconn.LocalAddr(), "to", peerep) n, err = l.me.myconn.WriteToUDP(d, peerep) diff --git a/gold/link/router.go b/gold/link/router.go index 3c43ef2..23afcce 100644 --- a/gold/link/router.go +++ b/gold/link/router.go @@ -40,11 +40,11 @@ func (r *Router) SetDefault(l *Link) { } // NextHop 得到前往 ip 的下一跳的 link -func (r *Router) NextHop(ip string) *Link { +func (r *Router) NextHop(ip string) (l *Link) { ipb := net.ParseIP(ip) if ipb == nil { logrus.Errorln("[router] nil ip") - return nil + return } // TODO: 遍历 r.table,得到正确的下一跳 @@ -54,14 +54,15 @@ func (r *Router) NextHop(ip string) *Link { for _, c := range r.list { if c.Contains(ipb) { - logrus.Infoln("[router] get nexthop to", ipb, "-->", c) - return r.table[c.String()] + l = r.table[c.String()] + logrus.Infoln("[router] get nexthop to", ipb, "-->", c, "link", l) + return l } } logrus.Errorln("[router] cannot find nexthop for ip:", ipb) - return nil + return } // SetItem 添加一条表项