1 // Copyright 2013 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.
5 // +build darwin dragonfly freebsd linux netbsd openbsd solaris
9 import "golang.org/x/net/internal/socket"
11 func setControlMessage(c *socket.Conn, opt *rawOpt, cf ControlFlags, on bool) error {
14 if so, ok := sockOpts[ssoReceiveTrafficClass]; ok && cf&FlagTrafficClass != 0 {
15 if err := so.SetInt(c, boolint(on)); err != nil {
19 opt.set(FlagTrafficClass)
21 opt.clear(FlagTrafficClass)
24 if so, ok := sockOpts[ssoReceiveHopLimit]; ok && cf&FlagHopLimit != 0 {
25 if err := so.SetInt(c, boolint(on)); err != nil {
31 opt.clear(FlagHopLimit)
34 if so, ok := sockOpts[ssoReceivePacketInfo]; ok && cf&flagPacketInfo != 0 {
35 if err := so.SetInt(c, boolint(on)); err != nil {
39 opt.set(cf & flagPacketInfo)
41 opt.clear(cf & flagPacketInfo)
44 if so, ok := sockOpts[ssoReceivePathMTU]; ok && cf&FlagPathMTU != 0 {
45 if err := so.SetInt(c, boolint(on)); err != nil {
51 opt.clear(FlagPathMTU)