新TAP测试(TODO 解析arp)
This commit is contained in:
parent
b9dedde845
commit
5fadad660c
14
netcard.go
14
netcard.go
|
@ -21,6 +21,8 @@ import (
|
||||||
|
|
||||||
type NetTunnel struct {
|
type NetTunnel struct {
|
||||||
ifce *water.Interface
|
ifce *water.Interface
|
||||||
|
ifmac []byte
|
||||||
|
|
||||||
shutdown *perfectshutdown.PerfectShutdown
|
shutdown *perfectshutdown.PerfectShutdown
|
||||||
writer chan []byte
|
writer chan []byte
|
||||||
reader chan []byte
|
reader chan []byte
|
||||||
|
@ -78,6 +80,17 @@ func NewNetTunnel() *NetTunnel {
|
||||||
log.Panic(err)
|
log.Panic(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ifas, err := net.Interfaces()
|
||||||
|
if err != nil {
|
||||||
|
log.Panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, ifa := range ifas {
|
||||||
|
if ifa.Name == nt.ifce.Name() {
|
||||||
|
nt.ifmac = ifa.HardwareAddr[0:6]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
go func() {
|
go func() {
|
||||||
|
|
||||||
for rbuf := range nt.reader {
|
for rbuf := range nt.reader {
|
||||||
|
@ -134,6 +147,7 @@ func NewNetTunnel() *NetTunnel {
|
||||||
for wbuf := range nt.writer {
|
for wbuf := range nt.writer {
|
||||||
var frame ethernet.Frame = wbuf
|
var frame ethernet.Frame = wbuf
|
||||||
log.Printf("ifce write %d", len(frame))
|
log.Printf("ifce write %d", len(frame))
|
||||||
|
copy(frame[0:6], nt.ifmac)
|
||||||
_, err := nt.ifce.Write(frame)
|
_, err := nt.ifce.Write(frame)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println(err)
|
log.Println(err)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user