1*e5df9dc1SAsim Jamshed<!-- Creator     : groff version 1.22.3 -->
2*e5df9dc1SAsim Jamshed<!-- CreationDate: Mon Aug 28 02:48:48 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_getpeername</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_getpeername</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="#NOTES">NOTES</a><br>
29*e5df9dc1SAsim Jamshed<a href="#AUTHORS">AUTHORS</a><br>
30*e5df9dc1SAsim Jamshed<a href="#SEE ALSO">SEE ALSO</a><br>
31*e5df9dc1SAsim Jamshed<a href="#COLOPHON">COLOPHON</a><br>
32*e5df9dc1SAsim Jamshed
33*e5df9dc1SAsim Jamshed<hr>
34*e5df9dc1SAsim Jamshed-->
35*e5df9dc1SAsim Jamshed
36*e5df9dc1SAsim Jamshed
37*e5df9dc1SAsim Jamshed<h2>NAME
38*e5df9dc1SAsim Jamshed<a name="NAME"></a>
39*e5df9dc1SAsim Jamshed</h2>
40*e5df9dc1SAsim Jamshed
41*e5df9dc1SAsim Jamshed
42*e5df9dc1SAsim Jamshed
43*e5df9dc1SAsim Jamshed<p style="margin-left:11%; margin-top: 1em">mtcp_getpeername
44*e5df9dc1SAsim Jamshed&minus; get name of end hosts being monitored by mOS</p>
45*e5df9dc1SAsim Jamshed
46*e5df9dc1SAsim Jamshed<h2>SYNOPSIS
47*e5df9dc1SAsim Jamshed<a name="SYNOPSIS"></a>
48*e5df9dc1SAsim Jamshed</h2>
49*e5df9dc1SAsim Jamshed
50*e5df9dc1SAsim Jamshed
51*e5df9dc1SAsim Jamshed<p style="margin-left:11%; margin-top: 1em"><b>#include
52*e5df9dc1SAsim Jamshed&lt;mos_api.h&gt;</b></p>
53*e5df9dc1SAsim Jamshed
54*e5df9dc1SAsim Jamshed<p style="margin-left:11%; margin-top: 1em"><b>int
55*e5df9dc1SAsim Jamshedmtcp_getpeername(mctx_t</b> <i>mctx</i><b>, int</b>
56*e5df9dc1SAsim Jamshed<i>sockfd</i><b>, struct sockaddr *</b><i>addr</i><b>,
57*e5df9dc1SAsim Jamshedsocklen_t *</b><i>addrlen,</i><b>int</b> <i>side</i>
58*e5df9dc1SAsim Jamshed<b>);</b></p>
59*e5df9dc1SAsim Jamshed
60*e5df9dc1SAsim Jamshed<h2>DESCRIPTION
61*e5df9dc1SAsim Jamshed<a name="DESCRIPTION"></a>
62*e5df9dc1SAsim Jamshed</h2>
63*e5df9dc1SAsim Jamshed
64*e5df9dc1SAsim Jamshed
65*e5df9dc1SAsim Jamshed
66*e5df9dc1SAsim Jamshed<p style="margin-left:11%; margin-top: 1em"><b>mtcp_getpeername</b>()
67*e5df9dc1SAsim Jamshedreturns the address of the end hosts that is being monitored by the
68*e5df9dc1SAsim Jamshedsocket <i>sockfd</i> , in the buffer pointed to by
69*e5df9dc1SAsim Jamshed<i>addr.</i> The <i>addrlen</i> argument should be
70*e5df9dc1SAsim Jamshedinitialized to indicate the amount of space (in bytes)
71*e5df9dc1SAsim Jamshedpointed to by <i>addr.</i> On return it contains the actual
72*e5df9dc1SAsim Jamshedsize of the socket address.</p>
73*e5df9dc1SAsim Jamshed
74*e5df9dc1SAsim Jamshed<p style="margin-left:11%; margin-top: 1em"><i>side</i>
75*e5df9dc1SAsim Jamshedvariable should be properly set (either MOS_SIDE_CLI or
76*e5df9dc1SAsim JamshedMOS_SIDE_SVR) to specify on which side this function is
77*e5df9dc1SAsim Jamshed  interested in.</p>
78*e5df9dc1SAsim Jamshed
79*e5df9dc1SAsim Jamshed<p style="margin-left:11%; margin-top: 1em">If <i>addrlen</i>
80*e5df9dc1SAsim Jamshedargument is set to be <i>2 * sizeof(struct sockaddr)</i>,
81*e5df9dc1SAsim Jamshedit will fill up the socket address of the other side as well.
82*e5df9dc1SAsim Jamshed</p>
83*e5df9dc1SAsim Jamshed
84*e5df9dc1SAsim Jamshed<p style="margin-left:11%; margin-top: 1em">An
85*e5df9dc1SAsim Jamshed<b>mtcp_getpeername</b>() call takes an additional argument
86*e5df9dc1SAsim Jamshednamed <i>mctx</i> that represents the per-core mTCP context
87*e5df9dc1SAsim Jamshedin an application (see <b>mtcp_create_context()</b> for
88*e5df9dc1SAsim Jamsheddetails).</p>
89*e5df9dc1SAsim Jamshed
90*e5df9dc1SAsim Jamshed<h2>RETURN VALUE
91*e5df9dc1SAsim Jamshed<a name="RETURN VALUE"></a>
92*e5df9dc1SAsim Jamshed</h2>
93*e5df9dc1SAsim Jamshed
94*e5df9dc1SAsim Jamshed
95*e5df9dc1SAsim Jamshed<p style="margin-left:11%; margin-top: 1em">Returns zero on
96*e5df9dc1SAsim Jamshedsuccess; -1 on failure. In case of failure, <i>errno</i> is
97*e5df9dc1SAsim Jamshedset appropriately.</p>
98*e5df9dc1SAsim Jamshed
99*e5df9dc1SAsim Jamshed<h2>ERRORS
100*e5df9dc1SAsim Jamshed<a name="ERRORS"></a>
101*e5df9dc1SAsim Jamshed</h2>
102*e5df9dc1SAsim Jamshed
103*e5df9dc1SAsim Jamshed
104*e5df9dc1SAsim Jamshed<table width="100%" border="0" rules="none" frame="void"
105*e5df9dc1SAsim Jamshed       cellspacing="0" cellpadding="0">
106*e5df9dc1SAsim Jamshed<tr valign="top" align="left">
107*e5df9dc1SAsim Jamshed<td width="11%"></td>
108*e5df9dc1SAsim Jamshed<td width="12%">
109*e5df9dc1SAsim Jamshed
110*e5df9dc1SAsim Jamshed
111*e5df9dc1SAsim Jamshed<p style="margin-top: 1em"><b>EBADF</b></p></td>
112*e5df9dc1SAsim Jamshed<td width="3%"></td>
113*e5df9dc1SAsim Jamshed<td width="74%">
114*e5df9dc1SAsim Jamshed
115*e5df9dc1SAsim Jamshed
116*e5df9dc1SAsim Jamshed<p style="margin-top: 1em">The argument <i>sockfd</i> is
117*e5df9dc1SAsim Jamshednot a valid socket descriptor.</p></td></tr>
118*e5df9dc1SAsim Jamshed<tr valign="top" align="left">
119*e5df9dc1SAsim Jamshed<td width="11%"></td>
120*e5df9dc1SAsim Jamshed<td width="12%">
121*e5df9dc1SAsim Jamshed
122*e5df9dc1SAsim Jamshed
123*e5df9dc1SAsim Jamshed<p><b>EINVAL</b></p></td>
124*e5df9dc1SAsim Jamshed<td width="3%"></td>
125*e5df9dc1SAsim Jamshed<td width="74%">
126*e5df9dc1SAsim Jamshed
127*e5df9dc1SAsim Jamshed
128*e5df9dc1SAsim Jamshed<p><i>addrlen</i> argument is invalid (e.g., is
129*e5df9dc1SAsim Jamshednegative).</p> </td></tr>
130*e5df9dc1SAsim Jamshed<tr valign="top" align="left">
131*e5df9dc1SAsim Jamshed<td width="11%"></td>
132*e5df9dc1SAsim Jamshed<td width="12%">
133*e5df9dc1SAsim Jamshed
134*e5df9dc1SAsim Jamshed
135*e5df9dc1SAsim Jamshed<p><b>ENOTCONN</b></p></td>
136*e5df9dc1SAsim Jamshed<td width="3%"></td>
137*e5df9dc1SAsim Jamshed<td width="74%">
138*e5df9dc1SAsim Jamshed
139*e5df9dc1SAsim Jamshed
140*e5df9dc1SAsim Jamshed<p>The argument <i>sockfd</i> is pointing to a mOS socket
141*e5df9dc1SAsim Jamshedwhich has no corresponding stream that is being
142*e5df9dc1SAsim Jamshedmonitored.</p> </td></tr>
143*e5df9dc1SAsim Jamshed</table>
144*e5df9dc1SAsim Jamshed
145*e5df9dc1SAsim Jamshed<h2>NOTES
146*e5df9dc1SAsim Jamshed<a name="NOTES"></a>
147*e5df9dc1SAsim Jamshed</h2>
148*e5df9dc1SAsim Jamshed
149*e5df9dc1SAsim Jamshed
150*e5df9dc1SAsim Jamshed<p style="margin-left:11%; margin-top: 1em">The third
151*e5df9dc1SAsim Jamshedargument of <b>mtcp_getpeername()</b> is in reality an
152*e5df9dc1SAsim Jamshed<i>int *</i> (and this is what 4.x BSD and libc4 and libc5
153*e5df9dc1SAsim Jamshedhave). Some POSIX confusion resulted in the present
154*e5df9dc1SAsim Jamshed<i>socklen_t ,</i> also used by glibc.</p>
155*e5df9dc1SAsim Jamshed
156*e5df9dc1SAsim Jamshed<h2>AUTHORS
157*e5df9dc1SAsim Jamshed<a name="AUTHORS"></a>
158*e5df9dc1SAsim Jamshed</h2>
159*e5df9dc1SAsim Jamshed
160*e5df9dc1SAsim Jamshed
161*e5df9dc1SAsim Jamshed<p style="margin-left:11%; margin-top: 1em">mOS development
162*e5df9dc1SAsim Jamshedteam &lt;[email protected]&gt;</p>
163*e5df9dc1SAsim Jamshed
164*e5df9dc1SAsim Jamshed<h2>SEE ALSO
165*e5df9dc1SAsim Jamshed<a name="SEE ALSO"></a>
166*e5df9dc1SAsim Jamshed</h2>
167*e5df9dc1SAsim Jamshed
168*e5df9dc1SAsim Jamshed
169*e5df9dc1SAsim Jamshed
170*e5df9dc1SAsim Jamshed<p style="margin-left:11%; margin-top: 1em"><b>mtcp_bind</b>(),
171*e5df9dc1SAsim Jamshed<b>mtcp_socket</b>()</p>
172*e5df9dc1SAsim Jamshed
173*e5df9dc1SAsim Jamshed<h2>COLOPHON
174*e5df9dc1SAsim Jamshed<a name="COLOPHON"></a>
175*e5df9dc1SAsim Jamshed</h2>
176*e5df9dc1SAsim Jamshed
177*e5df9dc1SAsim Jamshed
178*e5df9dc1SAsim Jamshed<p style="margin-left:11%; margin-top: 1em">This page is
179*e5df9dc1SAsim Jamshedpart of mOS release 0.3 <i>docs</i> section. A description
180*e5df9dc1SAsim Jamshedof the project, and information about reporting bugs, can be
181*e5df9dc1SAsim Jamshedfound at http://mos.kaist.edu/.</p>
182*e5df9dc1SAsim Jamshed<hr>
183*e5df9dc1SAsim Jamshed<div class="footer">
184*e5df9dc1SAsim Jamshed  <img src="back-arrow.jpg" width="2%" height="2%"><a href="http://mos.kaist.edu/index_man.html">Back to Index</a>
185*e5df9dc1SAsim Jamshed</div>
186*e5df9dc1SAsim Jamshed</div>
187*e5df9dc1SAsim Jamshed</body>
188*e5df9dc1SAsim Jamshed</html>
189