osmocore: Add function osmo_macaddr_parse() to parse ETH MAC address
diff --git a/src/Makefile.am b/src/Makefile.am
index e68c29a..841f672 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -13,7 +13,8 @@
 			 logging.c logging_syslog.c rate_ctr.c \
 			 gsmtap_util.c crc16.c panic.c backtrace.c \
 			 conv.c application.c rbtree.c strrb.c \
-			 loggingrb.c crc8gen.c crc16gen.c crc32gen.c crc64gen.c
+			 loggingrb.c crc8gen.c crc16gen.c crc32gen.c crc64gen.c \
+			 macaddr.c
 
 BUILT_SOURCES = crc8gen.c crc16gen.c crc32gen.c crc64gen.c
 
diff --git a/src/macaddr.c b/src/macaddr.c
new file mode 100644
index 0000000..1181dfe
--- /dev/null
+++ b/src/macaddr.c
@@ -0,0 +1,25 @@
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+
+
+int osmo_macaddr_parse(uint8_t *out, const char *in)
+{
+	/* 00:00:00:00:00:00 */
+	char tmp[18];
+	char *tok;
+	unsigned int i = 0;
+
+	if (strlen(in) < 17)
+		return -1;
+
+	strncpy(tmp, in, sizeof(tmp)-1);
+	tmp[sizeof(tmp)-1] = '\0';
+
+	for (tok = strtok(tmp, ":"); tok && (i < 6); tok = strtok(NULL, ":")) {
+		unsigned long ul = strtoul(tok, NULL, 16);
+		out[i++] = ul & 0xff;
+	}
+
+	return 0;
+}