fix dtls connection

This commit is contained in:
ginuerzh
2022-12-23 18:56:58 +08:00
parent fb29d5c80e
commit bb106e2d89
11 changed files with 249 additions and 58 deletions

View File

@ -10,11 +10,13 @@ import (
)
const (
DefaultMTU = 1350
defaultMTU = 1350
defaultReadBufferSize = 4096
)
type metadata struct {
config *tun_util.Config
config *tun_util.Config
readBufferSize int
}
func (l *tunListener) parseMetadata(md mdata.Metadata) (err error) {
@ -28,13 +30,18 @@ func (l *tunListener) parseMetadata(md mdata.Metadata) (err error) {
gateway = "gw"
)
l.md.readBufferSize = mdutil.GetInt(md, "tun.rbuf", "rbuf", "readBufferSize")
if l.md.readBufferSize <= 0 {
l.md.readBufferSize = defaultReadBufferSize
}
config := &tun_util.Config{
Name: mdutil.GetString(md, name),
Peer: mdutil.GetString(md, peer),
MTU: mdutil.GetInt(md, mtu),
}
if config.MTU <= 0 {
config.MTU = DefaultMTU
config.MTU = defaultMTU
}
if gw := mdutil.GetString(md, gateway); gw != "" {
config.Gateway = net.ParseIP(gw)

View File

@ -12,11 +12,16 @@ const (
)
type tunDevice struct {
dev tun.Device
dev tun.Device
readBufferSize int
}
func (d *tunDevice) Read(p []byte) (n int, err error) {
b := bufpool.Get(tunOffsetBytes + 65535)
rbuf := d.readBufferSize
if rbuf <= tunOffsetBytes {
rbuf = defaultReadBufferSize
}
b := bufpool.Get(rbuf)
defer bufpool.Put(b)
n, err = d.dev.Read(*b, tunOffsetBytes)
@ -51,7 +56,8 @@ func (l *tunListener) createTunDevice() (dev io.ReadWriteCloser, name string, er
}
dev = &tunDevice{
dev: ifce,
dev: ifce,
readBufferSize: l.md.readBufferSize,
}
name, err = ifce.Name()