ibm-information-center/dist/eclipse/plugins/i5OS.ic.rzab6_5.4.0.1/cbsd.htm

219 lines
13 KiB
HTML

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="en-us" xml:lang="en-us">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="security" content="public" />
<meta name="Robots" content="index,follow" />
<meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
<meta name="DC.Type" content="reference" />
<meta name="DC.Title" content="Berkeley Software Distribution compatibility" />
<meta name="abstract" content="Sockets is a Berkeley Software Distribution (BSD) interface." />
<meta name="description" content="Sockets is a Berkeley Software Distribution (BSD) interface." />
<meta name="DC.Relation" scheme="URI" content="aconcepts.htm" />
<meta name="DC.Relation" scheme="URI" content="howdosockets.htm" />
<meta name="DC.Relation" scheme="URI" content="../apis/accept.htm" />
<meta name="DC.Relation" scheme="URI" content="../apis/sendms.htm" />
<meta name="DC.Relation" scheme="URI" content="../apis/connec.htm" />
<meta name="DC.Relation" scheme="URI" content="../apis/recvfr.htm" />
<meta name="DC.Relation" scheme="URI" content="../apis/recvms.htm" />
<meta name="DC.Relation" scheme="URI" content="../apis/bind.htm" />
<meta name="DC.Relation" scheme="URI" content="../apis/gsockn.htm" />
<meta name="DC.Relation" scheme="URI" content="../apis/socket.htm" />
<meta name="DC.Relation" scheme="URI" content="../apis/listen.htm" />
<meta name="DC.Relation" scheme="URI" content="../apis/ioctl.htm" />
<meta name="DC.Relation" scheme="URI" content="../apis/gpeern.htm" />
<meta name="DC.Relation" scheme="URI" content="../apis/close.htm" />
<meta name="copyright" content="(C) Copyright IBM Corporation 2001, 2006" />
<meta name="DC.Rights.Owner" content="(C) Copyright IBM Corporation 2001, 2006" />
<meta name="DC.Format" content="XHTML" />
<meta name="DC.Identifier" content="cbsd" />
<meta name="DC.Language" content="en-us" />
<!-- All rights reserved. Licensed Materials Property of IBM -->
<!-- US Government Users Restricted Rights -->
<!-- Use, duplication or disclosure restricted by -->
<!-- GSA ADP Schedule Contract with IBM Corp. -->
<link rel="stylesheet" type="text/css" href="./ibmdita.css" />
<link rel="stylesheet" type="text/css" href="./ic.css" />
<title> Berkeley Software Distribution compatibility</title>
</head>
<body id="cbsd"><a name="cbsd"><!-- --></a>
<!-- Java sync-link --><script language="Javascript" src="../rzahg/synch.js" type="text/javascript"></script>
<h1 class="topictitle1"> Berkeley Software Distribution compatibility</h1>
<div><p>Sockets is a Berkeley Software Distribution (BSD) interface.</p>
<div class="section"><p>The semantics, such as the return codes that an application receives
and the arguments available on supported functions, are BSD semantics. Some
BSD semantics, however, are not available in the i5/OS™ implementation, and changes may need
to be made to a typical BSD socket application in order for it to run on the
system.</p>
</div>
<div class="section"><p>The following list summarizes the differences between the i5/OS implementation
and the BSD implementation.</p>
<div class="tablenoborder"><table cellpadding="4" cellspacing="0" summary="" frame="border" border="1" rules="all"><thead align="left"><tr><th valign="top" id="d0e36">QUSRSYS file</th>
<th valign="top" id="d0e38">Contents</th>
</tr>
</thead>
<tbody><tr><td valign="top" headers="d0e36 ">QATOCHOST</td>
<td valign="top" headers="d0e38 ">List of host names and the corresponding IP addresses.</td>
</tr>
<tr><td valign="top" headers="d0e36 ">QATOCPN</td>
<td valign="top" headers="d0e38 ">List of networks and the corresponding IP addresses.</td>
</tr>
<tr><td valign="top" headers="d0e36 ">QATOCPP</td>
<td valign="top" headers="d0e38 ">List of protocols that are used in the Internet.</td>
</tr>
<tr><td valign="top" headers="d0e36 ">QATOCPS</td>
<td valign="top" headers="d0e38 ">List of services and the specific port and protocol
that the service uses.</td>
</tr>
</tbody>
</table>
</div>
<dl><dt class="dlterm">/etc/hosts, /etc/services, /etc/networks, and /etc/protocols</dt>
<dd>For these files, the i5/OS implementation supplies the following
database files. </dd>
<dt class="dlterm">/etc/resolv.conf </dt>
<dd>The i5/OS implementation
requires that this information be configured using the TCP/IP properties page
in iSeries™ Navigator.
To access the TCP/IP properties page, complete the following steps: <ol><li>In iSeries Navigator,
expand your <span class="menucascade"><span class="uicontrol">iSeries server</span> &gt; <span class="uicontrol">Network</span> &gt; <span class="uicontrol">TCP/IP Configuration</span></span>. </li>
<li>Right-click <span class="uicontrol">TCP/IP Configuration</span>.</li>
<li>Click <span class="uicontrol">Properties</span>. </li>
</ol>
</dd>
<dt class="dlterm"><span class="apiname">bind()</span></dt>
<dd><p>On a BSD system, a client can create an AF_UNIX socket using <span class="apiname">socket()</span>,
connect to a server using <span class="apiname">connect()</span>, and then bind a name
to its socket using <span class="apiname">bind()</span>. The i5/OS implementation does not support this
scenario (the <span class="apiname">bind()</span> fails).</p>
</dd>
<dt class="dlterm"><span class="apiname">close()</span></dt>
<dd> <p>The i5/OS implementation supports the linger timer for
the <span class="apiname">close()</span> function, except for AF_INET sockets over Systems
Network Architecture (SNA). Some BSD implementations do not support the linger
timer for <span class="apiname">close()</span>.</p>
</dd>
<dt class="dlterm"><span class="apiname">connect()</span></dt>
<dd><p>On a BSD system, if a <span class="apiname">connect()</span> is issued against
a socket that was previously connected to an address and is using a connectionless
transport service, and an invalid address or an invalid address length is
used, the socket is no longer connected. The i5/OS implementation does not support this
scenario (the <span class="apiname">connect()</span> fails and the socket is still connected). </p>
<p>A
connectionless transport socket for which a <span class="apiname">connect()</span> has
been issued can be disconnected by setting the address_length parameter to
zero and issuing another <span class="apiname">connect()</span>.</p>
</dd>
<dt class="dlterm"><span class="apiname">accept()</span>, <span class="apiname">getsockname()</span>, <span class="apiname">getpeername()</span>, <span class="apiname">recvfrom()</span>,
and <span class="apiname">recvmsg() </span></dt>
<dd><p>When using AF_UNIX or AF_UNIX_CCSID address family and the socket has
not been bound, the default i5/OS implementation may return an address length of
zero and an unspecified address structure. The i5/OS BSD 4.4/ UNIX<sup>®</sup> 98 and other implementations may return
a small address structure with just the address family specified.</p>
</dd>
<dt class="dlterm"><span class="apiname">ioctl()</span></dt>
<dd><div class="p"><ul><li>On a BSD system, on a socket of type SOCK_DGRAM, the FIONREAD request
returns the length of the data plus the length of the address. On the i5/OS implementation,
FIONREAD only returns the length of data.</li>
<li>Not all requests available on most BSD implementations of <span class="apiname">ioctl()</span> are
available on the i5/OS implementation
of <span class="apiname">ioctl()</span>.</li>
</ul>
</div>
</dd>
<dt class="dlterm"><span class="apiname">listen()</span></dt>
<dd><p>On a BSD system, issuing a <span class="apiname">listen()</span> with the backlog
parameter set to a value that is less than zero does not result in an error.
In addition, the BSD implementation, in some cases, does not use the backlog
parameter, or uses an algorithm to come up with a final result for the backlog
value. The i5/OS implementation
returns an error if the backlog value is less than zero. If you set the backlog
to a valid value, then the value is used as the backlog. However, setting
the backlog to a value larger than {SOMAXCONN}, the backlog defaults to the
value set in {SOMAXCONN}.</p>
</dd>
<dt class="dlterm">Out-of-band (OOB) data </dt>
<dd><p>In the i5/OS implementation,
OOB data is not discarded if SO_OOBINLINE is not set, OOB data has been received,
and the user then sets SO_OOBINLINE on. The initial OOB byte is considered
normal data.</p>
</dd>
<dt class="dlterm">protocol parameter of <span class="apiname">socket()</span></dt>
<dd><p>As a means of providing additional security, no user is allowed to
create a SOCK_RAW socket specifying a protocol of IPPROTO_TCP or IPPROTO_UDP.</p>
</dd>
<dt class="dlterm"><span class="apiname">res_xlate()</span> and <span class="apiname">res_close()</span></dt>
<dd><p>These functions are included in the resolver routines for the i5/OS implementation.<span class="apiname"> res_xlate()</span> translates
Domain Name System (DNS) packets from EBCDIC to ASCII and from ASCII to EBCDIC. <span class="apiname">res_close()</span> is
used to close a socket that was used by <span class="apiname">res_send()</span> with
the RES_STAYOPEN option set. It also resets the _res structure.</p>
</dd>
<dt class="dlterm"><span class="apiname">sendmsg()</span> and <span class="apiname">recvmsg()</span></dt>
<dd> <p>The i5/OS implementation
of <span class="apiname">sendmsg()</span> and <span class="apiname">recvmsg()</span> allows {MSG_MAXIOVLEN}
I/O vectors. The BSD implementation allows {MSG_MAXIOVLEN - 1} I/O vectors.</p>
</dd>
<dt class="dlterm">Signals </dt>
<dd><div class="p">There are several differences relating to signal support: <ul><li>BSD implementations issue a SIGIO signal each time an acknowledgement
is received for data sent on an output operation. The i5/OS sockets implementation does not generate
signals related to outbound data.</li>
<li>The default action for the SIGPIPE signal is to end the
process in BSD implementations. To maintain downward compatibility with previous
releases of i5/OS,
the i5/OS implementation
uses a default action of ignoring for the SIGPIPE signal.</li>
</ul>
</div>
</dd>
<dt class="dlterm">SO_REUSEADDR option </dt>
<dd> <p>On BAsynchronous I/OSD systems, a <span class="apiname">connect()</span> on
a socket of family AF_INET and type SOCK_DGRAM causes the system to change
the address to which the socket is bound to the address of the interface that
is used to reach the address specified on the <span class="apiname">connect()</span>.
For example, if you bind a socket of type SOCK_DGRAM to address INADDR_ANY,
and then connect it to an address of a.b.c.d, the system changes your socket
so it is now bound to the IP address of the interface that was chosen to route
packets to address a.b.c.d. In addition, if this IP address that the socket
is bound to is a.b.c.e, for example, address a.b.c.e now appears on <span class="apiname">getsockname()</span> instead
of INADDR_ANY, and the SO_REUSEADDR option must be used to bind any other
sockets to the same port number with an address of a.b.c.e.</p>
<p>In contrast,
in this example, the i5/OS implementation does not change the local address
from INADDR_ANY to a.b.c.e. <span class="apiname"> getsockname()</span> continues to
return INADDR_ANY after the connection is performed.</p>
</dd>
<dt class="dlterm">SO_SNDBUF and SO_RCVBUF options </dt>
<dd><p>The values set for SO_SNDBUF and SO_RCVBUF on a BSD system provide
a greater level of control than on an i5/OS implementation. On an i5/OS implementation,
these values are taken as advisory values.</p>
</dd>
</dl>
</div>
</div>
<div>
<div class="familylinks">
<div class="parentlink"><strong>Parent topic:</strong> <a href="aconcepts.htm" title="Advanced socket concepts go beyond a general discussion of what sockets are and how they work. They provide ways to design socket applications for larger and more complex networks.">Advanced socket concepts</a></div>
</div>
<div class="relconcepts"><strong>Related concepts</strong><br />
<div><a href="howdosockets.htm" title="Sockets are commonly used for client/server interaction. Typical system configuration places the server on one machine, with the clients on other machines. The clients connect to the server, exchange information, and then disconnect.">How sockets work</a></div>
</div>
<div class="relinfo"><strong>Related information</strong><br />
<div><a href="../apis/accept.htm">accept()</a></div>
<div><a href="../apis/sendms.htm">sendmsg()</a></div>
<div><a href="../apis/connec.htm">connect()</a></div>
<div><a href="../apis/recvfr.htm">recvfrom()</a></div>
<div><a href="../apis/recvms.htm">recvmsg()</a></div>
<div><a href="../apis/bind.htm">bind()</a></div>
<div><a href="../apis/gsockn.htm">getsockname()</a></div>
<div><a href="../apis/socket.htm">socket()</a></div>
<div><a href="../apis/listen.htm">listen()</a></div>
<div><a href="../apis/ioctl.htm">ioctl()</a></div>
<div><a href="../apis/gpeern.htm">getpeername()</a></div>
<div><a href="../apis/close.htm">close()</a></div>
</div>
</div>
</body>
</html>