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