# Port "8125"
--- /dev/null
+++ b/src/snmp6.c
-@@ -0,0 +1,133 @@
+@@ -0,0 +1,135 @@
+/*
+ This Plugin is based opn the interface.c Plugin.
+*/
+#ifndef HAVE_IFADDRS_H
+ return -1;
+#else
-+ struct ifaddrs *addrs,*tmp;
+
-+ getifaddrs(&addrs);
-+ tmp = addrs;
++ // getifaddrs is not working all the time (e.g. wireguard interfaces)
++ // instead we use if_nameindex() syscall as suggested in:
++ // https://stackoverflow.com/a/45796495/8474618
++ struct if_nameindex *if_nidxs, *intf;
+
-+ while (tmp)
-+ {
-+ if (tmp->ifa_addr && tmp->ifa_addr->sa_family == AF_PACKET)
-+ snmp_read(tmp->ifa_name);
-+ tmp = tmp->ifa_next;
++ if_nidxs = if_nameindex();
++
++ if (if_nidxs != NULL) {
++ for (intf = if_nidxs; intf->if_index != 0 || intf->if_name != NULL; intf++) {
++ snmp_read(intf->if_name);
++ }
++ if_freenameindex(if_nidxs);
+ }
+
-+ freeifaddrs(addrs);
+ snmp_read("all");
+ return 0;
+#endif