introduce a function to be called when addressing information has changed,
authorhenning <henning@openbsd.org>
Tue, 26 Aug 2008 12:17:10 +0000 (12:17 +0000)
committerhenning <henning@openbsd.org>
Tue, 26 Aug 2008 12:17:10 +0000 (12:17 +0000)
pf_pkt_addr_changed. atm just clears the state key pointer.
calling this is cleaner than having other parts of the stack clearing
pointers in the pf part of the mbuf packet header directly.

sys/net/pf.c
sys/net/pfvar.h

index 1cbe627..2eeb7c5 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: pf.c,v 1.615 2008/08/22 00:35:08 bluhm Exp $ */
+/*     $OpenBSD: pf.c,v 1.616 2008/08/26 12:17:10 henning Exp $ */
 
 /*
  * Copyright (c) 2001 Daniel Hartmeier
@@ -6275,3 +6275,13 @@ pf_check_congestion(struct ifqueue *ifq)
        else
                return (0);
 }
+
+/*
+ * must be called whenever any addressing information such as
+ * address, port, protocol has changed
+ */
+void
+pf_pkt_addr_changed(struct mbuf *m)
+{
+       m->m_pkthdr.pf.statekey = NULL;
+}
index f8103d8..2e5b13a 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: pfvar.h,v 1.276 2008/07/03 15:46:23 henning Exp $ */
+/*     $OpenBSD: pfvar.h,v 1.277 2008/08/26 12:17:10 henning Exp $ */
 
 /*
  * Copyright (c) 2001 Daniel Hartmeier
@@ -1685,6 +1685,7 @@ int       pf_routable(struct pf_addr *addr, sa_family_t af, struct pfi_kif *);
 int    pf_rtlabel_match(struct pf_addr *, sa_family_t, struct pf_addr_wrap *);
 int    pf_socket_lookup(int, struct pf_pdesc *);
 struct pf_state_key *pf_alloc_state_key(int);
+void   pf_pkt_addr_changed(struct mbuf *);
 int    pf_state_key_attach(struct pf_state_key *, struct pf_state *, int);
 void   pfr_initialize(void);
 int    pfr_match_addr(struct pfr_ktable *, struct pf_addr *, sa_family_t);