From 870894070994374c17e96ed841b26f8e1fac945e Mon Sep 17 00:00:00 2001 From: Daniel Danzberger Date: Wed, 8 Jan 2020 22:52:08 +0100 Subject: [PATCH] Read mac address from sysfs instead of ubus This is much faster Signed-off-by: Daniel Danzberger --- libbbf_api/dmcommon.c | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/libbbf_api/dmcommon.c b/libbbf_api/dmcommon.c index e75c605f..9700acfc 100644 --- a/libbbf_api/dmcommon.c +++ b/libbbf_api/dmcommon.c @@ -1393,15 +1393,19 @@ char **strsplit_by_str(const char str[], char *delim) char *get_macaddr(char *interface_name) { - json_object *res; - char *device, *mac = ""; + char *device = get_device(interface_name); + char *mac; - dmubus_call("network.interface", "status", UBUS_ARGS{{"interface", interface_name, String}}, 1, &res); - device = dmjson_get_value(res, 1, "device"); - if(device[0] == '\0') - return ""; - dmubus_call("network.device", "status", UBUS_ARGS{{"name", device, String}}, 1, &res); - mac = dmjson_get_value(res, 1, "macaddr"); + if(device[0]) { + char file[128]; + char val[32]; + + snprintf(file, sizeof(file), "/sys/class/net/%s/address", device); + dm_read_sysfs_file(file, val, sizeof(val)); + mac = dmstrdup(val); + } else { + mac = ""; + } return mac; }