ip

IPv4/IPv6 address parsing, validation, CIDR membership, and private-range checks for Ecko. Pure - no capabilities.

ecko get github.com/ecko-lang/ip
import ip

Pure computation: it declares no capabilities, so it cannot touch the network, the filesystem or the environment.

Version 0.37.0 - source - MIT.


parse(s)

parse(s) -> { version, groups, is_private }. Raises kind-"value" if invalid.

is_valid(s)

Whether s parses as an IPv4 or IPv6 address. The non-raising form of parse - use it when a bad address is an expected input, not an error.

is_valid("192.168.1.1")   # true
is_valid("nope")          # false

version(s)

4 or 6 for an address. Raises if s is not an IP address.

is_private(s)

Whether the address is in a private range - RFC 1918, loopback and link-local (169.254/16) for v4; unique-local (fc00::/7), loopback and link-local (fe80::/10) for v6. Raises if s is not an address.

in_network(addr, cidr)

in_network(addr, cidr) -> is addr inside the cidr block (e.g. "10.0.0.0/24")?