191df013fSAsim Jamshed<!-- Creator     : groff version 1.22.2 -->
291df013fSAsim Jamshed<!-- CreationDate: Fri Feb  3 15:37:41 2017 -->
391df013fSAsim Jamshed<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
491df013fSAsim Jamshed"http://www.w3.org/TR/html4/loose.dtd">
591df013fSAsim Jamshed<html>
691df013fSAsim Jamshed<head>
791df013fSAsim Jamshed<meta name="generator" content="groff -Thtml, see www.gnu.org">
891df013fSAsim Jamshed<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
991df013fSAsim Jamshed<meta name="Content-Style" content="text/css">
1091df013fSAsim Jamshed<style type="text/css">
1191df013fSAsim Jamshed       p       { margin-top: 0; margin-bottom: 0; vertical-align: top }
1291df013fSAsim Jamshed       pre     { margin-top: 0; margin-bottom: 0; vertical-align: top }
1391df013fSAsim Jamshed       table   { margin-top: 0; margin-bottom: 0; vertical-align: top }
1491df013fSAsim Jamshed       h1      { text-align: center }
1591df013fSAsim Jamshed</style>
1691df013fSAsim Jamshed<title>mtcp_ppeek</title>
17e5df9dc1SAsim Jamshed<link rel="stylesheet" href="./common.css">
1891df013fSAsim Jamshed</head>
1991df013fSAsim Jamshed<body>
20e5df9dc1SAsim Jamshed<div class="main">
2191df013fSAsim Jamshed<h1 align="center">mtcp_ppeek</h1>
22e5df9dc1SAsim Jamshed<!--
2391df013fSAsim Jamshed<a href="#NAME">NAME</a><br>
2491df013fSAsim Jamshed<a href="#SYNOPSIS">SYNOPSIS</a><br>
2591df013fSAsim Jamshed<a href="#DESCRIPTION">DESCRIPTION</a><br>
2691df013fSAsim Jamshed<a href="#RETURN VALUE">RETURN VALUE</a><br>
2791df013fSAsim Jamshed<a href="#ERRORS">ERRORS</a><br>
2891df013fSAsim Jamshed<a href="#AUTHORS">AUTHORS</a><br>
2991df013fSAsim Jamshed<a href="#SEE ALSO">SEE ALSO</a><br>
3091df013fSAsim Jamshed<a href="#COLOPHON">COLOPHON</a><br>
3191df013fSAsim Jamshed<hr>
32e5df9dc1SAsim Jamshed-->
3391df013fSAsim Jamshed
3491df013fSAsim Jamshed<h2>NAME
3591df013fSAsim Jamshed<a name="NAME"></a>
3691df013fSAsim Jamshed</h2>
3791df013fSAsim Jamshed
3891df013fSAsim Jamshed
3991df013fSAsim Jamshed<p style="margin-left:11%; margin-top: 1em">mtcp_ppeek
4091df013fSAsim Jamshed&minus; Peek into the bytestream from a monitoring socket
4191df013fSAsim Jamshedfrom a given offset</p>
4291df013fSAsim Jamshed
4391df013fSAsim Jamshed<h2>SYNOPSIS
4491df013fSAsim Jamshed<a name="SYNOPSIS"></a>
4591df013fSAsim Jamshed</h2>
4691df013fSAsim Jamshed
4791df013fSAsim Jamshed
4891df013fSAsim Jamshed<p style="margin-left:11%; margin-top: 1em"><b>#include
4991df013fSAsim Jamshed&lt;mos_api.h&gt;</b></p>
5091df013fSAsim Jamshed
5191df013fSAsim Jamshed<p style="margin-left:11%; margin-top: 1em"><b>ssize_t
5291df013fSAsim Jamshedmtcp_ppeek(mctx_t</b> <i>mctx</i><b>, int</b>
5391df013fSAsim Jamshed<i>sockid</i><b>, int</b> <i>side</i><b>, char
5491df013fSAsim Jamshed*</b><i>buf</i><b>, size_t</b> <i>len</i><b>, uint64_t</b>
5591df013fSAsim Jamshed<i>off</i><b>);</b></p>
5691df013fSAsim Jamshed
5791df013fSAsim Jamshed<h2>DESCRIPTION
5891df013fSAsim Jamshed<a name="DESCRIPTION"></a>
5991df013fSAsim Jamshed</h2>
6091df013fSAsim Jamshed
6191df013fSAsim Jamshed
6291df013fSAsim Jamshed
6391df013fSAsim Jamshed<p style="margin-left:11%; margin-top: 1em"><b>mtcp_ppeek</b>()
6491df013fSAsim Jamshedcan be used to peek up to <i>len</i> number of bytes from a
6591df013fSAsim Jamshedmonitoring socket via socket descriptor <i>sockid</i> into
6691df013fSAsim Jamshedthe buffer starting at <i>buf. from off ;</i> value which is
6791df013fSAsim Jamshedthe offset distance (in bytes) from the TCP initial sequence
6891df013fSAsim Jamshednumber. It is the responsibility of the user to allocate
6991df013fSAsim Jamshedmemory for <i>buf</i> array.</p>
7091df013fSAsim Jamshed
7191df013fSAsim Jamshed<p style="margin-left:11%; margin-top: 1em">For cases when
7291df013fSAsim Jamshedthe total number of buffered unread bytes in the socket are
7391df013fSAsim Jamshedless than <i>len,</i> <b>mtcp_ppeek()</b> copies entire data
7491df013fSAsim Jamshedto <i>buf</i> and returns the actual number of bytes that
7591df013fSAsim Jamshedcan be used by the application.</p>
7691df013fSAsim Jamshed
7791df013fSAsim Jamshed<p style="margin-left:11%; margin-top: 1em">Note that the
7891df013fSAsim Jamshed<i>off</i> can also point to the data in the fragmented
7991df013fSAsim Jamshedbuffer list of the TCP ring buffer (see
8091df013fSAsim Jamshed<b>mtcp_getsockopt()).</b> If there is no received byte at
8191df013fSAsim Jamshed<i>off</i> in the TCP ring buffer, it returns error. If
8291df013fSAsim Jamshedthere are received bytes starting from <i>off ,</i> len is
8391df013fSAsim Jamshedset to be the number of bytes read from the buffer. After
8491df013fSAsim Jamshed<b>mtcp_ppeek(),</b> the data in the TCP ring buffer will
8591df013fSAsim Jamshednot be flushed, and the monitor offset used by
8691df013fSAsim Jamshed<b>mtcp_peek()</b> is not changed.</p>
8791df013fSAsim Jamshed
8891df013fSAsim Jamshed<p style="margin-left:11%; margin-top: 1em">An
8991df013fSAsim Jamshed<b>mtcp_ppeek</b>() call takes two additional argument named
9091df013fSAsim Jamshed<i>mctx ,</i> that represents the per-core mTCP context in
9191df013fSAsim Jamshedan application (see <b>mtcp_create_context()</b> for
9291df013fSAsim Jamsheddetails); and <i>side</i> that informs the stack whether it
9391df013fSAsim Jamshedneeds to peek the client (MOS_SIDE_CLI) or server
9491df013fSAsim Jamshed(MOS_SIDE_SVR) side.</p>
9591df013fSAsim Jamshed
9691df013fSAsim Jamshed<h2>RETURN VALUE
9791df013fSAsim Jamshed<a name="RETURN VALUE"></a>
9891df013fSAsim Jamshed</h2>
9991df013fSAsim Jamshed
10091df013fSAsim Jamshed
10191df013fSAsim Jamshed<p style="margin-left:11%; margin-top: 1em">On success, the
10291df013fSAsim Jamshednumber of bytes read is returned. It is not an error if this
10391df013fSAsim Jamshednumber is smaller than the number of bytes requested; this
10491df013fSAsim Jamshedmay happen when the socket has fewer number of bytes
10591df013fSAsim Jamshedbuffered at that moment. On all errors, -1 is returned and
10691df013fSAsim Jamshed<i>errno</i> is set appropriately.</p>
10791df013fSAsim Jamshed
10891df013fSAsim Jamshed<h2>ERRORS
10991df013fSAsim Jamshed<a name="ERRORS"></a>
11091df013fSAsim Jamshed</h2>
11191df013fSAsim Jamshed
11291df013fSAsim Jamshed
11391df013fSAsim Jamshed<table width="100%" border="0" rules="none" frame="void"
11491df013fSAsim Jamshed       cellspacing="0" cellpadding="0">
11591df013fSAsim Jamshed<tr valign="top" align="left">
11691df013fSAsim Jamshed<td width="11%"></td>
11791df013fSAsim Jamshed<td width="23%">
11891df013fSAsim Jamshed
11991df013fSAsim Jamshed
12091df013fSAsim Jamshed<p style="margin-top: 1em"><b>EACCES</b></p></td>
12191df013fSAsim Jamshed<td width="4%"></td>
12291df013fSAsim Jamshed<td width="62%">
12391df013fSAsim Jamshed
12491df013fSAsim Jamshed
12591df013fSAsim Jamshed<p style="margin-top: 1em">The <i>mctx</i> argument is
12691df013fSAsim Jamshedinvalid.</p> </td></tr>
12791df013fSAsim Jamshed<tr valign="top" align="left">
12891df013fSAsim Jamshed<td width="11%"></td>
12991df013fSAsim Jamshed<td width="23%">
13091df013fSAsim Jamshed
13191df013fSAsim Jamshed
13291df013fSAsim Jamshed<p><b>EBADF</b></p></td>
13391df013fSAsim Jamshed<td width="4%"></td>
13491df013fSAsim Jamshed<td width="62%">
13591df013fSAsim Jamshed
13691df013fSAsim Jamshed
13791df013fSAsim Jamshed<p>The socket descriptor <i>sockid</i> is invalid.</p></td></tr>
13891df013fSAsim Jamshed<tr valign="top" align="left">
13991df013fSAsim Jamshed<td width="11%"></td>
14091df013fSAsim Jamshed<td width="23%">
14191df013fSAsim Jamshed
14291df013fSAsim Jamshed
14391df013fSAsim Jamshed<p><b>EINVAL</b></p></td>
14491df013fSAsim Jamshed<td width="4%"></td>
14591df013fSAsim Jamshed<td width="62%">
14691df013fSAsim Jamshed
14791df013fSAsim Jamshed
14891df013fSAsim Jamshed<p>The buffer management of the monitoring socket with
14991df013fSAsim Jamshed<i>sockid</i> was already disabled.</p></td></tr>
15091df013fSAsim Jamshed<tr valign="top" align="left">
15191df013fSAsim Jamshed<td width="11%"></td>
15291df013fSAsim Jamshed<td width="23%">
15391df013fSAsim Jamshed
15491df013fSAsim Jamshed
15591df013fSAsim Jamshed<p><b>ESOCKTNOSUPPORT</b></p></td>
15691df013fSAsim Jamshed<td width="4%"></td>
15791df013fSAsim Jamshed<td width="62%">
15891df013fSAsim Jamshed
15991df013fSAsim Jamshed
16091df013fSAsim Jamshed<p>The socket referred to by <i>sockid</i> has invalid
16191df013fSAsim Jamshed<i>type</i></p> </td></tr>
16291df013fSAsim Jamshed<tr valign="top" align="left">
16391df013fSAsim Jamshed<td width="11%"></td>
16491df013fSAsim Jamshed<td width="23%">
16591df013fSAsim Jamshed
16691df013fSAsim Jamshed
16791df013fSAsim Jamshed<p><b>ENOTCONN</b></p></td>
16891df013fSAsim Jamshed<td width="4%"></td>
16991df013fSAsim Jamshed<td width="62%">
17091df013fSAsim Jamshed
17191df013fSAsim Jamshed
17291df013fSAsim Jamshed<p>Th socket referred to by <i>sockid</i> is in a TCP state
17391df013fSAsim Jamshedthat disallows read operations.</p></td></tr>
17491df013fSAsim Jamshed<tr valign="top" align="left">
17591df013fSAsim Jamshed<td width="11%"></td>
17691df013fSAsim Jamshed<td width="23%">
17791df013fSAsim Jamshed
17891df013fSAsim Jamshed
17991df013fSAsim Jamshed<p><b>ENODATA</b></p></td>
18091df013fSAsim Jamshed<td width="4%"></td>
18191df013fSAsim Jamshed<td width="62%">
18291df013fSAsim Jamshed
18391df013fSAsim Jamshed
18491df013fSAsim Jamshed<p>The socket referred to by <i>sockid</i> does not have
18591df013fSAsim Jamshedany available bytes in its buffer for reading.</p></td></tr>
18691df013fSAsim Jamshed<tr valign="top" align="left">
18791df013fSAsim Jamshed<td width="11%"></td>
18891df013fSAsim Jamshed<td width="23%">
18991df013fSAsim Jamshed
19091df013fSAsim Jamshed
19191df013fSAsim Jamshed<p><b>EPERM</b></p></td>
19291df013fSAsim Jamshed<td width="4%"></td>
19391df013fSAsim Jamshed<td width="62%">
19491df013fSAsim Jamshed
19591df013fSAsim Jamshed
19691df013fSAsim Jamshed<p>The caller is not permitted to access this function.</p></td></tr>
19791df013fSAsim Jamshed</table>
19891df013fSAsim Jamshed
19991df013fSAsim Jamshed<h2>AUTHORS
20091df013fSAsim Jamshed<a name="AUTHORS"></a>
20191df013fSAsim Jamshed</h2>
20291df013fSAsim Jamshed
20391df013fSAsim Jamshed
20491df013fSAsim Jamshed<p style="margin-left:11%; margin-top: 1em">mOS development
20591df013fSAsim Jamshedteam &lt;[email protected]&gt;</p>
20691df013fSAsim Jamshed
207*626fc701SYoungGyoun
208*626fc701SYoungGyoun<!----------------------------------------------------------->
209*626fc701SYoungGyoun<h2>EXAMPLES
210*626fc701SYoungGyoun  <a name="EXAMPLES"></a>
211*626fc701SYoungGyoun</h2>
212*626fc701SYoungGyoun
213*626fc701SYoungGyoun<p style="margin-left:11%; margin-top: 1em">
214*626fc701SYoungGyoun  <a href="http://mos.kaist.edu/guide/programmer/05_api_example.html#monitoring-reassembled-tcp-payload">
215*626fc701SYoungGyoun	http://mos.kaist.edu/guide/programmer/05_api_example.html#monitoring-reassembled-tcp-payload
216*626fc701SYoungGyoun  </a>
217*626fc701SYoungGyoun</p>
218*626fc701SYoungGyoun<!----------------------------------------------------------->
219*626fc701SYoungGyoun
220*626fc701SYoungGyoun
22191df013fSAsim Jamshed<h2>SEE ALSO
22291df013fSAsim Jamshed<a name="SEE ALSO"></a>
22391df013fSAsim Jamshed</h2>
22491df013fSAsim Jamshed
22591df013fSAsim Jamshed
22691df013fSAsim Jamshed
22791df013fSAsim Jamshed<p style="margin-left:11%; margin-top: 1em"><b>mtcp_peek</b>(),
22891df013fSAsim Jamshed<b>mtcp_socket</b>(),</p>
22991df013fSAsim Jamshed
23091df013fSAsim Jamshed<h2>COLOPHON
23191df013fSAsim Jamshed<a name="COLOPHON"></a>
23291df013fSAsim Jamshed</h2>
23391df013fSAsim Jamshed
23491df013fSAsim Jamshed
23591df013fSAsim Jamshed<p style="margin-left:11%; margin-top: 1em">This page is
23691df013fSAsim Jamshedpart of mOS release 0.3 <i>docs</i> section. A description
23791df013fSAsim Jamshedof the project, and information about reporting bugs, can be
23891df013fSAsim Jamshedfound at http://mos.kaist.edu/.</p>
239e5df9dc1SAsim Jamshed<!-- <hr>-->
240e5df9dc1SAsim Jamshed<br>
241e5df9dc1SAsim Jamshed<div class="footer">
242e5df9dc1SAsim Jamshed  <img src="back-arrow.jpg" width="2%" height="2%"><a href="http://mos.kaist.edu/index_man.html">Back to Index</a>
243e5df9dc1SAsim Jamshed</div>
244e5df9dc1SAsim Jamshed</div>
24591df013fSAsim Jamshed</body>
24691df013fSAsim Jamshed</html>
247