Package: raddr 0.1.2

Bart Turczynski

raddr: Show What an IP Address Literal Means Under Every Standard

Standards and implementations disagree about what an IP address literal means: the string "0177.0.0.1" is rejected by the dotted-quad grammar, read as 127.0.0.1 by browsers, and read as 177.0.0.1 by some 'inet_pton' implementations. Most libraries pick one reading and discard the rest. This package reports them all, alongside the reason codes that explain each one, and classifies parsed values against the IANA special-purpose address registries. It is pure R, performs no network access, and returns facts rather than allow or deny verdicts.

Authors:Bart Turczynski [aut, cre], web-platform-tests contributors [cph]

raddr_0.1.2.tar.gz
raddr_0.1.2.zip(r-4.7-any)raddr_0.1.2.zip(r-4.6-any)
raddr_0.1.2.tar.gz(r-4.7-any)raddr_0.1.2.tar.gz(r-4.6-any)
raddr_0.1.2.tgz(r-4.6-emscripten)
manual.pdf |manual.html✨
DESCRIPTION |NEWS
card.svg |card.png
raddr/json (API)

# Install 'raddr' in R:
install.packages('raddr', repos = c('https://cran.r-universe.dev', 'https://cloud.r-project.org'))

Bug tracker:https://gitlab.com/bart-turczynski/raddr

On CRAN:

Conda:

ip-addressipv4ipv6ip-parserinet-ptoninet-atonwhatwg-urlcidrianaspecial-purpose-registrynat64teredo6to4

3.18 score 50 exports 5 dependencies

Last updated from:9dce714868. Checks:6 OK. Indexed: no.

TargetResultTimeFilesSyslog
linux-develOK223
source / vignettesOK210
linux-releaseOK209
windows-develOK125
windows-releaseOK179
wasm-releaseOK145

Exports:addr_address_spaceaddr_address_space_versionaddr_atonaddr_categoryaddr_category_mapaddr_category_versionaddr_classifyaddr_codesaddr_codes_registryaddr_curladdr_embedded_kindaddr_embeddingsaddr_expandaddr_familyaddr_formataddr_getaddrinfoaddr_global_reachabilityaddr_inputaddr_is_divergentaddr_nat64_embeddingsaddr_outcomeaddr_parseaddr_ptonaddr_readingaddr_registryaddr_registry_outdatedaddr_registry_snapshotaddr_registry_versionaddr_reverse_pointeraddr_statusaddr_strictaddr_to_binaryaddr_to_bytesaddr_to_hexaddr_to_integeraddr_transition_registryaddr_transition_versionaddr_whatwgaddr_withinaddr_within_anyaddr_zonebinary_to_addrbytes_to_addrhex_to_addrinteger_to_addris_raddr_addressis_raddr_classis_raddr_embeddingis_raddr_parseraddr_address

Dependencies:cligluelifecyclerlangvctrs

Edge cases
Reading a literal | The leading zero | Short forms and the whole-host number | The trailing dot, and the WHATWG asymmetry | IPv6: where the disagreement moves | The zone travels beside the bits | What raddr models, and what it does not | Classification | Longest prefix match, and why a parent block is not the answer | 0.0.0.0 is two rows, not one | "Not globally reachable" is not "not forwardable" | The N/A rows, and two different reasons for one NA | Reason codes at the classify layer | RFC 6890 is a stale snapshot | Provenance | What none of this decides

Last update: 2026-09-21
Started: 2026-09-21

Introduction to raddr
One string, three hosts | Paper and reality | addr_parse() takes no mode argument | Rejection is not missingness | Why addr_curl() exists alongside the standards | The reality dialects model a measured platform | Classification takes addresses, not strings | Facts, not verdicts | Where to go next

Last update: 2026-09-21
Started: 2026-09-21

Reason codes
Two layers, and they are not the same kind of statement | A helper for the examples below | The parse layer | not_a_number | leading_zero | empty_part | empty_hex | out_of_range | wrong_part_count | trailing_dot | zone_not_permitted | multiple_zones | bad_hextet | empty_group | bad_elision | wrong_group_count | bad_embedded_ipv4 | whitespace | The classify layer | nat64_wk_embedded_not_global — must | sixtofour_embedded_not_global — must | teredo_client_not_global — must | link_local_outside_fe80_64 — must | link_local_reserved_range — must | ipv4_compatible_low_tail — may | nat64_local_layout_unspecified — unspecified | ula_l_bit_unset — unspecified | What a code does not prove

Last update: 2026-09-21
Started: 2026-09-21

Readme and manuals

Help Manual

Help pageTopics
The bundled IANA address-space registriesaddr_address_space
Provenance of the bundled address-space snapshotaddr_address_space_version
Read single fields of a classificationaddr_category addr_embedded_kind addr_embeddings
raddr's block to category mapaddr_category_map
Provenance of raddr's category mapaddr_category_version
Classify addresses against the IANA registriesaddr_classify
The reason-code registryaddr_codes_registry
Read the family of an addressaddr_family
Render addresses as textaddr_expand addr_format
Whether an address is in globally reachable spaceaddr_global_reachability
Read the IPv4 address a caller-supplied NAT64 prefix embedsaddr_nat64_embeddings
Read an address literal under every dialect at onceaddr_parse
The bundled IANA special-purpose address registriesaddr_registry
Content-addressed identity of the bundled registry snapshotaddr_registry_snapshot
Provenance of the bundled special-purpose registry snapshotaddr_registry_outdated addr_registry_version
Reverse DNS pointer nameaddr_reverse_pointer
Encode and decode addresses as bytes, hex or binaryaddr_to_binary addr_to_bytes addr_to_hex binary_to_addr bytes_to_addr hex_to_addr
Encode and decode addresses as unsigned integersaddr_to_integer integer_to_addr
The transition-prefix overlayaddr_transition_registry addr_transition_version
Is an address inside a block?addr_within addr_within_any
Read the zone ID of an addressaddr_zone
Read an address literal under one dialectaddr_aton addr_curl addr_getaddrinfo addr_pton addr_strict addr_whatwg dialects
Test whether an object is a 'raddr_address'is_raddr_address
Test whether an object is a 'raddr_class'is_raddr_class
Test whether an object is a 'raddr_embedding'is_raddr_embedding
Test whether an object is a 'raddr_parse'is_raddr_parse
Pull one dialect's reading, outcome or reason codes back outaddr_codes addr_input addr_is_divergent addr_outcome addr_reading addr_status parse-accessors
An IP address vectorraddr_address