]> The Tcpdump Group git mirrors - libpcap/blobdiff - bpf_image.c
Have routines to set various internal debugging flags.
[libpcap] / bpf_image.c
index e2f1a774a4f410ce17b0716d92494be3868ff218..01ec536dfd622f38fe36bde9853cb719c4199d43 100644 (file)
  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  */
 
-#ifndef lint
-static const char rcsid[] _U_ =
-    "@(#) $Header: /tcpdump/master/libpcap/bpf_image.c,v 1.28 2008-01-02 04:16:46 guy Exp $ (LBL)";
-#endif
-
 #ifdef HAVE_CONFIG_H
 #include "config.h"
 #endif
 
-#ifdef WIN32
+#ifdef _WIN32
 #include <pcap-stdinc.h>
-#else /* WIN32 */
+#else /* _WIN32 */
 #if HAVE_INTTYPES_H
 #include <inttypes.h>
 #elif HAVE_STDINT_H
@@ -40,7 +35,7 @@ static const char rcsid[] _U_ =
 #include <sys/bitypes.h>
 #endif
 #include <sys/types.h>
-#endif /* WIN32 */
+#endif /* _WIN32 */
 
 #include <stdio.h>
 #include <string.h>
@@ -216,6 +211,11 @@ bpf_image(p, n)
                fmt = "x";
                break;
 
+       case BPF_ALU|BPF_MOD|BPF_X:
+               op = "mod";
+               fmt = "x";
+               break;
+
        case BPF_ALU|BPF_AND|BPF_X:
                op = "and";
                fmt = "x";
@@ -226,6 +226,11 @@ bpf_image(p, n)
                fmt = "x";
                break;
 
+       case BPF_ALU|BPF_XOR|BPF_X:
+               op = "xor";
+               fmt = "x";
+               break;
+
        case BPF_ALU|BPF_LSH|BPF_X:
                op = "lsh";
                fmt = "x";
@@ -256,6 +261,11 @@ bpf_image(p, n)
                fmt = "#%d";
                break;
 
+       case BPF_ALU|BPF_MOD|BPF_K:
+               op = "mod";
+               fmt = "#%d";
+               break;
+
        case BPF_ALU|BPF_AND|BPF_K:
                op = "and";
                fmt = "#0x%x";
@@ -266,6 +276,11 @@ bpf_image(p, n)
                fmt = "#0x%x";
                break;
 
+       case BPF_ALU|BPF_XOR|BPF_K:
+               op = "xor";
+               fmt = "#0x%x";
+               break;
+
        case BPF_ALU|BPF_LSH|BPF_K:
                op = "lsh";
                fmt = "#%d";
@@ -291,12 +306,15 @@ bpf_image(p, n)
                fmt = "";
                break;
        }
-       (void)snprintf(operand, sizeof operand, fmt, v);
-       (void)snprintf(image, sizeof image,
-                     (BPF_CLASS(p->code) == BPF_JMP &&
-                      BPF_OP(p->code) != BPF_JA) ?
-                     "(%03d) %-8s %-16s jt %d\tjf %d"
-                     : "(%03d) %-8s %s",
-                     n, op, operand, n + 1 + p->jt, n + 1 + p->jf);
+       (void)pcap_snprintf(operand, sizeof operand, fmt, v);
+       if (BPF_CLASS(p->code) == BPF_JMP && BPF_OP(p->code) != BPF_JA) {
+               (void)pcap_snprintf(image, sizeof image,
+                             "(%03d) %-8s %-16s jt %d\tjf %d",
+                             n, op, operand, n + 1 + p->jt, n + 1 + p->jf);
+       } else {
+               (void)pcap_snprintf(image, sizeof image,
+                             "(%03d) %-8s %s",
+                             n, op, operand);
+       }
        return image;
 }