// Copyright 2009 The Go Authors. All rights reserved.// Use of this source code is governed by a BSD-style// license that can be found in the LICENSE file.// +build dragonfly freebsd linux netbsdpackagenetimport("os""syscall""time")// Set keep alive period.funcsetKeepAlivePeriod(fd*netFD,dtime.Duration)error{iferr:=fd.incref();err!=nil{returnerr}deferfd.decref()// The kernel expects seconds so round to next highest second.d+=(time.Second-time.Nanosecond)secs:=int(d.Seconds())err:=os.NewSyscallError("setsockopt",syscall.SetsockoptInt(fd.sysfd,syscall.IPPROTO_TCP,syscall.TCP_KEEPINTVL,secs))iferr!=nil{returnerr}returnos.NewSyscallError("setsockopt",syscall.SetsockoptInt(fd.sysfd,syscall.IPPROTO_TCP,syscall.TCP_KEEPIDLE,secs))}