;;; -*- Mode:Lisp; Readtable:CL; Package:USER; Base:10; Patch-File:T -*-
;;; Patch file for System version 123.25
;;; Reason:
;;;  When you cold boot, chaos:initialize-ncp-cold is called, which resets the meters
;;;  shown by peek -- including "pkts-made".  Since "made-pkts" does in fact have a
;;;  list of packets, this causes a discrepency.  Cure: put in some of my chaos
;;;  packet debugging functions and call the right one from initialize-ncp-cold.
;;; Written 5-Oct-87 09:55:26 by pld at site LMI Cambridge
;;; while running on Jack Flanders from band 2
;;; with Experimental System 123.24, Experimental Local-File 73.0, Experimental FILE-Server 22.0, Experimental Unix-Interface 11.0, Experimental Tape 18.0, Experimental KERMIT 34.0, Experimental ZMail 71.0, Experimental Lambda-Diag 15.0, microcode 1754, SDU Boot Tape 3.12, SDU ROM 8.



; From modified file DJ: L.NETWORK.CHAOS; CHSNCP.LISP#388 at 5-Oct-87 09:55:38
#10R CHAOS#: 
(COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "CHAOS")))
  (COMPILER::PATCH-SOURCE-FILE "SYS: NETWORK; CHAOS; CHSNCP  "


(defun count-free-pkts ()
  (do ((pkt free-pkts)
       (i 0 (1+ i)))
      ((null pkt)
       (values i pkts-made))
    (setq pkt (pkt-link pkt))))

))

; From modified file DJ: L.NETWORK.CHAOS; CHSNCP.LISP#388 at 5-Oct-87 09:55:40
#10R CHAOS#: 
(COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "CHAOS")))
  (COMPILER::PATCH-SOURCE-FILE "SYS: NETWORK; CHAOS; CHSNCP  "


(defun find-lost-pkts ()
  (do ((pkt made-pkts)
       (result nil))
      ((null pkt) result)
    (do ((free-pkt free-pkts))
	((null free-pkt)
	 (push pkt result))
      (if (eq pkt free-pkt)
	  (return)
	(setq free-pkt (pkt-link free-pkt))))
    (setq pkt (pkt-made-link pkt))))

))

; From modified file DJ: L.NETWORK.CHAOS; CHSNCP.LISP#388 at 5-Oct-87 09:55:41
#10R CHAOS#: 
(COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "CHAOS")))
  (COMPILER::PATCH-SOURCE-FILE "SYS: NETWORK; CHAOS; CHSNCP  "


(defun reset-pkts ()
  (setq current-los-pkt-count 0)
  (setq los-pkts nil)
  (setq pkts-made (do ((pkt made-pkts)
		       (i 0 (1+ i)))
		      ((null pkt) i)
		    (setf (pkt-link pkt) (pkt-made-link pkt))
		    (setf (pkt-status pkt) nil)
		    (setf (pkt-being-retransmitted pkt) nil)
		    (setq pkt (pkt-made-link pkt))))
  (setq free-pkts made-pkts))

))

; From modified file DJ: L.NETWORK.CHAOS; CHSNCP.LISP#388 at 5-Oct-87 09:55:42
#10R CHAOS#: 
(COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "CHAOS")))
  (COMPILER::PATCH-SOURCE-FILE "SYS: NETWORK; CHAOS; CHSNCP  "


(defun fixup-pkts ()
  (reset nil)
  (reset-pkts)
  (reset t)
  t)

;;;; INT-PKT management routines

))

; From modified file DJ: L.NETWORK.CHAOS; CHSNCP.LISP#388 at 5-Oct-87 09:55:51
#10R CHAOS#: 
(COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "CHAOS")))
  (COMPILER::PATCH-SOURCE-FILE "SYS: NETWORK; CHAOS; CHSNCP  "

(DEFUN INITIALIZE-NCP-COLD ()
  ;; Debugging aids which keep records into the past (a short way).
  (SETQ BAD-PKT-LIST NIL	;List of strings describing packets received in error
        PKTS-BAD-CRC-SAVE-P NIL ;Don't defaultly save packets with bad CRC
	LOS-PKTS NIL		;LOS PKTs received from the network linked through PKT-LINK.
	MAX-LOS-PKTS-TO-KEEP 16. ;Maximum number of LOS packets to keep on LOS-PKTS
				;There may actually be more but they will be used by allocator
	RECENT-HEADERS-POINTER 0
	*RECEIVE-BROADCAST-PACKETS-P* NIL
	*BRD-PKTS-IN* 0
	*BRD-PKTS-OUT* 0
	*BRD-HISTORY* NIL
	*BRD-REPLIES-IN* 0)
  (RESET-METERS)
  (reset-pkts)					;(reset-meters) clobbers pkts-made.
  (SETUP-MY-ADDRESS)
  (RESET-ROUTING-TABLE))

))
