projects
/
oweals
/
u-boot.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
mailmap: provide usage instruction
[oweals/u-boot.git]
/
net
/
ping.c
diff --git
a/net/ping.c
b/net/ping.c
index 366f51825f9ecbff62354eeae1aeb2c49b4aa25b..633c942e67839f3157790ef3bd0001ac568d7df3 100644
(file)
--- a/
net/ping.c
+++ b/
net/ping.c
@@
-1,3
+1,4
@@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copied from Linux Monitor (LiMon) - Networking.
*
/*
* Copied from Linux Monitor (LiMon) - Networking.
*
@@
-6,36
+7,30
@@
* Copyright 2000 Roland Borde
* Copyright 2000 Paolo Scaffardi
* Copyright 2000-2002 Wolfgang Denk, wd@denx.de
* Copyright 2000 Roland Borde
* Copyright 2000 Paolo Scaffardi
* Copyright 2000-2002 Wolfgang Denk, wd@denx.de
- * SPDX-License-Identifier: GPL-2.0
*/
#include "ping.h"
#include "arp.h"
*/
#include "ping.h"
#include "arp.h"
-static ushort
PingSeqNo
;
+static ushort
ping_seq_number
;
/* The ip address to ping */
/* The ip address to ping */
-
IPaddr_t NetPingIP
;
+
struct in_addr net_ping_ip
;
-static void set_icmp_header(uchar *pkt,
IPaddr_t
dest)
+static void set_icmp_header(uchar *pkt,
struct in_addr
dest)
{
/*
* Construct an IP and ICMP header.
*/
{
/*
* Construct an IP and ICMP header.
*/
- struct ip_hdr *ip = (struct ip_hdr *)pkt;
struct icmp_hdr *icmp = (struct icmp_hdr *)(pkt + IP_HDR_SIZE);
struct icmp_hdr *icmp = (struct icmp_hdr *)(pkt + IP_HDR_SIZE);
- net_set_ip_header(pkt, dest, NetOurIP);
-
- ip->ip_len = htons(IP_ICMP_HDR_SIZE);
- ip->ip_p = IPPROTO_ICMP;
- ip->ip_sum = compute_ip_checksum(ip, IP_HDR_SIZE);
+ net_set_ip_header(pkt, dest, net_ip, IP_ICMP_HDR_SIZE, IPPROTO_ICMP);
icmp->type = ICMP_ECHO_REQUEST;
icmp->code = 0;
icmp->checksum = 0;
icmp->un.echo.id = 0;
icmp->type = ICMP_ECHO_REQUEST;
icmp->code = 0;
icmp->checksum = 0;
icmp->un.echo.id = 0;
- icmp->un.echo.sequence = htons(
PingSeqNo
++);
+ icmp->un.echo.sequence = htons(
ping_seq_number
++);
icmp->checksum = compute_ip_checksum(icmp, ICMP_HDR_SIZE);
}
icmp->checksum = compute_ip_checksum(icmp, ICMP_HDR_SIZE);
}
@@
-46,26
+41,26
@@
static int ping_send(void)
/* XXX always send arp request */
/* XXX always send arp request */
- debug_cond(DEBUG_DEV_PKT, "sending ARP for %pI4\n", &
NetPingIP
);
+ debug_cond(DEBUG_DEV_PKT, "sending ARP for %pI4\n", &
net_ping_ip
);
-
NetArpWaitPacketIP = NetPingIP
;
+
net_arp_wait_packet_ip = net_ping_ip
;
- eth_hdr_size =
NetSetEther(NetTxPacket, NetEtherNullA
ddr, PROT_IP);
- pkt = (uchar *)
NetTxP
acket + eth_hdr_size;
+ eth_hdr_size =
net_set_ether(net_tx_packet, net_null_etha
ddr, PROT_IP);
+ pkt = (uchar *)
net_tx_p
acket + eth_hdr_size;
- set_icmp_header(pkt,
NetPingIP
);
+ set_icmp_header(pkt,
net_ping_ip
);
/* size of the waiting packet */
/* size of the waiting packet */
-
NetArpWaitTxPacketS
ize = eth_hdr_size + IP_ICMP_HDR_SIZE;
+
arp_wait_tx_packet_s
ize = eth_hdr_size + IP_ICMP_HDR_SIZE;
/* and do the ARP request */
/* and do the ARP request */
-
NetArpWaitT
ry = 1;
-
NetArpWaitTimerS
tart = get_timer(0);
-
ArpR
equest();
+
arp_wait_t
ry = 1;
+
arp_wait_timer_s
tart = get_timer(0);
+
arp_r
equest();
return 1; /* waiting */
}
return 1; /* waiting */
}
-static void ping_timeout(void)
+static void ping_timeout
_handler
(void)
{
eth_halt();
net_set_state(NETLOOP_FAIL); /* we did not get the reply */
{
eth_halt();
net_set_state(NETLOOP_FAIL); /* we did not get the reply */
@@
-74,7
+69,7
@@
static void ping_timeout(void)
void ping_start(void)
{
printf("Using %s device\n", eth_get_name());
void ping_start(void)
{
printf("Using %s device\n", eth_get_name());
-
NetSetTimeout(10000UL, ping_timeout
);
+
net_set_timeout_handler(10000UL, ping_timeout_handler
);
ping_send();
}
ping_send();
}
@@
-82,31
+77,36
@@
void ping_start(void)
void ping_receive(struct ethernet_hdr *et, struct ip_udp_hdr *ip, int len)
{
struct icmp_hdr *icmph = (struct icmp_hdr *)&ip->udp_src;
void ping_receive(struct ethernet_hdr *et, struct ip_udp_hdr *ip, int len)
{
struct icmp_hdr *icmph = (struct icmp_hdr *)&ip->udp_src;
-
IPaddr_t
src_ip;
+
struct in_addr
src_ip;
int eth_hdr_size;
int eth_hdr_size;
+ uchar *tx_packet;
switch (icmph->type) {
case ICMP_ECHO_REPLY:
switch (icmph->type) {
case ICMP_ECHO_REPLY:
- src_ip =
NetReadIP
((void *)&ip->ip_src);
- if (src_ip
== NetPingIP
)
+ src_ip =
net_read_ip
((void *)&ip->ip_src);
+ if (src_ip
.s_addr == net_ping_ip.s_addr
)
net_set_state(NETLOOP_SUCCESS);
return;
case ICMP_ECHO_REQUEST:
eth_hdr_size = net_update_ether(et, et->et_src, PROT_IP);
net_set_state(NETLOOP_SUCCESS);
return;
case ICMP_ECHO_REQUEST:
eth_hdr_size = net_update_ether(et, et->et_src, PROT_IP);
- debug_cond(DEBUG_DEV_PKT, "Got ICMP ECHO REQUEST, return "
- "%d bytes\n", eth_hdr_size + len);
+ debug_cond(DEBUG_DEV_PKT,
+ "Got ICMP ECHO REQUEST, return %d bytes\n",
+ eth_hdr_size + len);
ip->ip_sum = 0;
ip->ip_off = 0;
ip->ip_sum = 0;
ip->ip_off = 0;
-
NetCopyIP
((void *)&ip->ip_dst, &ip->ip_src);
-
NetCopyIP((void *)&ip->ip_src, &NetOurIP
);
+
net_copy_ip
((void *)&ip->ip_dst, &ip->ip_src);
+
net_copy_ip((void *)&ip->ip_src, &net_ip
);
ip->ip_sum = compute_ip_checksum(ip, IP_HDR_SIZE);
icmph->type = ICMP_ECHO_REPLY;
icmph->checksum = 0;
icmph->checksum = compute_ip_checksum(icmph, len - IP_HDR_SIZE);
ip->ip_sum = compute_ip_checksum(ip, IP_HDR_SIZE);
icmph->type = ICMP_ECHO_REPLY;
icmph->checksum = 0;
icmph->checksum = compute_ip_checksum(icmph, len - IP_HDR_SIZE);
- NetSendPacket((uchar *)et, eth_hdr_size + len);
+
+ tx_packet = net_get_async_tx_pkt_buf();
+ memcpy(tx_packet, et, eth_hdr_size + len);
+ net_send_packet(tx_packet, eth_hdr_size + len);
return;
/* default:
return;*/
return;
/* default:
return;*/