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− 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<mos_api.h></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 <[email protected]></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