<refentry id="libnetdude-libnd-tcpdump">
<refmeta>
<refentrytitle id="top_of_page">libnd_tcpdump</refentrytitle>
<manvolnum>3</manvolnum>
<refmiscinfo>LIBNETDUDE Library</refmiscinfo>
</refmeta>

<refnamediv>
<refname>libnd_tcpdump</refname>
<refpurpose></refpurpose>
<!--[<xref linkend="desc" endterm="desc.title"/>]-->
</refnamediv>

<refsynopsisdiv id="synopsis">
<title id="synopsis.title">Synopsis</title>

<synopsis>



extern      int  <link linkend="libnet-tcpdump-print-timestamp">libnet_tcpdump_print_timestamp</link>;
<link linkend="gboolean">gboolean</link>    <link linkend="libnd-tcpdump-init">libnd_tcpdump_init</link>              (void);
<link linkend="gboolean">gboolean</link>    <link linkend="libnd-tcpdump-open">libnd_tcpdump_open</link>              (<link linkend="LND-Trace">LND_Trace</link> *trace);
<link linkend="void">void</link>        <link linkend="libnd-tcpdump-send-header">libnd_tcpdump_send_header</link>       (<link linkend="LND-Trace">LND_Trace</link> *trace);
<link linkend="void">void</link>        <link linkend="libnd-tcpdump-close">libnd_tcpdump_close</link>             (<link linkend="LND-Trace">LND_Trace</link> *trace);
<link linkend="gboolean">gboolean</link>    <link linkend="libnd-tcpdump-get-packet-line">libnd_tcpdump_get_packet_line</link>   (const <link linkend="LND-Packet">LND_Packet</link> *packet,
                                             <link linkend="char">char</link> *output,
                                             <link linkend="int">int</link> output_len,
                                             <link linkend="gboolean">gboolean</link> find_context);
<link linkend="void">void</link>        <link linkend="libnd-tcpdump-options-reset">libnd_tcpdump_options_reset</link>     (void);
<link linkend="void">void</link>        <link linkend="libnd-tcpdump-options-add">libnd_tcpdump_options_add</link>       (const <link linkend="char">char</link> *option);
</synopsis>
</refsynopsisdiv>









<refsect1 id="desc">
<title id="desc.title">Description</title>
<para>

</para>
</refsect1>

<refsect1 id="details">
<title id="details.title">Details</title>
<refsect2>
<title><anchor id="libnet-tcpdump-print-timestamp" role="variable">libnet_tcpdump_print_timestamp</title>
<indexterm><primary>libnet_tcpdump_print_timestamp</primary></indexterm><programlisting>extern int  libnet_tcpdump_print_timestamp;
</programlisting>
<para>

</para></refsect2>
<refsect2>
<title><anchor id="libnd-tcpdump-init" role="function">libnd_tcpdump_init ()</title>
<indexterm><primary>libnd_tcpdump_init</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>    libnd_tcpdump_init              (void);</programlisting>
<para>
This function initializes the communication system with
tcpdump processes. Calling this is the job of the libnetdude
bootstrapper, you do not need this function.</para>
<para>

