You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
35 lines
928 B
35 lines
928 B
6 months ago
|
package core
|
||
|
|
||
|
import "github.com/google/gopacket/pcap"
|
||
|
|
||
|
type Device struct {
|
||
|
Name string `json:"Name"`
|
||
|
Description string `json:"Description"`
|
||
|
Flags uint32 `json:"Flags"`
|
||
|
Addresses []string `json:"Addresses"`
|
||
|
}
|
||
|
|
||
|
func GetAllDevice() ([]Device, error) {
|
||
|
netInterfaces, err := pcap.FindAllDevs()
|
||
|
if err != nil {
|
||
|
return nil, err
|
||
|
}
|
||
|
|
||
|
devices := make([]Device, 0, len(netInterfaces))
|
||
|
for _, netInterface := range netInterfaces {
|
||
|
addr := make([]string, 0, len(netInterface.Addresses))
|
||
|
for _, address := range netInterface.Addresses {
|
||
|
addr = append(addr, address.IP.String())
|
||
|
}
|
||
|
|
||
|
devices = append(devices, Device{
|
||
|
Name: netInterface.Name,
|
||
|
Description: netInterface.Description,
|
||
|
Flags: netInterface.Flags,
|
||
|
Addresses: addr,
|
||
|
})
|
||
|
}
|
||
|
|
||
|
return devices, nil
|
||
|
}
|