github.com/lianghucheng/zrddz@v0.0.0-20200923083010-c71f680932e2/src/golang.org/x/net/ipv6/genericopt.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 package ipv6 6 7 // TrafficClass returns the traffic class field value for outgoing 8 // packets. 9 func (c *genericOpt) TrafficClass() (int, error) { 10 if !c.ok() { 11 return 0, errInvalidConn 12 } 13 so, ok := sockOpts[ssoTrafficClass] 14 if !ok { 15 return 0, errNotImplemented 16 } 17 return so.GetInt(c.Conn) 18 } 19 20 // SetTrafficClass sets the traffic class field value for future 21 // outgoing packets. 22 func (c *genericOpt) SetTrafficClass(tclass int) error { 23 if !c.ok() { 24 return errInvalidConn 25 } 26 so, ok := sockOpts[ssoTrafficClass] 27 if !ok { 28 return errNotImplemented 29 } 30 return so.SetInt(c.Conn, tclass) 31 } 32 33 // HopLimit returns the hop limit field value for outgoing packets. 34 func (c *genericOpt) HopLimit() (int, error) { 35 if !c.ok() { 36 return 0, errInvalidConn 37 } 38 so, ok := sockOpts[ssoHopLimit] 39 if !ok { 40 return 0, errNotImplemented 41 } 42 return so.GetInt(c.Conn) 43 } 44 45 // SetHopLimit sets the hop limit field value for future outgoing 46 // packets. 47 func (c *genericOpt) SetHopLimit(hoplim int) error { 48 if !c.ok() { 49 return errInvalidConn 50 } 51 so, ok := sockOpts[ssoHopLimit] 52 if !ok { 53 return errNotImplemented 54 } 55 return so.SetInt(c.Conn, hoplim) 56 }