github.com/varialus/godfly@v0.0.0-20130904042352-1934f9f095ab/src/pkg/net/tcpsockopt_openbsd.go (about) 1 // Copyright 2009 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 // TCP socket options for openbsd 6 7 package net 8 9 import ( 10 "os" 11 "syscall" 12 "time" 13 ) 14 15 // Set keep alive period. 16 func setKeepAlivePeriod(fd *netFD, d time.Duration) error { 17 if err := fd.incref(); err != nil { 18 return err 19 } 20 defer fd.decref() 21 22 // The kernel expects seconds so round to next highest second. 23 d += (time.Second - time.Nanosecond) 24 secs := int(d.Seconds()) 25 26 return os.NewSyscallError("setsockopt", syscall.SetsockoptInt(fd.sysfd, syscall.IPPROTO_TCP, syscall.SO_KEEPALIVE, secs)) 27 }