I'll be fairly surprised if this is actually correct, but at least
it builds and appears to display the right addresses and port numbers.
"mkdir patches" before applying..
Index: Makefile
===================================================================
RCS file: /cvs/ports/net/pfflowd/Makefile,v
retrieving revision 1.7
diff -u -p -r1.7 Makefile
--- Makefile 15 Sep 2007 22:36:58 -0000 1.7
+++ Makefile 16 Jul 2008 14:58:24 -0000
@@ -3,6 +3,7 @@
COMMENT= PF to NetFlow converter
DISTNAME= pfflowd-0.7
+PKGNAME= ${DISTNAME}p0
CATEGORIES= net
MASTER_SITES= http://www.mindrot.org/files/pfflowd/
Index: patches/patch-pfflowd_c
===================================================================
RCS file: patches/patch-pfflowd_c
diff -N patches/patch-pfflowd_c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-pfflowd_c 16 Jul 2008 14:59:04 -0000
@@ -0,0 +1,43 @@
+$OpenBSD$
+--- pfflowd.c.orig Wed Jun 7 11:58:37 2006
++++ pfflowd.c Wed Jul 16 15:46:15 2008
+@@ -300,11 +300,15 @@ send_netflow_v1(const struct pfsync_state *st, u_int n
+ creation = uptime_ms; /* Avoid u_int wrap */
+
+ if (st[i].direction == PF_OUT) {
+- memcpy(&src, &st[i].lan, sizeof(src));
+- memcpy(&dst, &st[i].ext, sizeof(dst));
++ memcpy(&src, &st[i].key[0].addr[0], sizeof(src));
++ memcpy(&src.port, &st[i].key[0].port[0],
sizeof(src.port));
++ memcpy(&dst, &st[i].key[0].addr[1], sizeof(dst));
++ memcpy(&dst.port, &st[i].key[0].port[1],
sizeof(dst.port));
+ } else {
+- memcpy(&src, &st[i].ext, sizeof(src));
+- memcpy(&dst, &st[i].lan, sizeof(dst));
++ memcpy(&src, &st[i].key[0].addr[1], sizeof(src));
++ memcpy(&src.port, &st[i].key[0].port[1],
sizeof(src.port));
++ memcpy(&dst, &st[i].key[0].addr[0], sizeof(dst));
++ memcpy(&dst.port, &st[i].key[0].port[0],
sizeof(dst.port));
+ }
+
+ flw = (struct NF1_FLOW *)(packet + offset);
+@@ -473,11 +477,15 @@ send_netflow_v5(const struct pfsync_state *st, u_int n
+ creation = uptime_ms; /* Avoid u_int wrap */
+
+ if (st[i].direction == PF_OUT) {
+- memcpy(&src, &st[i].lan, sizeof(src));
+- memcpy(&dst, &st[i].ext, sizeof(dst));
++ memcpy(&src.addr, &st[i].key[0].addr[0],
sizeof(src.addr));
++ memcpy(&src.port, &st[i].key[0].port[0],
sizeof(src.port));
++ memcpy(&dst.addr, &st[i].key[0].addr[1],
sizeof(dst.addr));
++ memcpy(&dst.port, &st[i].key[0].port[1],
sizeof(dst.port));
+ } else {
+- memcpy(&src, &st[i].ext, sizeof(src));
+- memcpy(&dst, &st[i].lan, sizeof(dst));
++ memcpy(&src.addr, &st[i].key[0].addr[1],
sizeof(src.addr));
++ memcpy(&src.port, &st[i].key[0].port[1],
sizeof(src.port));
++ memcpy(&dst.addr, &st[i].key[0].addr[0],
sizeof(dst.addr));
++ memcpy(&dst.port, &st[i].key[0].port[0],
sizeof(dst.port));
+ }
+
+ flw = (struct NF5_FLOW *)(packet + offset);
Index: patches/patch-pfflowd_h
===================================================================
RCS file: patches/patch-pfflowd_h
diff -N patches/patch-pfflowd_h
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-pfflowd_h 16 Jul 2008 14:59:04 -0000
@@ -0,0 +1,12 @@
+$OpenBSD$
+--- pfflowd.h.orig Wed Jul 16 13:48:31 2008
++++ pfflowd.h Wed Jul 16 13:48:40 2008
+@@ -29,7 +29,7 @@
+ #define DEFAULT_INTERFACE "pfsync0"
+ #define LIBPCAP_SNAPLEN 2020 /* Default MTU */
+
+-#define _PFSYNC_VER 3
++#define _PFSYNC_VER 4
+
+ /*
+ * This is the Cisco Netflow(tm) version 1 packet format