getsockname(3sock)


getsockname -- get socket address

Synopsis

cc [options] file -lsocket -lnsl
#include <sys/types.h>
#include <sys/socket.h>

int getsockname(int socket, struct sockaddr *name, size_t *namelen);

Description

getsockname returns the current locally bound address, name, for socket s. The namelen parameter should be initialized to indicate the amount of space pointed to by name. On return it contains the actual size of the name returned (in bytes).

If the socket has not been bound to a local name, getsockname sets the value pointed to by namelen to 0, and puts nothing in the struct sockaddr pointed to by name.

Files

/usr/lib/locale/locale/LC_MESSAGES/uxnsl

Return values

0 is returned if the call succeeds; -1 if it fails.

Errors

The call succeeds unless:

EBADF
socket is not a valid descriptor.

ENOTSOCK
socket is a file, not a socket.

EOPNOTSUPP
The operation is not supported for this socket's protocol.

ENOMEM
There was insufficient user memory for the operation to complete.

ENOSR
There were insufficient STREAMS resources available for the operation to complete.

EINVAL
The socket has been shut down.

ENOBUFS
System resources were insufficient to complete the call.

References

bind(3sock), getpeername(3sock), socket(3sock)

RFC 2133

Notices

The type of address structure passed to getsockname depends on the address family. UNIX® domain sockets (address family AF_UNIX) require a struct sockaddr_un structure as defined in sys/un.h; Internet domain IPv4 sockets (address family AF_INET) require a struct sockaddr_in structure as defined in netinet/in.h; Internet domain IPv6 sockets (address family AF_INET6) require a struct sockaddr_in6 structure as defined in netinet/in.h. Other address families may require other structures. Use the structure appropriate to the address family; cast the structure address to a generic struct sockaddr * in the call to getsockname and pass the size of the structure in the namelen argument.

In UnixWare 7 the sockaddr structure has been modified to support variable length sockets. The net result of this modification is that the family member has been shortened to 8 bits and a new 8-bit member inserted before it called len. For more information on the new sockaddr structures, see: unix(7sock) and inet(7tcp).


© 2004 The SCO Group, Inc. All rights reserved.
UnixWare 7 Release 7.1.4 - 25 April 2004