<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <title>DTN Reference Implementation: dtn_ipc.c File Reference</title> <link href="doxygen.css" rel="stylesheet" type="text/css"> <link href="tabs.css" rel="stylesheet" type="text/css"> </head><body> <!-- Generated by Doxygen 1.5.6 --> <div class="navigation" id="top"> <div class="tabs"> <ul> <li><a href="main.html"><span>Main Page</span></a></li> <li><a href="namespaces.html"><span>Namespaces</span></a></li> <li><a href="annotated.html"><span>Classes</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li> </ul> </div> </div> <div class="contents"> <h1>dtn_ipc.c File Reference</h1> <p> <code>#include <stdio.h></code><br> <code>#include <stdlib.h></code><br> <code>#include <errno.h></code><br> <code>#include <string.h></code><br> <code>#include <unistd.h></code><br> <code>#include <sys/types.h></code><br> <code>#include <sys/socket.h></code><br> <code>#include <netinet/in.h></code><br> <code>#include <arpa/inet.h></code><br> <code>#include <oasys/compat/inet_aton.h></code><br> <code>#include <oasys/compat/inttypes.h></code><br> <code>#include "<a class="el" href="dtn__ipc_8h-source.html">dtn_ipc.h</a>"</code><br> <code>#include "<a class="el" href="dtn__errno_8h-source.html">dtn_errno.h</a>"</code><br> <code>#include "<a class="el" href="dtn__types_8h-source.html">dtn_types.h</a>"</code><br> <p> <a href="dtn__ipc_8c-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0"> <tr><td></td></tr> <tr><td colspan="2"><br><h2>Defines</h2></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="dtn__ipc_8c.html#6d24efd83036c2dde8d9100adb9abffd">CASE</a>(_type) case _type : return #_type; break;</td></tr> <tr><td colspan="2"><br><h2>Functions</h2></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="dtn__ipc_8c.html#c5707d2923063f6fe2bde512f525f72b">dtnipc_msgtoa</a> (u_int8_t type)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Type code to string conversion routine. <a href="#c5707d2923063f6fe2bde512f525f72b"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="dtn__ipc_8c.html#0a70871adbaca23a535c898f854be3a8">dtnipc_open</a> (<a class="el" href="structdtnipc__handle.html">dtnipc_handle_t</a> *<a class="el" href="dtncat_8c.html#01daea96255bb21a8979b3b45f5bbb70">handle</a>)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="dtn__ipc_8c.html#ca3de731f1395d03269a608a915d7539">dtnipc_close</a> (<a class="el" href="structdtnipc__handle.html">dtnipc_handle_t</a> *<a class="el" href="dtncat_8c.html#01daea96255bb21a8979b3b45f5bbb70">handle</a>)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="dtn__ipc_8c.html#0c513c4c8a2438b359d7b53cec93e491">dtnipc_send</a> (<a class="el" href="structdtnipc__handle.html">dtnipc_handle_t</a> *<a class="el" href="dtncat_8c.html#01daea96255bb21a8979b3b45f5bbb70">handle</a>, <a class="el" href="dtn__ipc_8h.html#c05301bf9560764f5e97fba507ef9e5d">dtnapi_message_type_t</a> type)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="dtn__ipc_8c.html#92414569c9a91e622d91bfcb8d711045">dtnipc_recv</a> (<a class="el" href="structdtnipc__handle.html">dtnipc_handle_t</a> *<a class="el" href="dtncat_8c.html#01daea96255bb21a8979b3b45f5bbb70">handle</a>, int *status)</td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="dtn__ipc_8c.html#2e471ca046cc85566e16b9f60ef9937e">dtnipc_send_recv</a> (<a class="el" href="structdtnipc__handle.html">dtnipc_handle_t</a> *<a class="el" href="dtncat_8c.html#01daea96255bb21a8979b3b45f5bbb70">handle</a>, <a class="el" href="dtn__ipc_8h.html#c05301bf9560764f5e97fba507ef9e5d">dtnapi_message_type_t</a> type)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Send a message and wait for a response over the <a class="el" href="namespacedtn.html" title="Namespace for the dtn daemon source code.">dtn</a> ipc protocol. <a href="#2e471ca046cc85566e16b9f60ef9937e"></a><br></td></tr> <tr><td colspan="2"><br><h2>Variables</h2></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="dtn__ipc_8c.html#94b0ae7635a33f63da245751f707a69b">dtnipc_version</a> = DTN_IPC_VERSION</td></tr> </table> <hr><h2>Define Documentation</h2> <a class="anchor" name="6d24efd83036c2dde8d9100adb9abffd"></a><!-- doxytag: member="dtn_ipc.c::CASE" ref="6d24efd83036c2dde8d9100adb9abffd" args="(_type)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define CASE </td> <td>(</td> <td class="paramtype">_type </td> <td class="paramname"> </td> <td> ) </td> <td> case _type : return #_type; break;</td> </tr> </table> </div> <div class="memdoc"> <p> <p>Referenced by <a class="el" href="dtn__ipc_8c-source.html#l00041">dtnipc_msgtoa()</a>, <a class="el" href="FwdStrategy_8h-source.html#l00050">prophet::FwdStrategy::fs_to_str()</a>, <a class="el" href="BundleProtocol_8cc-source.html#l00612">dtn::BundleProtocol::get_admin_type()</a>, <a class="el" href="QueuePolicy_8h-source.html#l00052">prophet::QueuePolicy::qp_to_str()</a>, and <a class="el" href="Encounter_8h-source.html#l00068">prophet::Encounter::state_to_str()</a>.</p> </div> </div><p> <hr><h2>Function Documentation</h2> <a class="anchor" name="ca3de731f1395d03269a608a915d7539"></a><!-- doxytag: member="dtn_ipc.c::dtnipc_close" ref="ca3de731f1395d03269a608a915d7539" args="(dtnipc_handle_t *handle)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int dtnipc_close </td> <td>(</td> <td class="paramtype"><a class="el" href="structdtnipc__handle.html">dtnipc_handle_t</a> * </td> <td class="paramname"> <em>handle</em> </td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p> <p>Definition at line <a class="el" href="dtn__ipc_8c-source.html#l00203">203</a> of file <a class="el" href="dtn__ipc_8c-source.html">dtn_ipc.c</a>.</p> <p>References <a class="el" href="dtn__ipc_8h-source.html#l00085">DTN_CLOSE</a>, <a class="el" href="dtn__errno_8h-source.html#l00031">DTN_ECOMM</a>, <a class="el" href="dtn__ipc_8c-source.html#l00361">dtnipc_send_recv()</a>, <a class="el" href="dtn__ipc_8h-source.html#l00068">dtnipc_handle::err</a>, <a class="el" href="dtn__ipc_8h-source.html#l00067">dtnipc_handle::sock</a>, <a class="el" href="dtn__ipc_8h-source.html#l00073">dtnipc_handle::xdr_decode</a>, and <a class="el" href="dtn__ipc_8h-source.html#l00072">dtnipc_handle::xdr_encode</a>.</p> <p>Referenced by <a class="el" href="dtn__api_8c-source.html#l00065">dtn_close()</a>, <a class="el" href="dtn__ipc_8c-source.html#l00072">dtnipc_open()</a>, <a class="el" href="dtn__ipc_8c-source.html#l00294">dtnipc_recv()</a>, and <a class="el" href="dtn__ipc_8c-source.html#l00233">dtnipc_send()</a>.</p> </div> </div><p> <a class="anchor" name="c5707d2923063f6fe2bde512f525f72b"></a><!-- doxytag: member="dtn_ipc.c::dtnipc_msgtoa" ref="c5707d2923063f6fe2bde512f525f72b" args="(u_int8_t type)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">const char* dtnipc_msgtoa </td> <td>(</td> <td class="paramtype">u_int8_t </td> <td class="paramname"> <em>type</em> </td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p> Type code to string conversion routine. <p> <p>Definition at line <a class="el" href="dtn__ipc_8c-source.html#l00041">41</a> of file <a class="el" href="dtn__ipc_8c-source.html">dtn_ipc.c</a>.</p> <p>References <a class="el" href="dtn__ipc_8c.html#6d24efd83036c2dde8d9100adb9abffd">CASE</a>, <a class="el" href="dtn__ipc_8h-source.html#l00095">DTN_BEGIN_POLL</a>, <a class="el" href="dtn__ipc_8h-source.html#l00091">DTN_BIND</a>, <a class="el" href="dtn__ipc_8h-source.html#l00097">DTN_CANCEL</a>, <a class="el" href="dtn__ipc_8h-source.html#l00096">DTN_CANCEL_POLL</a>, <a class="el" href="dtn__ipc_8h-source.html#l00090">DTN_CHANGE_REGISTRATION</a>, <a class="el" href="dtn__ipc_8h-source.html#l00085">DTN_CLOSE</a>, <a class="el" href="dtn__ipc_8h-source.html#l00089">DTN_FIND_REGISTRATION</a>, <a class="el" href="dtn__ipc_8h-source.html#l00086">DTN_LOCAL_EID</a>, <a class="el" href="dtn__ipc_8h-source.html#l00084">DTN_OPEN</a>, <a class="el" href="dtn__ipc_8h-source.html#l00094">DTN_RECV</a>, <a class="el" href="dtn__ipc_8h-source.html#l00087">DTN_REGISTER</a>, <a class="el" href="dtn__ipc_8h-source.html#l00093">DTN_SEND</a>, <a class="el" href="dtn__ipc_8h-source.html#l00098">DTN_SESSION_UPDATE</a>, and <a class="el" href="dtn__ipc_8h-source.html#l00088">DTN_UNREGISTER</a>.</p> <p>Referenced by <a class="el" href="dtn__ipc_8c-source.html#l00233">dtnipc_send()</a>, <a class="el" href="APIServer_8cc-source.html#l01454">dtn::APIClient::handle_begin_poll()</a>, and <a class="el" href="APIServer_8cc-source.html#l00283">dtn::APIClient::run()</a>.</p> </div> </div><p> <a class="anchor" name="0a70871adbaca23a535c898f854be3a8"></a><!-- doxytag: member="dtn_ipc.c::dtnipc_open" ref="0a70871adbaca23a535c898f854be3a8" args="(dtnipc_handle_t *handle)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int dtnipc_open </td> <td>(</td> <td class="paramtype"><a class="el" href="structdtnipc__handle.html">dtnipc_handle_t</a> * </td> <td class="paramname"> <em>handle</em> </td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p> <p>Definition at line <a class="el" href="dtn__ipc_8c-source.html#l00072">72</a> of file <a class="el" href="dtn__ipc_8c-source.html">dtn_ipc.c</a>.</p> <p>References <a class="el" href="dtn__ipc_8h-source.html#l00071">dtnipc_handle::buf</a>, <a class="el" href="dtn__ipc_8h-source.html#l00070">dtnipc_handle::debug</a>, <a class="el" href="dtn__errno_8h-source.html#l00031">DTN_ECOMM</a>, <a class="el" href="dtn__errno_8h-source.html#l00039">DTN_EVERSION</a>, <a class="el" href="dtn__ipc_8h-source.html#l00055">DTN_IPC_PORT</a>, <a class="el" href="dtn__ipc_8h-source.html#l00061">DTN_MAX_API_MSG</a>, <a class="el" href="dtn__ipc_8h-source.html#l00084">DTN_OPEN</a>, <a class="el" href="dtn__ipc_8c-source.html#l00203">dtnipc_close()</a>, <a class="el" href="dtn__ipc_8c-source.html#l00038">dtnipc_version</a>, <a class="el" href="dtncat_8c-source.html#l00101">end</a>, <a class="el" href="dtn__ipc_8h-source.html#l00068">dtnipc_handle::err</a>, <a class="el" href="IPDiscovery_8cc.html#d65a8842cc674e3ddf69355898c0ecbf">errno</a>, <a class="el" href="dtn__ipc_8h-source.html#l00067">dtnipc_handle::sock</a>, <a class="el" href="dtn__ipc_8h-source.html#l00075">dtnipc_handle::total_rcvd</a>, <a class="el" href="dtn__ipc_8h-source.html#l00074">dtnipc_handle::total_sent</a>, <a class="el" href="dtn__ipc_8h-source.html#l00073">dtnipc_handle::xdr_decode</a>, and <a class="el" href="dtn__ipc_8h-source.html#l00072">dtnipc_handle::xdr_encode</a>.</p> <p>Referenced by <a class="el" href="dtn__api_8c-source.html#l00039">dtn_open()</a>.</p> </div> </div><p> <a class="anchor" name="92414569c9a91e622d91bfcb8d711045"></a><!-- doxytag: member="dtn_ipc.c::dtnipc_recv" ref="92414569c9a91e622d91bfcb8d711045" args="(dtnipc_handle_t *handle, int *status)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int dtnipc_recv </td> <td>(</td> <td class="paramtype"><a class="el" href="structdtnipc__handle.html">dtnipc_handle_t</a> * </td> <td class="paramname"> <em>handle</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int * </td> <td class="paramname"> <em>status</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p> <p>Definition at line <a class="el" href="dtn__ipc_8c-source.html#l00294">294</a> of file <a class="el" href="dtn__ipc_8c-source.html">dtn_ipc.c</a>.</p> <p>References <a class="el" href="dtn__ipc_8h-source.html#l00071">dtnipc_handle::buf</a>, <a class="el" href="dtn__ipc_8h-source.html#l00070">dtnipc_handle::debug</a>, <a class="el" href="dtn__errno_8h-source.html#l00031">DTN_ECOMM</a>, <a class="el" href="dtn__ipc_8c-source.html#l00203">dtnipc_close()</a>, <a class="el" href="dtn__ipc_8h-source.html#l00068">dtnipc_handle::err</a>, <a class="el" href="IPDiscovery_8cc.html#d65a8842cc674e3ddf69355898c0ecbf">errno</a>, <a class="el" href="num2sdnv_8c-source.html#l00034">len</a>, <a class="el" href="dtn__ipc_8h-source.html#l00067">dtnipc_handle::sock</a>, <a class="el" href="dtn__ipc_8h-source.html#l00075">dtnipc_handle::total_rcvd</a>, <a class="el" href="dtn__ipc_8h-source.html#l00074">dtnipc_handle::total_sent</a>, and <a class="el" href="dtn__ipc_8h-source.html#l00073">dtnipc_handle::xdr_decode</a>.</p> <p>Referenced by <a class="el" href="dtn__api_8c-source.html#l00088">dtn_build_local_eid()</a>, <a class="el" href="dtn__api_8c-source.html#l00634">dtn_cancel_poll()</a>, <a class="el" href="dtn__api_8c-source.html#l00235">dtn_find_registration()</a>, <a class="el" href="dtn__api_8c-source.html#l00430">dtn_recv()</a>, <a class="el" href="dtn__api_8c-source.html#l00147">dtn_register()</a>, <a class="el" href="dtn__api_8c-source.html#l00545">dtn_session_update()</a>, <a class="el" href="dtn__api_8c-source.html#l00195">dtn_unregister()</a>, and <a class="el" href="dtn__ipc_8c-source.html#l00361">dtnipc_send_recv()</a>.</p> </div> </div><p> <a class="anchor" name="0c513c4c8a2438b359d7b53cec93e491"></a><!-- doxytag: member="dtn_ipc.c::dtnipc_send" ref="0c513c4c8a2438b359d7b53cec93e491" args="(dtnipc_handle_t *handle, dtnapi_message_type_t type)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int dtnipc_send </td> <td>(</td> <td class="paramtype"><a class="el" href="structdtnipc__handle.html">dtnipc_handle_t</a> * </td> <td class="paramname"> <em>handle</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="dtn__ipc_8h.html#c05301bf9560764f5e97fba507ef9e5d">dtnapi_message_type_t</a> </td> <td class="paramname"> <em>type</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p> <p>Definition at line <a class="el" href="dtn__ipc_8c-source.html#l00233">233</a> of file <a class="el" href="dtn__ipc_8c-source.html">dtn_ipc.c</a>.</p> <p>References <a class="el" href="dtn__ipc_8h-source.html#l00071">dtnipc_handle::buf</a>, <a class="el" href="dtn__ipc_8h-source.html#l00070">dtnipc_handle::debug</a>, <a class="el" href="dtn__errno_8h-source.html#l00031">DTN_ECOMM</a>, <a class="el" href="dtn__ipc_8c-source.html#l00203">dtnipc_close()</a>, <a class="el" href="dtn__ipc_8c-source.html#l00041">dtnipc_msgtoa()</a>, <a class="el" href="dtn__ipc_8h-source.html#l00068">dtnipc_handle::err</a>, <a class="el" href="IPDiscovery_8cc.html#d65a8842cc674e3ddf69355898c0ecbf">errno</a>, <a class="el" href="num2sdnv_8c-source.html#l00034">len</a>, <a class="el" href="dtn__ipc_8h-source.html#l00067">dtnipc_handle::sock</a>, <a class="el" href="dtn__ipc_8h-source.html#l00075">dtnipc_handle::total_rcvd</a>, <a class="el" href="dtn__ipc_8h-source.html#l00074">dtnipc_handle::total_sent</a>, and <a class="el" href="dtn__ipc_8h-source.html#l00072">dtnipc_handle::xdr_encode</a>.</p> <p>Referenced by <a class="el" href="dtn__api_8c-source.html#l00604">dtn_begin_poll()</a>, <a class="el" href="dtn__api_8c-source.html#l00088">dtn_build_local_eid()</a>, <a class="el" href="dtn__api_8c-source.html#l00235">dtn_find_registration()</a>, <a class="el" href="dtn__api_8c-source.html#l00147">dtn_register()</a>, <a class="el" href="dtn__api_8c-source.html#l00195">dtn_unregister()</a>, and <a class="el" href="dtn__ipc_8c-source.html#l00361">dtnipc_send_recv()</a>.</p> </div> </div><p> <a class="anchor" name="2e471ca046cc85566e16b9f60ef9937e"></a><!-- doxytag: member="dtn_ipc.c::dtnipc_send_recv" ref="2e471ca046cc85566e16b9f60ef9937e" args="(dtnipc_handle_t *handle, dtnapi_message_type_t type)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int dtnipc_send_recv </td> <td>(</td> <td class="paramtype"><a class="el" href="structdtnipc__handle.html">dtnipc_handle_t</a> * </td> <td class="paramname"> <em>handle</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="dtn__ipc_8h.html#c05301bf9560764f5e97fba507ef9e5d">dtnapi_message_type_t</a> </td> <td class="paramname"> <em>type</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p> Send a message and wait for a response over the <a class="el" href="namespacedtn.html" title="Namespace for the dtn daemon source code.">dtn</a> ipc protocol. <p> Returns 0 on success, -1 on error. <p>Definition at line <a class="el" href="dtn__ipc_8c-source.html#l00361">361</a> of file <a class="el" href="dtn__ipc_8c-source.html">dtn_ipc.c</a>.</p> <p>References <a class="el" href="dtn__errno_8h-source.html#l00027">DTN_SUCCESS</a>, <a class="el" href="dtn__ipc_8c-source.html#l00294">dtnipc_recv()</a>, <a class="el" href="dtn__ipc_8c-source.html#l00233">dtnipc_send()</a>, and <a class="el" href="dtn__ipc_8h-source.html#l00068">dtnipc_handle::err</a>.</p> <p>Referenced by <a class="el" href="dtn__api_8c-source.html#l00305">dtn_bind()</a>, <a class="el" href="dtn__api_8c-source.html#l00402">dtn_cancel()</a>, <a class="el" href="dtn__api_8c-source.html#l00634">dtn_cancel_poll()</a>, <a class="el" href="dtn__api_8c-source.html#l00430">dtn_recv()</a>, <a class="el" href="dtn__api_8c-source.html#l00359">dtn_send()</a>, <a class="el" href="dtn__api_8c-source.html#l00545">dtn_session_update()</a>, <a class="el" href="dtn__api_8c-source.html#l00332">dtn_unbind()</a>, and <a class="el" href="dtn__ipc_8c-source.html#l00203">dtnipc_close()</a>.</p> </div> </div><p> <hr><h2>Variable Documentation</h2> <a class="anchor" name="94b0ae7635a33f63da245751f707a69b"></a><!-- doxytag: member="dtn_ipc.c::dtnipc_version" ref="94b0ae7635a33f63da245751f707a69b" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int <a class="el" href="dtntest_8cc.html#94b0ae7635a33f63da245751f707a69b">dtnipc_version</a> = DTN_IPC_VERSION </td> </tr> </table> </div> <div class="memdoc"> <p> <p>Definition at line <a class="el" href="dtn__ipc_8c-source.html#l00038">38</a> of file <a class="el" href="dtn__ipc_8c-source.html">dtn_ipc.c</a>.</p> <p>Referenced by <a class="el" href="dtn__ipc_8c-source.html#l00072">dtnipc_open()</a>, and <a class="el" href="dtntest_8cc-source.html#l00066">DTNOpenCommand::exec()</a>.</p> </div> </div><p> </div> <hr size="1"><address style="text-align: right;"><small>Generated on Mon Jul 21 14:09:49 2008 for DTN Reference Implementation by <a href="http://www.doxygen.org/index.html"> <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address> </body> </html>