Follow Techotopia on Twitter

On-line Guides
All Guides
eBook Store
iOS / Android
Linux for Beginners
Office Productivity
Linux Installation
Linux Security
Linux Utilities
Linux Virtualization
Linux Kernel
System/Network Admin
Scripting Languages
Development Tools
Web Development
GUI Toolkits/Desktop
Mail Systems
Eclipse Documentation

How To Guides
General System Admin
Linux Security
Linux Filesystems
Web Servers
Graphics & Desktop
PC Hardware
Problem Solutions
Privacy Policy




16.5.2 Details of Local Namespace

To create a socket in the local namespace, use the constant PF_LOCAL as the namespace argument to socket or socketpair. This constant is defined in sys/socket.h.

— Macro: int PF_LOCAL

This designates the local namespace, in which socket addresses are local names, and its associated family of protocols. PF_Local is the macro used by Posix.1g.

— Macro: int PF_UNIX

This is a synonym for PF_LOCAL, for compatibility's sake.

— Macro: int PF_FILE

This is a synonym for PF_LOCAL, for compatibility's sake.

The structure for specifying socket names in the local namespace is defined in the header file sys/un.h:

— Data Type: struct sockaddr_un

This structure is used to specify local namespace socket addresses. It has the following members:

short int sun_family
This identifies the address family or format of the socket address. You should store the value AF_LOCAL to designate the local namespace. See Socket Addresses.
char sun_path[108]
This is the file name to use.

Incomplete: Why is 108 a magic number? RMS suggests making this a zero-length array and tweaking the following example to use alloca to allocate an appropriate amount of storage based on the length of the filename.

You should compute the length parameter for a socket address in the local namespace as the sum of the size of the sun_family component and the string length (not the allocation size!) of the file name string. This can be done using the macro SUN_LEN:

— Macro: int SUN_LEN (struct sockaddr_un * ptr)

The macro computes the length of socket address in the local namespace.

  Published under the terms of the GNU General Public License Design by Interspire