On success, zero is returned. On error, -1 is returned, and errno is set appropriately.
The argument s is not a valid descriptor.
The name parameter points to memory not in a valid part of the process address space.
namelen is invalid (e.g., is negative).
Insufficient resources were available in the system to perform the operation.
The argument s is a file, not a socket.
SVr4, 4.4BSD (the getsockname() function call appeared in 4.2BSD), POSIX.1-2001.
The third argument of getsockname() is in reality an ‘int *’ (and this is what 4.x BSD and libc4 and libc5 have). Some POSIX confusion resulted in the present socklen_t, also used by glibc. See also accept(2).