diff options
Diffstat (limited to 'src/tcpedit/plugins/dlt_plugins.h')
| -rw-r--r-- | src/tcpedit/plugins/dlt_plugins.h | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/src/tcpedit/plugins/dlt_plugins.h b/src/tcpedit/plugins/dlt_plugins.h new file mode 100644 index 0000000..72464f7 --- /dev/null +++ b/src/tcpedit/plugins/dlt_plugins.h @@ -0,0 +1,83 @@ +/* $Id: dlt_plugins.h 2423 2010-03-13 07:09:49Z aturner $ */ + +/* + * Copyright (c) 2006-2010 Aaron Turner. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the names of the copyright owners nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * Main DLT Plugin Header. You should only include this file outside + * of the plugin API. dlt_plugin-int.h is used internal to the plugin ONLY. + */ + +#include "tcpedit.h" + +#ifndef _DLT_PLUGINS_H_ +#define _DLT_PLUGINS_H_ + +/* forward declare our context, so we can use it in the plugin struct */ +typedef struct tcpeditdlt_s tcpeditdlt_t; + +/* + * initialize the DLT plugin backend, and return a new context var. + * call this once per pcap to be processed + */ +tcpeditdlt_t *tcpedit_dlt_init(tcpedit_t *tcpedit, int srcdlt); + +/* cleans up after ourselves. Called for each initalized plugin */ +void tcpedit_dlt_cleanup(tcpeditdlt_t *ctx); + +/* What is the output DLT type? */ +int tcpedit_dlt_output_dlt(tcpeditdlt_t *ctx); +int tcpedit_dlt_l2len(tcpeditdlt_t *ctx, int dlt, const u_char *packet, const int pktlen); + +/* + * process the given packet, by calling decode & encode + */ +int tcpedit_dlt_process(tcpeditdlt_t *ctx, u_char **packet, int pktlen, tcpr_dir_t direction); + +/* + * or you can call them sperately if you want + */ +int tcpedit_dlt_decode(tcpeditdlt_t *ctx, const u_char *packet, const int pktlen); +int tcpedit_dlt_encode(tcpeditdlt_t* ctx, u_char *packet, int pktlen, tcpr_dir_t direction); + +/* + * After processing each packet, you can get info about L2/L3 + */ +int tcpedit_dlt_proto(tcpeditdlt_t *ctx, int dlt, const u_char *packet, const int pktlen); +u_char *tcpedit_dlt_l3data(tcpeditdlt_t *ctx, int dlt, u_char *packet, const int pktlen); + +/* merge the L2 & L3 (possibly changed?) after calling tcpedit_dlt_l3data() */ +u_char *tcpedit_dlt_merge_l3data(tcpeditdlt_t *ctx, int dlt, u_char *packet, const int pktlen, u_char *l3data); + + +int tcpedit_dlt_src(tcpeditdlt_t *ctx); +int tcpedit_dlt_dst(tcpeditdlt_t *ctx); + +#endif |
