github.com/graybobo/golang.org-package-offline-cache@v0.0.0-20200626051047-6608995c132f/x/net/ipv6/genericopt_posix.go (about) 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. 4 5 // +build darwin dragonfly freebsd linux netbsd openbsd windows 6 7 package ipv6 8 9 import "syscall" 10 11 // TrafficClass returns the traffic class field value for outgoing 12 // packets. 13 func (c *genericOpt) TrafficClass() (int, error) { 14 if !c.ok() { 15 return 0, syscall.EINVAL 16 } 17 fd, err := c.sysfd() 18 if err != nil { 19 return 0, err 20 } 21 return getInt(fd, &sockOpts[ssoTrafficClass]) 22 } 23 24 // SetTrafficClass sets the traffic class field value for future 25 // outgoing packets. 26 func (c *genericOpt) SetTrafficClass(tclass int) error { 27 if !c.ok() { 28 return syscall.EINVAL 29 } 30 fd, err := c.sysfd() 31 if err != nil { 32 return err 33 } 34 return setInt(fd, &sockOpts[ssoTrafficClass], tclass) 35 } 36 37 // HopLimit returns the hop limit field value for outgoing packets. 38 func (c *genericOpt) HopLimit() (int, error) { 39 if !c.ok() { 40 return 0, syscall.EINVAL 41 } 42 fd, err := c.sysfd() 43 if err != nil { 44 return 0, err 45 } 46 return getInt(fd, &sockOpts[ssoHopLimit]) 47 } 48 49 // SetHopLimit sets the hop limit field value for future outgoing 50 // packets. 51 func (c *genericOpt) SetHopLimit(hoplim int) error { 52 if !c.ok() { 53 return syscall.EINVAL 54 } 55 fd, err := c.sysfd() 56 if err != nil { 57 return err 58 } 59 return setInt(fd, &sockOpts[ssoHopLimit], hoplim) 60 }