Bogdan Popa <bogdan@defn.io>
This package provides utilities for working with IP addresses and networks in Racket.
All IP addresses and network versions support the operations that follow.
procedure
( make-ip-address ip)→ip-address?
ip:string?procedure
ip:bytes?
(make-ip-address "127.0.0.1")
(make-ip-address "127.0.0.1")
(make-ip-address "0.0.0.127")
(make-ip-address "0:0:0:0:0:0:0:1")
(make-ip-address "ffff:0:0:0:0:0:0:0")
(make-ip-address "2001:db8:0:0:0:0:0:1")
procedure
( make-network ipprefix)→network?
prefix:exact-nonnegative-integer?procedure
(make-network ipmask)→network?
procedure
(make-network cidr)→network?
cidr:string?
(make-network "192.168.1.0/24")
(make-network "192.168.1.0/24")
(make-network "192.168.1.0/24")
(make-network "192.168.1.0/24")
(make-network "0:0:0:0:0:0:0:1/128")
(make-network "0:0:0:0:0:0:0:1/128")
(make-network "0:0:0:0:0:0:0:1/128")
(make-network "0:0:0:0:0:0:0:1/128")
procedure
( ip-address? addr)→boolean?
addr:any/c
procedure
addr:ip-address?
0
24
32
16
procedure
( ip-address-dec addr[n])→ip-address?
addr:ip-address?
procedure
( ip-address-inc addr[n])→ip-address?
addr:ip-address?
procedure
( ip-address-size addr)→(or/c 32128)
addr:ip-address?
procedure
( ip-address-version addr)→(or/c 46)
addr:ip-address?
procedure
( ip-address->bytes addr)→bytes?
addr:ip-address?
procedure
addr:ip-address?
procedure
( ip-address->string addr)→string?
addr:ip-address?
addr:ip-address?prefix:exact-nonnegative-integer?
procedure
( network-address net)→ip-address?
net:network?
procedure
( network-last-address net)→ip-address?
net:network?
procedure
net:network?
procedure
( network-hostmask net)→ip-address?
net:network?
procedure
( network-netmask net)→ip-address?
net:network?
procedure
net:network?
Added in version 0.2 of package net-ip-lib.
procedure
net:network?
procedure
( network-member netaddr)→boolean?
net:network?addr:ip-address?
procedure
( network-version net)→(or/c 46)
net:network?
procedure
( network->string net)→string?
net:network?
procedure
( network->stream net)→(stream/c ip-address? )
net:network?
These functions are specific to IPv4 addresses.
procedure
( ipv4-address? addr)→boolean?
addr:any/c
procedure
bs:bytes?
procedure
( number->ipv4-address value)→ipv4-address?
procedure
ip:string?
(make-ip-address "127.0.0.1")
(make-ip-address "127.0.0.1")
(make-ip-address "192.168.0.1")
These functions are specific to IPv6 addresses.
procedure
( ipv6-address? addr)→boolean?
addr:any/c
procedure
ip:bytes?
procedure
( number->ipv6-address value)→ipv6-address?
procedure
ip:string?
(make-ip-address "0:0:0:0:0:0:0:1")
(make-ip-address "ff:ab:cd:0:0:0:0:ff")
(make-ip-address "201:db:ee:0:0:0:0:1")
(make-ip-address "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff")