From b0213b1dd48d05d986463195b587692224217ddb Mon Sep 17 00:00:00 2001
From: "Wesley W. Terpstra" <w.terpstra@gsi.de>
Date: Wed, 4 Jul 2012 11:26:12 +0200
Subject: [PATCH] Don't cache the MAC address; it can be changed from shell.

---
 lib/arp.c  | 2 +-
 lib/icmp.c | 2 +-
 lib/ipv4.c | 2 --
 3 files changed, 2 insertions(+), 4 deletions(-)

diff --git a/lib/arp.c b/lib/arp.c
index efb57991e..5593ffe3b 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 a5bf4189d..d26547033 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 1a52db336..4575115eb 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);
-- 
GitLab