Release 7.1.1 new features

Networking

NetWare Services
The /usr/X/bin/Remote_Apps and /usr/X/bin/Launch_Application utilities have been removed in this release.

In-kernel sockets (IKS)
This release includes in-kernel sockets in which the socket routines used with the Internet (AF_INET and AF_INET6) and UNIX domain (AF_UNIX) families have been implemented as individual system calls. Previous releases of UnixWare implemented sockets as library calls, each of which might need to invoke many system calls to perform its function. The new in-kernel sockets implementation greatly enhances the performance of networking commands and services that use sockets by reducing the system overhead due to context switching. Other benefits include:

Backward compatibility with previous releases is controlled globally by the value of the ss_uw7_compat parameter to inconfig(1Mtcp). The behavior of sockets in a specific application may be controlled by the SI_U7COMPAT ioctl command which is described on the sock(7sock) manual page.

The truss(1) command may now be used to show the invocation of socket system calls explicitly. As all socket system calls are versioned, you must specify them using the -v option (for example, -v xconnect) if you are interested in watching a particular call. A new -n option allows IP addresses and port numbers to be displayed without resolving them to domain names or service names.

The stream -f command within crash(1M) will now display whether an entry in the STREAMS table is a socket.

The kdb(1M) command supports the dumping of socket address, domain, and protocol structures used by the new in-kernel socket subsystem.

In-kernel sockets are started by initsock(1Mtcp) which is invoked by init at system startup. initsock initializes and updates the in-kernel socket system's map of which device represents a given socket family, type and protocol based on information read from the file /etc/netconfig (see netconfig(4bnu)).

The in-kernel sockets implementation in this release is closer in behavior to BSD4.3 sockets than was the sockets implementation in previous releases of UnixWare. The table below updates the table given in ``Moving sockets applications to UnixWare''.

Connection-mode primitives

BSD 4.3 UnixWare 7
If connect is called on an unbound socket, the protocol determines whether or not the endpoint will be bound before the connection takes place When connect is called on an unbound socket, that socket is always bound to an address selected by the transport provider

 BSD 4.3                     UnixWare 7
 If connect is called on     When connect is called on
 an unbound socket, the      an unbound socket, that
 protocol determines         socket is always bound to
 whether or not the          an address selected by
 endpoint will be bound      the transport provider
 before the connection
 takes place

Data transfer primitives

BSD 4.3 UnixWare 7
If the MSG_PEEK flag has been set when sendmsg is called, and access rights are available, the access rights will be copied, leaving them available for reading by a subsequent call to recvmsg If the MSG_PEEK flag is specified in a call to recvmsg, and access rights are available, the access rights will be transferred to the user buffer associated with the receiving socket. They are then destroyed, and the transferring socket has no further access to them. They are therefore unavailable to a subsequent call to recvmsg. Any data associated with the access rights will also be copied to the user buffer and will not be available to recvmsg

 BSD 4.3                     UnixWare 7
 If the MSG_PEEK flag has    If the MSG_PEEK flag is
 been set when sendmsg is    specified in a call to
 called, and access rights   recvmsg, and access
 are available, the access   rights are available, the
 rights will be copied,      access rights will be
 leaving them available      transferred to the user
 for reading by a            buffer associated with
 subsequent call to          the receiving socket.
 recvmsg                     They are then destroyed,
                             and the transferring
                             socket has no further
                             access to them.  They are
                             therefore unavailable to
                             a subsequent call to
                             recvmsg.  Any data
                             associated with the
                             access rights will also
                             be copied to the user
                             buffer and will not be
                             available to recvmsg

Information primitives

BSD 4.3 UnixWare 7
The SIOCSPGRP and FIOSETOWN commands for the ioctl(2) system call and the F_SETOWN command for the fcntl(2) system call take as arguments a positive process id or a negative process group id that identifies the intended recipient list of subsequent SIGURG and SIGIO signals The only acceptable arguments to ioctl(2) and fcntl(2) are the caller's process id or a negative process group id which has the same absolute value as the caller's process id. In other words, the calling process is the only recipient of SIGURG and SIGIO signals

 BSD 4.3                     UnixWare 7
 The SIOCSPGRP and           The only acceptable
 FIOSETOWN commands for      arguments to ioctl(2) and
 the ioctl(2) system call    fcntl(2) are the caller's
 and the F_SETOWN command    process id or a negative
 for the fcntl(2) system     process group id which
 call take as arguments a    has the same absolute
 positive process id or a    value as the caller's
 negative process group id   process id.  In other
 that identifies the         words, the calling
 intended recipient list     process is the only
 of subsequent SIGURG and    recipient of SIGURG and
 SIGIO signals               SIGIO signals

Local management

BSD 4.3 UnixWare 7
setsockopt can be used at any time during the life of a socket. Because of the state diagram specified by the Transport Provider Interface (TPI), a setsockopt operation on a transport provider conforming to this specification will fail if issued on a socket that is not bound to a local address. Specifically, if a socket is unbound and setsockopt is used, then the operation will succeed in the AF_INET domain, but will fail in the AF_UNIX domain

 BSD 4.3                     UnixWare 7
 setsockopt can be used at   Because of the state
 any time during the life    diagram specified by the
 of a socket.                Transport Provider
                             Interface (TPI), a
                             setsockopt operation on a
                             transport provider
                             conforming to this
                             specification will fail
                             if issued on a socket
                             that is not bound to a
                             local address.
                             Specifically, if a socket
                             is unbound and setsockopt
                             is used, then the
                             operation will succeed in
                             the AF_INET domain, but
                             will fail in the AF_UNIX
                             domain

Signals

BSD 4.3 UnixWare 7
SIGIO is delivered every time new data is appended to the socket input queue SIGIO is delivered only when data is appended to a socket queue that was previously empty
A SIGURG is delivered every time new data is anticipated or actually arrives A SUGURG is delivered only when there is no urgent data already pending

 BSD 4.3                     UnixWare 7
 SIGIO is delivered every    SIGIO is delivered only
 time new data is appended   when data is appended to
 to the socket input queue   a socket queue that was
                             previously empty
 A SIGURG is delivered       A SUGURG is delivered
 every time new data is      only when there is no
 anticipated or actually     urgent data already
 arrives                     pending

Miscellaneous

BSD 4.3 UnixWare 7
If ls -l is executed on a directory that contains a UNIX domain socket, an ``s'' will be printed on the left side of the mode field If ls -l is executed on a directory that contains a UNIX domain socket, a ``p'' will be printed on the left side of the mode field
Executing ls -F will cause an equals sign (=) to be printed after any filename that represents a UNIX domain socket Nothing will be printed after a filename that represents a UNIX domain socket

 BSD 4.3                     UnixWare 7
 If ls -l is executed on a   If ls -l is executed on a
 directory that contains a   directory that contains a
 UNIX domain socket, an      UNIX domain socket, a
 ``s'' will be printed on    ``p'' will be printed on
 the left side of the mode   the left side of the mode
 field                       field
 Executing ls -F will        Nothing will be printed
 cause an equals sign (=)    after a filename that
 to be printed after any     represents a UNIX domain
 filename that represents    socket
 a UNIX domain socket

Next topic: System Management
Previous topic: Mail enhancements

© 1999 The Santa Cruz Operation, Inc. All rights reserved.
UnixWare 7 Release 7.1.1 - 5 November 1999