import (
"io"
- "log"
"golang.org/x/crypto/poly1305"
)
+const (
+ EtherSize = 14
+)
+
type TAP struct {
Name string
dev io.ReadWriter
synced bool
}
+func TAPMaxMTU() int {
+ return MTU - poly1305.TagSize - NonceSize - PktSizeSize - EtherSize
+}
+
func NewTAP(ifaceName string) (*TAP, error) {
- maxIfacePktSize := MTU - poly1305.TagSize - NonceSize
+ maxIfacePktSize := TAPMaxMTU() + EtherSize
tapRaw, err := newTAPer(ifaceName)
if err != nil {
return nil, err
return &tap, nil
}
-func (t *TAP) Write(data []byte) {
- if _, err := t.dev.Write(data); err != nil {
- log.Println("Error writing to iface: ", err)
- }
+func (t *TAP) Write(data []byte) (n int, err error) {
+ return t.dev.Write(data)
}