Added a uip_setethaddr() macro for setting the MAC address used by the ARP module
diff --git a/contiki/uip/uip_arp.c b/contiki/uip/uip_arp.c
index 106bd12..83cc7db 100644
--- a/contiki/uip/uip_arp.c
+++ b/contiki/uip/uip_arp.c
@@ -31,7 +31,7 @@
*
* This file is part of the uIP TCP/IP stack.
*
- * $Id: uip_arp.c,v 1.2 2003/03/28 12:11:18 adamdunkels Exp $
+ * $Id: uip_arp.c,v 1.3 2003/06/30 20:36:28 adamdunkels Exp $
*
*/
@@ -79,12 +79,12 @@
u8_t time;
};
-static const struct uip_eth_addr ethaddr = {{UIP_ETHADDR0,
- UIP_ETHADDR1,
- UIP_ETHADDR2,
- UIP_ETHADDR3,
- UIP_ETHADDR4,
- UIP_ETHADDR5}};
+struct uip_eth_addr uip_ethaddr = {{UIP_ETHADDR0,
+ UIP_ETHADDR1,
+ UIP_ETHADDR2,
+ UIP_ETHADDR3,
+ UIP_ETHADDR4,
+ UIP_ETHADDR5}};
static struct arp_entry arp_table[UIP_ARPTAB_SIZE];
static u16_t ipaddr[2];
@@ -233,7 +233,7 @@
for(c = 0; c < 6; ++c) {
BUF->dhwaddr.addr[c] = BUF->shwaddr.addr[c];
BUF->shwaddr.addr[c] =
- BUF->ethhdr.src.addr[c] = ethaddr.addr[c];
+ BUF->ethhdr.src.addr[c] = uip_ethaddr.addr[c];
BUF->ethhdr.dest.addr[c] = BUF->dhwaddr.addr[c];
}
@@ -307,7 +307,7 @@
for(c = 0; c < 6; ++c) {
BUF->ethhdr.dest.addr[c] = 0xff; /* Broadcast ARP request. */
BUF->ethhdr.src.addr[c] =
- BUF->shwaddr.addr[c] = ethaddr.addr[c];
+ BUF->shwaddr.addr[c] = uip_ethaddr.addr[c];
BUF->dhwaddr.addr[c] = 0;
}
@@ -331,7 +331,7 @@
/* Build an ethernet header. */
for(c = 0; c < 6; ++c) {
IPBUF->ethhdr.dest.addr[c] = arp_table[i].ethaddr.addr[c];
- IPBUF->ethhdr.src.addr[c] = ethaddr.addr[c];
+ IPBUF->ethhdr.src.addr[c] = uip_ethaddr.addr[c];
}
IPBUF->ethhdr.type = HTONS(UIP_ETHTYPE_IP);
diff --git a/contiki/uip/uip_arp.h b/contiki/uip/uip_arp.h
index fd7955e..d3e9165 100644
--- a/contiki/uip/uip_arp.h
+++ b/contiki/uip/uip_arp.h
@@ -31,7 +31,7 @@
*
* This file is part of the uIP TCP/IP stack.
*
- * $Id: uip_arp.h,v 1.2 2003/04/16 18:28:16 adamdunkels Exp $
+ * $Id: uip_arp.h,v 1.3 2003/06/30 20:36:28 adamdunkels Exp $
*
*/
@@ -43,7 +43,9 @@
struct uip_eth_addr {
u8_t addr[6];
};
-
+
+extern struct uip_eth_addr uip_ethaddr;
+
struct uip_eth_hdr {
struct uip_eth_addr dest;
struct uip_eth_addr src;
@@ -102,6 +104,14 @@
#define uip_getnetmask(addr) do { addr[0] = uip_arp_netmask[0]; \
addr[1] = uip_arp_netmask[1]; } while(0)
+#define uip_setethaddr(eaddr) do {uip_ethaddr.addr[0] = eaddr.addr[0]; \
+ uip_ethaddr.addr[1] = eaddr.addr[1];\
+ uip_ethaddr.addr[2] = eaddr.addr[2];\
+ uip_ethaddr.addr[3] = eaddr.addr[3];\
+ uip_ethaddr.addr[4] = eaddr.addr[4];\
+ uip_ethaddr.addr[5] = eaddr.addr[5];} while(0)
+
+
/* Internal variables that are set using the macros uip_setdraddr and
uip_setnetmask. */