[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [lwip-users] Using ARP to get MAC address
From: |
Tomas Daujotas |
Subject: |
Re: [lwip-users] Using ARP to get MAC address |
Date: |
Fri, 17 Feb 2012 14:37:37 +0200 |
A small update:
In etharp_find_addr(), I've found that I don't get
ETHARP_STATE_STABLE, but the index returned is correct here:
s8_t etharp_find_addr(struct netif *netif, ip_addr_t *ipaddr, struct
eth_addr **eth_ret, ip_addr_t **ip_ret) {
s8_t i;
LWIP_ASSERT("eth_ret != NULL && ip_ret != NULL", eth_ret != NULL &&
ip_ret != NULL);
LWIP_UNUSED_ARG(netif);
i = find_entry(ipaddr, ETHARP_FLAG_FIND_ONLY); // <<--- here returns
table index 0
if((i >= 0) && arp_table[i].state == 1) { //ETHARP_STATE_STABLE)
{ <<--- I don't know what flag is equal to ETHARP_STATE_STABLE, so
let's override it for tests only
*eth_ret = &arp_table[i].ethaddr; // <<--- returned all 0
*ip_ret = &arp_table[i].ipaddr; // returned correct IP address
return i; // returns 0
}
return -1;
}
I get the index 0, so I've overrided the ETHARP_STATE_STABLE part,
since arp_table[i].state returns 1.
Now the check part:
I've defined required structs as pointers:
struct ip_addr * ret_ip_addr;
struct eth_addr * ret_eth_addr;
Then the check part is:
arp_query = etharp_query(&alteraTseNetif, &alteraTseNetif.gw, NULL);
arp_find = etharp_find_addr(&alteraTseNetif, &alteraTseNetif.gw,
&ret_eth_addr, &ret_ip_addr);
if(arp_query != ERR_OK) {
printf("Query FAIL (returned: %d)\n",arp_query);
} else {
printf("Query OK, trying to find MAC address...\n");
if(arp_find > -1) {
printf("Find addr OK (returned arp table index number:
%d)\n", arp_find);
printf("Returned IP: 0x%08X\n", (unsigned
int)ret_ip_addr->addr);
printf("Returned MAC: %02X:%02X:%02X:%02X:%02X:%02X\n",
ret_eth_addr->addr[0],
ret_eth_addr->addr[1],
ret_eth_addr->addr[2],
ret_eth_addr->addr[3],
ret_eth_addr->addr[4],
ret_eth_addr->addr[5]);
} else {
printf("Find addr FAIL (returned %d)\n", arp_find);
}
}
I get the correct result in ret_ip_addr pointer, which, as You can
see, returns my gateway address (same as alteraTseNetif.gw). However
my MAC pointer returns all six 0x00. This means the table isn't
updated?
- [lwip-users] Using ARP to get MAC address, Tomas Daujotas, 2012/02/17
- Re: [lwip-users] Using ARP to get MAC address, Simon Goldschmidt, 2012/02/17
- Re: [lwip-users] Using ARP to get MAC address, Tomas Daujotas, 2012/02/17
- Re: [lwip-users] Using ARP to get MAC address,
Tomas Daujotas <=
- Re: [lwip-users] Using ARP to get MAC address, Kieran Mansley, 2012/02/18
- Re: [lwip-users] Using ARP to get MAC address, Tomas D., 2012/02/19
- Re: [lwip-users] Using ARP to get MAC address, Kieran Mansley, 2012/02/20
- Re: [lwip-users] Using ARP to get MAC address, Tomas D., 2012/02/22
- Re: [lwip-users] Using ARP to get MAC address, Tomas D., 2012/02/23