func GetNetConfig() (C.sigar_net_interface_config_t, []C.sigar_net_interface_config_t, []C.sigar_net_interface_stat_t) { var sigar *C.sigar_t = GetSigarHandle() var netlistconf C.sigar_net_interface_list_t var netconfPrimary C.sigar_net_interface_config_t C.sigar_net_interface_config_primary_get(sigar, &netconfPrimary) C.sigar_net_interface_list_get(sigar, &netlistconf) var length int = int(netlistconf.number) goInterfacesNames := ((*[1 << 30]*C.char)(unsafe.Pointer(netlistconf.data)))[:length] //cinteraces:=GetGoSlice(length, unsafe.Pointer(netlistconf.data)) //goInterfacesNames := *(*[]C.char)(unsafe.Pointer(&cinteraces)) var netconf = make([]C.sigar_net_interface_config_t, length) var netstat = make([]C.sigar_net_interface_stat_t, length) for i := 0; i < length; i++ { C.sigar_net_interface_config_get(sigar, goInterfacesNames[i], &netconf[i]) C.sigar_net_interface_stat_get(sigar, goInterfacesNames[i], &netstat[i]) } C.sigar_net_interface_list_destroy(sigar, &netlistconf) return netconfPrimary, netconf, netstat }
func getNetInterfaceNamesWithSigar(sigar *C.sigar_t) (goInterfacesNames []*C.char, length int, closeable func(sigar *C.sigar_t)) { var netlistconf C.sigar_net_interface_list_t C.sigar_net_interface_list_get(sigar, &netlistconf) length = int(netlistconf.number) cinteraces := GetGoSlice(length, unsafe.Pointer(netlistconf.data)) goInterfacesNames = *((*[]*C.char)(unsafe.Pointer(&cinteraces))) //goInterfacesNames = ((*[1 << 30]*C.char)(unsafe.Pointer(netlistconf.data)))[:length] return goInterfacesNames, length, func(sigar *C.sigar_t) { C.sigar_net_interface_list_destroy(sigar, &netlistconf) } }