diff --git a/src/connectivity/network/netstack/fuchsia_net_stack.go b/src/connectivity/network/netstack/fuchsia_net_stack.go
index 8e7fa5e..c254edf 100644
--- a/src/connectivity/network/netstack/fuchsia_net_stack.go
+++ b/src/connectivity/network/netstack/fuchsia_net_stack.go
@@ -72,7 +72,7 @@
 			Mtu:                  uint32(ifs.endpoint.MTU()),
 			AdministrativeStatus: administrativeStatus,
 			PhysicalStatus:       physicalStatus,
-			Features:             ifs.mu.nic.Features,
+			Features:             ifs.features,
 			Addresses:            addrs,
 		},
 	}
diff --git a/src/connectivity/network/netstack/netiface/netiface.go b/src/connectivity/network/netstack/netiface/netiface.go
deleted file mode 100644
index 4b0aca9..0000000
--- a/src/connectivity/network/netstack/netiface/netiface.go
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2017 The Fuchsia Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package netiface
-
-import (
-	"netstack/routes"
-
-	"github.com/google/netstack/tcpip"
-)
-
-// TODO(NET-1223):This should be moved into netstack.go.
-type NIC struct {
-	IsDynamicAddr bool
-	Name          string
-	Features      uint32
-	Metric        routes.Metric // used as a default for routes that use this NIC
-	DNSServers    []tcpip.Address
-}
diff --git a/src/connectivity/network/netstack/netstack.go b/src/connectivity/network/netstack/netstack.go
index 3db5f82..c3879bc 100644
--- a/src/connectivity/network/netstack/netstack.go
+++ b/src/connectivity/network/netstack/netstack.go
@@ -18,7 +18,6 @@
 	"netstack/link"
 	"netstack/link/bridge"
 	"netstack/link/eth"
-	"netstack/netiface"
 	"netstack/routes"
 	"netstack/util"
 
@@ -84,12 +83,17 @@
 	ns    *Netstack
 	eth   link.Controller
 	nicid tcpip.NICID
