/* $OpenBSD: pf.c,v 1.552.2.1 2007/11/27 16:37:57 henning Exp $ */
+/* add $OpenBSD: pf.c,v 1.553 2007/08/23 11:15:49 dhartmei Exp $ */
+/* add $OpenBSD: pf.c,v 1.554 2007/08/28 16:09:12 henning Exp $ */
+
/*
* Copyright (c) 2004 The DragonFly Project. All rights reserved.
(ackskew <= (MAXACKWINDOW << sws)) &&
/* Acking not more than one window forward */
((th->th_flags & TH_RST) == 0 || orig_seq == src->seqlo ||
- (orig_seq == src->seqlo + 1) || (pd->flags & PFDESC_IP_REAS) == 0)) {
+ (orig_seq == src->seqlo + 1) || (orig_seq + 1 == src->seqlo) ||
+ (pd->flags & PFDESC_IP_REAS) == 0)) {
/* Require an exact/+1 sequence match on resets when possible */
if (dst->scrub || src->scrub) {
pf_print_state(*state);
pf_print_flags(th->th_flags);
kprintf(" seq=%u (%u) ack=%u len=%u ackskew=%d "
- "pkts=%llu:%llu\n", seq, orig_seq, ack, pd->p_len,
+ "pkts=%llu:%llu dir=%s,%s\n", seq, orig_seq, ack, pd->p_len,
ackskew, (unsigned long long)(*state)->packets[0],
- (unsigned long long)(*state)->packets[1]);
+ (unsigned long long)(*state)->packets[1],
+ direction == PF_IN ? "in" : "out",
+ direction == (*state)->state_key->direction ?
+ "fwd" : "rev");
}
if (dst->scrub || src->scrub) {