Commit b894b6a5 authored by 's avatar

Moved cooking, regexp, and top to a separate library 'extraflib'. Stdflib...

Moved cooking, regexp, and top to a separate library 'extraflib'. Stdflib should now have no dependencies to exotic libraries like libpcre and libnids, so a plain './configure' should work in most systems. Please let me know (mikepo@ics.forth.gr) if you encounter any problems

git-svn-id: file:///home/svn/mapi/trunk@713 8d5bb341-7cf1-0310-8cf6-ba355fef3186
parent a645df40
......@@ -212,6 +212,7 @@ else
fi
AC_SUBST_FILE(MAPI_CONF_DAG_ENTRY)
# optional MAPI function libraries
# in the end will contain all the compiled MAPI function libraries
......@@ -247,6 +248,7 @@ esac], [anonflib=false])
AM_CONDITIONAL(BINARY_ANONFLIB, test x$anonflib = xtrue)
if test x$anonflib = xtrue; then
MAPI_FUNC_LIBS="${MAPI_FUNC_LIBS}:anonflib.so"
AC_DEFINE(WITH_MODIFY_PKTS, 1, [support for functions that modify packets])
AC_MSG_RESULT(yes)
else
AC_MSG_RESULT(no)
......@@ -263,7 +265,7 @@ AS_HELP_STRING([--enable-dagflib], [Build the DAG function library]),
esac], [dagflib=false])
if test x$dagflib = xtrue -a x$dag = xfalse; then
AC_MSG_RESULT(yes)
AC_MSG_ERROR(please use --enable-dagflib only in conjunction with --enable-dag)
AC_MSG_ERROR(Please use --enable-dagflib only in conjunction with --enable-dag. You don't need to build dagflib if you are not going to use a DAG card.)
fi
AM_CONDITIONAL(BINARY_DAGFLIB, test x$dagflib = xtrue)
if test x$dagflib = xtrue; then
......@@ -290,27 +292,31 @@ else
AC_MSG_RESULT(no)
fi
# a string with all the compiled MAPI function libraries
AC_SUBST(MAPI_FUNC_LIBS)
# misc options
# modify packets
AC_MSG_CHECKING(if packet modification is enabled)
AC_ARG_ENABLE(modifypkts,
AS_HELP_STRING([--enable-modifypkts], [Enable support for functions that modify packets]),
# extraflib
AC_MSG_CHECKING(if the extra functions library is enabled)
AC_ARG_ENABLE(extraflib,
AS_HELP_STRING([--enable-extraflib], [Build the extra functions library]),
[case "${enableval}" in
yes) modifypkts=true ;;
no) modifypkts=false ;;
*) AC_MSG_ERROR(bad value ${enableval} for --enable-modifypkts) ;;
esac], [modifypkts=false])
if test x$modifypkts = xtrue; then
yes) extraflib=true ;;
no) extraflib=false ;;
*) AC_MSG_ERROR(bad value ${enableval} for --enable-extraflib) ;;
esac], [extraflib=false])
AM_CONDITIONAL(BINARY_EXTRAFLIB, test x$extraflib = xtrue)
if test x$extraflib = xtrue; then
MAPI_FUNC_LIBS="${MAPI_FUNC_LIBS}:extraflib.so"
# needed by cooking
AC_DEFINE(WITH_MODIFY_PKTS, 1, [support for functions that modify packets])
AC_MSG_RESULT(yes)
else
AC_MSG_RESULT(no)
fi
# a string with all the compiled MAPI function libraries
AC_SUBST(MAPI_FUNC_LIBS)
# misc options
# function statistics
AC_MSG_CHECKING(if function statistics are enabled)
AC_ARG_ENABLE(funcstats,
......@@ -367,17 +373,17 @@ AS_HELP_STRING([--with-libpcap=DIR], [Manual libpcap path configuration, in case
AC_SUBST(PCAPINC)
AC_SUBST(PCAPLIB)
# libdag
# libdag (only for --enable-dag)
AC_MSG_CHECKING([for libdag])
AC_ARG_WITH(libdag,
AS_HELP_STRING([--with-libdag=DIR], [Manual libdag path configuration, in case the configuration script can't find it. Search for libdag in DIR/lib, and for the header file in DIR/include]),
AS_HELP_STRING([--with-libdag=DIR], [Manual libdag path configuration, in case the configuration script can't find it. Search for libdag in DIR/lib, and for the header file in DIR/include. Effective only if --enable-dag has been previously specified]),
[ case "$withval" in
yes|no)
AC_MSG_RESULT(no)
;;
*)
if test x$dag = xfalse; then
AC_MSG_ERROR(please use --enable-dag before --with-libdag)
AC_MSG_ERROR(Please use --with-libdag only in conjunction with --enable-dag. You don't need to configure libdag if you are not going to use a DAG card.)
else
AC_MSG_RESULT($withval)
if test -f $withval/include/dagapi.h -a -f $withval/lib/libdag.a; then
......@@ -412,69 +418,88 @@ AS_HELP_STRING([--with-libdag=DIR], [Manual libdag path configuration, in case t
AC_SUBST(DAGINC)
AC_SUBST(DAGLIB)
# libpcre - based on Snort's configure.in
# libpcre (only for --enable-extraflib) - based on Snort's configure.in
AC_ARG_WITH(libpcre_includes,
AS_HELP_STRING([--with-libpcre-includes=DIR], [Search for libpcre headers in DIR]),
AS_HELP_STRING([--with-libpcre-includes=DIR], [Search for libpcre headers in DIR. Effective only if --enable-extraflib has been previously specified]),
[with_libpcre_includes="$withval"],[with_libpcre_includes=no])
AC_ARG_WITH(libpcre_libraries,
AS_HELP_STRING([--with-libpcre-libraries=DIR], [Search for libpcre library in DIR]),
AS_HELP_STRING([--with-libpcre-libraries=DIR], [Search for libpcre library in DIR. Effective only if --enable-extraflib has been previously specified]),
[with_libpcre_libraries="$withval"],[with_libpcre_libraries=no])
save_CPPFLAGS=$CPPFLAGS
save_LDFLAGS=$LDFLAGS
save_LIBS=$LIBS
if test "$with_libpcre_includes" != "no"; then
PCREINC="-I${with_libpcre_includes}"
CPPFLAGS="${CPPFLAGS} ${PCREINC}"
else
PCREINC="`pcre-config --cflags`"
CPPFLAGS="${CPPFLAGS} ${PCREINC}"
# if any of the above pcre options has been specified,
#check that --enable-extraflib has been specified too
if test x$extraflib != xtrue; then
if test "$with_libpcre_includes" != "no"; then
AC_MSG_ERROR(Please use --with-libpcre-includes only in conjunction with --with-extraflib. You don't need to configure libpcre if you are not going to use extraflib)
fi
if test "$with_libpcre_libraries" != "no"; then
AC_MSG_ERROR(Please use --with-libpcre-libraries only in conjunction with --with-extraflib. You don't need configure libpcre if you are not going to use extraflib)
fi
fi
if test "$with_libpcre_libraries" != "no"; then
PCRELIB="-L${with_libpcre_libraries} -lpcre"
LDFLAGS="${LDFLAGS} ${PCRELIB}"
else
# this should give something like "-L/usr/lib -lpcre"
PCRELIB="`pcre-config --libs`"
LDFLAGS="${LDFLAGS} ${PCRELIB}"
fi
# check for libpcre only if --enable-extraflib has been specified
if test x$extraflib = xtrue; then
# PCRE configuration (required)
# Verify that we have the headers
PCRE_H=""
AC_CHECK_HEADER(pcre.h,, PCRE_H="no")
if test "$PCRE_H" = "no"; then
echo
echo " ERROR! Libpcre header not found, go get it from"
echo " http://www.pcre.org"
exit 1
fi
save_CPPFLAGS=$CPPFLAGS
save_LDFLAGS=$LDFLAGS
save_LIBS=$LIBS
if test "$with_libpcre_includes" != "no"; then
PCREINC="-I${with_libpcre_includes}"
CPPFLAGS="${CPPFLAGS} ${PCREINC}"
else
PCREINC="`pcre-config --cflags`"
CPPFLAGS="${CPPFLAGS} ${PCREINC}"
fi
if test "$with_libpcre_libraries" != "no"; then
PCRELIB="-L${with_libpcre_libraries} -lpcre"
LDFLAGS="${LDFLAGS} ${PCRELIB}"
else
# this should give something like "-L/usr/lib -lpcre"
PCRELIB="`pcre-config --libs`"
LDFLAGS="${LDFLAGS} ${PCRELIB}"
fi
# PCRE configuration (required)
# Verify that we have the headers
PCRE_H=""
AC_CHECK_HEADER(pcre.h,, PCRE_H="no")
if test "$PCRE_H" = "no"; then
echo
echo " ERROR! Libpcre header not found, go get it from"
echo " http://www.pcre.org"
exit 1
fi
# Verify that we have the library
PCRE_L=""
AC_CHECK_LIB(pcre, pcre_compile, ,PCRE_L="no")
if test "$PCRE_L" = "no"; then
echo
echo " ERROR! Libpcre library not found, go get it from"
echo " http://www.pcre.org"
echo
exit 1
fi
CPPFLAGS=$save_CPPFLAGS
LDFLAGS=$save_LDFLAGS
LIBS=$save_LIBS
AC_SUBST(PCREINC)
AC_SUBST(PCRELIB)
fi # test x$extraflib = xtrue
# Verify that we have the library
PCRE_L=""
AC_CHECK_LIB(pcre, pcre_compile, ,PCRE_L="no")
if test "$PCRE_L" = "no"; then
echo
echo " ERROR! Libpcre library not found, go get it from"
echo " http://www.pcre.org"
echo
exit 1
fi
# misc libs
save_LIBS=$LIBS
AC_CHECK_LIB(m, floor,,)
AC_CHECK_LIB(rt, sem_wait,,)
CPPFLAGS=$save_CPPFLAGS
LDFLAGS=$save_LDFLAGS
LIBS=$save_LIBS
AC_SUBST(PCREINC)
AC_SUBST(PCRELIB)
# these checks will be good only if the special cases are handled
# appropriately in the code
......@@ -486,7 +511,6 @@ AC_SUBST(PCRELIB)
#AC_HEADER_TIME
#AC_TYPE_UID_T
#AC_C_VOLATILE
# Checks for library functions
#AC_FUNC_ALLOCA
#AC_FUNC_ERROR_AT_LINE
......@@ -504,7 +528,6 @@ AC_DEFINE_DIR(CONFDIR, CONFDIR, [configuration directory])
DATADIR=`eval echo $datadir/mapi`
AC_DEFINE_DIR(DATADIR, DATADIR, [directory for drivers and function librarues])
CFLAGS=-g
if test "$GCC" = "yes"; then
CFLAGS="$CFLAGS -W -Wall -Wshadow -Wcast-align -Wpointer-arith"
......@@ -518,11 +541,12 @@ AC_CONFIG_FILES([
src/lib/Makefile
src/drivers/Makefile
src/stdflib/Makefile
src/stdflib/libnids/Makefile
src/trackflib/Makefile
src/ipfixflib/Makefile
src/anonflib/Makefile
src/dagflib/Makefile
src/extraflib/Makefile
src/extraflib/libnids/Makefile
doc/Makefile
tests/Makefile
etc/Makefile
......
......@@ -6,6 +6,9 @@ pdf:
echo "\begin{verbatim}" > man_mapi_stdflib.tex
man ./mapi_stdflib.3 >> man_mapi_stdflib.tex
echo "\end{verbatim}" >> man_mapi_stdflib.tex
echo "\begin{verbatim}" > man_mapi_extraflib.tex
man ./mapi_extraflib.3 >> man_mapi_extraflib.tex
echo "\end{verbatim}" >> man_mapi_extraflib.tex
echo "\begin{verbatim}" > man_mapi_trackflib.tex
man ./mapi_trackflib.3 >> man_mapi_trackflib.tex
echo "\end{verbatim}" >> man_mapi_trackflib.tex
......@@ -20,4 +23,4 @@ clean:
rm -rf *.aux *.bbl *.blg *.log *.dvi *.toc *.lof mapitutor.ps *.bak man_mapi*tex
man_MANS = mapi.3 mapi_stdflib.3 mapi_trackflib.3 mapi_anonflib.3
man_MANS = mapi.3 mapi_stdflib.3 mapi_extraflib.3 mapi_trackflib.3 mapi_anonflib.3
......@@ -2,7 +2,7 @@
.\" for a quick overview:
.\" nroff -man -Tascii mapi.3 |less
.\"
.TH MAPI 3 "December, 2004"
.TH MAPI 3 "July, 2006"
.SH NAME
MAPI \- Monitoring Application Programming Interface
.SH SYNOPSIS
......
......@@ -2,9 +2,9 @@
.\" for a quick overview:
.\" nroff -man -Tascii mapi_stdlib.3 |less
.\"
.TH MAPI_STDLIB 3 "December, 2004"
.TH MAPI_STDLIB 3 "July, 2006"
.SH NAME
MAPI stdlib \- Standard MAPI Function Library
MAPI stdflib \- Standard MAPI Function Library
.SH SYNOPSIS
.nf
\fBBPF_FILTER\fP Filters the packets of a flow
......@@ -17,7 +17,6 @@ MAPI stdlib \- Standard MAPI Function Library
\fBTO_FILE\fP Dumps the packets of a flow to a file
\fBETHEREAL\fP Filters packets using Ethereal display filters
\fBHASH\fP Computes an additive hash over the packets of a flow
\fBCOOKING\fP TCP/IP packet defragmentation and stream reassembly
\fBBUCKET\fP Divides packets into buckets based on their timestamps
\fBTHRESHOLD\fP Signals when a threshold is reached
\fBBINOP\fP Adds or subtracts values from two other MAPI functions
......@@ -25,16 +24,14 @@ MAPI stdlib \- Standard MAPI Function Library
\fBGAP\fP Returns the time delay between two consecutive packets in a flow
\fBPKT_INFO\fP Returns information about a packet
\fBPROTINFO\fP Returns a specific protocol field
\fBREGEXP\fP Regular expression pattern matching
\fBRES2FILE\fP Stores results from other MAPI functions to a file
\fBSTARTSTOP\fP Starts and/or stops measurements at a specific time
\fBSTAT\fP Returns statistical information about results from other MAPI functions
\fBTOP\fP Returns top X values of a field
.fi
.SH DESCRIPTION
The Standard MAPI function library (stdlib) provides
a set of 24 predefined functions that cover
a set of predefined functions that cover
several frequently used monitoring needs.
MAPI functions can be associated with network flows
in order to treat their packets in different ways.
......@@ -198,36 +195,6 @@ Computes the additive hash function over the packets of a network flow. layer va
Type of results: \fBunsigned int\fP.
.\"--------------------------------------------------------
.IP "\fBCOOKING\fP (int \fIthreshold\fP, int \fItimeout\fP, int \fIret_once\fP, int \fIcollect\fP)"
Processes the packets of a flow according to the TCP/IP protocol
stack, by performing IP defragmentation and TCP stream reassembly.
The received packets are stripped from their TCP/IP headers and assembled into a
single cooked packet. The cooked packet has a pseudo TCP/IP header
containing the size of the cooked packet and the source and destination
IP addresses and port numbers.
A cooked packet is considered to be ready for processing under one
of the following conditions:
.nf
- its size exceeds the specified threshold
- a timeout since the arrival of the first fragment is reached
- the session is closed (all fragments have arrived)
.fi
The \fIthreshold\fP is by default 32KB
and the \fItimeout\fP is set to 30 sec.
Using -1 for both parameters sets the default values.
If \fIret_once\fP is zero, only the first chunk from a tcp stream is returned.
Otherwise, all the chunks of the stream are returned.
The \fIcollect\fP argument defines the direction of the packets that
will be returned:
.B CLIENT_SIDE
gives only client's data,
.B SERVER_SIDE
the server's data only, while
.B BOTH_SIDE
is used to get all packets of the flow.
Type of results: \fBnone\fP.
.\"--------------------------------------------------------
.IP "\fBBUCKET\fP (unsigned long long \fItimeout\fP, int \fIflow\fP, int \fIfunction\fP)"
Returns results from other MAPI functions in precise periodical intervals.
It divides packets into buckets based on their timestamps. The \fItimeout\fP argument defines the size of a bucket in microseconds. Only packets within this time interval will be added to the same bucket. Once the timeout is reached, the function with id \fIfunction\fP is applied on all packets in the bucket. Afterwards, the bucket is emptied and new packets are added for the next \fItimeout\fP microseconds.
......@@ -300,12 +267,6 @@ the TCP Sequence number. The \fBPI_TCPACK\fP will give the TCP Acknowledge numbe
Type of results: \fBunsigned long long\fP.
.\"--------------------------------------------------------
.IP "\fBREGEXP\fP (char* \fIreg_expr\fP)"
Regular expression pattern matching, using the \fIreg_expr\fP regular expression.
Type of results: \fBunsigned long long\fP.
.\"--------------------------------------------------------
.\"--------------------------------------------------------
.IP "\fBRES2FILE\fP (char* \fIfunctions_list\fP, char* \fIformat\fP, char* \fIheader\fP, char* \fIfilename\fP, char* \fIinterval\fP)"
Stores results from other MAPI functions to a file.
The list of the functions to read results and write to file is denoted in the \fIfunctions_list\fP
......@@ -321,7 +282,6 @@ a time string as "1s", "1.2ms" etc.
Type of results: \fBnone\fP.
.\"--------------------------------------------------------
.\"--------------------------------------------------------
.IP "\fBSTARTSTOP\fP (char* \fIstart\fP, char* \fIstop\fP)"
Starts and/or stops measurements at a specific time.
\fIstart\fP indicates the start time (e.g. "10s"), while \fIstop\fP
......@@ -329,7 +289,6 @@ is the relative time from the first captured packet.
Type of results: \fBnone\fP.
.\"--------------------------------------------------------
.\"--------------------------------------------------------
.IP "\fBSTAT\fP (int \fIflow\fP, int \fIfunction\fP, int \fIskip\fP)"
Returns statistical information about results from MAPI function with fid
\fIfunction\fP. \fIskip\fP is the number of packets to skip before reading the first result.
......@@ -345,13 +304,6 @@ struct stats {
double min;
};
.fi
.\"--------------------------------------------------------
.\"--------------------------------------------------------
.IP "\fBTOP\fP (int \fIX\fP, int \fIprotocol\fP, int \fIfield\fP)"
Return TOP \fIX\fP values of the \fIfiled\fP field of the \fIprotocol\fP protocol.
Type of results: \fBunsigned int[]\fP.
.\"--------------------------------------------------------
.SH "EXAMPLES"
......@@ -408,5 +360,6 @@ Please send bug reports to info@ist-scampi.org
.BR mapi (3),
.BR mapi_trackflib (3),
.BR mapi_anonflib (3),
.BR mapi_extraflib (3),
.BR tcpdump (1),
.BR pcap (3)
No preview for this file type
......@@ -352,8 +352,8 @@ Section~\ref{sec:dimapi}) \\
{\tt --enable-anonflib} & Build the traffic anonymization library \\
{\tt --enable-dagflib} & Build the DAG function library \\
{\tt --enable-ipfixflib} & Build the NetFlow export library \\
{\tt --enable-extraflib} & Build the Extra MAPI function library \\
\multicolumn{2}{l}{Miscellaneous options} \\
{\tt --enable-modifypkts} & Enable support for functions that modify packets \\
{\tt --enable-funcstats} & Enable function statistics. This option enables packet
counters for each applied function \\
\end{tabular}
......@@ -974,7 +974,7 @@ This is a simple application that shows some basic anonymization features of MAP
#include <netinet/in.h>
#include <arpa/inet.h>
void print_IP_packet(struct mapipkt *rec);
void print_IP_pkt(struct mapipkt *rec);
int main(int argc, char *argv[]) {
......@@ -1053,6 +1053,14 @@ is included in Appendix~\ref{sec:misccode}.
\input{man_mapi_stdflib}
\end{scriptsize}
\newpage
\section{MAPI {\tt extraflib} man page}
\label{sec:manextraflib}
\begin{scriptsize}
\input{man_mapi_extraflib}
\end{scriptsize}
\newpage
\section{MAPI {\tt trackflib} man page}
\label{sec:mantrackflib}
......
......@@ -12,13 +12,17 @@ endif
if BINARY_DAGFLIB
BUILD_dagflib = dagflib
endif
if BINARY_EXTRAFLIB
BUILD_extraflib = extraflib
endif
# common must be built first
SUBDIRS = common lib drivers stdflib \
$(BUILD_trackflib) \
$(BUILD_ipfixflib) \
$(BUILD_anonflib) \
$(BUILD_dagflib)
$(BUILD_dagflib) \
$(BUILD_extraflib)
#DIST_SUBDIRS =
if BINARY_DIMAPI
......
......@@ -15,7 +15,7 @@
#include "fhelp.h"
#include "mapiipc.h"
#include "anonymization.h"
#include "../stdflib/cooking.h"
#include "../extraflib/cooking.h"
#include "mapi_errors.h"
#include "names.h"
......
......@@ -17,7 +17,7 @@
#include "mapiipc.h"
#include "anonymization.h"
#include "../stdflib/cooking.h"
#include "../extraflib/cooking.h"
void rebuild_fragments(mapidflib_function_instance_t *instance,flist_t *list,unsigned char *payload,int large_payload_size, mapid_pkthdr_t *mapihdr, int fd);
......
SUBDIRS = libnids
AM_CPPFLAGS = -I.. -I../lib -I../common -I../drivers @PCAPINC@ @PCREINC@ -D_GNU_SOURCE -D_THREAD_SAFE
AM_CPPFLAGS = -I.. -I../lib -I../common -I../drivers @PCAPINC@ -D_GNU_SOURCE -D_THREAD_SAFE
# install mapidstdflib into $(prefix)/share/mapi/
libdir = $(pkgdatadir)
......@@ -9,13 +8,12 @@ libdir = $(pkgdatadir)
# libraries for users)
lib_LTLIBRARIES = stdflib.la
stdflib_la_LDFLAGS = -module
stdflib_la_LIBADD = libnids/libnids.la ../common/libflist.la ../common/libfhelp.la ../common/libmapiipc.la ../common/libmsearch.la @PCAPLIB@ @PCRELIB@ -lm
stdflib_la_LIBADD = ../common/libflist.la ../common/libfhelp.la ../common/libmapiipc.la ../common/libmsearch.la @PCAPLIB@ -lm
stdflib_la_SOURCES = stdflib.c \
binop.c binop.h \
bpffilter.c \
bucket.c \
bytecounter.c \
cooking.c cooking.h \
dist.c \
fifo.c fifo.h \
gap.c \
......@@ -23,7 +21,6 @@ hash.c \
hashsamp.c \
pktcounter.c \
pktinfo.c \
regexp.c \
res2file.c \
sample.c \
startstop.c \
......@@ -31,9 +28,7 @@ stats.c \
strsearch.c \
threshold.c threshold.h \
tobuffer_all.c \
topx.c \
to_tcpdump.c
# these headers will be installd in $prefix/include/mapi
pkginclude_HEADERS = bucket.h dist.h hashsamp.h pktinfo.h res2file.h sample.h stats.h topx.h
noinst_HEADERS = pcapio.h protocols.h
pkginclude_HEADERS = bucket.h dist.h hashsamp.h pktinfo.h res2file.h sample.h stats.h
......@@ -13,21 +13,18 @@
__attribute__ ((constructor)) void init ();
__attribute__ ((destructor)) void fini ();
mapidflib_functionlist_t functions[22];
mapidflib_functionlist_t functions[18];
extern mapidflib_function_def_t * binop_get_funct_info();
extern mapidflib_function_def_t * bpf_get_funct_info();
extern mapidflib_function_def_t * bpf_get_funct_info();
extern mapidflib_function_def_t * bucket_get_funct_info();
extern mapidflib_function_def_t * bytec_get_funct_info();
extern mapidflib_function_def_t * cooking_get_funct_info();
extern mapidflib_function_def_t * dist_get_funct_info();
extern mapidflib_function_def_t * gap_get_funct_info();
extern mapidflib_function_def_t * hash_get_funct_info();
extern mapidflib_function_def_t * hashsamp_get_funct_info();
extern mapidflib_function_def_t * pktc_get_funct_info();
extern mapidflib_function_def_t * pktinfo_get_funct_info();
extern mapidflib_function_def_t * regexp_get_funct_info();
extern mapidflib_function_def_t * res2file_get_funct_info();
extern mapidflib_function_def_t * sample_get_funct_info();
extern mapidflib_function_def_t * startstop_get_funct_info();
......@@ -36,8 +33,6 @@ extern mapidflib_function_def_t * strsearch_get_funct_info();
extern mapidflib_function_def_t * threshold_get_funct_info();
extern mapidflib_function_def_t * to_tcpdump_get_funct_info();
extern mapidflib_function_def_t * toba_get_funct_info();
extern mapidflib_function_def_t * topx_get_funct_info();
extern mapidflib_function_def_t * inject_get_funct_info();
mapidflib_functionlist_t* mapidflib_get_function_list()
{
......@@ -49,92 +44,71 @@ mapidflib_functionlist_t* mapidflib_get_function_list()
functions[1].def->libname=libname;
functions[1].next=&functions[2];
functions[2].def=bpf_get_funct_info();
functions[2].def=bucket_get_funct_info();
functions[2].def->libname=libname;
functions[2].next=&functions[3];
functions[3].def=bucket_get_funct_info();
functions[3].def=bytec_get_funct_info();
functions[3].def->libname=libname;
functions[3].next=&functions[4];
functions[4].def=bytec_get_funct_info();
functions[4].def=dist_get_funct_info();
functions[4].def->libname=libname;
functions[4].next=&functions[5];
functions[5].def=cooking_get_funct_info();
functions[5].def=gap_get_funct_info();
functions[5].def->libname=libname;
functions[5].next=&functions[6];
functions[6].def=dist_get_funct_info();
functions[6].def=hash_get_funct_info();
functions[6].def->libname=libname;
functions[6].next=&functions[7];
functions[7].def=gap_get_funct_info();
functions[7].def=hashsamp_get_funct_info();
functions[7].def->libname=libname;
functions[7].next=&functions[8];
functions[8].def=hash_get_funct_info();
functions[8].def=pktc_get_funct_info();
functions[8].def->libname=libname;
functions[8].next=&functions[9];
functions[9].def=hashsamp_get_funct_info();
functions[9].def=pktinfo_get_funct_info();
functions[9].def->libname=libname;
functions[9].next=&functions[10];
functions[10].def=pktc_get_funct_info();
functions[10].def=res2file_get_funct_info();
functions[10].def->libname=libname;
functions[10].next=&functions[11];
functions[11].def=pktinfo_get_funct_info();
functions[11].def=sample_get_funct_info();
functions[11].def->libname=libname;
functions[11].next=&functions[12];
functions[12].def=regexp_get_funct_info();
functions[12].def=startstop_get_funct_info();
functions[12].def->libname=libname;
functions[12].next=&functions[13];
functions[13].def=res2file_get_funct_info();
functions[13].def=stats_get_funct_info();
functions[13].def->libname=libname;
functions[13].next=&functions[14];
functions[14].def=sample_get_funct_info();
functions[14].def=strsearch_get_funct_info();
functions[14].def->libname=libname;
functions[14].next=&functions[15];
functions[15].def=startstop_get_funct_info();
functions[15].def=threshold_get_funct_info();
functions[15].def->libname=libname;
functions[15].next=&functions[16];
functions[16].def=stats_get_funct_info();
functions[16].def=to_tcpdump_get_funct_info();
functions[16].def->libname=libname;
functions[16].next=&functions[17];
functions[17].def=strsearch_get_funct_info();
functions[17].def=toba_get_funct_info();
functions[17].def->libname=libname;
functions[17].next=&functions[18];
functions[18].def=threshold_get_funct_info();
functions[18].def->libname=libname;
functions[18].next=&functions[19];
functions[19].def=to_tcpdump_get_funct_info();