fix: fix forward route table

This commit is contained in:
邹颖玖
2021-11-21 13:21:24 +08:00
parent 38f5cc19c3
commit d4c48c8db7
4 changed files with 13 additions and 3 deletions

View File

@@ -1,6 +1,6 @@
language: go
go:
- 1.13
- 1.16
before_install:
install:
before_script:

View File

@@ -33,6 +33,7 @@ func (f *Forward) Serve() error {
break
}
logs.Debug("accept new connection: %v", conn.RemoteAddr())
go f.forward(conn)
}

View File

@@ -31,7 +31,11 @@ func Main() {
// initial next hop dialer
dialerCfg := cfg.NexthopConfig
routeTable := NewRouteTable()
routeTable.Add(dialerCfg.Scheme, dialerCfg.NexthopAddr, dialerCfg.RawConfig)
err = routeTable.Add(dialerCfg.Scheme, dialerCfg.NexthopAddr, dialerCfg.RawConfig)
if err != nil {
logs.Error("add route table fail: %v", err)
return
}
f := NewForward(listener, routeTable)

View File

@@ -2,6 +2,7 @@ package forward
import (
"fmt"
"github.com/ICKelin/gtun/internal/logs"
"github.com/ICKelin/gtun/transport"
"github.com/ICKelin/gtun/transport/transport_api"
"math"
@@ -53,6 +54,7 @@ func (r *RouteTable) Add(scheme, addr, cfg string) error {
r.tableMu.Lock()
defer r.tableMu.Unlock()
r.table[entryKey] = entry
logs.Debug("add route table: %s %+v", entryKey, entry)
return nil
}
@@ -77,7 +79,10 @@ func (r *RouteTable) Route() (*RouteEntry, error) {
entry, ok := r.table[r.minRttKey]
if !ok {
return nil, errNoRoute
for _, e := range r.table {
entry = e
break
}
}
return entry, nil