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.
16 func (af addrFamily) String() string {
25 return fmt.Sprintf("%d", af)
29 const hexDigit = "0123456789abcdef"
33 func (a llAddr) String() string {
37 buf := make([]byte, 0, len(a)*3-1)
40 buf = append(buf, ':')
42 buf = append(buf, hexDigit[b>>4])
43 buf = append(buf, hexDigit[b&0xF])
50 func (a ipAddr) String() string {
55 return fmt.Sprintf("%d.%d.%d.%d", a[0], a[1], a[2], a[3])
58 return fmt.Sprintf("%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x", a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], a[13], a[14], a[15])
60 s := make([]byte, len(a)*2)
61 for i, tn := range a {
62 s[i*2], s[i*2+1] = hexDigit[tn>>4], hexDigit[tn&0xf]
67 func (a *Inet4Addr) String() string {
68 return fmt.Sprintf("(%s %s %d)", addrFamily(a.Family()), ipAddr(a.IP[:]), a.PrefixLen)
71 func (a *Inet6Addr) String() string {
72 return fmt.Sprintf("(%s %s %d %d)", addrFamily(a.Family()), ipAddr(a.IP[:]), a.PrefixLen, a.ZoneID)
75 type addrPack struct {
80 func addrPacks() ([]addrPack, error) {
83 for _, af := range [...]int{sysAF_UNSPEC, sysAF_INET, sysAF_INET6} {
84 as, err := Addrs(af, "")
89 aps = append(aps, addrPack{af: af, as: as})
94 func TestAddrs(t *testing.T) {
95 aps, err := addrPacks()
96 if len(aps) == 0 && err != nil {
99 lps, err := linkPacks()
100 if len(lps) == 0 && err != nil {
103 for _, lp := range lps {
105 for _, ll := range lp.lls {
106 as, err := Addrs(lp.af, ll.Name)
108 t.Fatal(lp.af, ll.Name, err)
110 t.Logf("af=%s name=%s %v", addrFamily(lp.af), ll.Name, as)
113 for _, ap := range aps {
118 t.Errorf("af=%s got %d; want %d", addrFamily(lp.af), n, len(ap.as))