mirror of
				https://github.com/mozilla/gecko-dev.git
				synced 2025-11-04 10:18:41 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			85 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
			
		
		
	
	
			85 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
PRNetAddr
 | 
						|
=========
 | 
						|
 | 
						|
Type used with `Socket Manipulation
 | 
						|
Functions <Socket_Manipulation_Functions>`__ to specify a network
 | 
						|
address.
 | 
						|
 | 
						|
 | 
						|
Syntax
 | 
						|
------
 | 
						|
 | 
						|
.. code::
 | 
						|
 | 
						|
   #include <prio.h>
 | 
						|
 | 
						|
   union PRNetAddr {
 | 
						|
     struct {
 | 
						|
        PRUint16 family;
 | 
						|
        char data[14];
 | 
						|
     } raw;
 | 
						|
     struct {
 | 
						|
        PRUint16 family;
 | 
						|
        PRUint16 port;
 | 
						|
        PRUint32 ip;
 | 
						|
        char pad[8];
 | 
						|
     } inet;
 | 
						|
   #if defined(_PR_INET6)
 | 
						|
     struct {
 | 
						|
        PRUint16 family;
 | 
						|
        PRUint16 port;
 | 
						|
        PRUint32 flowinfo;
 | 
						|
        PRIPv6Addr ip;
 | 
						|
     } ipv6;
 | 
						|
   #endif /* defined(_PR_INET6) */
 | 
						|
   };
 | 
						|
 | 
						|
   typedef union PRNetAddr PRNetAddr;
 | 
						|
 | 
						|
 | 
						|
Fields
 | 
						|
~~~~~~
 | 
						|
 | 
						|
The structure has the following fields:
 | 
						|
 | 
						|
``family``
 | 
						|
   Address family: ``PR_AF_INET|PR_AF_INET6`` for ``raw.family``,
 | 
						|
   ``PR_AF_INET`` for ``inet.family``, ``PR_AF_INET6`` for
 | 
						|
   ``ipv6.family``.
 | 
						|
``data``
 | 
						|
   Raw address data.
 | 
						|
``port``
 | 
						|
   Port number of TCP or UDP, in network byte order.
 | 
						|
``ip``
 | 
						|
   The actual 32 (for ``inet.ip``) or 128 (for ``ipv6.ip``) bits of IP
 | 
						|
   address. The ``inet.ip`` field is in network byte order.
 | 
						|
``pad``
 | 
						|
   Unused.
 | 
						|
``flowinfo``
 | 
						|
   Routing information.
 | 
						|
 | 
						|
 | 
						|
Description
 | 
						|
-----------
 | 
						|
 | 
						|
The union :ref:`PRNetAddr` represents a network address. NSPR supports only
 | 
						|
the Internet address family. By default, NSPR is built to support only
 | 
						|
IPv4, but it's possible to build the NSPR library to support both IPv4
 | 
						|
and IPv6. Therefore, the ``family`` field can be ``PR_AF_INET`` only for
 | 
						|
default NSPR, and can also be ``PR_AF_INET6`` if the binary supports
 | 
						|
``IPv6``.
 | 
						|
 | 
						|
:ref:`PRNetAddr` is binary-compatible with the socket address structures in
 | 
						|
the familiar Berkeley socket interface, although this fact should not be
 | 
						|
relied upon. The raw member of the union is equivalent to
 | 
						|
``struct sockaddr``, the ``inet`` member is equivalent to
 | 
						|
``struct sockaddr_in``, and if the binary is built with ``IPv6``
 | 
						|
support, the ``ipv6`` member is equivalent to ``struct sockaddr_in6``.
 | 
						|
(Note that :ref:`PRNetAddr` does not have the ``length`` field that is
 | 
						|
present in ``struct sockaddr_in`` on some Unix platforms.)
 | 
						|
 | 
						|
The macros ``PR_AF_INET``, ``PR_AF_INET6``, ``PR_INADDR_ANY``,
 | 
						|
``PR_INADDR_LOOPBACK`` are defined if ``prio.h`` is included.
 | 
						|
``PR_INADDR_ANY`` and ``PR_INADDR_LOOPBACK`` are special ``IPv4``
 | 
						|
addresses in host byte order, so they must be converted to network byte
 | 
						|
order before being assigned to the ``inet.ip`` field.
 |