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  }