mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
net: add IP-level socket option helpers for Unix variants
Also reorganize socket options stuff but there are no API behavioral changes. R=rsc, fullung CC=golang-dev https://golang.org/cl/5494067
This commit is contained in:
parent
6a0e6cc7f4
commit
cbdbdc4f61
18 changed files with 1071 additions and 153 deletions
25
src/pkg/net/sockopt_linux.go
Normal file
25
src/pkg/net/sockopt_linux.go
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
// Copyright 2011 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.
|
||||
|
||||
// Socket options for Linux
|
||||
|
||||
package net
|
||||
|
||||
import (
|
||||
"syscall"
|
||||
)
|
||||
|
||||
func setKernelSpecificSockopt(s, f int) {
|
||||
// Allow reuse of recently-used addresses.
|
||||
syscall.SetsockoptInt(s, syscall.SOL_SOCKET, syscall.SO_REUSEADDR, 1)
|
||||
|
||||
// Allow broadcast.
|
||||
syscall.SetsockoptInt(s, syscall.SOL_SOCKET, syscall.SO_BROADCAST, 1)
|
||||
|
||||
if f == syscall.AF_INET6 {
|
||||
// using ip, tcp, udp, etc.
|
||||
// allow both protocols even if the OS default is otherwise.
|
||||
syscall.SetsockoptInt(s, syscall.IPPROTO_IPV6, syscall.IPV6_V6ONLY, 0)
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue