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&minus; 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&lt;mos_api.h&gt;</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 &lt;[email protected]&gt;</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