root/tools/bpf/bpf_asm.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. main

   1 // SPDX-License-Identifier: GPL-2.0-only
   2 /*
   3  * Minimal BPF assembler
   4  *
   5  * Instead of libpcap high-level filter expressions, it can be quite
   6  * useful to define filters in low-level BPF assembler (that is kept
   7  * close to Steven McCanne and Van Jacobson's original BPF paper).
   8  * In particular for BPF JIT implementors, JIT security auditors, or
   9  * just for defining BPF expressions that contain extensions which are
  10  * not supported by compilers.
  11  *
  12  * How to get into it:
  13  *
  14  * 1) read Documentation/networking/filter.txt
  15  * 2) Run `bpf_asm [-c] <filter-prog file>` to translate into binary
  16  *    blob that is loadable with xt_bpf, cls_bpf et al. Note: -c will
  17  *    pretty print a C-like construct.
  18  *
  19  * Copyright 2013 Daniel Borkmann <borkmann@redhat.com>
  20  */
  21 
  22 #include <stdbool.h>
  23 #include <stdio.h>
  24 #include <string.h>
  25 
  26 extern void bpf_asm_compile(FILE *fp, bool cstyle);
  27 
  28 int main(int argc, char **argv)
  29 {
  30         FILE *fp = stdin;
  31         bool cstyle = false;
  32         int i;
  33 
  34         for (i = 1; i < argc; i++) {
  35                 if (!strncmp("-c", argv[i], 2)) {
  36                         cstyle = true;
  37                         continue;
  38                 }
  39 
  40                 fp = fopen(argv[i], "r");
  41                 if (!fp) {
  42                         fp = stdin;
  43                         continue;
  44                 }
  45 
  46                 break;
  47         }
  48 
  49         bpf_asm_compile(fp, cstyle);
  50 
  51         return 0;
  52 }

/* [<][>][^][v][top][bottom][index][help] */