diff --git a/lib/arp.c b/lib/arp.c
index efb57991e2bde400aaac305d05b319df5ceca891..5593ffe3b6a61dcf5a31abc712630240bca1aa19 100644
--- a/lib/arp.c
+++ b/lib/arp.c
@@ -58,7 +58,7 @@ static int process_arp(uint8_t* buf, int len) {
   buf[ARP_OPER+0] = 0;
   buf[ARP_OPER+1] = 2;
   // my MAC+IP
-  memcpy(buf+ARP_SHA, myMAC, 6);
+  get_mac_addr(buf+ARP_SHA);
   memcpy(buf+ARP_SPA, myIP,  4);
   // his MAC+IP
   memcpy(buf+ARP_THA, hisMAC, 6);
diff --git a/lib/icmp.c b/lib/icmp.c
index a5bf4189dd29246066d4ae7d989fa3e0798e2fd1..d2654703308b09b89de9dd862afe23489b284aee 100644
--- a/lib/icmp.c
+++ b/lib/icmp.c
@@ -28,7 +28,7 @@ void icmp_init(const char* if_name) {
   /* Configure socket filter */
   memset(&saddr, 0, sizeof(saddr));
   strcpy(saddr.if_name, if_name);
-  memcpy(&saddr.mac, myMAC, 6); /* Unicast */
+  get_mac_addr(&saddr.mac); /* Unicast */
   saddr.ethertype = htons(0x0800); /* IPv4 */
   saddr.family = PTPD_SOCK_RAW_ETHERNET;
   
diff --git a/lib/ipv4.c b/lib/ipv4.c
index 1a52db336029ed1ab3537a0d8d254ab8a3b08162..4575115eba82c3b6214099eeb1c42db1e2e1a83a 100644
--- a/lib/ipv4.c
+++ b/lib/ipv4.c
@@ -3,7 +3,6 @@
 #include "endpoint.h"
 #include "ipv4.h"
 
-uint8_t myMAC[6];
 uint8_t myIP[4];
 
 unsigned int ipv4_checksum(unsigned short* buf, int shorts) {
@@ -25,7 +24,6 @@ void ipv4_init(const char* if_name, uint32_t ip) {
   
   ip_bigendian = htonl(ip);
   memcpy(myIP, &ip_bigendian, 4);
-  get_mac_addr(myMAC);
   
   arp_init(if_name);
   icmp_init(if_name);