"Fossies" - the Fresh Open Source Software Archive

Member "tcpdump-4.99.1/./bpf_dump.c" (7 Jun 2021, 1964 Bytes) of package /linux/misc/tcpdump-4.99.1.tar.gz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file. For more information about "bpf_dump.c" see the Fossies "Dox" file reference documentation and the latest Fossies "Diffs" side-by-side code changes report: 4.99.0_vs_4.99.1.

    1 /*
    2  * Copyright (c) 1992, 1993, 1994, 1995, 1996
    3  *  The Regents of the University of California.  All rights reserved.
    4  *
    5  * Redistribution and use in source and binary forms, with or without
    6  * modification, are permitted provided that: (1) source code distributions
    7  * retain the above copyright notice and this paragraph in its entirety, (2)
    8  * distributions including binary code include the above copyright notice and
    9  * this paragraph in its entirety in the documentation or other materials
   10  * provided with the distribution, and (3) all advertising materials mentioning
   11  * features or use of this software display the following acknowledgement:
   12  * ``This product includes software developed by the University of California,
   13  * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
   14  * the University nor the names of its contributors may be used to endorse
   15  * or promote products derived from this software without specific prior
   16  * written permission.
   17  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
   18  * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
   19  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
   20  */
   21 
   22 #ifdef HAVE_CONFIG_H
   23 #include <config.h>
   24 #endif
   25 
   26 #include "netdissect-stdinc.h"
   27 
   28 #include <stdio.h>
   29 
   30 #include "netdissect.h"
   31 #include "interface.h"
   32 
   33 void
   34 bpf_dump(const struct bpf_program *p, int option)
   35 {
   36     struct bpf_insn *insn;
   37     int i;
   38     int n = p->bf_len;
   39 
   40     insn = p->bf_insns;
   41     if (option > 2) {
   42         printf("%d\n", n);
   43         for (i = 0; i < n; ++insn, ++i) {
   44             printf("%u %u %u %u\n", insn->code,
   45                    insn->jt, insn->jf, insn->k);
   46         }
   47         return ;
   48     }
   49     if (option > 1) {
   50         for (i = 0; i < n; ++insn, ++i)
   51             printf("{ 0x%x, %d, %d, 0x%08x },\n",
   52                    insn->code, insn->jt, insn->jf, insn->k);
   53         return;
   54     }
   55     for (i = 0; i < n; ++insn, ++i) {
   56 #ifdef BDEBUG
   57         extern int bids[];
   58         printf(bids[i] > 0 ? "[%02d]" : " -- ", bids[i] - 1);
   59 #endif
   60         puts(bpf_image(insn, i));
   61     }
   62 }