Files
scrutiny/vendor/github.com/jaypipes/ghw/net_windows.go
T
2020-08-21 06:31:48 +00:00

66 lines
1.7 KiB
Go

// Use and distribution licensed under the Apache license version 2.
//
// See the COPYING file in the root project directory for full text.
//
package ghw
import (
"strings"
"github.com/StackExchange/wmi"
)
const wqlNetworkAdapter = "SELECT Description, DeviceID, Index, InterfaceIndex, MACAddress, Manufacturer, Name, NetConnectionID, ProductName, ServiceName FROM Win32_NetworkAdapter"
type win32NetworkAdapter struct {
Description *string
DeviceID *string
Index *uint32
InterfaceIndex *uint32
MACAddress *string
Manufacturer *string
Name *string
NetConnectionID *string
ProductName *string
ServiceName *string
}
func (ctx *context) netFillInfo(info *NetworkInfo) error {
// Getting info from WMI
var win32NetDescriptions []win32NetworkAdapter
if err := wmi.Query(wqlNetworkAdapter, &win32NetDescriptions); err != nil {
return err
}
info.NICs = ctx.nics(win32NetDescriptions)
return nil
}
func (ctx *context) nics(win32NetDescriptions []win32NetworkAdapter) []*NIC {
// Converting into standard structures
nics := make([]*NIC, 0)
for _, nicDescription := range win32NetDescriptions {
nic := &NIC{
Name: ctx.netDeviceName(nicDescription),
MacAddress: *nicDescription.MACAddress,
IsVirtual: false,
Capabilities: []*NICCapability{},
}
// Appenging NIC to NICs
nics = append(nics, nic)
}
return nics
}
func (ctx *context) netDeviceName(description win32NetworkAdapter) string {
var name string
if strings.TrimSpace(*description.NetConnectionID) != "" {
name = *description.NetConnectionID + " - " + *description.Description
} else {
name = *description.Description
}
return name
}