summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/plugins/af_xdp/device.c20
1 files changed, 9 insertions, 11 deletions
diff --git a/src/plugins/af_xdp/device.c b/src/plugins/af_xdp/device.c
index 9bca41c962c..c750e8dd8bd 100644
--- a/src/plugins/af_xdp/device.c
+++ b/src/plugins/af_xdp/device.c
@@ -22,6 +22,7 @@
#include <vlib/vlib.h>
#include <vlib/unix/unix.h>
#include <vlib/pci/pci.h>
+#include <vppinfra/linux/sysfs.h>
#include <vppinfra/unix.h>
#include <vnet/ethernet/ethernet.h>
#include "af_xdp.h"
@@ -260,21 +261,18 @@ err0:
static int
af_xdp_get_numa (const char *ifname)
{
- FILE *fptr;
+ char *path;
+ clib_error_t *err;
int numa;
- char *s;
- s = (char *) format (0, "/sys/class/net/%s/device/numa_node%c", ifname, 0);
- fptr = fopen (s, "rb");
- vec_free (s);
-
- if (!fptr)
- return 0;
-
- if (fscanf (fptr, "%d\n", &numa) != 1)
+ path =
+ (char *) format (0, "/sys/class/net/%s/device/numa_node%c", ifname, 0);
+ err = clib_sysfs_read (path, "%d", &numa);
+ if (err || numa < 0)
numa = 0;
- fclose (fptr);
+ clib_error_free (err);
+ vec_free (path);
return numa;
}