aboutsummaryrefslogtreecommitdiffstats
path: root/gethwaddr.c
diff options
context:
space:
mode:
Diffstat (limited to 'gethwaddr.c')
-rw-r--r--gethwaddr.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/gethwaddr.c b/gethwaddr.c
new file mode 100644
index 0000000..2ca2fbb
--- /dev/null
+++ b/gethwaddr.c
@@ -0,0 +1,23 @@
+#include <stdio.h>
+#include <sys/ioctl.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <net/if.h>
+#include <string.h>
+
+int main( int argc, char *argv[] )
+{
+ int s;
+ struct ifreq ifr;
+
+ s = socket(PF_INET, SOCK_DGRAM, 0);
+ memset(&ifr, 0x00, sizeof(ifr));
+ strcpy(ifr.ifr_name, "eth0");
+ ioctl(s, SIOCGIFHWADDR, &ifr);
+ close(s);
+
+ unsigned char mac_address[6];
+ sprintf(mac_address,"%.2X%.2X%.2X%.2X%.2X%.2X", (unsigned char) ifr.ifr_hwaddr.sa_data[0], (unsigned char) ifr.ifr_hwaddr.sa_data[1], (unsigned char) ifr.ifr_hwaddr.sa_data[2], (unsigned char) ifr.ifr_hwaddr.sa_data[3], (unsigned char) ifr.ifr_hwaddr.sa_data[4], (unsigned char) ifr.ifr_hwaddr.sa_data[5]);
+ printf("%s", mac_address);
+
+}