diff options
| author | Mikhail Osipov <mike.osipov@gmail.com> | 2020-12-16 15:27:48 +0300 |
|---|---|---|
| committer | Mikhail Osipov <mike.osipov@gmail.com> | 2020-12-16 15:27:48 +0300 |
| commit | 6fed9dd0dd62718f78eca11e30a71c2712636fbd (patch) | |
| tree | 8d1f90b96efbe8ea8aea350c283325adc216ef9d /pkg/server/socket/tun.go | |
| parent | 050ea053dd549f0dd01beddfcd74989858391fd7 (diff) | |
hook and socket args check fix, tests
Diffstat (limited to 'pkg/server/socket/tun.go')
| -rw-r--r-- | pkg/server/socket/tun.go | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/pkg/server/socket/tun.go b/pkg/server/socket/tun.go index d48c30c..3e673eb 100644 --- a/pkg/server/socket/tun.go +++ b/pkg/server/socket/tun.go @@ -8,10 +8,11 @@ import ( "os" "strings" "sync" + "unsafe" + "tunnel/pkg/pack" "tunnel/pkg/server/env" "tunnel/pkg/server/queue" - "unsafe" ) const maxTunBufSize = 65535 @@ -24,7 +25,7 @@ type ifReq struct { } type tunSocket struct { - name string + Name string `opts:"required"` } type tunConn struct { @@ -34,35 +35,30 @@ type tunConn struct { once sync.Once } -func newTunSocket(name string) (S, error) { - return &tunSocket{name: name}, nil - -} - func (s *tunSocket) String() string { - return fmt.Sprintf("tun/%s", s.name) + return fmt.Sprintf("tun/%s", s.Name) } func (s *tunSocket) Single() {} -func (s *tunSocket) Open(env.Env) (Conn, error) { +func (s *tunSocket) New(env.Env) (Conn, error) { fd, err := unix.Open("/dev/net/tun", unix.O_RDWR, 0) if err != nil { return nil, err } ifr := &ifReq{} - copy(ifr.name[:], s.name) + copy(ifr.name[:], s.Name) ifr.flags = unix.IFF_TUN | unix.IFF_NO_PI if err := ioctl(fd, unix.TUNSETIFF, unsafe.Pointer(ifr)); err != nil { unix.Close(fd) - return nil, fmt.Errorf("ioctl TUNSETIFF %s: %w", s.name, err) + return nil, fmt.Errorf("ioctl TUNSETIFF %s: %w", s.Name, err) } if err := unix.SetNonblock(fd, true); err != nil { unix.Close(fd) - return nil, fmt.Errorf("set nonblock %s: %w", s.name, err) + return nil, fmt.Errorf("set nonblock %s: %w", s.Name, err) } c := &tunConn{ @@ -124,3 +120,7 @@ func (c *tunConn) Close() error { return err } + +func init() { + register("tun", tunSocket{}) +} |
