forked from osmocom/wireshark
wslua: Port make-taps to Python3
Port the script that creates taps_wslua.c and taps.txt to Python3. The generated taps_wslua.c has one less newline, otherwise the output is identical to the Perl version. Make the "taps" configuration file an ConfigParser / .ini file. Ping #18152.pespin/osmux-wip
parent
dac75fba7f
commit
ae3010cabe
|
@ -190,7 +190,7 @@ probably isn't. There is even a third model in use: pre-loading the member
|
|||
fields of the class table with the values, instead of waiting for the Lua
|
||||
script to access a particular one to retrieve it; for example the Listener tap
|
||||
extractors table is pre-populated (see files 'wslua_listener.c' and 'taps'
|
||||
which through the make-taps.pl perl script creates 'taps_wslua.c'). The
|
||||
which through the make-taps.py Python3 script creates 'taps_wslua.c'). The
|
||||
downside of that approach is the performance impact, filling fields the Lua
|
||||
script may never access. Lastly, the Field, FieldInfo, and Tvb's ByteArray
|
||||
type each provide a __call metamethod as an accessor - I strongly suggest you
|
||||
|
@ -258,15 +258,14 @@ The Listener object is one of the more complicated ones. When the Lua script
|
|||
creates a Listener (using Listener.new()), the code creates and returns a tap
|
||||
object. The type of tap is based on the passed-in argument to Listener.new(),
|
||||
and it creates a Lua table of the tap member variables. That happens in
|
||||
taps_wslua.c, which is an auto-generated file from make-taps.pl. That Perl
|
||||
script reads from a file called 'taps', which identifies every struct name
|
||||
(and associated enum name) that should be exposed as a tap type. The Perl
|
||||
taps_wslua.c, which is an auto-generated file from make-taps.py. That Python3
|
||||
script reads from a file called 'taps.ini', which identifies every struct name
|
||||
(and associated enum name) that should be exposed as a tap type. The Python3
|
||||
script then generates the taps_wslua.c to push those whenever the Listener
|
||||
calls for a tap; and it also generates a taps.tx file documenting them all.
|
||||
So to add a new type, add the info to the taps file (or uncomment an existing
|
||||
one), and make sure every member of the tap struct you're exposing is of a
|
||||
type that make-taps.pl has in its Perl %types and %comments associative
|
||||
arrays.
|
||||
type that make-taps.py has in its Python "types" and "comments" dictionaries.
|
||||
|
||||
Note on Lua versions:
|
||||
|
||||
|
|
|
@ -54,7 +54,7 @@ set_source_files_properties(
|
|||
COMPILE_FLAGS "${WERROR_COMMON_FLAGS}"
|
||||
)
|
||||
|
||||
# make-taps.pl depends on the current working directory
|
||||
# make-taps.py depends on the current working directory
|
||||
# to find the dissector files (contents of taps file
|
||||
# depend on this actually, so just changing the paths
|
||||
# in these lists won't help).
|
||||
|
@ -71,18 +71,17 @@ set(WSLUA_TAPS_USED
|
|||
add_custom_command(
|
||||
OUTPUT
|
||||
${CMAKE_BINARY_DIR}/epan/wslua/taps_wslua.c
|
||||
# XXX taps.txt doesn't appear to be used anywhere.
|
||||
${CMAKE_BINARY_DIR}/epan/wslua/taps.txt
|
||||
COMMAND
|
||||
${PERL_EXECUTABLE}
|
||||
${CMAKE_SOURCE_DIR}/epan/wslua/make-taps.pl
|
||||
${CMAKE_SOURCE_DIR}/epan/wslua/taps
|
||||
${PYTHON_EXECUTABLE}
|
||||
${CMAKE_SOURCE_DIR}/epan/wslua/make-taps.py
|
||||
${CMAKE_BINARY_DIR}/epan/wslua/taps_wslua.c
|
||||
${CMAKE_BINARY_DIR}/epan/wslua/taps.txt
|
||||
${CMAKE_SOURCE_DIR}/epan/wslua
|
||||
DEPENDS
|
||||
${CMAKE_SOURCE_DIR}/epan/wslua/taps
|
||||
${CMAKE_SOURCE_DIR}/epan/wslua/make-taps.pl
|
||||
# Only here to add dependencies for the taps "source"files
|
||||
${CMAKE_SOURCE_DIR}/epan/wslua/taps.ini
|
||||
${CMAKE_SOURCE_DIR}/epan/wslua/make-taps.py
|
||||
# Only here to add dependencies for the taps "source" files
|
||||
${WSLUA_TAPS_USED}
|
||||
)
|
||||
|
||||
|
|
|
@ -1,222 +0,0 @@
|
|||
#!/usr/bin/perl
|
||||
#
|
||||
# make-taps.pl
|
||||
# Extract structs from C headers to generate a function that
|
||||
# pushes a lua table into the stack containing the elements of
|
||||
# the struct.
|
||||
#
|
||||
# (c) 2006 Luis E. Garcia Ontanon <luis@ontanon.org>
|
||||
#
|
||||
# Wireshark - Network traffic analyzer
|
||||
# By Gerald Combs <gerald@wireshark.org>
|
||||
# Copyright 2006 Gerald Combs
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
my %types = %{{
|
||||
'gchar[]' => 'lua_pushstring(L,(const char*)v->STR);',
|
||||
'gchar*' => 'lua_pushstring(L,(const char*)v->STR);',
|
||||
'guint' => 'lua_pushnumber(L,(lua_Number)v->STR);',
|
||||
'guint8' => 'lua_pushnumber(L,(lua_Number)v->STR);',
|
||||
'guint16' => 'lua_pushnumber(L,(lua_Number)v->STR);',
|
||||
'guint32' => 'lua_pushnumber(L,(lua_Number)v->STR);',
|
||||
'gint' => 'lua_pushnumber(L,(lua_Number)v->STR);',
|
||||
'gint8' => 'lua_pushnumber(L,(lua_Number)v->STR);',
|
||||
'gint16' => 'lua_pushnumber(L,(lua_Number)v->STR);',
|
||||
'gint32' => 'lua_pushnumber(L,(lua_Number)v->STR);',
|
||||
'gboolean' => 'lua_pushboolean(L,(int)v->STR);',
|
||||
'address' => '{ Address a = (Address)g_malloc(sizeof(address)); copy_address(a, &(v->STR)); pushAddress(L,a); }',
|
||||
'address*' => '{ Address a = (Address)g_malloc(sizeof(address)); copy_address(a, v->STR); pushAddress(L,a); }',
|
||||
'int' => 'lua_pushnumber(L,(lua_Number)v->STR);',
|
||||
'nstime_t' => 'lua_pushnumber(L,(lua_Number)nstime_to_sec(&(v->STR)));',
|
||||
'nstime_t*' => 'lua_pushnumber(L,(lua_Number)nstime_to_sec(v->STR));'
|
||||
}};
|
||||
|
||||
my %comments = %{{
|
||||
'gchar[]' => 'string',
|
||||
'gchar*' => 'string',
|
||||
'guint' => 'number',
|
||||
'guint8' => 'number',
|
||||
'guint16' => 'number',
|
||||
'guint32' => 'number',
|
||||
'gint' => 'number',
|
||||
'gint8' => 'number',
|
||||
'gint16' => 'number',
|
||||
'gint32' => 'number',
|
||||
'gboolean' => 'boolean',
|
||||
'address' => 'Address',
|
||||
'address*' => 'Address',
|
||||
'int' => 'number',
|
||||
'nstime_t' => 'number (seconds, since 1-1-1970 if absolute)',
|
||||
'nstime_t*' => 'number (seconds, since 1-1-1970 if absolute)',
|
||||
}};
|
||||
|
||||
|
||||
my %functs = ();
|
||||
|
||||
my %enums = ();
|
||||
|
||||
sub dotap {
|
||||
my ($tname,$fname,$sname,@enums) = @_;
|
||||
my $buf = '';
|
||||
|
||||
open FILE, "< $fname";
|
||||
while(<FILE>) {
|
||||
$buf .= $_;
|
||||
}
|
||||
close FILE;
|
||||
|
||||
$buf =~ s@/\*.*?\*/@@;
|
||||
|
||||
for my $ename (@enums) {
|
||||
$enums{$ename} = [];
|
||||
my $a = $enums{$ename};
|
||||
|
||||
my $enumre = "typedef\\s+enum[^{]*{([^}]*)}[\\s\\n]*" . ${ename} . "[\\s\\n]*;";
|
||||
if ($buf =~ s/$enumre//ms ) {
|
||||
$types{$ename} = "lua_pushnumber(L,(lua_Number)v->STR); /* $ename */";
|
||||
my $ebody = $1;
|
||||
$ebody =~ s/\s+//msg;
|
||||
$comments{$ename} = "$ename: { $ebody }";
|
||||
$comments{$ename} =~ s/,/|/g;
|
||||
for (split /,/, $ebody) {
|
||||
push @{$a}, $_;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
my $re = "typedef\\s+struct.*?{([^}]*)}[\\s\\n]*($sname)[\\s\\n]*;";
|
||||
my $body;
|
||||
|
||||
while ($buf =~ s/$re//ms) {
|
||||
$body = $1;
|
||||
}
|
||||
|
||||
die "could not find typedef $sname in $fname" if not defined $body and $sname ne "void";
|
||||
|
||||
my %elems = ();
|
||||
|
||||
while($body =~ s/\s*(.*?)([\w\d_]+)\s*\[\s*\d+\s*\]\s*;//) {
|
||||
my ($k,$v) = ($2,$1 . "[]");
|
||||
$v =~ s/const //g;
|
||||
$v =~ s/\s+//g;
|
||||
$elems{$k} = $v;
|
||||
}
|
||||
|
||||
while($body =~ s/\s*(.*?)([\w\d_]+)\s*;//) {
|
||||
my ($k,$v) = ($2,$1);
|
||||
$v =~ s/const //g;
|
||||
$v =~ s/\s+//g;
|
||||
$elems{$k} = $v;
|
||||
}
|
||||
|
||||
my $code = "static void wslua_${tname}_to_table(lua_State* L, const void* p) {\n\tconst $sname* v;\n\n\tv = (const $sname*)p;\n\tlua_newtable(L);\n\n";
|
||||
my $doc = "Tap: $tname\n";
|
||||
|
||||
for my $n (sort keys %elems) {
|
||||
my $fmt = $types{$elems{$n}};
|
||||
my $lua_type;
|
||||
|
||||
if ($fmt) {
|
||||
$code .= "\tlua_pushstring(L,\"$n\");\n\t";
|
||||
($lua_type = $fmt) =~ s/\bSTR\b/$n/g;
|
||||
$code .= $lua_type;
|
||||
$code .= "\n\tlua_settable(L,-3);\n";
|
||||
$doc .= "\t$n: $comments{$elems{$n}}\n";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
$code .= "}\n\n";
|
||||
$doc .= "\n";
|
||||
|
||||
$functs{$tname} = "wslua_${tname}_to_table";
|
||||
|
||||
return ($code,$doc);
|
||||
}
|
||||
|
||||
|
||||
open TAPSFILE, "< $ARGV[0]";
|
||||
open CFILE, "> $ARGV[1]";
|
||||
open DOCFILE, "> $ARGV[2]";
|
||||
my $srcdir = $ARGV[3];
|
||||
|
||||
print CFILE <<"HEADER";
|
||||
/* This file is autogenerated from ./taps by ./make-taps.pl */
|
||||
/* DO NOT EDIT! */
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include "wslua.h"
|
||||
|
||||
#include <wsutil/nstime.h>
|
||||
|
||||
HEADER
|
||||
|
||||
print DOCFILE "\n";
|
||||
|
||||
while (<TAPSFILE>) {
|
||||
s@#.*@@;
|
||||
next if /^\s*$/;
|
||||
my ($tname,$fname,$sname,@enums) = split /\s+/;
|
||||
my ($c,$doc) = dotap($tname,$srcdir . "/" . $fname,$sname,@enums);
|
||||
print CFILE "#include \"$fname\"\n";
|
||||
print CFILE $c;
|
||||
print DOCFILE $doc;
|
||||
}
|
||||
|
||||
print CFILE <<"TBLHDR";
|
||||
static tappable_t tappables[] = {
|
||||
TBLHDR
|
||||
|
||||
for my $tname (sort keys %functs) {
|
||||
print CFILE <<"TBLELEM";
|
||||
{"$tname", $functs{$tname} },
|
||||
TBLELEM
|
||||
}
|
||||
|
||||
print CFILE <<"TBLFTR";
|
||||
{"frame",NULL},
|
||||
{NULL,NULL}
|
||||
};
|
||||
|
||||
int wslua_set_tap_enums(lua_State* L) {
|
||||
TBLFTR
|
||||
|
||||
|
||||
for my $ename (sort keys %enums) {
|
||||
print CFILE "\n\t/*\n\t * $ename\n\t */\n\tlua_newtable(L);\n";
|
||||
for my $a (@{$enums{$ename}}) {
|
||||
print CFILE <<"ENUMELEM";
|
||||
lua_pushnumber(L,(lua_Number)$a);
|
||||
lua_setglobal(L,"$a");
|
||||
lua_pushnumber(L,(lua_Number)$a);
|
||||
lua_pushstring(L,"$a");
|
||||
lua_settable(L,-3);
|
||||
ENUMELEM
|
||||
}
|
||||
print CFILE "\tlua_setglobal(L,\"$ename\");\n";
|
||||
}
|
||||
|
||||
print CFILE <<"TAIL";
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
tap_extractor_t wslua_get_tap_extractor(const gchar* name) {
|
||||
tappable_t* t;
|
||||
for(t = tappables; t->name; t++ ) {
|
||||
if (g_str_equal(t->name,name)) return t->extractor;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
TAIL
|
||||
exit 0;
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,215 @@
|
|||
#!/usr/bin/env python3
|
||||
#
|
||||
# make-taps.py
|
||||
#
|
||||
# By Gerald Combs <gerald@wireshark.org>
|
||||
# Based on make-taps.pl by Luis E. Garcia Onatnon <luis.ontanon@gmail.com>
|
||||
#
|
||||
# Wireshark - Network traffic analyzer
|
||||
# By Gerald Combs <gerald@wireshark.org>
|
||||
# Copyright 1998 Gerald Combs
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
'''\
|
||||
Extract structs from C headers to generate a function that pushes a lua table
|
||||
into the stack containing the elements of the struct.
|
||||
'''
|
||||
|
||||
import argparse
|
||||
import configparser
|
||||
import os
|
||||
import re
|
||||
import sys
|
||||
|
||||
|
||||
this_dir = os.path.dirname(__file__)
|
||||
|
||||
|
||||
def get_tap_info(tap_name, header_file, struct_name, enum_types):
|
||||
code = f'#include "{header_file}"\n'
|
||||
doc = f'Tap: {tap_name}\n'
|
||||
enums = {}
|
||||
buf = ''
|
||||
|
||||
types = {
|
||||
'gchar[]': 'lua_pushstring(L,(const char*)v->STR);',
|
||||
'gchar*': 'lua_pushstring(L,(const char*)v->STR);',
|
||||
'guint': 'lua_pushnumber(L,(lua_Number)v->STR);',
|
||||
'guint8': 'lua_pushnumber(L,(lua_Number)v->STR);',
|
||||
'guint16': 'lua_pushnumber(L,(lua_Number)v->STR);',
|
||||
'guint32': 'lua_pushnumber(L,(lua_Number)v->STR);',
|
||||
'gint': 'lua_pushnumber(L,(lua_Number)v->STR);',
|
||||
'gint8': 'lua_pushnumber(L,(lua_Number)v->STR);',
|
||||
'gint16': 'lua_pushnumber(L,(lua_Number)v->STR);',
|
||||
'gint32': 'lua_pushnumber(L,(lua_Number)v->STR);',
|
||||
'gboolean': 'lua_pushboolean(L,(int)v->STR);',
|
||||
'address': '{ Address a = (Address)g_malloc(sizeof(address)); copy_address(a, &(v->STR)); pushAddress(L,a); }',
|
||||
'address*': '{ Address a = (Address)g_malloc(sizeof(address)); copy_address(a, v->STR); pushAddress(L,a); }',
|
||||
'int': 'lua_pushnumber(L,(lua_Number)v->STR);',
|
||||
'nstime_t': 'lua_pushnumber(L,(lua_Number)nstime_to_sec(&(v->STR)));',
|
||||
'nstime_t*': 'lua_pushnumber(L,(lua_Number)nstime_to_sec(v->STR));',
|
||||
}
|
||||
|
||||
comments = {
|
||||
'gchar[]': 'string',
|
||||
'gchar*': 'string',
|
||||
'guint': 'number',
|
||||
'guint8': 'number',
|
||||
'guint16': 'number',
|
||||
'guint32': 'number',
|
||||
'gint': 'number',
|
||||
'gint8': 'number',
|
||||
'gint16': 'number',
|
||||
'gint32': 'number',
|
||||
'gboolean': 'boolean',
|
||||
'address': 'Address',
|
||||
'address*': 'Address',
|
||||
'int': 'number',
|
||||
'nstime_t': 'number (seconds, since 1-1-1970 if absolute)',
|
||||
'nstime_t*': 'number (seconds, since 1-1-1970 if absolute)',
|
||||
}
|
||||
|
||||
with open(os.path.join(this_dir, header_file), encoding='utf-8') as header_f:
|
||||
for line in header_f:
|
||||
# Remove comments
|
||||
line = re.sub(r'\/\*.*?\*/', '', line)
|
||||
line = re.sub(r'//.*', '', line)
|
||||
buf += line
|
||||
|
||||
for enum in enum_types:
|
||||
m = re.search(fr'typedef\s+enum[^{{]*{{([^}}]*)}}[\s\n]*{enum}[\s\n]*;', buf, flags=re.DOTALL)
|
||||
if m:
|
||||
types[enum] = f'lua_pushnumber(L,(lua_Number)v->STR); /* {enum} */'
|
||||
econsts = m.group(1).splitlines()
|
||||
econsts = [re.sub('\s+', '', item) for item in econsts]
|
||||
econsts = [re.sub(',', '', item) for item in econsts]
|
||||
econsts = [item for item in econsts if item]
|
||||
enums[enum] = econsts
|
||||
ebody = '|'.join(econsts)
|
||||
comments[enum] = f'{enum}: {{ {ebody} }}'
|
||||
|
||||
m = re.search(fr'typedef\s+struct.*?{{([^}}]*)}}[\s\n]*({struct_name})[\s\n]*;', buf, flags=re.DOTALL)
|
||||
if not m:
|
||||
sys.stderr.write(f'could not find typedef {struct_name} in {header_file}')
|
||||
sys.exit(1)
|
||||
|
||||
body = m.group(1)
|
||||
|
||||
elems = {}
|
||||
|
||||
for line in body.splitlines():
|
||||
k = None
|
||||
v = None
|
||||
|
||||
m = re.search(r'\s*(.*?)([\w\d_]+)\s*\[\s*\d+\s*\]\s*;', line)
|
||||
if m:
|
||||
k = m.group(2)
|
||||
v = m.group(1)
|
||||
v += '[]'
|
||||
|
||||
m = re.search(r'\s*(.*?)([\w\d_]+)\s*;', line)
|
||||
if m:
|
||||
k = m.group(2)
|
||||
v = m.group(1)
|
||||
|
||||
if v and k:
|
||||
v = re.sub(r'const ', '', v)
|
||||
v = re.sub(r'\s+', '', v)
|
||||
elems[k] = v
|
||||
|
||||
code += f'static void wslua_{tap_name}_to_table(lua_State* L, const void* p) {{\n\tconst {struct_name}* v;\n\n\tv = (const {struct_name}*)p;\n\tlua_newtable(L);\n\n'
|
||||
|
||||
for el in sorted(elems):
|
||||
try:
|
||||
fmt = types[elems[el]]
|
||||
code += f'\tlua_pushstring(L,\"{el}\");\n\t'
|
||||
lua_type = re.sub(r'\bSTR\b', el, fmt)
|
||||
code += lua_type
|
||||
code += '\n\tlua_settable(L,-3);\n'
|
||||
doc += f'\t{el}: {comments[elems[el]]}\n'
|
||||
except KeyError:
|
||||
pass
|
||||
|
||||
code += "}\n\n"
|
||||
doc += "\n"
|
||||
|
||||
return (code, doc, enums)
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(description="Generate bindings required for Lua taps.")
|
||||
parser.add_argument("out_c", metavar='C file', help="output C file")
|
||||
parser.add_argument("out_doc", metavar='documentation file', help="output text file")
|
||||
args = parser.parse_args()
|
||||
|
||||
tap_config = configparser.ConfigParser()
|
||||
tap_config.read(os.path.join(this_dir, 'taps.ini'))
|
||||
|
||||
enums = {}
|
||||
c_body = '''\
|
||||
/* This file is autogenerated from ./taps by ./make-taps.py */
|
||||
/* DO NOT EDIT! */
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include "wslua.h"
|
||||
|
||||
#include <wsutil/nstime.h>
|
||||
|
||||
'''
|
||||
doc_body = '\n'
|
||||
|
||||
for tap_name in tap_config.sections():
|
||||
tap_d = tap_config[tap_name]
|
||||
enum_types = []
|
||||
if 'enum_types' in tap_d.keys():
|
||||
enum_types = tap_d['enum_types'].split(' ')
|
||||
(code, doc, file_enums) = get_tap_info(tap_name, tap_d['header_file'], tap_d['struct_name'], enum_types)
|
||||
c_body += code
|
||||
doc_body += doc
|
||||
enums.update(file_enums)
|
||||
|
||||
c_body += 'static tappable_t tappables[] = {\n'
|
||||
for tap_name in sorted(tap_config.sections()):
|
||||
c_body += f'\t{{"{tap_name}", wslua_{tap_name}_to_table }},\n'
|
||||
c_body += '''\
|
||||
{"frame",NULL},
|
||||
{NULL,NULL}
|
||||
};
|
||||
'''
|
||||
|
||||
c_body += '\nint wslua_set_tap_enums(lua_State* L) {\n'
|
||||
for enum in sorted(enums):
|
||||
c_body += f'\n\t/*\n\t * {enum}\n\t */\n\tlua_newtable(L);\n'
|
||||
for econst in enums[enum]:
|
||||
c_body += f'''\
|
||||
lua_pushnumber(L,(lua_Number){econst});
|
||||
lua_setglobal(L,"{econst}");
|
||||
lua_pushnumber(L,(lua_Number){econst});
|
||||
lua_pushstring(L,"{econst}");
|
||||
lua_settable(L,-3);
|
||||
'''
|
||||
c_body += f'\tlua_setglobal(L,\"{enum}\");\n'
|
||||
c_body += '\treturn 0;\n}\n'
|
||||
|
||||
c_body += '''\
|
||||
|
||||
|
||||
tap_extractor_t wslua_get_tap_extractor(const gchar* name) {
|
||||
tappable_t* t;
|
||||
for(t = tappables; t->name; t++ ) {
|
||||
if (g_str_equal(t->name,name)) return t->extractor;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
'''
|
||||
|
||||
with open(args.out_c, mode='w', encoding='utf-8') as out_c_f:
|
||||
out_c_f.write(c_body)
|
||||
|
||||
with open(args.out_doc, mode='w', encoding='utf-8') as out_doc_f:
|
||||
out_doc_f.write(doc_body)
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
|
@ -1,65 +0,0 @@
|
|||
# taps
|
||||
# instructions for make-taps.pl to generate the taps.c file
|
||||
#
|
||||
# (c) 2006 Luis E. Garcia Ontanon <luis@ontanon.org>
|
||||
#
|
||||
# Wireshark - Network traffic analyzer
|
||||
# By Gerald Combs <gerald@wireshark.org>
|
||||
# Copyright 2006 Gerald Combs
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
# Each line is a tap type (the data structure passed by dissectors).
|
||||
# Elements are separated by whitespace.
|
||||
# tapname source_file_for_struct typedef_name_of_struct an_enum_name another_enum_name ...
|
||||
#
|
||||
|
||||
#frame ../dissectors/packet_frame.h void
|
||||
|
||||
ip ../dissectors/packet-ip.h ws_ip4
|
||||
udp ../dissectors/packet-udp.h e_udphdr
|
||||
http ../dissectors/packet-http.h http_info_value_t
|
||||
# BACnet statistics
|
||||
bacapp ../dissectors/packet-bacapp.h bacapp_info_value_t
|
||||
h225 ../dissectors/packet-h225.h h225_packet_info h225_msg_type h225_cs_type
|
||||
actrace ../dissectors/packet-actrace.h actrace_info_t
|
||||
#afp ../dissectors/packet-afp.h
|
||||
ansi_a ../dissectors/packet-ansi_a.h ansi_a_tap_rec_t
|
||||
ansi_map ../dissectors/packet-ansi_map.h ansi_map_tap_rec_t
|
||||
#bootp ../dissectors/packet-bootp.h bootp_info_t
|
||||
#dcerpc ../dissectors/packet-dcerpc.h dcerpc_info_t
|
||||
#dccp ../dissectors/packet-dccp.h dccp_info_t
|
||||
#dtls ../dissectors/packet-dtls.h dtls_info_t
|
||||
#epl ../dissectors/packet-epl.h epl_info_t
|
||||
eth ../dissectors/packet-eth.h eth_hdr
|
||||
#fc ../dissectors/packet-fc.h fc_hdr
|
||||
#gsm_a ../dissectors/packet-gsm_a.h gsm_a_info_t
|
||||
#gsm_map ../dissectors/packet-gsm_map.h gsm_map_info_t
|
||||
#h245 ../dissectors/packet-h245.h h245_info_t
|
||||
#h245dg ../dissectors/packet-h245dg.h h245dg_info_t
|
||||
#ipx ../dissectors/packet-ipx.h ipx_info_t
|
||||
#isup ../dissectors/packet-isup.h isup_info_t
|
||||
#jxta ../dissectors/packet-jxta.h jxta_info_t
|
||||
ldap ../dissectors/packet-ldap.h ldap_call_response_t
|
||||
#mtp3 ../dissectors/packet-mtp3.h mtp3_info_t
|
||||
#ncp_srt ../dissectors/packet-ncp_srt.h ncp_srt_info_t
|
||||
#ncp_hdr ../dissectors/packet-ncp_hdr.h ncp_hdr_info_t
|
||||
#ntlmssp ../dissectors/packet-ntlmssp.h ntlmssp_info_t
|
||||
#q931 ../dissectors/packet-q931.h q931_info_t
|
||||
#rpc ../dissectors/packet-rpc.h rpc_info_t
|
||||
#rsvp ../dissectors/packet-rsvp.h rsvp_info_t
|
||||
#rtpevent ../dissectors/packet-rtpevent.h rtpevent_info_t
|
||||
#rtp ../dissectors/packet-rtp.h rtp_info_t
|
||||
#scsi ../dissectors/packet-scsi.h scsi_info_t
|
||||
#sctp ../dissectors/packet-sctp.h sctp_info_t
|
||||
#sdp ../dissectors/packet-sdp.h sdp_info_t
|
||||
#sip ../dissectors/packet-sip.h sip_info_t
|
||||
smb ../dissectors/packet-smb.h smb_info_t
|
||||
smb2 ../dissectors/packet-smb2.h smb2_info_t
|
||||
#t38 ../dissectors/packet-t38.h t38_info_t
|
||||
tcp ../dissectors/packet-tcp.h tcp_info_t
|
||||
#teredo ../dissectors/packet-teredo.h teredo_info_t
|
||||
#tls ../dissectors/packet-tls.h ssl_info_t
|
||||
#tr ../dissectors/packet-tr.h tr_info_t
|
||||
wlan ../dissectors/packet-ieee80211.h wlan_hdr_t
|
||||
#wsp ../dissectors/packet-wsp.h wsp_info_t
|
|
@ -0,0 +1,209 @@
|
|||
# taps.ini
|
||||
# Instructions for make-taps.py to generate the taps.c file.
|
||||
# Based on the "taps" configuration file for make-taps.pl
|
||||
#
|
||||
# (c) 2006 Luis E. Garcia Ontanon <luis@ontanon.org>
|
||||
#
|
||||
# Wireshark - Network traffic analyzer
|
||||
# By Gerald Combs <gerald@wireshark.org>
|
||||
# Copyright 2006 Gerald Combs
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
# Each section is a tap type (the data structure passed by dissectors).
|
||||
# Sections have the following format:
|
||||
# [tapname]
|
||||
# header_file: <path to dissector header>
|
||||
# struct_name: <name of struct typedef>
|
||||
# enum_types: <space-separated list of enum types, optional>
|
||||
|
||||
# [frame]
|
||||
# header_file: ../dissectors/packet_frame.h
|
||||
# struct_name: void
|
||||
|
||||
[ip]
|
||||
header_file: ../dissectors/packet-ip.h
|
||||
struct_name: ws_ip4
|
||||
|
||||
[udp]
|
||||
header_file: ../dissectors/packet-udp.h
|
||||
struct_name: e_udphdr
|
||||
|
||||
[http]
|
||||
header_file: ../dissectors/packet-http.h
|
||||
struct_name: http_info_value_t
|
||||
|
||||
# BACnet statistics
|
||||
[bacapp]
|
||||
header_file: ../dissectors/packet-bacapp.h
|
||||
struct_name: bacapp_info_value_t
|
||||
|
||||
[h225]
|
||||
header_file: ../dissectors/packet-h225.h
|
||||
struct_name: h225_packet_info
|
||||
enum_types: h225_msg_type h225_cs_type
|
||||
|
||||
[actrace]
|
||||
header_file: ../dissectors/packet-actrace.h
|
||||
struct_name: actrace_info_t
|
||||
|
||||
# [afp]
|
||||
# header_file: ../dissectors/packet-afp.h
|
||||
# struct_name:
|
||||
|
||||
[ansi_a]
|
||||
header_file: ../dissectors/packet-ansi_a.h
|
||||
struct_name: ansi_a_tap_rec_t
|
||||
|
||||
[ansi_map]
|
||||
header_file: ../dissectors/packet-ansi_map.h
|
||||
struct_name: ansi_map_tap_rec_t
|
||||
|
||||
# [bootp]
|
||||
# header_file: ../dissectors/packet-bootp.h
|
||||
# struct_name: bootp_info_t
|
||||
|
||||
# [dcerpc]
|
||||
# header_file: ../dissectors/packet-dcerpc.h
|
||||
# struct_name: dcerpc_info_t
|
||||
|
||||
# [dccp]
|
||||
# header_file: ../dissectors/packet-dccp.h
|
||||
# struct_name: dccp_info_t
|
||||
|
||||
# [dtls]
|
||||
# header_file: ../dissectors/packet-dtls.h
|
||||
# struct_name: dtls_info_t
|
||||
|
||||
# [epl]
|
||||
# header_file: ../dissectors/packet-epl.h
|
||||
# struct_name: epl_info_t
|
||||
|
||||
[eth]
|
||||
header_file: ../dissectors/packet-eth.h
|
||||
struct_name: eth_hdr
|
||||
|
||||
# [fc]
|
||||
# header_file: ../dissectors/packet-fc.h
|
||||
# struct_name: fc_hdr
|
||||
|
||||
# [gsm_a]
|
||||
# header_file: ../dissectors/packet-gsm_a.h
|
||||
# struct_name: gsm_a_info_t
|
||||
|
||||
# [gsm_map]
|
||||
# header_file: ../dissectors/packet-gsm_map.h
|
||||
# struct_name: gsm_map_info_t
|
||||
|
||||
# [h245]
|
||||
# header_file: ../dissectors/packet-h245.h
|
||||
# struct_name: h245_info_t
|
||||
|
||||
# [h245dg]
|
||||
# header_file: ../dissectors/packet-h245dg.h
|
||||
# struct_name: h245dg_info_t
|
||||
|
||||
# [ipx]
|
||||
# header_file: ../dissectors/packet-ipx.h
|
||||
# struct_name: ipx_info_t
|
||||
|
||||
# [isup]
|
||||
# header_file: ../dissectors/packet-isup.h
|
||||
# struct_name: isup_info_t
|
||||
|
||||
# [jxta]
|
||||
# header_file: ../dissectors/packet-jxta.h
|
||||
# struct_name: jxta_info_t
|
||||
|
||||
[ldap]
|
||||
header_file: ../dissectors/packet-ldap.h
|
||||
struct_name: ldap_call_response_t
|
||||
|
||||
# [mtp3]
|
||||
# header_file: ../dissectors/packet-mtp3.h
|
||||
# struct_name: mtp3_info_t
|
||||
|
||||
# [ncp_srt]
|
||||
# header_file: ../dissectors/packet-ncp_srt.h
|
||||
# struct_name: ncp_srt_info_t
|
||||
|
||||
# [ncp_hdr]
|
||||
# header_file: ../dissectors/packet-ncp_hdr.h
|
||||
# struct_name: ncp_hdr_info_t
|
||||
|
||||
# [ntlmssp]
|
||||
# header_file: ../dissectors/packet-ntlmssp.h
|
||||
# struct_name: ntlmssp_info_t
|
||||
|
||||
# [q931]
|
||||
# header_file: ../dissectors/packet-q931.h
|
||||
# struct_name: q931_info_t
|
||||
|
||||
# [rpc]
|
||||
# header_file: ../dissectors/packet-rpc.h
|
||||
# struct_name: rpc_info_t
|
||||
|
||||
# [rsvp]
|
||||
# header_file: ../dissectors/packet-rsvp.h
|
||||
# struct_name: rsvp_info_t
|
||||
|
||||
# [rtpevent]
|
||||
# header_file: ../dissectors/packet-rtpevent.h
|
||||
# struct_name: rtpevent_info_t
|
||||
|
||||
# [rtp]
|
||||
# header_file: ../dissectors/packet-rtp.h
|
||||
# struct_name: rtp_info_t
|
||||
|
||||
# [scsi]
|
||||
# header_file: ../dissectors/packet-scsi.h
|
||||
# struct_name: scsi_info_t
|
||||
|
||||
# [sctp]
|
||||
# header_file: ../dissectors/packet-sctp.h
|
||||
# struct_name: sctp_info_t
|
||||
|
||||
# [sdp]
|
||||
# header_file: ../dissectors/packet-sdp.h
|
||||
# struct_name: sdp_info_t
|
||||
|
||||
# [sip]
|
||||
# header_file: ../dissectors/packet-sip.h
|
||||
# struct_name: sip_info_t
|
||||
|
||||
[smb]
|
||||
header_file: ../dissectors/packet-smb.h
|
||||
struct_name: smb_info_t
|
||||
|
||||
[smb2]
|
||||
header_file: ../dissectors/packet-smb2.h
|
||||
struct_name: smb2_info_t
|
||||
|
||||
# [t38]
|
||||
# header_file: ../dissectors/packet-t38.h
|
||||
# struct_name: t38_info_t
|
||||
|
||||
[tcp]
|
||||
header_file: ../dissectors/packet-tcp.h
|
||||
struct_name: tcp_info_t
|
||||
|
||||
# [teredo]
|
||||
# header_file: ../dissectors/packet-teredo.h
|
||||
# struct_name: teredo_info_t
|
||||
|
||||
# [tls]
|
||||
# header_file: ../dissectors/packet-tls.h
|
||||
# struct_name: ssl_info_t
|
||||
|
||||
# [tr]
|
||||
# header_file: ../dissectors/packet-tr.h
|
||||
# struct_name: tr_info_t
|
||||
|
||||
[wlan]
|
||||
header_file: ../dissectors/packet-ieee80211.h
|
||||
struct_name: wlan_hdr_t
|
||||
|
||||
# [wsp]
|
||||
# header_file: ../dissectors/packet-wsp.h
|
||||
# struct_name: wsp_info_t
|
||||
|
Loading…
Reference in New Issue