github.com/cristalhq/netx@v0.0.0-20221116164110-442313ef3309/listener_unix.go (about) 1 //go:build dragonfly || linux || freebsd || netbsd 2 3 package netx 4 5 import "syscall" 6 7 func setKeepAlive(fd, secs int) error { 8 if err := newError("setsockopt", syscall.SetsockoptInt(fd, syscall.SOL_SOCKET, syscall.SO_KEEPALIVE, 1)); err != nil { 9 return err 10 } 11 if err := newError("setsockopt", syscall.SetsockoptInt(fd, syscall.IPPROTO_TCP, syscall.TCP_KEEPINTVL, secs)); err != nil { 12 return err 13 } 14 if err := newError("setsockopt", syscall.SetsockoptInt(fd, syscall.IPPROTO_TCP, syscall.TCP_KEEPCNT, 1)); err != nil { 15 return err 16 } 17 return newError("setsockopt", syscall.SetsockoptInt(fd, syscall.IPPROTO_TCP, syscall.TCP_KEEPIDLE, secs)) 18 }