This fixed snort + barnyard on my AMD64 machine.
Sorry this report is so late!
ddp

On 11/7/06, nikns <[EMAIL PROTECTED]> wrote:

This diff fixes unified logging/alerting on 64-bit platforms.

http://secure.lv/~nikns/stuff/ports/snort-2.6.0.2p1.diff

Index: snort/Makefile
===================================================================
RCS file: /cvs/ports/net/snort/Makefile,v
retrieving revision 1.49
diff -u -r1.49 Makefile
--- snort/Makefile      14 Oct 2006 09:54:04 -0000      1.49
+++ snort/Makefile      7 Nov 2006 18:35:32 -0000
@@ -3,7 +3,7 @@
COMMENT=       "highly flexible sniffer/NIDS"

DISTNAME=      snort-2.6.0.2
-PKGNAME=       ${DISTNAME}p0
+PKGNAME=       ${DISTNAME}p1
CATEGORIES=    net security
MASTER_SITES=  ${HOMEPAGE}/dl/current/

Index: snort/patches/patch-src_event_h
===================================================================
RCS file: snort/patches/patch-src_event_h
diff -N snort/patches/patch-src_event_h
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ snort/patches/patch-src_event_h     7 Nov 2006 18:35:32 -0000
@@ -0,0 +1,21 @@
+$OpenBSD$
+--- src/event.h.orig   Tue Aug 23 18:52:22 2005
++++ src/event.h        Tue Nov  7 20:28:12 2006
+@@ -34,6 +34,8 @@
+ #include <sys/time.h>
+ #endif
+
++#include "snort_packet_header.h"
++
+ typedef struct _Event
+ {
+     u_int32_t sig_generator;   /* which part of snort generated the
alert? */
+@@ -45,7 +47,7 @@ typedef struct _Event
+     u_int32_t event_reference; /* reference to other events that have
gone off,
+                                 * such as in the case of tagged
packets...
+                                 */
+-    struct timeval ref_time;   /* reference time for the event reference
*/
++    struct pcap_timeval ref_time;   /* reference time for the event
reference */
+
+     /* Don't add to this structure because this is the serialized data
+      * struct for unified logging.
Index: snort/patches/patch-src_output-plugins_spo_unified_c
===================================================================
RCS file: snort/patches/patch-src_output-plugins_spo_unified_c
diff -N snort/patches/patch-src_output-plugins_spo_unified_c
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ snort/patches/patch-src_output-plugins_spo_unified_c        7 Nov 2006
18:35:32 -0000
@@ -0,0 +1,38 @@
+$OpenBSD$
+--- src/output-plugins/spo_unified.c.orig      Fri May 12 20:19:56 2006
++++ src/output-plugins/spo_unified.c   Tue Nov  7 20:28:12 2006
+@@ -126,7 +126,7 @@ typedef struct _UnifiedLog
+ typedef struct _UnifiedAlert
+ {
+     Event event;
+-    struct timeval ts;         /* event timestamp */
++    struct pcap_timeval ts;    /* event timestamp */
+     u_int32_t sip;             /* src ip */
+     u_int32_t dip;             /* dest ip */
+     u_int16_t sp;              /* src port */
+@@ -551,7 +551,11 @@ void RealUnifiedLogPacketAlert(Packet *p
+          * this will have to be fixed when we transition to the
pa_engine
+          * code (p->pkth is libpcap specific)
+          */
+-        memcpy(&logheader.pkth, p->pkth, sizeof(SnortPktHeader));
++        logheader.pkth.ts.tv_sec = p->pkth->ts.tv_sec;
++        logheader.pkth.ts.tv_usec = p->pkth->ts.tv_usec;
++        logheader.pkth.caplen = p->pkth->caplen;
++        logheader.pkth.pktlen = p->pkth->len;
++
+     }
+     else
+     {
+@@ -1260,7 +1264,11 @@ void OldUnifiedLogPacketAlert(Packet *p,
+         {
+             logheader.flags = p->packet_flags;
+
+-            memcpy(&logheader.pkth, p->pkth, sizeof(SnortPktHeader));
++            logheader.pkth.ts.tv_sec = p->pkth->ts.tv_sec;
++            logheader.pkth.ts.tv_usec = p->pkth->ts.tv_usec;
++            logheader.pkth.caplen = p->pkth->caplen;
++            logheader.pkth.pktlen = p->pkth->len;
++
+
+ #ifdef GIDS
+             /*
Index: snort/patches/patch-src_snort_packet_header_h
===================================================================
RCS file: snort/patches/patch-src_snort_packet_header_h
diff -N snort/patches/patch-src_snort_packet_header_h
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ snort/patches/patch-src_snort_packet_header_h       7 Nov 2006
18:35:32 -0000
@@ -0,0 +1,25 @@
+$OpenBSD$
+--- src/snort_packet_header.h.orig     Thu Jan 19 19:09:12 2006
++++ src/snort_packet_header.h  Tue Nov  7 20:28:12 2006
+@@ -16,12 +16,20 @@
+ #include <sys/types.h>
+
+
++/* we must use fixed size of 32 bits, because on-disk
++ * format of savefiles uses 32-bit tv_sec (and tv_usec)
++ */
++struct pcap_timeval {
++    u_int32_t tv_sec;      /* seconds */
++    u_int32_t tv_usec;     /* microseconds */
++};
++
+ /* this is equivalent to the pcap pkthdr struct, but we need one for
+  * portability once we introduce the pa_engine code
+  */
+ typedef struct _SnortPktHeader
+ {
+-    struct timeval ts;     /* packet timestamp */
++    struct pcap_timeval ts;/* packet timestamp */
+     u_int32_t caplen;      /* packet capture length */
+     u_int32_t pktlen;      /* packet "real" length */
+ } SnortPktHeader;


Reply via email to