From 680354c842aef8b734e831f50f609c4c00c20569 Mon Sep 17 00:00:00 2001 From: vemax78 Date: Sun, 6 Oct 2013 22:36:29 +0200 Subject: [PATCH] Add convertion function from string to macaddress --- src/common/capwap_network.c | 19 +++++++++++++++++++ src/common/capwap_network.h | 1 + 2 files changed, 20 insertions(+) diff --git a/src/common/capwap_network.c b/src/common/capwap_network.c index ca28c1c..bd765a3 100644 --- a/src/common/capwap_network.c +++ b/src/common/capwap_network.c @@ -1275,6 +1275,8 @@ void capwap_interface_list(struct capwap_network* net, struct capwap_list* list) freeifaddrs(ifaddrlist); } + +/* */ char* capwap_printf_macaddress(char* buffer, unsigned char* macaddress, int type) { if (type == MACADDRESS_EUI48_LENGTH) { sprintf(buffer, "%02x:%02x:%02x:%02x:%02x:%02x", macaddress[0], macaddress[1], macaddress[2], macaddress[3], macaddress[4], macaddress[5]); @@ -1286,3 +1288,20 @@ char* capwap_printf_macaddress(char* buffer, unsigned char* macaddress, int type return buffer; } + +/* */ +int capwap_scanf_macaddress(unsigned char* macaddress, const char* buffer, int type) { + if (type == MACADDRESS_EUI48_LENGTH) { + if (sscanf(buffer, "%hhx:%hhx:%hhx:%hhx:%hhx:%hhx", &macaddress[0], &macaddress[1], &macaddress[2], &macaddress[3], &macaddress[4], &macaddress[5]) != 6) { + return 0; + } + } else if (type == MACADDRESS_EUI64_LENGTH) { + if (sscanf(buffer, "%hhx:%hhx:%hhx:%hhx:%hhx:%hhx:%hhx:%hhx", &macaddress[0], &macaddress[1], &macaddress[2], &macaddress[3], &macaddress[4], &macaddress[5], &macaddress[6], &macaddress[7]) != 8) { + return 0; + } + } else { + return 0; + } + + return 1; +} diff --git a/src/common/capwap_network.h b/src/common/capwap_network.h index 288a2a5..8d4f12b 100644 --- a/src/common/capwap_network.h +++ b/src/common/capwap_network.h @@ -93,5 +93,6 @@ int capwap_address_from_string(const char* ip, struct sockaddr_storage* address) int capwap_get_localaddress_by_remoteaddress(struct sockaddr_storage* local, struct sockaddr_storage* remote, char* oif, int ipv6dualstack); char* capwap_printf_macaddress(char* buffer, unsigned char* macaddress, int type); +int capwap_scanf_macaddress(unsigned char* macaddress, const char* buffer, int type); #endif /* __CAPWAP_NETWORK_HEADER__ */