mirror of
https://github.com/ICKelin/gtun.git
synced 2025-09-26 19:11:15 +08:00
fix: fix forward route table
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
language: go
|
language: go
|
||||||
go:
|
go:
|
||||||
- 1.13
|
- 1.16
|
||||||
before_install:
|
before_install:
|
||||||
install:
|
install:
|
||||||
before_script:
|
before_script:
|
||||||
|
@@ -33,6 +33,7 @@ func (f *Forward) Serve() error {
|
|||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
|
logs.Debug("accept new connection: %v", conn.RemoteAddr())
|
||||||
go f.forward(conn)
|
go f.forward(conn)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -31,7 +31,11 @@ func Main() {
|
|||||||
// initial next hop dialer
|
// initial next hop dialer
|
||||||
dialerCfg := cfg.NexthopConfig
|
dialerCfg := cfg.NexthopConfig
|
||||||
routeTable := NewRouteTable()
|
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)
|
f := NewForward(listener, routeTable)
|
||||||
|
|
||||||
|
@@ -2,6 +2,7 @@ package forward
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"github.com/ICKelin/gtun/internal/logs"
|
||||||
"github.com/ICKelin/gtun/transport"
|
"github.com/ICKelin/gtun/transport"
|
||||||
"github.com/ICKelin/gtun/transport/transport_api"
|
"github.com/ICKelin/gtun/transport/transport_api"
|
||||||
"math"
|
"math"
|
||||||
@@ -53,6 +54,7 @@ func (r *RouteTable) Add(scheme, addr, cfg string) error {
|
|||||||
r.tableMu.Lock()
|
r.tableMu.Lock()
|
||||||
defer r.tableMu.Unlock()
|
defer r.tableMu.Unlock()
|
||||||
r.table[entryKey] = entry
|
r.table[entryKey] = entry
|
||||||
|
logs.Debug("add route table: %s %+v", entryKey, entry)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -77,7 +79,10 @@ func (r *RouteTable) Route() (*RouteEntry, error) {
|
|||||||
|
|
||||||
entry, ok := r.table[r.minRttKey]
|
entry, ok := r.table[r.minRttKey]
|
||||||
if !ok {
|
if !ok {
|
||||||
return nil, errNoRoute
|
for _, e := range r.table {
|
||||||
|
entry = e
|
||||||
|
break
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return entry, nil
|
return entry, nil
|
||||||
|
Reference in New Issue
Block a user