MCPcopy Create free account
hub / github.com/encodeous/nylon / CreateTUNFromFile

Function CreateTUNFromFile

polyamide/tun/tun_darwin.go:135–177  ·  view source on GitHub ↗
(file *os.File, mtu int)

Source from the content-addressed store, hash-verified

133}
134
135func CreateTUNFromFile(file *os.File, mtu int) (Device, error) {
136 tun := &NativeTun{
137 tunFile: file,
138 events: make(chan Event, 10),
139 errors: make(chan error, 5),
140 }
141
142 name, err := tun.Name()
143 if err != nil {
144 tun.tunFile.Close()
145 return nil, err
146 }
147
148 tunIfindex, err := func() (int, error) {
149 iface, err := net.InterfaceByName(name)
150 if err != nil {
151 return -1, err
152 }
153 return iface.Index, nil
154 }()
155 if err != nil {
156 tun.tunFile.Close()
157 return nil, err
158 }
159
160 tun.routeSocket, err = socketCloexec(unix.AF_ROUTE, unix.SOCK_RAW, unix.AF_UNSPEC)
161 if err != nil {
162 tun.tunFile.Close()
163 return nil, err
164 }
165
166 go tun.routineRouteListener(tunIfindex)
167
168 if mtu > 0 {
169 err = tun.setMTU(mtu)
170 if err != nil {
171 tun.Close()
172 return nil, err
173 }
174 }
175
176 return tun, nil
177}
178
179func (tun *NativeTun) Name() (string, error) {
180 var err error

Callers 1

CreateTUNFunction · 0.70

Calls 6

NameMethod · 0.95
routineRouteListenerMethod · 0.95
setMTUMethod · 0.95
CloseMethod · 0.95
socketCloexecFunction · 0.85
CloseMethod · 0.65

Tested by

no test coverage detected