Otoliths / ipaddress

R package for working with IP addresses and networks

Home Page:https://davidchall.github.io/ipaddress

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

ipaddress

Lifecycle: maturing CRAN status R build status codecov.io

This package provides classes for working with IP addresses, inspired by the Python ipaddress module.

Here are some of the features:

  • Fully supports both IPv4 and IPv6 address spaces
  • Efficiently stores addresses in their native format (a sequence of bits)
  • Calculations are performed in C++ for improved performance
  • Classes are compatible with the tidyverse

Installation

You can install the released version of ipaddress from CRAN with:

install.packages("ipaddress")

Or you can install the development version from GitHub:

# install.packages("remotes")
remotes::install_github("davidchall/ipaddress")

Usage

This package provides the ip_address() and ip_network() classes, which can be used as standalone vectors or as columns within data frames and tibbles.

library(tidyverse)
library(ipaddress)

x <- tibble(
  address = ip_address(c("192.168.0.1", "2001:db8::8a2e:370:7334")),
  network = ip_network(c("192.168.100.0/22", "2001:db8::/48"))
)
x
#> # A tibble: 2 x 2
#>                   address          network
#>                 <ip_addr>        <ip_netw>
#> 1             192.168.0.1 192.168.100.0/22
#> 2 2001:db8::8a2e:370:7334    2001:db8::/48

Input character vectors are validated as they are parsed. Invalid inputs raise a warning and are replaced with NA.

ip_address(c("0.0.0.0", "255.255.255.255", "255.255.255.256"))
#> Warning: Invalid input in row 3: 255.255.255.256
#> <ip_address[3]>
#> [1] 0.0.0.0         255.255.255.255 <NA>

Functions are provided to enable common tasks:

mutate(x, ipv6 = is_ipv6(address), in_net = is_within(address, network))
#> # A tibble: 2 x 4
#>                   address          network ipv6  in_net
#>                 <ip_addr>        <ip_netw> <lgl> <lgl> 
#> 1             192.168.0.1 192.168.100.0/22 FALSE FALSE 
#> 2 2001:db8::8a2e:370:7334    2001:db8::/48 TRUE  TRUE

Please note that the ‘ipaddress’ project is released with a Contributor Code of Conduct. By contributing to this project, you agree to abide by its terms.

About

R package for working with IP addresses and networks

https://davidchall.github.io/ipaddress

License:Other


Languages

Language:R 54.5%Language:C++ 45.5%