Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
GETSOCKNAME(2)		    BSD	System Calls Manual		GETSOCKNAME(2)

NAME
     getsockname -- get	socket name

LIBRARY
     Standard C	Library	(libc, -lc)

SYNOPSIS
     #include <sys/socket.h>

     int
     getsockname(int s,	struct sockaddr	* restrict name,
	 socklen_t * restrict namelen);

DESCRIPTION
     getsockname() returns the locally bound address information for a speci-
     fied socket.

     Common uses of this function are as follows:

     o	 When bind(2) is called	with a port number of 0	(indicating the	kernel
	 should	pick an	ephemeral port)	getsockname() is used to retrieve the
	 kernel-assigned port number.

     o	 When a	process	calls bind(2) on a wildcard IP address,	getsockname()
	 is used to retrieve the local IP address for the connection.

     o	 When a	function wishes	to know	the address family of a	socket,
	 getsockname() can be used.

     getsockname() takes three parameters:

     s,	Contains the file descriptor for the socket to be looked up.

     name points to a sockaddr structure which will hold the resulting address
     information.  Normal use requires one to use a structure specific to the
     protocol family in	use, such as sockaddr_in (IPv4)	or sockaddr_in6
     (IPv6), cast to a (struct sockaddr	*).

     For greater portability (such as newer protocol families) the new struc-
     ture sockaddr_storage exists.  sockaddr_storage is	large enough to	hold
     any of the	other sockaddr_* variants.  On return, it should be cast to
     the correct sockaddr type,	according to the current protocol family.

     namelen indicates the amount of space pointed to by name, in bytes.  Upon
     return, namelen is	set to the actual size of the returned address infor-
     mation.

     If	the address of the destination socket for a given socket connection is
     needed, the getpeername(2)	function should	be used	instead.

     If	name does not point to enough space to hold the	entire socket address,
     the result	will be	truncated to namelen bytes.

RETURN VALUES
     On	success, getsockname() returns a 0, and	namelen	is set to the actual
     size of the socket	address	returned in name.  Otherwise, errno is set,
     and a value of -1 is returned.

ERRORS
     The call succeeds unless:

     [EBADF]		The argument s is not a	valid descriptor.

     [ENOTSOCK]		The argument s is a file, not a	socket.

     [EINVAL]		The socket has been shut down.

     [ENOBUFS]		Insufficient resources were available in the system to
			perform	the operation.

     [EFAULT]		The name parameter points to memory not	in a valid
			part of	the process address space.

SEE ALSO
     bind(2), socket(2)

HISTORY
     The getsockname() function	call appeared in 4.2BSD.

BUGS
     Names bound to sockets in the UNIX	domain are inaccessible; getsockname()
     returns a zero length name.

BSD				August 11, 2002				   BSD

NAME | LIBRARY | SYNOPSIS | DESCRIPTION | RETURN VALUES | ERRORS | SEE ALSO | HISTORY | BUGS

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=getsockname&sektion=2&manpath=NetBSD+6.0>

home | help