NetAddress
Represents an IPv4 or IPv6 address. The family field indicates the address type. The addr field is either the IPv4 address or the IPv6 flow info. The addr1-4 fields are the IPv6 address, or invalid for an IPv4 address. The scope field is the IPv6 scope, or invalid for an IPv4 address.
This class is modelled after the C data structure for holding socket addresses for both IPv4 and IPv6 sockaddr_storage
.
Use the name
method to obtain address/hostname and port/service as Strings.
class val NetAddress is Equatable[NetAddress val] ref
Implements
- Equatable[NetAddress val] ref
Constructors
create
new iso create() : NetAddress iso^
Returns
- NetAddress iso^
Public Functions
ip4
Returns true for an IPv4 address.
fun box ip4() : Bool val
Returns
- Bool val
ip6
Returns true for an IPv6 address.
fun box ip6() : Bool val
Returns
- Bool val
name
Returns the host and service name.
If reversedns
is an instance of DNSLookupAuth
a DNS lookup will be executed and the hostname for this address is returned as first element of the result tuple. If no hostname could be found, an error is raised. If reversedns
is None
the plain IP address is given and no DNS lookup is executed.
If servicename
is false
the numeric port is returned as second element of the result tuple. If it is true
the port is translated into its corresponding servicename (e.g. port 80 is returned as "http"
).
Internally this method uses the POSIX C function getnameinfo
.
fun box name( reversedns: (AmbientAuth val | NetAuth val | DNSAuth val | None val) = reference, servicename: Bool val = false) : (String val , String val) ?
Parameters
- reversedns: (AmbientAuth val | NetAuth val | DNSAuth val | None val) = reference
- servicename: Bool val = false
Returns
eq
fun box eq( that: NetAddress box) : Bool val
Parameters
- that: NetAddress box
Returns
- Bool val
host_eq
fun box host_eq( that: NetAddress box) : Bool val
Parameters
- that: NetAddress box
Returns
- Bool val
length
For platforms (OSX/FreeBSD) with length
field as part of its struct sockaddr
definition, returns the length
. Else (Linux/Windows) returns the size of sockaddr_in
or sockaddr_in6
.
fun box length() : U8 val
Returns
- U8 val
family
Returns the family
.
fun box family() : U8 val
Returns
- U8 val
port
Returns port number in host byte order.
fun box port() : U16 val
Returns
- U16 val
scope
Returns IPv6 scope identifier: Unicast, Anycast, Multicast and unassigned scopes.
fun box scope() : U32 val
Returns
- U32 val
ipv4_addr
Returns IPV4 address (_addr
field in the class) if ip4()
is True
. If ip4()
is False
then the contents are invalid.
fun box ipv4_addr() : U32 val
Returns
- U32 val
ipv6_addr
Returns IPV6 address as the 4-tuple (say a
). a._1 = _addr1
// Bits 0-32 of the IPv6 address in host byte order. a._2 = _addr2 // Bits 33-64 of the IPv6 address in host byte order.
a._3 = _addr3 // Bits 65-96 of the IPv6 address in host byte order. `a._4 = _addr4 // Bits 97-128 of the IPv6 address in host byte order.
The contents of the 4-tuple returned are valid only if ip6()
is True
.
fun box ipv6_addr() : (U32 val , U32 val , U32 val , U32 val)
Returns
ne
fun box ne( that: NetAddress val) : Bool val
Parameters
- that: NetAddress val
Returns
- Bool val
© 2016-2020, The Pony Developers
© 2014-2015, Causality Ltd.
Licensed under the BSD 2-Clause License.
https://stdlib.ponylang.io/net-NetAddress