Skip to contents

ipaddress 1.0.2

CRAN release: 2023-12-01

Fix for CRAN checks.

ipaddress 1.0.1

CRAN release: 2023-04-04

Fix for CRAN checks.

ipaddress 1.0.0

CRAN release: 2023-01-12

To mark the release of ipaddress 1.0.0, some breaking changes were made to improve the interface for data analysis.

Breaking changes

New features

  • New country_networks() downloads IP networks registered to specific countries (#87).
  • Error formatting has been improved using {cli} (#86).

Minor improvements and fixes

  • The is_ipv6 argument of netmask() and hostmask() defaults to NULL. This option prefers an IPv4 mask, but creates an IPv6 mask as a fallback.
  • Renamed vignette("ipaddress-classes") to vignette("ip-data").
  • Renamed vignette("ipaddress-examples") to vignette("recipes").
  • Updated the iana_ipv4 dataset.
  • Tests now use {testthat} 3e.

ipaddress 0.5.6

CRAN release: 2022-12-11

Fix for CRAN checks.

ipaddress 0.5.5

CRAN release: 2022-08-12

Fix for CRAN checks.

ipaddress 0.5.4

CRAN release: 2022-01-11

Fix for CRAN checks.

ipaddress 0.5.3

CRAN release: 2021-07-27

Fix for CRAN checks.

ipaddress 0.5.2

CRAN release: 2021-06-17

  • The base argument of ip_to_integer() is removed.
  • 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).
    • The BH package is no longer a dependency (C++ Boost headers were a heavy dependency).
    • The bignum package is now an optional dependency.
  • New ip_to_hex() and hex_to_ip() functions to encode and decode addresses as hexadecimal strings.

ipaddress 0.5.1

CRAN release: 2020-09-12

  • Addition/subtraction of large integers is now much faster (#64).
  • ip_to_bytes() now returns a list of raw vectors instead of a blob object (#65).
    • Result can still be converted using blob::as_blob().
    • Removes excessive blob package dependency.
  • Refactored C++ code to reduce dependence on Asio library (#64).
    • Package developers can now use LinkingTo: ipaddress without LinkingTo: AsioHeaders.

ipaddress 0.5.0

CRAN release: 2020-08-26

This release achieves feature parity with the Python ipaddress module (#46).

New features

  • Additional checks for reserved addresses/networks: is_private(), is_reserved(), is_site_local() (#49).
  • New is_global() checks if addresses or networks are not reserved (#49).
  • New collapse_networks() collapses contiguous and overlapping networks (#54).
  • New exclude_networks() removes networks from others (#59).
  • New reverse_pointer() returns the record used by reverse DNS (#57).
  • New datasets: iana_ipv4 and iana_ipv6 contain registries of allocated blocks (#55).
  • New bitwise shift operators: %<<% and %>>% (#52).
  • Reorganized C++ code to expose IpAddressVector and IpNetworkVector classes to other packages (use LinkingTo: AsioHeaders, ipaddress, Rcpp). This does not affect the public R interface (#51).

Minor improvements and fixes

ipaddress 0.4.0

CRAN release: 2020-08-06

New features

  • Add support for constructing ip_network() vectors without using CIDR notation.
    • New common_network() function finds the smallest network containing two addresses (#39).
    • New 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(""), prefix_length(ip_address(""))).
      • ip_network(ip_address(""), prefix_length(ip_address(""))).
  • New supernet() and subnets() functions for traversing the network hierarchy (#42).
  • Added vignette("ipaddress-examples") to describe some typical usage patterns (#43).

Minor improvements and fixes

  • Check for user interrupts when processing large data sets.
  • integer_to_ip() now accepts integerish doubles.
  • Addition/subtraction operators now accept integerish doubles.
  • Addition/subtraction operators now catch missing values in 2nd argument.
  • netmask() and hostmask() now raise an error if the prefix_length and is_ipv6 arguments are not both specified (#38).
  • Fix is_within_any() to correctly catch when IPv6 addresses are in zero networks.
  • Rename vignette("ipaddress") as vignette("ipaddress-classes").

ipaddress 0.3.0

CRAN release: 2020-05-12

Breaking changes

New features

  • New 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).

Minor improvements

  • Support pretty printing in tibbles (#27).
    • CIDRs aligned on forward slash separator.
    • Prefix length displayed in green to increase prominence.
    • Dots and colons displayed in gray to reduce prominence.
    • IPv6 addresses can be automatically truncated, to fit more columns into the console width.
  • Added hex logo.
  • Compatible with vctrs 0.3.0 (#31, #34).

ipaddress 0.2.0

CRAN release: 2020-03-25


  • Added vignette("ipaddress") to introduce the data classes provided by ipaddress (#24).
  • New 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).
  • Added an ip_network() constructor that accepts ip_address and prefix length vectors (#9).

Other representations

  • New as_packed() and from_packed() functions to encode and decode addresses as raw bytes (#13).
  • New as_binary() and from_binary() functions to encode and decode addresses as binary strings (#18).
  • New as_hostname() and from_hostname() functions translate addresses to and from hostnames (#22).

Address space

Network membership

Generating addresses

Miscellaneous improvements

  • Improved input validation warnings. They now report the row number involved and no longer mention internal function names.
  • Many functions now support tidy vector recyling.
  • Performance improvements.

ipaddress 0.1.2

CRAN release: 2020-03-10

  • Fixed decoding bug which meant that some IP addresses were interpreted as NA.
    • In IPv4, this affected
    • In IPv6, this affected any address in the 0:80::/32 network.
  • is_subnet() and is_supernet() now check the prefix length, to ensure they are a true subnet or supernet.

ipaddress 0.1.1

CRAN release: 2020-03-06

Fix for CRAN checks.

ipaddress 0.1.0

CRAN release: 2020-03-05

First CRAN release

  • Added ip_address() and ip_network() classes.
    • Full support for both IPv4 and IPv6 address spaces.
    • Efficiently store data in their native representations (i.e. a sequence of bits).
    • Classes based on vctrs package for full tidyverse compatibility.
  • Added functions to determine network membership.
  • Added convenience functions to extract IP metadata.
  • Calculations performed in C++ (using Rcpp and AsioHeaders packages) for improved performance.