github.com/Andyfoo/golang/x/net@v0.0.0-20190901054642-57c1bf301704/ipv6/helper.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 import ( 8 "errors" 9 "net" 10 "runtime" 11 ) 12 13 var ( 14 errInvalidConn = errors.New("invalid connection") 15 errMissingAddress = errors.New("missing address") 16 errHeaderTooShort = errors.New("header too short") 17 errInvalidConnType = errors.New("invalid conn type") 18 errNoSuchInterface = errors.New("no such interface") 19 errNotImplemented = errors.New("not implemented on " + runtime.GOOS + "/" + runtime.GOARCH) 20 ) 21 22 func boolint(b bool) int { 23 if b { 24 return 1 25 } 26 return 0 27 } 28 29 func netAddrToIP16(a net.Addr) net.IP { 30 switch v := a.(type) { 31 case *net.UDPAddr: 32 if ip := v.IP.To16(); ip != nil && ip.To4() == nil { 33 return ip 34 } 35 case *net.IPAddr: 36 if ip := v.IP.To16(); ip != nil && ip.To4() == nil { 37 return ip 38 } 39 } 40 return nil 41 } 42 43 func opAddr(a net.Addr) net.Addr { 44 switch a.(type) { 45 case *net.TCPAddr: 46 if a == nil { 47 return nil 48 } 49 case *net.UDPAddr: 50 if a == nil { 51 return nil 52 } 53 case *net.IPAddr: 54 if a == nil { 55 return nil 56 } 57 } 58 return a 59 }