</para><variablelist role="params">
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> if initialization was successful, <link linkend="FALSE:CAPS"><literal>FALSE</literal></link> otherwise.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="libnd-tcpdump-open" role="function">libnd_tcpdump_open ()</title>
<indexterm><primary>libnd_tcpdump_open</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>    libnd_tcpdump_open              (<link linkend="LND-Trace">LND_Trace</link> *trace);</programlisting>
<para>
The function forks a new tcpdump process and send the pcap file header,
if available. The tcpdump options you desire can be set using
<link linkend="libnd-tcpdump-options-reset"><function>libnd_tcpdump_options_reset()</function></link> and <link linkend="libnd-tcpdump-options-add"><function>libnd_tcpdump_options_add()</function></link>
before calling this function. The -l and -r options are always
passed; -nnn, -N, -q, and -e are set depending on the values of 
the tcpdump_resolve, tcpdump_domains, tcpdump_quick, and
tcpdump_print_link preferences settings in the <link linkend="LND-DOM-NETDUDE:CAPS"><literal>LND_DOM_NETDUDE</literal></link>
domain. You can call this function repeatedly
to kill an existing tcpdump connection and create a new one.</para>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>trace</parameter>&nbsp;:</term>
<listitem><simpara> trace to create tcpdump process for.
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> if operation was successful, <link linkend="FALSE:CAPS"><literal>FALSE</literal></link> otherwise.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="libnd-tcpdump-send-header" role="function">libnd_tcpdump_send_header ()</title>
<indexterm><primary>libnd_tcpdump_send_header</primary></indexterm><programlisting><link linkend="void">void</link>        libnd_tcpdump_send_header       (<link linkend="LND-Trace">LND_Trace</link> *trace);</programlisting>
<para>
If the trace's file header was not available at the time you opened
the connection to tcpdump (using <link linkend="libnd-tcpdump-open"><function>libnd_tcpdump_open()</function></link>), you can
use this function to now send it. NOTE: tcpdump expects the
trace file header to be the first input data it receives,
so you cannot use this function once you've sent packet data,
and you cannot send packet data unless you've previously
sent a trace file header.</para>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>trace</parameter>&nbsp;:</term>
<listitem><simpara> trace whose header to send to the connected tcpdump process.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="libnd-tcpdump-close" role="function">libnd_tcpdump_close ()</title>
<indexterm><primary>libnd_tcpdump_close</primary></indexterm><programlisting><link linkend="void">void</link>        libnd_tcpdump_close             (<link linkend="LND-Trace">LND_Trace</link> *trace);</programlisting>
<para>
The function kills <parameter>trace</parameter>'s existing tcpdump connection, if any.</para>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>trace</parameter>&nbsp;:</term>
<listitem><simpara> trace whose tcpdump connection to close.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="libnd-tcpdump-get-packet-line" role="function">libnd_tcpdump_get_packet_line ()</title>
<indexterm><primary>libnd_tcpdump_get_packet_line</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link>    libnd_tcpdump_get_packet_line   (const <link linkend="LND-Packet">LND_Packet</link> *packet,
                                             <link linkend="char">char</link> *output,
                                             <link linkend="int">int</link> output_len,
                                             <link linkend="gboolean">gboolean</link> find_context);</programlisting>
<para>
The function sends <parameter>packet</parameter>'s raw data to the connected tcpdump
process and writes at most <parameter>output_len</parameter> bytes of the returned output
into <parameter>output</parameter>.
libnetdude can maintain state for TCP connections independently
of tcpdump, so you can request contextual output (relative SYN
and ACK numbers) using the <parameter>find_context</parameter> flag).</para>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>packet</parameter>&nbsp;:</term>
<listitem><simpara> packet to retrieve tcpdump output of.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>output</parameter>&nbsp;:</term>
<listitem><simpara> string buffer that receives the tcpdump output.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>output_len</parameter>&nbsp;:</term>
<listitem><simpara> length of <parameter>output</parameter>.
</simpara></listitem></varlistentry>
<varlistentry><term><parameter>find_context</parameter>&nbsp;:</term>
<listitem><simpara> whether to look up context or not.
</simpara></listitem></varlistentry>
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> on success, <link linkend="FALSE:CAPS"><literal>FALSE</literal></link> otherwise.
</simpara></listitem></varlistentry>
</variablelist></refsect2>
<refsect2>
<title><anchor id="libnd-tcpdump-options-reset" role="function">libnd_tcpdump_options_reset ()</title>
<indexterm><primary>libnd_tcpdump_options_reset</primary></indexterm><programlisting><link linkend="void">void</link>        libnd_tcpdump_options_reset     (void);</programlisting>
<para>
The function resets any tcpdump options set using
<link linkend="libnd-tcpdump-options-add"><function>libnd_tcpdump_options_add()</function></link>.</para>
<para>

</para></refsect2>
<refsect2>
<title><anchor id="libnd-tcpdump-options-add" role="function">libnd_tcpdump_options_add ()</title>
<indexterm><primary>libnd_tcpdump_options_add</primary></indexterm><programlisting><link linkend="void">void</link>        libnd_tcpdump_options_add       (const <link linkend="char">char</link> *option);</programlisting>
<para>
The function registers <parameter>option</parameter> as an additional command line
option to pass to future forks of tcpdump processes. The
flags you have requested can be reset to the default (see
<link linkend="libnd-tcpdump-open"><function>libnd_tcpdump_open()</function></link>) using <link linkend="libnd-tcpdump-options-reset"><function>libnd_tcpdump_options_reset()</function></link>.</para>
<para>

</para><variablelist role="params">
<varlistentry><term><parameter>option</parameter>&nbsp;:</term>
<listitem><simpara> new command line option.
</simpara></listitem></varlistentry>
</variablelist></refsect2>

</refsect1>




</refentry>
