Thanks, we'll take a look at it.<br><br>Russ<br><br><div class="gmail_quote">On Sun, Mar 25, 2012 at 2:17 AM, Ryan McBride <span dir="ltr"><<a href="mailto:mcbride@...76...">mcbride@...76...</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">pflog format changed over a year ago, here is a patch against 2.9.2.1 to<br>
support the expanded pflog header size.<br>
<br>
<br>
--- decode.h.orig       Fri Jan 13 07:11:40 2012<br>
+++ decode.h    Sun Mar 25 14:22:47 2012<br>
@@ -797,13 +797,14 @@ typedef struct _SLLHdr {<br>
<br>
<br>
 /*<br>
- * Snort supports 3 versions of the OpenBSD pflog header:<br>
+ * Snort supports 4 versions of the OpenBSD pflog header:<br>
  *<br>
  * Pflog1_Hdr:  CVS = 1.3,  DLT_OLD_PFLOG = 17,  Length = 28<br>
  * Pflog2_Hdr:  CVS = 1.8,  DLT_PFLOG     = 117, Length = 48<br>
  * Pflog3_Hdr:  CVS = 1.12, DLT_PFLOG     = 117, Length = 64<br>
+ * Pflog4_Hdr:  CVS = 1.16, DLT_PFLOG     = 117, Length = 100<br>
  *<br>
- * Since they have the same DLT, Pflog{2,3}Hdr are distinguished<br>
+ * Since they have the same DLT, Pflog{2,3,4}Hdr are distinguished<br>
  * by their actual length.  The minimum required length excludes<br>
  * padding.<br>
  */<br>
@@ -871,6 +872,33 @@ typedef struct _Pflog3_hdr<br>
 #define PFLOG3_HDRLEN (sizeof(struct _Pflog3_hdr))<br>
 #define PFLOG3_HDRMIN (PFLOG3_HDRLEN - PFLOG_PADLEN)<br>
<br>
+typedef struct _Pflog4_hdr<br>
+{<br>
+    uint8_t  length;<br>
+    uint8_t  af;<br>
+    uint8_t  action;<br>
+    uint8_t  reason;<br>
+    char     ifname[IFNAMSIZ];<br>
+    char     ruleset[PFLOG_RULELEN];<br>
+    uint32_t rulenr;<br>
+    uint32_t subrulenr;<br>
+    uint32_t uid;<br>
+    uint32_t pid;<br>
+    uint32_t rule_uid;<br>
+    uint32_t rule_pid;<br>
+    uint8_t  dir;<br>
+    uint8_t  rewritten;<br>
+    uint8_t  naf;<br>
+    u_int8_t pad[1];<br>
+    uint8_t  saddr[16];<br>
+    uint8_t  daddr[16];<br>
+    uint16_t sport;<br>
+    uint16_t dport;<br>
+} Pflog4Hdr;<br>
+<br>
+#define PFLOG4_HDRLEN (sizeof(struct _Pflog4_hdr))<br>
+#define PFLOG4_HDRMIN (PFLOG4_HDRLEN)  /* no trailing padding */<br>
+<br>
 /*<br>
  * ssl_pkttype values.<br>
  */<br>
@@ -1760,6 +1788,7 @@ typedef struct _Packet<br>
     Pflog1Hdr *pf1h;            /* OpenBSD pflog interface header - version 1 */<br>
     Pflog2Hdr *pf2h;            /* OpenBSD pflog interface header - version 2 */<br>
     Pflog3Hdr *pf3h;            /* OpenBSD pflog interface header - version 3 */<br>
+    Pflog4Hdr *pf4h;            /* OpenBSD pflog interface header - version 4 */<br>
<br>
 #ifdef DLT_LINUX_SLL<br>
     const SLLHdr *sllh;         /* Linux cooked sockets header */<br>
--- decode.c.orig       Fri Jan 13 07:11:40 2012<br>
+++ decode.c    Sun Mar 25 14:22:51 2012<br>
@@ -6865,20 +6865,36 @@ void DecodePflog(Packet * p, const DAQ_PktHdr_t * pkth<br>
         return;<br>
     }<br>
     /* lay the pf header structure over the packet data */<br>
-    if ( *((uint8_t*)pkt) < PFLOG3_HDRMIN )<br>
+    switch(*((uint8_t*)pkt))<br>
     {<br>
-        p->pf2h = (Pflog2Hdr*)pkt;<br>
-        pflen = p->pf2h->length;<br>
-        hlen = PFLOG2_HDRLEN;<br>
-        af = p->pf2h->af;<br>
+        case PFLOG2_HDRMIN:<br>
+            p->pf2h = (Pflog2Hdr*)pkt;<br>
+            pflen = p->pf2h->length;<br>
+            hlen = PFLOG2_HDRLEN;<br>
+            af = p->pf2h->af;<br>
+            break;<br>
+        case PFLOG3_HDRMIN:<br>
+            p->pf3h = (Pflog3Hdr*)pkt;<br>
+            pflen = p->pf3h->length;<br>
+            hlen = PFLOG3_HDRLEN;<br>
+            af = p->pf3h->af;<br>
+            break;<br>
+        case PFLOG4_HDRMIN:<br>
+            p->pf4h = (Pflog4Hdr*)pkt;<br>
+            pflen = p->pf4h->length;<br>
+            hlen = PFLOG4_HDRLEN;<br>
+            af = p->pf4h->af;<br>
+            break;<br>
+        default:<br>
+            if (ScLogVerbose())<br>
+            {<br>
+                ErrorMessage("unrecognized pflog header length! "<br>
+                        "(%d)\n", *((uint8_t*)pkt));<br>
+            }<br>
+            PREPROC_PROFILE_END(decodePerfStats);<br>
+            return;<br>
     }<br>
-    else<br>
-    {<br>
-        p->pf3h = (Pflog3Hdr*)pkt;<br>
-        pflen = p->pf3h->length;<br>
-        hlen = PFLOG3_HDRLEN;<br>
-        af = p->pf3h->af;<br>
-    }<br>
+<br>
     /* now that we know a little more, do a little more validation */<br>
     if(cap_len < hlen)<br>
     {<br>
<br>
------------------------------------------------------------------------------<br>
This SF email is sponsosred by:<br>
Try Windows Azure free for 90 days Click Here<br>
<a href="http://p.sf.net/sfu/sfd2d-msazure" target="_blank">http://p.sf.net/sfu/sfd2d-msazure</a><br>
_______________________________________________<br>
Snort-devel mailing list<br>
<a href="mailto:Snort-devel@lists.sourceforge.net">Snort-devel@...1685...ceforge.net</a><br>
<a href="https://lists.sourceforge.net/lists/listinfo/snort-devel" target="_blank">https://lists.sourceforge.net/lists/listinfo/snort-devel</a><br>
<br>
Please visit <a href="http://blog.snort.org" target="_blank">http://blog.snort.org</a> for the latest news about Snort!<br>
</blockquote></div><br>