aboutsummaryrefslogtreecommitdiff
path: root/libgo/go/net/interface_plan9.go
diff options
context:
space:
mode:
authorIan Lance Taylor <iant@golang.org>2020-01-02 15:05:27 -0800
committerIan Lance Taylor <iant@golang.org>2020-01-21 23:53:22 -0800
commit5a8ea165926cb0737ab03bc48c18dc5198ab5305 (patch)
tree962dc3357c57f019f85658f99e2e753e30201c27 /libgo/go/net/interface_plan9.go
parent6ac6529e155c9baa0aaaed7aca06bd38ebda5b43 (diff)
downloadgcc-5a8ea165926cb0737ab03bc48c18dc5198ab5305.zip
gcc-5a8ea165926cb0737ab03bc48c18dc5198ab5305.tar.gz
gcc-5a8ea165926cb0737ab03bc48c18dc5198ab5305.tar.bz2
libgo: update to Go1.14beta1
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/214297
Diffstat (limited to 'libgo/go/net/interface_plan9.go')
-rw-r--r--libgo/go/net/interface_plan9.go61
1 files changed, 29 insertions, 32 deletions
diff --git a/libgo/go/net/interface_plan9.go b/libgo/go/net/interface_plan9.go
index 8fe9138..1295017 100644
--- a/libgo/go/net/interface_plan9.go
+++ b/libgo/go/net/interface_plan9.go
@@ -143,8 +143,8 @@ func interfaceAddrTable(ifi *Interface) ([]Addr, error) {
ifcs = []Interface{*ifi}
}
- addrs := make([]Addr, len(ifcs))
- for i, ifc := range ifcs {
+ var addrs []Addr
+ for _, ifc := range ifcs {
status := ifc.Name + "/status"
statusf, err := open(status)
if err != nil {
@@ -157,39 +157,36 @@ func interfaceAddrTable(ifi *Interface) ([]Addr, error) {
if _, ok := statusf.readLine(); !ok {
return nil, errors.New("cannot read header line for interface: " + status)
}
- line, ok := statusf.readLine()
- if !ok {
- return nil, errors.New("cannot read IP address for interface: " + status)
- }
- // This assumes only a single address for the interface.
- fields := getFields(line)
- if len(fields) < 1 {
- return nil, errors.New("cannot parse IP address for interface: " + status)
- }
- addr := fields[0]
- ip := ParseIP(addr)
- if ip == nil {
- return nil, errors.New("cannot parse IP address for interface: " + status)
- }
+ for line, ok := statusf.readLine(); ok; line, ok = statusf.readLine() {
+ fields := getFields(line)
+ if len(fields) < 1 {
+ return nil, errors.New("cannot parse IP address for interface: " + status)
+ }
+ addr := fields[0]
+ ip := ParseIP(addr)
+ if ip == nil {
+ return nil, errors.New("cannot parse IP address for interface: " + status)
+ }
- // The mask is represented as CIDR relative to the IPv6 address.
- // Plan 9 internal representation is always IPv6.
- maskfld := fields[1]
- maskfld = maskfld[1:]
- pfxlen, _, ok := dtoi(maskfld)
- if !ok {
- return nil, errors.New("cannot parse network mask for interface: " + status)
- }
- var mask IPMask
- if ip.To4() != nil { // IPv4 or IPv6 IPv4-mapped address
- mask = CIDRMask(pfxlen-8*len(v4InV6Prefix), 8*IPv4len)
- }
- if ip.To16() != nil && ip.To4() == nil { // IPv6 address
- mask = CIDRMask(pfxlen, 8*IPv6len)
- }
+ // The mask is represented as CIDR relative to the IPv6 address.
+ // Plan 9 internal representation is always IPv6.
+ maskfld := fields[1]
+ maskfld = maskfld[1:]
+ pfxlen, _, ok := dtoi(maskfld)
+ if !ok {
+ return nil, errors.New("cannot parse network mask for interface: " + status)
+ }
+ var mask IPMask
+ if ip.To4() != nil { // IPv4 or IPv6 IPv4-mapped address
+ mask = CIDRMask(pfxlen-8*len(v4InV6Prefix), 8*IPv4len)
+ }
+ if ip.To16() != nil && ip.To4() == nil { // IPv6 address
+ mask = CIDRMask(pfxlen, 8*IPv6len)
+ }
- addrs[i] = &IPNet{IP: ip, Mask: mask}
+ addrs = append(addrs, &IPNet{IP: ip, Mask: mask})
+ }
}
return addrs, nil