@@ -143,7 +143,7 @@ func tunName(fd uintptr) (string, error) {
143143
144144// Destroy a named system interface
145145func tunDestroy (name string ) error {
146- fd , err := unix .Socket (unix .AF_INET , unix .SOCK_DGRAM , 0 )
146+ fd , err := unix .Socket (unix .AF_INET , unix .SOCK_DGRAM | unix . SOCK_CLOEXEC , 0 )
147147 if err != nil {
148148 return err
149149 }
@@ -170,7 +170,7 @@ func CreateTUN(name string, mtu int) (Device, error) {
170170 return nil , fmt .Errorf ("interface %s already exists" , name )
171171 }
172172
173- tunFile , err := os .OpenFile ("/dev/tun" , unix .O_RDWR , 0 )
173+ tunFile , err := os .OpenFile ("/dev/tun" , unix .O_RDWR | unix . O_CLOEXEC , 0 )
174174 if err != nil {
175175 return nil , err
176176 }
@@ -213,7 +213,7 @@ func CreateTUN(name string, mtu int) (Device, error) {
213213 // Disable link-local v6, not just because WireGuard doesn't do that anyway, but
214214 // also because there are serious races with attaching and detaching LLv6 addresses
215215 // in relation to interface lifetime within the FreeBSD kernel.
216- confd6 , err := unix .Socket (unix .AF_INET6 , unix .SOCK_DGRAM , 0 )
216+ confd6 , err := unix .Socket (unix .AF_INET6 , unix .SOCK_DGRAM | unix . SOCK_CLOEXEC , 0 )
217217 if err != nil {
218218 tunFile .Close ()
219219 tunDestroy (assignedName )
@@ -238,7 +238,7 @@ func CreateTUN(name string, mtu int) (Device, error) {
238238 }
239239
240240 if name != "" {
241- confd , err := unix .Socket (unix .AF_INET , unix .SOCK_DGRAM , 0 )
241+ confd , err := unix .Socket (unix .AF_INET , unix .SOCK_DGRAM | unix . SOCK_CLOEXEC , 0 )
242242 if err != nil {
243243 tunFile .Close ()
244244 tunDestroy (assignedName )
@@ -295,7 +295,7 @@ func CreateTUNFromFile(file *os.File, mtu int) (Device, error) {
295295 return nil , err
296296 }
297297
298- tun .routeSocket , err = unix .Socket (unix .AF_ROUTE , unix .SOCK_RAW , unix .AF_UNSPEC )
298+ tun .routeSocket , err = unix .Socket (unix .AF_ROUTE , unix .SOCK_RAW | unix . SOCK_CLOEXEC , unix .AF_UNSPEC )
299299 if err != nil {
300300 tun .tunFile .Close ()
301301 return nil , err
@@ -397,7 +397,7 @@ func (tun *NativeTun) Close() error {
397397}
398398
399399func (tun * NativeTun ) setMTU (n int ) error {
400- fd , err := unix .Socket (unix .AF_INET , unix .SOCK_DGRAM , 0 )
400+ fd , err := unix .Socket (unix .AF_INET , unix .SOCK_DGRAM | unix . SOCK_CLOEXEC , 0 )
401401 if err != nil {
402402 return err
403403 }
@@ -414,7 +414,7 @@ func (tun *NativeTun) setMTU(n int) error {
414414}
415415
416416func (tun * NativeTun ) MTU () (int , error ) {
417- fd , err := unix .Socket (unix .AF_INET , unix .SOCK_DGRAM , 0 )
417+ fd , err := unix .Socket (unix .AF_INET , unix .SOCK_DGRAM | unix . SOCK_CLOEXEC , 0 )
418418 if err != nil {
419419 return 0 , err
420420 }
0 commit comments