[netstack] Read link addresses correctly for virtual NICs

...by reading all link addresses from the LinkEndpoint interface, not
from ethernet device info.

Tested: CQ
Change-Id: I1306864bea41079f3623f4deab633414d119c11a
diff --git a/go/src/netstack/fuchsia_net_stack.go b/go/src/netstack/fuchsia_net_stack.go
index 7ce6521..7ba1ac6 100644
--- a/go/src/netstack/fuchsia_net_stack.go
+++ b/go/src/netstack/fuchsia_net_stack.go
@@ -54,7 +54,8 @@
 	var mac *ethernet.MacAddress
 	var path string
 	if eth := ifs.eth; eth != nil {
-		mac = &eth.Info.Mac
+		mac = &ethernet.MacAddress{}
+		copy(mac.Octets[:], ifs.statsEP.LinkAddress())
 		path = eth.Path
 	}
 
diff --git a/go/src/netstack/netstack_service.go b/go/src/netstack/netstack_service.go
index 386dce5..867acf0 100644
--- a/go/src/netstack/netstack_service.go
+++ b/go/src/netstack/netstack_service.go
@@ -60,11 +60,6 @@
 			flags |= netstack.NetInterfaceFlagDhcp
 		}
 
-		var mac []uint8
-		if eth := ifs.eth; eth != nil {
-			mac = eth.Info.Mac.Octets[:]
-		}
-
 		outif := netstack.NetInterface{
 			Id:        uint32(nicid),
 			Flags:     flags,
@@ -73,7 +68,7 @@
 			Addr:      fidlconv.ToNetIpAddress(ifs.nic.Addr),
 			Netmask:   fidlconv.ToNetIpAddress(tcpip.Address(ifs.nic.Netmask)),
 			Broadaddr: fidlconv.ToNetIpAddress(tcpip.Address(broadaddr)),
-			Hwaddr:    mac,
+			Hwaddr:    []uint8(ifs.statsEP.LinkAddress()[:]),
 			Ipv6addrs: toSubnets(ifs.nic.Ipv6addrs),
 		}