[movitz-cvs] CVS update: movitz/losp/lib/net/arp.lisp

Frode Vatvedt Fjeld ffjeld at common-lisp.net
Wed Nov 24 10:09:14 UTC 2004


Update of /project/movitz/cvsroot/movitz/losp/lib/net
In directory common-lisp.net:/tmp/cvs-serv4816

Modified Files:
	arp.lisp 
Log Message:
*** empty log message ***
Date: Wed Nov 24 11:09:12 2004
Author: ffjeld

Index: movitz/losp/lib/net/arp.lisp
diff -u movitz/losp/lib/net/arp.lisp:1.6 movitz/losp/lib/net/arp.lisp:1.7
--- movitz/losp/lib/net/arp.lisp:1.6	Tue Nov 23 17:14:33 2004
+++ movitz/losp/lib/net/arp.lisp	Wed Nov 24 11:09:12 2004
@@ -10,7 +10,7 @@
 ;;;; Author:        Frode Vatvedt Fjeld <frodef at acm.org>
 ;;;; Created at:    Thu Mar 20 15:01:15 2003
 ;;;;                
-;;;; $Id: arp.lisp,v 1.6 2004/11/23 16:14:33 ffjeld Exp $
+;;;; $Id: arp.lisp,v 1.7 2004/11/24 10:09:12 ffjeld Exp $
 ;;;;                
 ;;;;------------------------------------------------------------------
 
@@ -79,21 +79,24 @@
 
 (defvar *ne2000* nil)
 
-(defun arp-polling (ip &optional (waiter #'false))
-  (loop with nic = *ip4-nic*
+(defun polling-arp (ip &optional (waiter #'false))
+  (loop with ip = (ip4-address ip) and nic = *ip4-nic* and transmit-time = 0
       for packet = (muerte.ethernet:receive nic)
       until (funcall waiter)
-      do (transmit nic
-		   (format-ethernet-packet (format-arp-request nil +arp-op-request+ *ip4-ip*
-							       (mac-address nic) ip)
-					   (mac-address nic)
-					   muerte.ethernet:+broadcast-address+
-					   muerte.ethernet:+ether-type-arp+))
-	 (when (and packet
+      do (when (and packet
 		    (eq +ether-type-arp+ (ether-type packet))
 		    (eq +arp-op-reply+ (arp-operation packet))
 		    (not (mismatch packet ip :start1 28 :end1 32)))
-	   (return (subseq packet 22 28)))))
+	   (return (subseq packet 22 28)))
+	 (when (< internal-time-units-per-second
+		  (- (get-internal-run-time) transmit-time))
+	   (setf transmit-time (get-internal-run-time))
+	   (transmit nic
+		     (format-ethernet-packet (format-arp-request nil +arp-op-request+ *ip4-ip*
+								 (mac-address nic) ip)
+					     (mac-address nic)
+					     muerte.ethernet:+broadcast-address+
+					     muerte.ethernet:+ether-type-arp+)))))
 	  
 (defun test-arp (&optional (ip #(129 242 16 30)) (my-ip #(129 242 16 173))
 			   (device *ne2000*))





More information about the Movitz-cvs mailing list