-	mu    struct {
+	// features can include any value that's valid in fuchsia.hardware.ethernet.Info.features.
+	features uint32
+	mu       struct {
 		sync.Mutex
-		state link.State
-		// TODO(NET-1223): remove and replace with refs to stack via ns
-		nic  *netiface.NIC
-		dhcp struct {
+		state          link.State
+		hasDynamicAddr bool
+		name           string
+		// metric is used by default for routes that originate from this NIC.
+		metric     routes.Metric
+		dnsServers []tcpip.Address
+		dhcp       struct {
 			*dhcp.Client
 			// running must not be nil.
 			running func() bool
@@ -176,7 +180,7 @@
 
 		enabled := ifs.mu.state == link.StateStarted
 		if metricTracksInterface {
-			metric = ifs.mu.nic.Metric
+			metric = ifs.mu.metric
 		}
 
 		ns.mu.routeTable.AddRoute(r, metric, metricTracksInterface, dynamic, enabled)
@@ -350,28 +354,28 @@
 
 func (ifs *ifState) updateMetric(metric routes.Metric) {
 	ifs.mu.Lock()
-	ifs.mu.nic.Metric = metric
+	ifs.mu.metric = metric
 	ifs.mu.Unlock()
 }
 
 func (ifs *ifState) dhcpAcquired(oldAddr, newAddr tcpip.Address, config dhcp.Config) {
 	if oldAddr != "" && oldAddr != newAddr {
-		syslog.Infof("NIC %s: DHCP IP %s expired", ifs.mu.nic.Name, oldAddr)
+		syslog.Infof("NIC %s: DHCP IP %s expired", ifs.mu.name, oldAddr)
 	}
 	if config.Error != nil {
 		syslog.Errorf("%v", config.Error)
 		return
 	}
 	if newAddr == "" {
-		syslog.Errorf("NIC %s: DHCP could not acquire address", ifs.mu.nic.Name)
+		syslog.Errorf("NIC %s: DHCP could not acquire address", ifs.mu.name)
 		return
 	}
-	syslog.Infof("NIC %s: DHCP acquired IP %s for %s", ifs.mu.nic.Name, newAddr, config.LeaseLength)
-	syslog.Infof("NIC %s: Adding DNS servers: %v", ifs.mu.nic.Name, config.DNS)
+	syslog.Infof("NIC %s: DHCP acquired IP %s for %s", ifs.mu.name, newAddr, config.LeaseLength)
+	syslog.Infof("NIC %s: Adding DNS servers: %v", ifs.mu.name, config.DNS)
 
 	ifs.mu.Lock()
-	ifs.mu.nic.IsDynamicAddr = true
-	ifs.mu.nic.DNSServers = config.DNS
+	ifs.mu.hasDynamicAddr = true
+	ifs.mu.dnsServers = config.DNS
 	ifs.mu.Unlock()
 
 	// Add a default route and a route for the local subnet.
@@ -409,7 +413,7 @@
 	if c := ifs.mu.dhcp.Client; c != nil {
 		c.Run(ctx)
 	} else {
-		panic(fmt.Sprintf("nil DHCP client on interface %s", ifs.mu.nic.Name))
+		panic(fmt.Sprintf("nil DHCP client on interface %s", ifs.mu.name))
 	}
 }
 
@@ -427,16 +431,16 @@
 		delete(ifs.ns.mu.ifStates, ifs.nicid)
 		fallthrough
 	case link.StateDown:
-		syslog.Infof("NIC %s: stopped", ifs.mu.nic.Name)
+		syslog.Infof("NIC %s: stopped", ifs.mu.name)
 		ifs.mu.dhcp.cancel()
 
 		// TODO(crawshaw): more cleanup to be done here:
 		// 	- remove link endpoint
 		//	- reclaim NICID?
 
-		if ifs.mu.nic.IsDynamicAddr || s == link.StateClosed {
+		if ifs.mu.hasDynamicAddr || s == link.StateClosed {
 			syslog.Infof("removing IP from NIC %d", ifs.nicid)
-			ifs.mu.nic.DNSServers = nil
+			ifs.mu.dnsServers = nil
 		}
 
 		if s == link.StateClosed {
@@ -448,7 +452,7 @@
 		}
 
 	case link.StateStarted:
-		syslog.Infof("NIC %s: starting", ifs.mu.nic.Name)
+		syslog.Infof("NIC %s: starting", ifs.mu.name)
 		// Re-enable static routes out this interface.
 		ifs.ns.UpdateRoutesByInterfaceLocked(ifs.nicid, routes.ActionEnableStatic)
 		if ifs.mu.dhcp.enabled {
@@ -483,20 +487,20 @@
 	refs := make([]*[]tcpip.Address, 0, len(ns.mu.ifStates))
 	for _, ifs := range ns.mu.ifStates {
 		ifs.mu.Lock()
-		refs = append(refs, &ifs.mu.nic.DNSServers)
+		refs = append(refs, &ifs.mu.dnsServers)
 		ifs.mu.Unlock()
 	}
 	return refs
 }
 
-func (ns *Netstack) getDNSServers() []tcpip.Address {
+func (ns *Netstack) getdnsServers() []tcpip.Address {
 	defaultServers := ns.dnsClient.GetDefaultServers()
 	uniqServers := make(map[tcpip.Address]struct{})
 
 	ns.mu.Lock()
 	for _, ifs := range ns.mu.ifStates {
 		ifs.mu.Lock()
-		for _, server := range ifs.mu.nic.DNSServers {
+		for _, server := range ifs.mu.dnsServers {
 			uniqServers[server] = struct{}{}
 		}
 		ifs.mu.Unlock()
@@ -544,16 +548,13 @@
 func (ns *Netstack) addLoopback() error {
 	ifs, err := ns.addEndpoint(func(tcpip.NICID) string {
 		return "lo"
-	}, stack.FindLinkEndpoint(loopback.New()), link.NewLoopbackController(), false, defaultInterfaceMetric)
+	}, stack.FindLinkEndpoint(loopback.New()), link.NewLoopbackController(), false, defaultInterfaceMetric, ethernet.InfoFeatureLoopback)
 	if err != nil {
 		return err
 	}
 
 	ifs.mu.Lock()
-	ifs.mu.nic.Features = ethernet.InfoFeatureLoopback
-	ifs.mu.nic.Metric = defaultInterfaceMetric
 	ifs.mu.state = link.StateStarted
-
 	nicid := ifs.nicid
 	ifs.mu.Unlock()
 
@@ -604,7 +605,7 @@
 	b := bridge.New(links)
 	return ns.addEndpoint(func(nicid tcpip.NICID) string {
 		return fmt.Sprintf("br%d", nicid)
-	}, b, b, false, defaultInterfaceMetric)
+	}, b, b, false, defaultInterfaceMetric, 0)
 }
 
 func (ns *Netstack) addEth(topological_path string, config netstack.InterfaceConfig, device ethernet.Device) (*ifState, error) {
@@ -613,19 +614,12 @@
 		return nil, err
 	}
 
-	ifs, err := ns.addEndpoint(func(nicid tcpip.NICID) string {
+	return ns.addEndpoint(func(nicid tcpip.NICID) string {
 		if len(config.Name) == 0 {
 			return fmt.Sprintf("eth%d", nicid)
 		}
 		return config.Name
-	}, eth.NewLinkEndpoint(client), client, true, routes.Metric(config.Metric))
-	if err != nil {
-		return nil, err
-	}
-	ifs.mu.Lock()
-	ifs.mu.nic.Features = client.Info.Features
-	ifs.mu.Unlock()
-	return ifs, nil
+	}, eth.NewLinkEndpoint(client), client, true, routes.Metric(config.Metric), client.Info.Features)
 }
 
 func (ns *Netstack) addEndpoint(
@@ -634,15 +628,15 @@
 	controller link.Controller,
 	doFilter bool,
 	metric routes.Metric,
+	features uint32,
 ) (*ifState, error) {
 	ifs := &ifState{
-		ns:  ns,
-		eth: controller,
+		ns:       ns,
+		eth:      controller,
+		features: features,
 	}
 	ifs.mu.state = link.StateUnknown
-	ifs.mu.nic = &netiface.NIC{
-		Metric: metric,
-	}
+	ifs.mu.metric = metric
 	ifs.mu.dhcp.running = func() bool { return false }
 	ifs.mu.dhcp.cancel = func() {}
 
@@ -674,11 +668,11 @@
 	syslog.Infof("NIC %s added [sniff = %t]", name, ns.sniff)
 
 	if err := ns.mu.stack.CreateNIC(ifs.nicid, linkID); err != nil {
-		return nil, fmt.Errorf("NIC %s: could not create NIC: %v", ifs.mu.nic.Name, err)
+		return nil, fmt.Errorf("NIC %s: could not create NIC: %v", ifs.mu.name, err)
 	}
 	if ep.Capabilities()&stack.CapabilityResolutionRequired > 0 {
 		if err := ns.mu.stack.AddAddress(ifs.nicid, arp.ProtocolNumber, arp.ProtocolAddress); err != nil {
-			return nil, fmt.Errorf("NIC %s: adding arp address failed: %v", ifs.mu.nic.Name, err)
+			return nil, fmt.Errorf("NIC %s: adding arp address failed: %v", ifs.mu.name, err)
 		}
 	}
 
@@ -688,11 +682,11 @@
 	if linkAddr := ep.LinkAddress(); len(linkAddr) > 0 {
 		lladdr := header.LinkLocalAddr(linkAddr)
 		if err := ns.mu.stack.AddAddress(ifs.nicid, ipv6.ProtocolNumber, lladdr); err != nil {
-			return nil, fmt.Errorf("NIC %s: adding link-local IPv6 %v failed: %v", ifs.mu.nic.Name, lladdr, err)
+			return nil, fmt.Errorf("NIC %s: adding link-local IPv6 %v failed: %v", ifs.mu.name, lladdr, err)
 		}
 		snaddr := header.SolicitedNodeAddr(lladdr)
 		if err := ns.mu.stack.AddAddress(ifs.nicid, ipv6.ProtocolNumber, snaddr); err != nil {
-			return nil, fmt.Errorf("NIC %s: adding solicited-node IPv6 %v (link-local IPv6 %v) failed: %v", ifs.mu.nic.Name, snaddr, lladdr, err)
+			return nil, fmt.Errorf("NIC %s: adding solicited-node IPv6 %v (link-local IPv6 %v) failed: %v", ifs.mu.name, snaddr, lladdr, err)
 		}
 
 		ifs.mu.dhcp.Client = dhcp.NewClient(ns.mu.stack, ifs.nicid, linkAddr, ifs.dhcpAcquired)
@@ -700,7 +694,7 @@
 		syslog.Infof("NIC %s: link-local IPv6: %v", name, lladdr)
 	}
 
-	ifs.mu.nic.Name = name
+	ifs.mu.name = name
 
 	return ifs, nil
 }
diff --git a/src/connectivity/network/netstack/netstack_service.go b/src/connectivity/network/netstack/netstack_service.go
index 32348b9..68e2fdb 100644
--- a/src/connectivity/network/netstack/netstack_service.go
+++ b/src/connectivity/network/netstack/netstack_service.go
@@ -119,9 +119,9 @@
 	return netstack.NetInterface2{
 		Id:        uint32(ifs.nicid),
 		Flags:     flags,
-		Features:  ifs.mu.nic.Features,
-		Metric:    uint32(ifs.mu.nic.Metric),
-		Name:      ifs.mu.nic.Name,
+		Features:  ifs.features,
+		Metric:    uint32(ifs.mu.metric),
+		Name:      ifs.mu.name,
 		Addr:      fidlconv.ToNetIpAddress(addr),
 		Netmask:   fidlconv.ToNetIpAddress(tcpip.Address(mask)),
 		Broadaddr: fidlconv.ToNetIpAddress(tcpip.Address(broadaddr)),
diff --git a/src/connectivity/network/netstack/netstack_test.go b/src/connectivity/network/netstack/netstack_test.go
index 8d8a7e0..c9a48d3 100644
--- a/src/connectivity/network/netstack/netstack_test.go
+++ b/src/connectivity/network/netstack/netstack_test.go
@@ -43,8 +43,8 @@
 		t.Fatal(err)
 	}
 	ifs.mu.Lock()
-	if ifs.mu.nic.Name != testDeviceName {
-		t.Errorf("ifs.mu.nic.Name = %v, want %v", ifs.mu.nic.Name, testDeviceName)
+	if ifs.mu.name != testDeviceName {
+		t.Errorf("ifs.mu.name = %v, want %v", ifs.mu.name, testDeviceName)
 	}
 	ifs.mu.Unlock()
 }
@@ -165,7 +165,7 @@
 	if err != nil {
 		t.Fatal(err)
 	}
-	if ifs1.mu.nic.Name == ifs2.mu.nic.Name {
+	if ifs1.mu.name == ifs2.mu.name {
 		t.Fatalf("got (%+v).Name == (%+v).Name, want non-equal", ifs1, ifs2)
 	}
 }
