anchor.diff:     (%snd.nxt :accessor tcp-connection-snd.nxt
                :initarg :snd.nxt
                :type tcp-sequence-number)
  +   (%snd.una :accessor tcp-connection-snd.una
  +             :initarg :snd.una)
      (%rcv.nxt :accessor tcp-connection-rcv.nxt
                :initarg :rcv.nxt
                :type tcp-sequence-number)
  
positive.code:                             (+u32 (tcp-connection-rcv.nxt connection) 1))
                        (tcp4-send-packet connection ack seq nil :ack-p t))
                      (tcp4-receive-data connection data-length end header-length packet seq start)))
                 ((not (logtest flags +tcp4-flag-rst+))
                  (tcp4-send-packet connection
                                    (tcp-connection-snd.nxt connection)
                                    (tcp-connection-rcv.nxt connection)
                                    nil
                                    :ack-p t))))
          (:close-wait
           ;; Remote has closed, local can still send data.
           ;; Not much to do here, just waiting for the application to close.
  
negative.code:   ;; Disarm it so it stops triggering the source
    (mezzano.supervisor:timer-disarm (tcp-connection-retransmit-timer connection))
    ;; What're we retransmitting?
    (ecase (tcp-connection-state connection)
      (:syn-sent
       (let ((seq (-u32 (tcp-connection-snd.nxt connection) 1)))
         (tcp4-send-packet connection seq 0 nil :ack-p nil :syn-p t)
         (arm-retransmit-timer *tcp-connect-retransmit-time* connection)))
      ((:established
        :close-wait
        :last-ack
        :fin-wait-1
        :fin-wait-2
        :closing)
       (let ((packet (first (tcp-connection-retransmit-queue connection))))
         (apply #'tcp4-send-packet connection packet)
         ;; TODO: Update RTO.
         (arm-retransmit-timer *tcp-retransmit-time* connection)))))
  
  (defun arm-timeout-timer (seconds connection)
    (mezzano.supervisor:timer-arm seconds
  