[openfirmware] [commit] r2525 - ofw/inet
repository service
svn at openfirmware.info
Fri Sep 23 00:38:29 CEST 2011
Author: wmb
Date: Fri Sep 23 00:38:28 2011
New Revision: 2525
URL: http://tracker.coreboot.org/trac/openfirmware/changeset/2525
Log:
Fixed pingd, which has been broken for a long time.
Modified:
ofw/inet/ping.fth
Modified: ofw/inet/ping.fth
==============================================================================
--- ofw/inet/ping.fth Wed Sep 21 19:16:42 2011 (r2524)
+++ ofw/inet/ping.fth Fri Sep 23 00:38:28 2011 (r2525)
@@ -30,23 +30,17 @@
/packet-max buffer: packet
: get-packet? ( -- packet? )
- packet /packet-max " read" $call-net to /packet
- /packet -1 = if cr ." Packet error" cr false exit then
- /packet -2 = if false exit then
- ." ." true
+ h# 800 " receive-ethernet-packet" $call-net if false exit then ( adr len )
+ /packet-max min to /packet ( adr )
+ packet /packet move ( )
+ ." ." true ( packet )
;
d# 14 constant /ether-header
0 value ip-offset
: ip-header ( -- adr ) packet ip-offset + ;
-: ip? ( -- flag )
- ip-header c@ h# 45 = if
- ip-header
- then
-
- false
-;
+: ip? ( -- flag ) ip-header c@ h# 45 = ;
: link-level-ok? ( -- flag )
packet c@ h# 45 = if
@@ -110,7 +104,10 @@
packet packet 6 + 6 exchange-bytes
then
;
-: exchange-ips ( -- ) ip-header d# 12 + dup 4 + 4 exchange-bytes ;
+: 'ip-src ( -- adr ) ip-header d# 12 + ;
+: 'ip-dst ( -- adr ) ip-header d# 16 + ;
+
+: exchange-ips ( -- ) 'ip-src 'ip-dst 4 exchange-bytes ;
: change-type ( -- ) 0 ip-payload drop c! ;
: recompute-ip-checksum ( -- )
0 ip-header d# 10 + be-w! \ Zap IP checksum
@@ -148,8 +145,7 @@
;
: send-packet ( -- )
- packet /packet " write" $call-net
- /packet <> if cr ." Send failed" cr then
+ packet /packet 'ip-dst h# 800 " send-link-packet" $call-net
;
: echo-packet ( -- )
@@ -162,7 +158,6 @@
;
: ?echo-packet ( -- )
ping? if
- first? if .ip false to first? then
echo-packet
then
;
More information about the openfirmware
mailing list