genericopt.go raw

   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