Make Interface.Inside an interface type (#252)

This commit updates the Interface.Inside type to be a new interface
type instead of a *Tun. This will allow for an inside interface
that does not use a tun device, such as a single-binary client that
can run without elevated privileges.
This commit is contained in:
forfuncsake
2020-07-28 22:53:16 +10:00
committed by GitHub
parent 4756c9613d
commit 9b06748506
7 changed files with 63 additions and 6 deletions

View File

@@ -30,13 +30,13 @@ func newTunFromFd(deviceFd int, cidr *net.IPNet, defaultMTU int, routes []route,
file := os.NewFile(uintptr(deviceFd), "/dev/tun")
ifce = &Tun{
Cidr: cidr,
Device: "iOS",
ReadWriteCloser: &tunReadCloser{f: file},
}
return
}
func (c *Tun) Activate() error {
c.Device = "iOS"
return nil
}
@@ -103,3 +103,11 @@ func (t *tunReadCloser) Write(from []byte) (int, error) {
func (t *tunReadCloser) Close() error {
return t.f.Close()
}
func (c *Tun) CidrNet() *net.IPNet {
return c.Cidr
}
func (c *Tun) DeviceName() string {
return c.Device
}