Fix for CRAN checks.
Fix for CRAN checks.
To mark the release of ipaddress 1.0.0, some breaking changes were made to improve the interface for data analysis.
multiple
argument from ip_to_hostname()
and hostname_to_ip()
(#83).
ip_to_hostname()
and hostname_to_ip()
now always return one result per input (stored in a vector).ip_to_hostname_all()
and hostname_to_ip_all()
return all results per input (stored in a list of vectors).subnets()
now takes vector input and outputs a list of vectors (#83).strict
argument of ip_network()
.exploded
argument of format.ip_address()
, format.ip_network()
and format.ip_interface()
.replace
argument of sample_ipv4()
, sample_ipv6()
and sample_network()
.country_networks()
downloads IP networks registered to specific countries (#87).is_ipv6
argument of netmask()
and hostmask()
defaults to NULL
. This option prefers an IPv4 mask, but creates an IPv6 mask as a fallback.vignette("ipaddress-classes")
to vignette("ip-data")
.vignette("ipaddress-examples")
to vignette("recipes")
.iana_ipv4
dataset.Fix for CRAN checks.
Fix for CRAN checks.
Fix for CRAN checks.
Fix for CRAN checks.
The base
argument of ip_to_integer()
is removed.
base = "dec"
is still handled by ip_to_integer()
.base = "bin"
is still handled by the existing ip_to_binary()
function.base = "hex"
is now handled by the new ip_to_hex()
function.ip_to_integer()
and integer_to_ip()
now use bignum::biginteger()
vectors to store IP addresses as integers. Previously, these integers were stored in a character vector (because they were beyond the range of base R numeric types).
New ip_to_hex()
and hex_to_ip()
functions to encode and decode addresses as hexadecimal strings.
ip_to_bytes()
now returns a list of raw vectors instead of a blob
object (#65).
blob::as_blob()
.LinkingTo: ipaddress
without LinkingTo: AsioHeaders
.This release achieves feature parity with the Python ipaddress module (#46).
is_private()
, is_reserved()
, is_site_local()
(#49).is_global()
checks if addresses or networks are not reserved (#49).collapse_networks()
collapses contiguous and overlapping networks (#54).exclude_networks()
removes networks from others (#59).reverse_pointer()
returns the record used by reverse DNS (#57).iana_ipv4
and iana_ipv6
contain registries of allocated blocks (#55).%<<%
and %>>%
(#52).IpAddressVector
and IpNetworkVector
classes to other packages (use LinkingTo: AsioHeaders, ipaddress, Rcpp
). This does not affect the public R interface (#51).format.ip_address()
, format.ip_network()
and format.ip_interface()
gain an exploded
parameter to display leading zeros for IPv6 addresses (#56).ip_to_integer()
gains a base
parameter to select between decimal, hexadecimal and binary outputs (#47).vignette("ipaddress-examples")
to use the fuzzyjoin package (#61).vignette("ipaddress-examples")
with how to randomly generate public IP addresses (#62).ip_address()
vectors to account for machine endianness (#53).ip_network()
and ip_interface()
vectors is now consistent with the Python ipaddress module.
ip_network()
: network address compared before prefix length.ip_interface()
: network compared before host address.ip_network()
vectors without using CIDR notation.
common_network()
function finds the smallest network containing two addresses (#39).summarize_address_range()
function lists the constituent networks of an address range (#41).prefix_length()
can now infer the prefix length from an ip_address()
vector of netmasks and/or hostmasks. This makes it possible to construct an ip_network()
vector like so: (#36)
ip_network(ip_address("192.0.2.0"), prefix_length(ip_address("255.255.255.0")))
.ip_network(ip_address("192.0.2.0"), prefix_length(ip_address("0.0.0.255")))
.supernet()
and subnets()
functions for traversing the network hierarchy (#42).vignette("ipaddress-examples")
to describe some typical usage patterns (#43).integer_to_ip()
now accepts integerish doubles.netmask()
and hostmask()
now raise an error if the prefix_length
and is_ipv6
arguments are not both specified (#38).is_within_any()
to correctly catch when IPv6 addresses are in zero networks.vignette("ipaddress")
as vignette("ipaddress-classes")
.as_packed()
and from_packed()
become ip_to_bytes()
and bytes_to_ip()
.as_binary()
and from_binary()
become ip_to_binary()
and binary_to_ip()
.as_hostname()
and from_hostname()
become ip_to_hostname()
and hostname_to_ip()
.ip_to_integer()
and integer_to_ip()
functions to encode and decode addresses as integers. Note that the integers are contained within a character vector. Please see the function documentation for an explanation (#30).vignette("ipaddress")
to introduce the data classes provided by ipaddress (#24).ip_interface()
class to simultaneously store the address and the network it is on (#15).ip_address()
vectors now support bitwise operations (!
, &
, |
and ^
).ip_address()
vectors now support addition and subtraction of integers (#14).ip_network()
constructor that accepts ip_address
and prefix length vectors (#9).as_packed()
and from_packed()
functions to encode and decode addresses as raw bytes (#13).as_binary()
and from_binary()
functions to encode and decode addresses as binary strings (#18).as_hostname()
and from_hostname()
functions translate addresses to and from hostnames (#22).max_prefix_length()
function to get the size of the address space (32-bit for IPv4 and 128-bit for IPv6).is_multicast()
, is_unspecified()
, is_loopback()
, is_link_local()
.is_ipv4_mapped()
, is_6to4()
, is_teredo()
.extract_ipv4_mapped()
, extract_6to4()
, extract_teredo_server()
, extract_teredo_client()
.num_addresses()
, network_address()
and broadcast_address()
.overlaps()
function to check for any overlap between networks.netmask()
and hostmask()
are now generics, so they can now accept:
ip_network()
vector (existing behavior).ip_interface()
vector.seq.ip_network()
and hosts()
functions to list all addresses within a network.sample_ipv4()
, sample_ipv6()
and sample_network()
(#11, #19).NA
.
0.0.0.128
.0:80::/32
network.is_subnet()
and is_supernet()
now check the prefix length, to ensure they are a true subnet or supernet.Fix for CRAN checks.
First CRAN release
ip_address()
and ip_network()
classes.
vctrs
package for full tidyverse compatibility.is_within()
and is_within_any()
check if addresses are within networks.is_subnet()
and is_supernet()
check if networks are within other networks.is_ipv4()
and is_ipv6()
classify the address space.prefix_length()
, netmask()
and hostmask()
yield different representations of the network mask.Rcpp
and AsioHeaders
packages) for improved performance.