net: Remove static allocation for MAC address in PingSend()
Don't force ARP clients to return the MAC address if they don't care (such as ping) Signed-off-by: Joe Hershberger <joe.hershberger@ni.com> Acked-by: Mike Frysinger <vapier@gentoo.org>
This commit is contained in:
parent
2c00e099fe
commit
f1d2d28469
|
@ -170,7 +170,7 @@ void ArpReceive(struct ethernet_hdr *et, struct ip_udp_hdr *ip, int len)
|
||||||
|
|
||||||
case ARPOP_REPLY: /* arp reply */
|
case ARPOP_REPLY: /* arp reply */
|
||||||
/* are we waiting for a reply */
|
/* are we waiting for a reply */
|
||||||
if (!NetArpWaitPacketIP || !NetArpWaitPacketMAC)
|
if (!NetArpWaitPacketIP)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
#ifdef CONFIG_KEEP_SERVERADDR
|
#ifdef CONFIG_KEEP_SERVERADDR
|
||||||
|
@ -189,15 +189,16 @@ void ArpReceive(struct ethernet_hdr *et, struct ip_udp_hdr *ip, int len)
|
||||||
arp->ar_data);
|
arp->ar_data);
|
||||||
|
|
||||||
/* save address for later use */
|
/* save address for later use */
|
||||||
memcpy(NetArpWaitPacketMAC,
|
if (NetArpWaitPacketMAC != NULL)
|
||||||
&arp->ar_sha, ARP_HLEN);
|
memcpy(NetArpWaitPacketMAC,
|
||||||
|
&arp->ar_sha, ARP_HLEN);
|
||||||
|
|
||||||
net_get_arp_handler()((uchar *)arp, 0, reply_ip_addr,
|
net_get_arp_handler()((uchar *)arp, 0, reply_ip_addr,
|
||||||
0, len);
|
0, len);
|
||||||
|
|
||||||
/* modify header, and transmit it */
|
/* modify header, and transmit it */
|
||||||
memcpy(((struct ethernet_hdr *)NetArpWaitTxPacket)->
|
memcpy(((struct ethernet_hdr *)NetArpWaitTxPacket)->
|
||||||
et_dest, NetArpWaitPacketMAC, ARP_HLEN);
|
et_dest, &arp->ar_sha, ARP_HLEN);
|
||||||
NetSendPacket(NetArpWaitTxPacket,
|
NetSendPacket(NetArpWaitTxPacket,
|
||||||
NetArpWaitTxPacketSize);
|
NetArpWaitTxPacketSize);
|
||||||
|
|
||||||
|
|
10
net/ping.c
10
net/ping.c
|
@ -40,22 +40,18 @@ static void set_icmp_header(uchar *pkt, IPaddr_t dest)
|
||||||
|
|
||||||
static int ping_send(void)
|
static int ping_send(void)
|
||||||
{
|
{
|
||||||
static uchar mac[6];
|
|
||||||
uchar *pkt;
|
uchar *pkt;
|
||||||
int eth_hdr_size;
|
int eth_hdr_size;
|
||||||
|
|
||||||
/* XXX always send arp request */
|
/* XXX always send arp request */
|
||||||
|
|
||||||
memcpy(mac, NetEtherNullAddr, 6);
|
|
||||||
|
|
||||||
debug("sending ARP for %pI4\n", &NetPingIP);
|
debug("sending ARP for %pI4\n", &NetPingIP);
|
||||||
|
|
||||||
NetArpWaitPacketIP = NetPingIP;
|
NetArpWaitPacketIP = NetPingIP;
|
||||||
NetArpWaitPacketMAC = mac;
|
|
||||||
|
|
||||||
pkt = NetArpWaitTxPacket;
|
eth_hdr_size = NetSetEther(NetArpWaitTxPacket, NetEtherNullAddr,
|
||||||
eth_hdr_size = NetSetEther(pkt, mac, PROT_IP);
|
PROT_IP);
|
||||||
pkt += eth_hdr_size;
|
pkt = NetArpWaitTxPacket + eth_hdr_size;
|
||||||
|
|
||||||
set_icmp_header(pkt, NetPingIP);
|
set_icmp_header(pkt, NetPingIP);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue