<html lang="en">
<head>
<title>Address Formats - The GNU C Library</title>
<meta http-equiv="Content-Type" content="text/html">
<meta name="description" content="The GNU C Library">
<meta name="generator" content="makeinfo 4.13">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="Socket-Addresses.html#Socket-Addresses" title="Socket Addresses">
<link rel="next" href="Setting-Address.html#Setting-Address" title="Setting Address">
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
<!--
This file documents the GNU C library.

This is Edition 0.12, last updated 2007-10-27,
of `The GNU C Library Reference Manual', for version
2.8 (Sourcery G++ Lite 2011.03-41).

Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002,
2003, 2007, 2008, 2010 Free Software Foundation, Inc.

Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with the
Invariant Sections being ``Free Software Needs Free Documentation''
and ``GNU Lesser General Public License'', the Front-Cover texts being
``A GNU Manual'', and with the Back-Cover Texts as in (a) below.  A
copy of the license is included in the section entitled "GNU Free
Documentation License".

(a) The FSF's Back-Cover Text is: ``You have the freedom to
copy and modify this GNU manual.  Buying copies from the FSF
supports it in developing GNU and promoting software freedom.''-->
<meta http-equiv="Content-Style-Type" content="text/css">
<style type="text/css"><!--
  pre.display { font-family:inherit }
  pre.format  { font-family:inherit }
  pre.smalldisplay { font-family:inherit; font-size:smaller }
  pre.smallformat  { font-family:inherit; font-size:smaller }
  pre.smallexample { font-size:smaller }
  pre.smalllisp    { font-size:smaller }
  span.sc    { font-variant:small-caps }
  span.roman { font-family:serif; font-weight:normal; } 
  span.sansserif { font-family:sans-serif; font-weight:normal; } 
--></style>
<link rel="stylesheet" type="text/css" href="../cs.css">
</head>
<body>
<div class="node">
<a name="Address-Formats"></a>
<p>
Next:&nbsp;<a rel="next" accesskey="n" href="Setting-Address.html#Setting-Address">Setting Address</a>,
Up:&nbsp;<a rel="up" accesskey="u" href="Socket-Addresses.html#Socket-Addresses">Socket Addresses</a>
<hr>
</div>

<h4 class="subsection">16.3.1 Address Formats</h4>

<p>The functions <code>bind</code> and <code>getsockname</code> use the generic data
type <code>struct sockaddr *</code> to represent a pointer to a socket
address.  You can't use this data type effectively to interpret an
address or construct one; for that, you must use the proper data type
for the socket's namespace.

   <p>Thus, the usual practice is to construct an address of the proper
namespace-specific type, then cast a pointer to <code>struct sockaddr *</code>
when you call <code>bind</code> or <code>getsockname</code>.

   <p>The one piece of information that you can get from the <code>struct
sockaddr</code> data type is the <dfn>address format designator</dfn>.  This tells
you which data type to use to understand the address fully.

   <p><a name="index-sys_002fsocket_002eh-1655"></a>The symbols in this section are defined in the header file
<samp><span class="file">sys/socket.h</span></samp>.

<!-- sys/socket.h -->
<!-- BSD -->
<div class="defun">
&mdash; Data Type: <b>struct sockaddr</b><var><a name="index-struct-sockaddr-1656"></a></var><br>
<blockquote><p>The <code>struct sockaddr</code> type itself has the following members:

          <dl>
<dt><code>short int sa_family</code><dd>This is the code for the address format of this address.  It
identifies the format of the data which follows.

          <br><dt><code>char sa_data[14]</code><dd>This is the actual socket address data, which is format-dependent.  Its
length also depends on the format, and may well be more than 14.  The
length 14 of <code>sa_data</code> is essentially arbitrary. 
</dl>
        </p></blockquote></div>

   <p>Each address format has a symbolic name which starts with &lsquo;<samp><span class="samp">AF_</span></samp>&rsquo;. 
Each of them corresponds to a &lsquo;<samp><span class="samp">PF_</span></samp>&rsquo; symbol which designates the
corresponding namespace.  Here is a list of address format names:

     <dl>
<!-- sys/socket.h -->
<!-- POSIX -->
<dt><code>AF_LOCAL</code><dd><a name="index-AF_005fLOCAL-1657"></a>This designates the address format that goes with the local namespace. 
(<code>PF_LOCAL</code> is the name of that namespace.)  See <a href="Local-Namespace-Details.html#Local-Namespace-Details">Local Namespace Details</a>, for information about this address format.

     <!-- sys/socket.h -->
     <!-- BSD, Unix98 -->
     <br><dt><code>AF_UNIX</code><dd><a name="index-AF_005fUNIX-1658"></a>This is a synonym for <code>AF_LOCAL</code>.  Although <code>AF_LOCAL</code> is
mandated by POSIX.1g, <code>AF_UNIX</code> is portable to more systems. 
<code>AF_UNIX</code> was the traditional name stemming from BSD, so even most
POSIX systems support it.  It is also the name of choice in the Unix98
specification. (The same is true for <code>PF_UNIX</code>
vs. <code>PF_LOCAL</code>).

     <!-- sys/socket.h -->
     <!-- GNU -->
     <br><dt><code>AF_FILE</code><dd><a name="index-AF_005fFILE-1659"></a>This is another synonym for <code>AF_LOCAL</code>, for compatibility. 
(<code>PF_FILE</code> is likewise a synonym for <code>PF_LOCAL</code>.)

     <!-- sys/socket.h -->
     <!-- BSD -->
     <br><dt><code>AF_INET</code><dd><a name="index-AF_005fINET-1660"></a>This designates the address format that goes with the Internet
namespace.  (<code>PF_INET</code> is the name of that namespace.) 
See <a href="Internet-Address-Formats.html#Internet-Address-Formats">Internet Address Formats</a>.

     <!-- sys/socket.h -->
     <!-- IPv6 Basic API -->
     <br><dt><code>AF_INET6</code><dd>This is similar to <code>AF_INET</code>, but refers to the IPv6 protocol. 
(<code>PF_INET6</code> is the name of the corresponding namespace.)

     <!-- sys/socket.h -->
     <!-- BSD -->
     <br><dt><code>AF_UNSPEC</code><dd><a name="index-AF_005fUNSPEC-1661"></a>This designates no particular address format.  It is used only in rare
cases, such as to clear out the default destination address of a
&ldquo;connected&rdquo; datagram socket.  See <a href="Sending-Datagrams.html#Sending-Datagrams">Sending Datagrams</a>.

     <p>The corresponding namespace designator symbol <code>PF_UNSPEC</code> exists
for completeness, but there is no reason to use it in a program. 
</dl>

   <p><samp><span class="file">sys/socket.h</span></samp> defines symbols starting with &lsquo;<samp><span class="samp">AF_</span></samp>&rsquo; for many
different kinds of networks, most or all of which are not actually
implemented.  We will document those that really work as we receive
information about how to use them.

   </body></html>

