1e5df9dc1SAsim Jamshed<!-- Creator : groff version 1.22.3 --> 2e5df9dc1SAsim Jamshed<!-- CreationDate: Mon Aug 28 02:48:47 2017 --> 3e5df9dc1SAsim Jamshed<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 4e5df9dc1SAsim Jamshed"http://www.w3.org/TR/html4/loose.dtd"> 5e5df9dc1SAsim Jamshed<html> 6e5df9dc1SAsim Jamshed<head> 7e5df9dc1SAsim Jamshed<meta name="generator" content="groff -Thtml, see www.gnu.org"> 8e5df9dc1SAsim Jamshed<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"> 9e5df9dc1SAsim Jamshed<meta name="Content-Style" content="text/css"> 10e5df9dc1SAsim Jamshed<style type="text/css"> 11e5df9dc1SAsim Jamshed p { margin-top: 0; margin-bottom: 0; vertical-align: top } 12e5df9dc1SAsim Jamshed pre { margin-top: 0; margin-bottom: 0; vertical-align: top } 13e5df9dc1SAsim Jamshed table { margin-top: 0; margin-bottom: 0; vertical-align: top } 14e5df9dc1SAsim Jamshed h1 { text-align: center } 15e5df9dc1SAsim Jamshed</style> 16e5df9dc1SAsim Jamshed<title>mtcp_define_event</title> 17e5df9dc1SAsim Jamshed<link rel="stylesheet" href="./common.css"> 18e5df9dc1SAsim Jamshed</head> 19e5df9dc1SAsim Jamshed<body> 20e5df9dc1SAsim Jamshed<div class="main"> 21e5df9dc1SAsim Jamshed<h1 align="center">mtcp_define_event</h1> 22e5df9dc1SAsim Jamshed<!-- 23e5df9dc1SAsim Jamshed<a href="#NAME">NAME</a><br> 24e5df9dc1SAsim Jamshed<a href="#SYNOPSIS">SYNOPSIS</a><br> 25e5df9dc1SAsim Jamshed<a href="#DESCRIPTION">DESCRIPTION</a><br> 26e5df9dc1SAsim Jamshed<a href="#RETURN VALUE">RETURN VALUE</a><br> 27e5df9dc1SAsim Jamshed<a href="#ERRORS">ERRORS</a><br> 28e5df9dc1SAsim Jamshed<a href="#AUTHORS">AUTHORS</a><br> 29e5df9dc1SAsim Jamshed<a href="#SEE ALSO">SEE ALSO</a><br> 30e5df9dc1SAsim Jamshed<a href="#COLOPHON">COLOPHON</a><br> 31e5df9dc1SAsim Jamshed 32e5df9dc1SAsim Jamshed<hr> 33e5df9dc1SAsim Jamshed--> 34e5df9dc1SAsim Jamshed 35e5df9dc1SAsim Jamshed<h2>NAME 36e5df9dc1SAsim Jamshed<a name="NAME"></a> 37e5df9dc1SAsim Jamshed</h2> 38e5df9dc1SAsim Jamshed 39e5df9dc1SAsim Jamshed 40e5df9dc1SAsim Jamshed 41e5df9dc1SAsim Jamshed<p style="margin-left:11%; margin-top: 1em">mtcp_define_event 42e5df9dc1SAsim Jamshed− define a user-defined event function</p> 43e5df9dc1SAsim Jamshed 44e5df9dc1SAsim Jamshed<h2>SYNOPSIS 45e5df9dc1SAsim Jamshed<a name="SYNOPSIS"></a> 46e5df9dc1SAsim Jamshed</h2> 47e5df9dc1SAsim Jamshed 48e5df9dc1SAsim Jamshed 49e5df9dc1SAsim Jamshed<p style="margin-left:11%; margin-top: 1em"><b>#include 50e5df9dc1SAsim Jamshed<mos_api.h></b></p> 51e5df9dc1SAsim Jamshed 52e5df9dc1SAsim Jamshed<p style="margin-left:11%; margin-top: 1em"><b>int 53e5df9dc1SAsim Jamshedmtcp_define_event(event_t</b> <i>event</i><b>, filter_t</b> 54e5df9dc1SAsim Jamshed<i>filter</i><b>, struct filter_arg *</b> <i>arg</i> 55e5df9dc1SAsim Jamshed<b>);</b></p> 56e5df9dc1SAsim Jamshed 57e5df9dc1SAsim Jamshed<h2>DESCRIPTION 58e5df9dc1SAsim Jamshed<a name="DESCRIPTION"></a> 59e5df9dc1SAsim Jamshed</h2> 60e5df9dc1SAsim Jamshed 61e5df9dc1SAsim Jamshed 62e5df9dc1SAsim Jamshed 63e5df9dc1SAsim Jamshed<p style="margin-left:11%; margin-top: 1em"><b>mtcp_define_event</b>() 64e5df9dc1SAsim Jamshedcreates a new user-defined event (UDE) with a base event 65e5df9dc1SAsim Jamshed<i>event</i> and a filter function <i>filter</i> with a 66e5df9dc1SAsim Jamshedfilter argument <i>arg</i></p> 67e5df9dc1SAsim Jamshed 68e5df9dc1SAsim Jamshed<p style="margin-left:11%; margin-top: 1em">More 69e5df9dc1SAsim Jamshedspecifically, a UDE is defined as a based event and a 70e5df9dc1SAsim Jamshedboolean filter function that determines the event condition. 71e5df9dc1SAsim JamshedWhen the base event for a UDE is raised, mOS triggers the 72e5df9dc1SAsim JamshedUDE only when the filter function is evaluated to be 73e5df9dc1SAsim Jamshedtrue.</p> 74e5df9dc1SAsim Jamshed 75e5df9dc1SAsim Jamshed<p style="margin-left:11%; margin-top: 1em"><i>event</i> 76e5df9dc1SAsim Jamshedargument is a typedef’ed uint64_t integer. It can be 77e5df9dc1SAsim Jamshedeither a built-in event or a user-defined event. mOS 78e5df9dc1SAsim Jamshedprovides the following built-in events that a user can 79e5df9dc1SAsim Jamshedemploy:</p> 80e5df9dc1SAsim Jamshed 81e5df9dc1SAsim Jamshed 82e5df9dc1SAsim Jamshed<p align="center" style="margin-top: 1em"> 83e5df9dc1SAsim Jamshed <table align="center" border="1" class="docutils"> 84e5df9dc1SAsim Jamshed <colgroup> 85e5df9dc1SAsim Jamshed <col width="40%" /> 86e5df9dc1SAsim Jamshed <col width="60%" /> 87e5df9dc1SAsim Jamshed </colgroup> 88e5df9dc1SAsim Jamshed <tbody valign="top"> 89e5df9dc1SAsim Jamshed <tr class="row-odd"><td>Built-in event</td> 90e5df9dc1SAsim Jamshed <td>Description</td> 91e5df9dc1SAsim Jamshed </tr> 92e5df9dc1SAsim Jamshed <tr class="row-even"><td><code class="docutils literal"><span class="pre">MOS_ON_PKT_IN</span></code></td> 93e5df9dc1SAsim Jamshed <td>In-flow TCP packet arrival</td> 94e5df9dc1SAsim Jamshed </tr> 95e5df9dc1SAsim Jamshed <tr class="row-odd"><td><code class="docutils literal"><span class="pre">MOS_ON_CONN_START</span></code></td> 96e5df9dc1SAsim Jamshed <td>New connection initiation</td> 97e5df9dc1SAsim Jamshed </tr> 98e5df9dc1SAsim Jamshed <tr class="row-even"><td><code class="docutils literal"><span class="pre">MOS_ON_REXMIT</span></code></td> 99e5df9dc1SAsim Jamshed <td>TCP retransmission</td> 100e5df9dc1SAsim Jamshed </tr> 101e5df9dc1SAsim Jamshed <tr class="row-odd"><td><code class="docutils literal"><span class="pre">MOS_ON_TCP_STATE_CHANGE</span></code></td> 102e5df9dc1SAsim Jamshed <td>TCP state change</td> 103e5df9dc1SAsim Jamshed </tr> 104e5df9dc1SAsim Jamshed <tr class="row-even"><td><code class="docutils literal"><span class="pre">MOS_ON_CONN_END</span></code></td> 105e5df9dc1SAsim Jamshed <td>Connection termination</td> 106e5df9dc1SAsim Jamshed </tr> 107e5df9dc1SAsim Jamshed <tr class="row-odd"><td><code class="docutils literal"><span class="pre">MOS_ON_CONN_NEW_DATA</span></code></td> 108e5df9dc1SAsim Jamshed <td>New flow payload</td> 109e5df9dc1SAsim Jamshed </tr> 110e5df9dc1SAsim Jamshed <tr class="row-even"><td><code class="docutils literal"><span class="pre">MOS_ON_ORPHAN</span></code></td> 111e5df9dc1SAsim Jamshed <td>non-TCP packet</td> 112e5df9dc1SAsim Jamshed </tr> 113e5df9dc1SAsim Jamshed <tr class="row-odd"><td><code class="docutils literal"><span class="pre">MOS_ON_ERROR</span></code></td> 114e5df9dc1SAsim Jamshed <td>Error report (e.g., receive buffer full)</td> 115e5df9dc1SAsim Jamshed </tr> 116e5df9dc1SAsim Jamshed </tbody> 117e5df9dc1SAsim Jamshed </table> 118e5df9dc1SAsim Jamshed</p> 119e5df9dc1SAsim Jamshed 120e5df9dc1SAsim Jamshed<p style="margin-left:11%; margin-top: 1em">A typical usage 121e5df9dc1SAsim Jamshedof <b>mtcp_define_event()</b> is illustrated below:</p> 122e5df9dc1SAsim Jamshed 123e5df9dc1SAsim Jamshed 124e5df9dc1SAsim Jamshed<p style="margin-left:11%; margin-top: 1em">/*************************************************/ 125e5df9dc1SAsim Jamshed<br> 126e5df9dc1SAsim Jamshed// creates a passive monitoring socket with its scope <br> 127e5df9dc1SAsim Jamsheds = mtcp_socket(m, AF_INET, MOS_SOCK_MONITOR_STREAM, 0); 128e5df9dc1SAsim Jamshed<br> 129e5df9dc1SAsim Jamshedft.stream_syn_filter = "dst net 216.58 and dst port 130e5df9dc1SAsim Jamshed80"; <br> 131e5df9dc1SAsim Jamshedmtcp_bind_monitor_filter(m, s, &ft);</p> 132e5df9dc1SAsim Jamshed 133e5df9dc1SAsim Jamshed<p style="margin-left:11%; margin-top: 1em">// defines a 134e5df9dc1SAsim Jamsheduser-defined event that detects an HTTP request <br> 135e5df9dc1SAsim Jamshedhev = mtcp_define_event(MOS_ON_CONN_NEW_DATA, IsHTTPRequest, 136e5df9dc1SAsim JamshedNULL); <br> 137e5df9dc1SAsim Jamshed/*************************************************/</p> 138e5df9dc1SAsim Jamshed 139e5df9dc1SAsim Jamshed<h2>RETURN VALUE 140e5df9dc1SAsim Jamshed<a name="RETURN VALUE"></a> 141e5df9dc1SAsim Jamshed</h2> 142e5df9dc1SAsim Jamshed 143e5df9dc1SAsim Jamshed 144e5df9dc1SAsim Jamshed<p style="margin-left:11%; margin-top: 1em">Returns 0 on 145e5df9dc1SAsim Jamshedsuccess; -1 on failure.</p> 146e5df9dc1SAsim Jamshed 147e5df9dc1SAsim Jamshed<h2>ERRORS 148e5df9dc1SAsim Jamshed<a name="ERRORS"></a> 149e5df9dc1SAsim Jamshed</h2> 150e5df9dc1SAsim Jamshed 151e5df9dc1SAsim Jamshed 152e5df9dc1SAsim Jamshed<table width="100%" border="0" rules="none" frame="void" 153e5df9dc1SAsim Jamshed cellspacing="0" cellpadding="0"> 154e5df9dc1SAsim Jamshed<tr valign="top" align="left"> 155e5df9dc1SAsim Jamshed<td width="11%"></td> 156e5df9dc1SAsim Jamshed<td width="9%"> 157e5df9dc1SAsim Jamshed 158e5df9dc1SAsim Jamshed 159e5df9dc1SAsim Jamshed<p style="margin-top: 1em"><b>EINVAL</b></p></td> 160e5df9dc1SAsim Jamshed<td width="14%"></td> 161e5df9dc1SAsim Jamshed<td width="63%"> 162e5df9dc1SAsim Jamshed 163e5df9dc1SAsim Jamshed 164e5df9dc1SAsim Jamshed<p style="margin-top: 1em">The socket descriptor, 165e5df9dc1SAsim Jamshed<i>sockid</i> is invalid.</p></td> 166e5df9dc1SAsim Jamshed<td width="3%"> 167e5df9dc1SAsim Jamshed</td></tr> 168e5df9dc1SAsim Jamshed</table> 169e5df9dc1SAsim Jamshed 170e5df9dc1SAsim Jamshed<h2>AUTHORS 171e5df9dc1SAsim Jamshed<a name="AUTHORS"></a> 172e5df9dc1SAsim Jamshed</h2> 173e5df9dc1SAsim Jamshed 174*626fc701SYoungGyoun<p style="margin-left:11%; margin-top: 1em">mOS development 175*626fc701SYoungGyounteam <[email protected]></p> 176*626fc701SYoungGyoun 177e5df9dc1SAsim Jamshed<!-----------------------------------------------------------> 178e5df9dc1SAsim Jamshed<h2>EXAMPLES 179e5df9dc1SAsim Jamshed<a name="EXAMPLES"></a> 180e5df9dc1SAsim Jamshed</h2> 181e5df9dc1SAsim Jamshed 182e5df9dc1SAsim Jamshed<p style="margin-left:11%; margin-top: 1em"> 183e5df9dc1SAsim Jamshed <a href="http://mos.kaist.edu/guide/programmer/05_api_example.html#registering-for-user-defined-events-udes"> 184e5df9dc1SAsim Jamshed http://mos.kaist.edu/guide/programmer/05_api_example.html#registering-for-user-defined-events-udes 185e5df9dc1SAsim Jamshed </a> 186e5df9dc1SAsim Jamshed</p> 187e5df9dc1SAsim Jamshed<!-----------------------------------------------------------> 188e5df9dc1SAsim Jamshed 189e5df9dc1SAsim Jamshed<h2>SEE ALSO 190e5df9dc1SAsim Jamshed<a name="SEE ALSO"></a> 191e5df9dc1SAsim Jamshed</h2> 192e5df9dc1SAsim Jamshed 193e5df9dc1SAsim Jamshed 194e5df9dc1SAsim Jamshed 195e5df9dc1SAsim Jamshed<p style="margin-left:11%; margin-top: 1em"><b>mtcp_socket</b>(), 196e5df9dc1SAsim Jamshed<b>mtcp_bind_monitor_filter</b>(), 197e5df9dc1SAsim Jamshed<b>mtcp_register_callback</b>()</p> 198e5df9dc1SAsim Jamshed 199e5df9dc1SAsim Jamshed<h2>COLOPHON 200e5df9dc1SAsim Jamshed<a name="COLOPHON"></a> 201e5df9dc1SAsim Jamshed</h2> 202e5df9dc1SAsim Jamshed 203e5df9dc1SAsim Jamshed 204e5df9dc1SAsim Jamshed<p style="margin-left:11%; margin-top: 1em">This page is 205e5df9dc1SAsim Jamshedpart of mOS release 0.3 <i>docs</i> section. A description 206e5df9dc1SAsim Jamshedof the project, and information about reporting bugs, can be 207e5df9dc1SAsim Jamshedfound at http://mos.kaist.edu/.</p> 208e5df9dc1SAsim Jamshed<hr> 209e5df9dc1SAsim Jamshed<div class="footer"> 210e5df9dc1SAsim Jamshed <img src="back-arrow.jpg" width="2%" height="2%"><a href="http://mos.kaist.edu/index_man.html">Back to Index</a> 211e5df9dc1SAsim Jamshed</div> 212e5df9dc1SAsim Jamshed</div> 213e5df9dc1SAsim Jamshed</body> 214e5df9dc1SAsim Jamshed</html> 215