mirror of
https://github.com/fumiama/water.git
synced 2026-06-07 03:00:28 +08:00
darwin: Detects IP Ver. for NULL Header on Write
Adds the ability for both IPv4 and IPv6 to be written to the TUN device.
This commit is contained in:
@@ -159,7 +159,16 @@ func (t *tunReadCloser) Write(from []byte) (int, error) {
|
||||
}
|
||||
t.wBuf = t.wBuf[:len(from)+4]
|
||||
|
||||
t.wBuf[3] = 2 // Family: IP (2)
|
||||
// Determine the IP Family for the NULL L2 Header
|
||||
ipVer := from[0] >> 4
|
||||
if ipVer == 4 {
|
||||
t.wBuf[3] = syscall.AF_INET
|
||||
} else if ipVer == 6 {
|
||||
t.wBuf[3] = syscall.AF_INET6
|
||||
} else {
|
||||
return 0, errors.New("Unable to determine IP version from packet.")
|
||||
}
|
||||
|
||||
copy(t.wBuf[4:], from)
|
||||
|
||||
n, err := t.f.Write(t.wBuf)
|
||||
|
||||
Reference in New Issue
Block a user