1 // Copyright 2012 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 ipv4
6 7 // TOS returns the type-of-service field value for outgoing packets.
8 func (c *genericOpt) TOS() (int, error) {
9 if !c.ok() {
10 return 0, errInvalidConn
11 }
12 so, ok := sockOpts[ssoTOS]
13 if !ok {
14 return 0, errNotImplemented
15 }
16 return so.GetInt(c.Conn)
17 }
18 19 // SetTOS sets the type-of-service field value for future outgoing
20 // packets.
21 func (c *genericOpt) SetTOS(tos int) error {
22 if !c.ok() {
23 return errInvalidConn
24 }
25 so, ok := sockOpts[ssoTOS]
26 if !ok {
27 return errNotImplemented
28 }
29 return so.SetInt(c.Conn, tos)
30 }
31 32 // TTL returns the time-to-live field value for outgoing packets.
33 func (c *genericOpt) TTL() (int, error) {
34 if !c.ok() {
35 return 0, errInvalidConn
36 }
37 so, ok := sockOpts[ssoTTL]
38 if !ok {
39 return 0, errNotImplemented
40 }
41 return so.GetInt(c.Conn)
42 }
43 44 // SetTTL sets the time-to-live field value for future outgoing
45 // packets.
46 func (c *genericOpt) SetTTL(ttl int) error {
47 if !c.ok() {
48 return errInvalidConn
49 }
50 so, ok := sockOpts[ssoTTL]
51 if !ok {
52 return errNotImplemented
53 }
54 return so.SetInt(c.Conn, ttl)
55 }
56