...

Source file src/vendor/golang.org/x/net/lif/lif.go

     1	// Copyright 2016 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 solaris
     6	
     7	// Package lif provides basic functions for the manipulation of
     8	// logical network interfaces and interface addresses on Solaris.
     9	//
    10	// The package supports Solaris 11 or above.
    11	package lif
    12	
    13	import "syscall"
    14	
    15	type endpoint struct {
    16		af int
    17		s  uintptr
    18	}
    19	
    20	func (ep *endpoint) close() error {
    21		return syscall.Close(int(ep.s))
    22	}
    23	
    24	func newEndpoints(af int) ([]endpoint, error) {
    25		var lastErr error
    26		var eps []endpoint
    27		afs := []int{sysAF_INET, sysAF_INET6}
    28		if af != sysAF_UNSPEC {
    29			afs = []int{af}
    30		}
    31		for _, af := range afs {
    32			s, err := syscall.Socket(af, sysSOCK_DGRAM, 0)
    33			if err != nil {
    34				lastErr = err
    35				continue
    36			}
    37			eps = append(eps, endpoint{af: af, s: uintptr(s)})
    38		}
    39		if len(eps) == 0 {
    40			return nil, lastErr
    41		}
    42		return eps, nil
    43	}
    44	

View as plain text