
On Thu, Jan 19, 2012 at 4:53 PM, Joe Hershberger joe.hershberger@ni.com wrote:
Signed-off-by: Joe Hershberger joe.hershberger@ni.com Cc: Joe Hershberger joe.hershberger@gmail.com Cc: Wolfgang Denk wd@denx.de
Acked-by: Simon Glass sjg@chromium.org
net/net.c | 25 +------------------------ net/rarp.c | 38 +++++++++++++++++++++++++++----------- net/rarp.h | 1 + 3 files changed, 29 insertions(+), 35 deletions(-)
diff --git a/net/net.c b/net/net.c index c2fbcb5..fdc1ebe 100644 --- a/net/net.c +++ b/net/net.c @@ -857,9 +857,6 @@ NetReceive(volatile uchar *inpkt, int len) { Ethernet_t *et; IP_t *ip; -#ifdef CONFIG_CMD_RARP
- ARP_t *arp;
-#endif IPaddr_t tmp; IPaddr_t src_ip; int x; @@ -964,27 +961,7 @@ NetReceive(volatile uchar *inpkt, int len)
#ifdef CONFIG_CMD_RARP case PROT_RARP:
- debug("Got RARP\n");
- arp = (ARP_t *)ip;
- if (len < ARP_HDR_SIZE) {
- printf("bad length %d < %d\n", len, ARP_HDR_SIZE);
- return;
- }
- if ((ntohs(arp->ar_op) != RARPOP_REPLY) ||
- (ntohs(arp->ar_hrd) != ARP_ETHER) ||
- (ntohs(arp->ar_pro) != PROT_IP) ||
- (arp->ar_hln != 6) || (arp->ar_pln != 4)) {
- puts("invalid RARP header\n");
- } else {
- NetCopyIP(&NetOurIP, &arp->ar_data[16]);
- if (NetServerIP == 0)
- NetCopyIP(&NetServerIP, &arp->ar_data[6]);
- memcpy(NetServerEther, &arp->ar_data[0], 6);
- (*packetHandler)(0, 0, 0, 0, 0);
- }
- RarpReceive(ip, len);
break; #endif case PROT_IP: diff --git a/net/rarp.c b/net/rarp.c index 5a813a2..761560c 100644 --- a/net/rarp.c +++ b/net/rarp.c @@ -36,18 +36,37 @@ # define TIMEOUT_COUNT (CONFIG_NET_RETRY_COUNT) #endif
int RarpTry;
/* * Handle a RARP received packet. */ -static void -RarpHandler(uchar *dummi0, unsigned dummi1, IPaddr_t sip, unsigned dummi2,
- unsigned dummi3)
+void
void on same line as function?
+RarpReceive(IP_t *ip, unsigned len) {
- debug("Got good RARP\n");
- net_auto_load();
- ARP_t *arp;
- debug("Got RARP\n");
- arp = (ARP_t *)ip;
- if (len < ARP_HDR_SIZE) {
- printf("bad length %d < %d\n", len, ARP_HDR_SIZE);
- return;
- }
- if ((ntohs(arp->ar_op) != RARPOP_REPLY) ||
- (ntohs(arp->ar_hrd) != ARP_ETHER) ||
- (ntohs(arp->ar_pro) != PROT_IP) ||
- (arp->ar_hln != 6) || (arp->ar_pln != 4)) {
- puts("invalid RARP header\n");
- } else {
- NetCopyIP(&NetOurIP, &arp->ar_data[16]);
- if (NetServerIP == 0)
- NetCopyIP(&NetServerIP, &arp->ar_data[6]);
- memcpy(NetServerEther, &arp->ar_data[0], 6);
- debug("Got good RARP\n");
- net_auto_load();
- }
}
@@ -70,7 +89,6 @@ RarpTimeout(void) void RarpRequest(void) {
- int i;
uchar *pkt; ARP_t *rarp;
@@ -90,12 +108,10 @@ RarpRequest(void) memcpy(&rarp->ar_data[6], &NetOurIP, 4); /* source IP addr */ /* dest ET addr = source ET addr ??*/ memcpy(&rarp->ar_data[10], NetOurEther, 6);
- /* dest. IP addr set to broadcast */
- for (i = 0; i <= 3; i++)
- rarp->ar_data[16 + i] = 0xff;
- /* dest IP addr set to broadcast */
- memset(&rarp->ar_data[16], 0xff, 4);
NetSendPacket(NetTxPacket, (pkt - NetTxPacket) + ARP_HDR_SIZE);
NetSetTimeout(TIMEOUT, RarpTimeout);
- NetSetHandler(RarpHandler);
} diff --git a/net/rarp.h b/net/rarp.h index 4e92d80..0d728dc 100644 --- a/net/rarp.h +++ b/net/rarp.h @@ -37,6 +37,7 @@
extern int RarpTry;
+extern void RarpReceive(IP_t *ip, unsigned len); extern void RarpRequest(void); /* Send a RARP request */
/**********************************************************************/
1.6.0.2
U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot