code: func (s *Stack) NICInfo() map[tcpip.NICID]NICInfo {
  	s.mu.RLock()
  	defer s.mu.RUnlock()
  
  	nics := make(map[tcpip.NICID]NICInfo)
  	for id, nic := range s.nics {
  		flags := NICStateFlags{
  			Up:          true, // Netstack interfaces are always up.
  			Running:     nic.linkEP.IsAttached(),
  			Promiscuous: nic.isPromiscuousMode(),
  			Loopback:    nic.linkEP.Capabilities()&CapabilityLoopback != 0,
  		}
  		nics[id] = NICInfo{
  			Name:              nic.name,
  			LinkAddress:       nic.linkEP.LinkAddress(),
  			ProtocolAddresses: nic.Addresses(),
  			Flags:             flags,
  			MTU:               nic.linkEP.MTU(),
  			Stats:             nic.stats,
  		}
  	}
  	return nics
  }
docs: // NICInfo returns a map of NICIDs to their associated information.