增加 macvtap 模式支持

This commit is contained in:
bjdgyc
2021-08-12 18:17:20 +08:00
parent 5010d2ecbd
commit 903554533b
19 changed files with 295 additions and 125 deletions

View File

@@ -4,6 +4,8 @@ import (
"net"
"sync"
"time"
"github.com/bjdgyc/anylink/pkg/utils"
)
const (
@@ -16,7 +18,7 @@ const (
)
var (
table = make(map[string]*Addr)
table = make(map[string]*Addr, 128)
tableMu sync.RWMutex
)
@@ -40,25 +42,25 @@ func Lookup(ip net.IP, onlyTable bool) *Addr {
// Add adds a IP-MAC map to a runtime ARP table.
func tableLookup(ip net.IP) *Addr {
tableMu.Lock()
tableMu.RLock()
addr := table[ip.To4().String()]
tableMu.Unlock()
tableMu.RUnlock()
if addr == nil {
return nil
}
// 判断老化过期时间
tsub := time.Since(addr.disTime)
tSub := utils.NowSec().Sub(addr.disTime)
switch addr.Type {
case TypeStatic:
case TypeNormal:
if tsub > StaleTimeNormal {
if tSub > StaleTimeNormal {
return nil
}
case TypeUnreachable:
if tsub > StaleTimeUnreachable {
if tSub > StaleTimeUnreachable {
return nil
}
case TypeStatic:
}
return addr
@@ -70,7 +72,7 @@ func Add(addr *Addr) {
return
}
if addr.disTime.IsZero() {
addr.disTime = time.Now()
addr.disTime = utils.NowSec()
}
ip := addr.IP.To4().String()
tableMu.Lock()