1e5df9dc1SAsim Jamshed<!-- Creator : groff version 1.22.3 --> 2e5df9dc1SAsim Jamshed<!-- CreationDate: Mon Aug 28 06:36: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_setlastpkt</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_setlastpkt</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_setlastpkt 42e5df9dc1SAsim Jamshed− modifies the last Ethernet frame of a monitoring 43e5df9dc1SAsim Jamshedflow</p> 44e5df9dc1SAsim Jamshed 45e5df9dc1SAsim Jamshed<h2>SYNOPSIS 46e5df9dc1SAsim Jamshed<a name="SYNOPSIS"></a> 47e5df9dc1SAsim Jamshed</h2> 48e5df9dc1SAsim Jamshed 49e5df9dc1SAsim Jamshed 50e5df9dc1SAsim Jamshed<p style="margin-left:11%; margin-top: 1em"><b>#include 51e5df9dc1SAsim Jamshed<mos_api.h></b></p> 52e5df9dc1SAsim Jamshed 53e5df9dc1SAsim Jamshed<p style="margin-left:11%; margin-top: 1em"><b>ssize_t 54e5df9dc1SAsim Jamshedmtcp_setlastpkt(mctx_t</b> <i>mctx</i><b>, int</b> 55e5df9dc1SAsim Jamshed<i>sockid</i><b>, int</b> <i>side</i><b>, off_t</b> 56e5df9dc1SAsim Jamshed<i>offset</i><b>, byte *</b> <i>data</i><b>, uint16_t</b> 57e5df9dc1SAsim Jamshed<i>datalen</i><b>, int</b> <i>option</i><b>);</b></p> 58e5df9dc1SAsim Jamshed 59e5df9dc1SAsim Jamshed<h2>DESCRIPTION 60e5df9dc1SAsim Jamshed<a name="DESCRIPTION"></a> 61e5df9dc1SAsim Jamshed</h2> 62e5df9dc1SAsim Jamshed 63e5df9dc1SAsim Jamshed 64e5df9dc1SAsim Jamshed 65e5df9dc1SAsim Jamshed<p style="margin-left:11%; margin-top: 1em"><b>mtcp_setlastpkt</b>() 66e5df9dc1SAsim Jamshedupdates the last Ethernet frame for a given flow observed by 67e5df9dc1SAsim Jamshedthe stack. The user can specify the flow and direction with 68e5df9dc1SAsim Jamshedthe socket descriptor <i>sockid</i> and the <i>side</i> 69e5df9dc1SAsim Jamshedargument (MOS_SIDE_CLI or MOS_SIDE_SVR) to specify the 70e5df9dc1SAsim JamshedEthernet frame of her choosing to be modified.</p> 71e5df9dc1SAsim Jamshed 72e5df9dc1SAsim Jamshed<p style="margin-left:11%; margin-top: 1em">The 73e5df9dc1SAsim Jamshed<i>option</i> argument can be used to define which action 74e5df9dc1SAsim Jamshedshould be performed on the packet. The value of 75e5df9dc1SAsim Jamshed<i>option</i> should be the logical disjunction of action to 76e5df9dc1SAsim Jamshedperform (MOS_DROP or MOS_OVERWRITE), 77e5df9dc1SAsim Jamshedposition for modification (MOS_ETH_HDR or 78e5df9dc1SAsim JamshedMOS_IP_HDR or MOS_TCP_HDR or MOS_TCP_PAYLOAD), and 79e5df9dc1SAsim Jamshedchecksum operation to perform (MOS_UPDATE_IP_CHKSUM or 80e5df9dc1SAsim JamshedMOS_UPDATE_TCP_CHKSUM). It allows modifying the packet contents 81e5df9dc1SAsim Jamshedas long as the overall TCP payload size is not changed. 82e5df9dc1SAsim Jamshed</p> 83e5df9dc1SAsim Jamshed 84e5df9dc1SAsim Jamshed<table width="100%" border="0" rules="none" frame="void" 85e5df9dc1SAsim Jamshed cellspacing="0" cellpadding="0"> 86e5df9dc1SAsim Jamshed<tr valign="top" align="left"> 87e5df9dc1SAsim Jamshed<td width="11%"></td> 88e5df9dc1SAsim Jamshed<td width="12%"> 89e5df9dc1SAsim Jamshed 90e5df9dc1SAsim Jamshed<p style="margin-left:11%; margin-top: 1em"><b>MOS_DROP</b></p></td> 91e5df9dc1SAsim Jamshed<td width="6%"></td> 92e5df9dc1SAsim Jamshed<td width="71%"> 93e5df9dc1SAsim Jamshed 94e5df9dc1SAsim Jamshed<p>Drop the last Ethernet frame. This option ignores any 95e5df9dc1SAsim Jamshed other flags in the <i>option</i> parameter.</p></td> 96e5df9dc1SAsim Jamshed</tr> 97e5df9dc1SAsim Jamshed 98e5df9dc1SAsim Jamshed<tr valign="top" align="left"> 99e5df9dc1SAsim Jamshed<td width="11%"></td> 100e5df9dc1SAsim Jamshed<td width="12%"> 101e5df9dc1SAsim Jamshed 102e5df9dc1SAsim Jamshed<p style="margin-left:11%; margin-top: 1em"><b>MOS_OVERWRITE</b></p></td> 103e5df9dc1SAsim Jamshed<td width="6%"></td> 104e5df9dc1SAsim Jamshed<td width="71%"> 105e5df9dc1SAsim Jamshed 106e5df9dc1SAsim Jamshed<p>Overwrite some data onto the 107e5df9dc1SAsim Jamshedspecific header or payload (MOS_ETH_HDR or MOS_IP_HDR or 108e5df9dc1SAsim JamshedMOS_TCP_HDR or MOS_TCP_PAYLOAD) of the last Ethernet frame. 109e5df9dc1SAsim JamshedThe user can specify the offset from where the data should 110e5df9dc1SAsim Jamshedbe written ( <i>offset</i> ), the data buffer that contains 111e5df9dc1SAsim Jamshedthe data to be written ( <i>data</i> ), and the bytes in the 112e5df9dc1SAsim Jamsheddata buffer ( <i>datalen</i> ).</p></td> 113e5df9dc1SAsim Jamshed</tr> 114e5df9dc1SAsim Jamshed 115e5df9dc1SAsim Jamshed</table> 116e5df9dc1SAsim Jamshed 117e5df9dc1SAsim Jamshed 118e5df9dc1SAsim Jamshed<p style="margin-left:11%; margin-top: 1em">Here are some 119e5df9dc1SAsim Jamshedrestrictions on the <i>option</i> field: (a) MOS_DROP and 120e5df9dc1SAsim JamshedMOS_OVERWRITE are mutually 121e5df9dc1SAsim Jamshedexclusive parameters, but one of them should be specified in 122e5df9dc1SAsim Jamshedthe <i>option</i> field. (b) MOS_DROP ignores any other 123e5df9dc1SAsim Jamshedflags in the <i>option</i> parameter. (c) MOS_ETH_HDR, 124e5df9dc1SAsim JamshedMOS_IP_HDR, MOS_TCP_HDR, and MOS_TCP_PAYLOAD are mutually 125e5df9dc1SAsim Jamshedexclusive parameters, but one of them should be specified in 126e5df9dc1SAsim Jamshedthe <i>option</i> field.</p> 127e5df9dc1SAsim Jamshed 128e5df9dc1SAsim Jamshed<h2>RETURN VALUE 129e5df9dc1SAsim Jamshed<a name="RETURN VALUE"></a> 130e5df9dc1SAsim Jamshed</h2> 131e5df9dc1SAsim Jamshed 132e5df9dc1SAsim Jamshed 133e5df9dc1SAsim Jamshed<p style="margin-left:11%; margin-top: 1em">Returns 0 on 134e5df9dc1SAsim Jamshedsuccess. On all errors, -1 is returned and <i>errno</i> is 135e5df9dc1SAsim Jamshedset appropriately.</p> 136e5df9dc1SAsim Jamshed 137e5df9dc1SAsim Jamshed<h2>ERRORS 138e5df9dc1SAsim Jamshed<a name="ERRORS"></a> 139e5df9dc1SAsim Jamshed</h2> 140e5df9dc1SAsim Jamshed 141e5df9dc1SAsim Jamshed 142e5df9dc1SAsim Jamshed<table width="100%" border="0" rules="none" frame="void" 143e5df9dc1SAsim Jamshed cellspacing="0" cellpadding="0"> 144e5df9dc1SAsim Jamshed<tr valign="top" align="left"> 145e5df9dc1SAsim Jamshed<td width="11%"></td> 146e5df9dc1SAsim Jamshed<td width="23%"> 147e5df9dc1SAsim Jamshed 148e5df9dc1SAsim Jamshed 149e5df9dc1SAsim Jamshed<p style="margin-top: 1em"><b>EACCES</b></p></td> 150e5df9dc1SAsim Jamshed<td width="4%"></td> 151e5df9dc1SAsim Jamshed<td width="62%"> 152e5df9dc1SAsim Jamshed 153e5df9dc1SAsim Jamshed 154e5df9dc1SAsim Jamshed<p style="margin-top: 1em">The <i>mctx</i> argument is 155e5df9dc1SAsim Jamshedinvalid.</p> </td></tr> 156e5df9dc1SAsim Jamshed<tr valign="top" align="left"> 157e5df9dc1SAsim Jamshed<td width="11%"></td> 158e5df9dc1SAsim Jamshed<td width="23%"> 159e5df9dc1SAsim Jamshed 160e5df9dc1SAsim Jamshed 161e5df9dc1SAsim Jamshed<p><b>EBADF</b></p></td> 162e5df9dc1SAsim Jamshed<td width="4%"></td> 163e5df9dc1SAsim Jamshed<td width="62%"> 164e5df9dc1SAsim Jamshed 165e5df9dc1SAsim Jamshed 166e5df9dc1SAsim Jamshed<p>The socket descriptor <i>sockid</i> is invalid.</p></td></tr> 167e5df9dc1SAsim Jamshed<tr valign="top" align="left"> 168e5df9dc1SAsim Jamshed<td width="11%"></td> 169e5df9dc1SAsim Jamshed<td width="23%"> 170e5df9dc1SAsim Jamshed 171e5df9dc1SAsim Jamshed 172e5df9dc1SAsim Jamshed<p><b>EINVAL</b></p></td> 173e5df9dc1SAsim Jamshed<td width="4%"></td> 174e5df9dc1SAsim Jamshed<td width="62%"> 175e5df9dc1SAsim Jamshed 176e5df9dc1SAsim Jamshed 177e5df9dc1SAsim Jamshed<p>The buffer management of the monitoring socket with 178e5df9dc1SAsim Jamshed<i>sockid</i> was already disabled.</p></td></tr> 179e5df9dc1SAsim Jamshed<tr valign="top" align="left"> 180e5df9dc1SAsim Jamshed<td width="11%"></td> 181e5df9dc1SAsim Jamshed<td width="23%"> 182e5df9dc1SAsim Jamshed 183e5df9dc1SAsim Jamshed 184e5df9dc1SAsim Jamshed<p><b>ESOCKTNOSUPPORT</b></p></td> 185e5df9dc1SAsim Jamshed<td width="4%"></td> 186e5df9dc1SAsim Jamshed<td width="62%"> 187e5df9dc1SAsim Jamshed 188e5df9dc1SAsim Jamshed 189e5df9dc1SAsim Jamshed<p>The socket referred to by <i>sockid</i> has invalid 190e5df9dc1SAsim Jamshed<i>type</i></p> </td></tr> 191e5df9dc1SAsim Jamshed<tr valign="top" align="left"> 192e5df9dc1SAsim Jamshed<td width="11%"></td> 193e5df9dc1SAsim Jamshed<td width="23%"> 194e5df9dc1SAsim Jamshed 195e5df9dc1SAsim Jamshed 196e5df9dc1SAsim Jamshed<p><b>ENOTCONN</b></p></td> 197e5df9dc1SAsim Jamshed<td width="4%"></td> 198e5df9dc1SAsim Jamshed<td width="62%"> 199e5df9dc1SAsim Jamshed 200e5df9dc1SAsim Jamshed 201e5df9dc1SAsim Jamshed<p>Th socket referred to by <i>sockid</i> is in a TCP state 202e5df9dc1SAsim Jamshedthat disallows read operations.</p></td></tr> 203e5df9dc1SAsim Jamshed<tr valign="top" align="left"> 204e5df9dc1SAsim Jamshed<td width="11%"></td> 205e5df9dc1SAsim Jamshed<td width="23%"> 206e5df9dc1SAsim Jamshed 207e5df9dc1SAsim Jamshed 208e5df9dc1SAsim Jamshed<p><b>ENODATA</b></p></td> 209e5df9dc1SAsim Jamshed<td width="4%"></td> 210e5df9dc1SAsim Jamshed<td width="62%"> 211e5df9dc1SAsim Jamshed 212e5df9dc1SAsim Jamshed 213e5df9dc1SAsim Jamshed<p>The socket referred to by <i>sockid</i> does not have 214e5df9dc1SAsim Jamshedany available bytes in its buffer for reading.</p></td></tr> 215e5df9dc1SAsim Jamshed<tr valign="top" align="left"> 216e5df9dc1SAsim Jamshed<td width="11%"></td> 217e5df9dc1SAsim Jamshed<td width="23%"> 218e5df9dc1SAsim Jamshed 219e5df9dc1SAsim Jamshed 220e5df9dc1SAsim Jamshed<p><b>EPERM</b></p></td> 221e5df9dc1SAsim Jamshed<td width="4%"></td> 222e5df9dc1SAsim Jamshed<td width="62%"> 223e5df9dc1SAsim Jamshed 224e5df9dc1SAsim Jamshed 225e5df9dc1SAsim Jamshed<p>The caller is not permitted to access this function.</p></td></tr> 226e5df9dc1SAsim Jamshed</table> 227e5df9dc1SAsim Jamshed 228e5df9dc1SAsim Jamshed<h2>AUTHORS 229e5df9dc1SAsim Jamshed<a name="AUTHORS"></a> 230e5df9dc1SAsim Jamshed</h2> 231e5df9dc1SAsim Jamshed 232e5df9dc1SAsim Jamshed 233e5df9dc1SAsim Jamshed<p style="margin-left:11%; margin-top: 1em">mOS development 234e5df9dc1SAsim Jamshedteam <[email protected]></p> 235e5df9dc1SAsim Jamshed 236*626fc701SYoungGyoun 237*626fc701SYoungGyoun<!-----------------------------------------------------------> 238*626fc701SYoungGyoun<h2>EXAMPLES 239*626fc701SYoungGyoun <a name="EXAMPLES"></a> 240*626fc701SYoungGyoun</h2> 241*626fc701SYoungGyoun 242*626fc701SYoungGyoun<p style="margin-left:11%; margin-top: 1em"> 243*626fc701SYoungGyoun <a href="http://mos.kaist.edu/guide/programmer/05_api_example.html#modifying-or-dropping-a-packet"> 244*626fc701SYoungGyoun http://mos.kaist.edu/guide/programmer/05_api_example.html#modifying-or-dropping-a-packet 245*626fc701SYoungGyoun </a> 246*626fc701SYoungGyoun</p> 247*626fc701SYoungGyoun<!-----------------------------------------------------------> 248*626fc701SYoungGyoun 249*626fc701SYoungGyoun 250*626fc701SYoungGyoun 251e5df9dc1SAsim Jamshed<h2>SEE ALSO 252e5df9dc1SAsim Jamshed<a name="SEE ALSO"></a> 253e5df9dc1SAsim Jamshed</h2> 254e5df9dc1SAsim Jamshed 255e5df9dc1SAsim Jamshed 256e5df9dc1SAsim Jamshed 257e5df9dc1SAsim Jamshed<p style="margin-left:11%; margin-top: 1em"><b>mtcp_getlastpkt</b>(),</p> 258e5df9dc1SAsim Jamshed 259e5df9dc1SAsim Jamshed<h2>COLOPHON 260e5df9dc1SAsim Jamshed<a name="COLOPHON"></a> 261e5df9dc1SAsim Jamshed</h2> 262e5df9dc1SAsim Jamshed 263e5df9dc1SAsim Jamshed 264e5df9dc1SAsim Jamshed<p style="margin-left:11%; margin-top: 1em">This page is 265e5df9dc1SAsim Jamshedpart of mOS release 0.3 <i>docs</i> section. A description 266e5df9dc1SAsim Jamshedof the project, and information about reporting bugs, can be 267e5df9dc1SAsim Jamshedfound at http://mos.kaist.edu/.</p> 268e5df9dc1SAsim Jamshed<hr> 269e5df9dc1SAsim Jamshed<div class="footer"> 270e5df9dc1SAsim Jamshed <img src="back-arrow.jpg" width="2%" height="2%"><a href="http://mos.kaist.edu/index_man.html">Back to Index</a> 271e5df9dc1SAsim Jamshed</div> 272e5df9dc1SAsim Jamshed</div> 273e5df9dc1SAsim Jamshed</body> 274e5df9dc1SAsim Jamshed</html> 275