0.31 2022-11-28
- Fixed handling of the ::0/128 subnet. This is a special subnet(/address)
that is called the "unspecified address". It is not public or
routable. Reported by Dan Sherry. GH #13.
0.30 2021-03-29
- Added some more details to the security docs to include mentions of the
is_*_ip() functions too. See https://nvd.nist.gov/vuln/detail/CVE-2021-29662
for details on the potential security issues with these functions.
0.29 2021-03-29
- Fixed a typo in the POD.
0.28 2021-03-29
- Added docs about the security implications of using functions like
is_private_ip4() without _also_ calling is_ipv4() first. This was inspired
by a recent issue with the Node netmask package. See
https://sick.codes/universal-netmask-npm-package-used-by-270000-projects-vulnerable-to-octal-input-data-server-side-request-forgery-remote-file-inclusion-local-file-inclusion-and-more-cve-2021-28918/
for a write up.
0.27 2016-11-17
- If your version of Socket.pm provides a sane inet_pton, most of the is_*_ip
subroutines will use a much faster implementation. is_private_ipv4 and
is_private_ipv4 are approximately 16x faster. is_private_ipv6 and
is_public_ipv6 are about 3-4x faster. Implemented by Greg Oschwald. GitHub
PR #8.
0.26 2016-05-31
- Fixed issue where invalid IPv6 strings such as ::0000000 would be marked as
valid by is_ipv6() when using the faster inet_pton() code path (GitHub
#6). Fixed by Greg Oschwald. GitHub PR #7.
0.25 2016-02-01
- Added is_ip(), is_public_ip(), is_private_ip(), is_linklocal_ip(),
is_loopback_ip(), and is_multicast_ip(). These are similar to the existing
subroutines but are IP address family agnostic. Implemented by Greg
Oschwald. GitHub PR #5.
- The subroutines included in this module now always return a scalar when
called in list context. Previously they would generally return an empty list
when validation failed. Implemented by Greg Oschwald. GitHub PR #5.
0.24 2014-08-28
- A string with a null byte (\0) would be considered valid if the internal
implementation used inet_pton() to validate IP addresses. Fixed by Greg
Oschwald. GitHub PR #4.
0.23 2014-03-09
- Fixed is_ipv6 to correctly fail for a string like ":abcd" on platforms where
inet_pton() isn't usable. Reported by Brian Bickerton. RT #93622.
- As a side effect of the above, the code to check IPv6 addresses when
inet_pton() isn't usable is about 7-8x times faster now.
0.22 2013-12-05
- Fixed some small doc typo/formatting issues.
0.21 2013-12-05
- The 198.51.100.0/24 and 203.0.113.0/24 networks were mistakenly put in the
unroutable list, rather than the testnet list. This has been fixed. Note
that if you've just been using is_public_ipv4 in your code, there are no
changes in the results.
- Added the 6to4 anycast network - 192.88.99.0/24. Addresses in this network
are not considered public and there is now a new is_anycast_ipv4()
subroutine exported.
- Added a number of missing reserved IPv6 networks. These are the IPv4-mapped
block (::ffff:0:0/96), the discard prefix (100::/64), TEREDO (2001::/32),
ORCHID (2001:10::/28), and documentation (2001:db8::/32) IPv6
networks. There are now is_ipv4_mapped_ipv6(), is_discard_ipv6(),
is_teredo_ipv6(), is_orchid_ipv6(), and is_documentation_ipv6() subs. Note
that the TEREDO and ORCHID networks are both subnets of the larger special
network, and as such were already excluded by is_public_ipv6(), though
arguably the TEREDO addresses _should_ be considered public.
- Rewrote most of the docs to greatly reduce the amount of text and to improve
the ToC on MetaCPAN and search.cpan.org.
0.20 2013-07-13
- Add docs for the is_public_ipv6() sub that was added in 0.15. Reported by
Greg Oschwald.
0.19 2013-03-13
- Fix a deprecation warning that showed up with Perl 5.10.1, but not with
newer Perls. Reported by Iosif Fettich.
0.18 2013-02-19
- Versions 0.15 - 0.17 still had $VERSION set to 0.14. Reported by Greg
Oschwald.
0.17 2013-02-19
- Previous releases broke is_innet_ipv4 for many network formats. This support
has been restored, but only the "a.b.c.d/nn" CIDR form will be documented
going forward. All other forms are deprecated, and support for them will be
removed in a future release.
0.16 2013-02-06
- Made the check for Socket.pm stricter. On some platforms it exports an
inet_pton() that just dies when called. On other platforms it accepts
invalid input like '016.17.184.1' or '2067::1:'.
0.15 2013-02-04
- If your installed version of Socket.pm provides an inet_pton subroutine we
use that to do validation. This is about 5x faster for IPv4 addresses and 20
times faster for IPv6.
- Various unroutable networks are now recognized as non-public
addresses. Based on a patch by Greg Oschwald. (Bug#83081).
- Added is_unroutable_ipv4 exported sub.
- Added is_public_ipv6, is_private_ipv6, is_loopback_ipv6, is_multicast_ipv6,
and is_special_ipv6 subroutines.
- Fixed the is_linklocal_ipv6 method. It didn't recognize the full link-local
range properly.
- Fixed bug where '::' was not recognized as a valid IPv6 address. (Bug#81700)
- Fixed bug where ipv6 related subroutines were not untainting their return
value.
0.14 2011-01-06
- Cleaned up test suite (no code changes)
0.13 2011-01-06
- Fixed unshorted ipv6 check when ipv4 address is trailing. (Bug#64532) Thanks
to Milan Matlak <milan.matlak@sde.cz> for patch
0.12 2010-12-29
- Fixed parsing of trailing :: (such as 2001::), as that is valid This address
bug#58991 - Thanks to Alan.Chester@tekelec.com for identifying the problem.
- Also fixed incorrectly treating 2001::1: as a valid IPv6 address when it
isn't
0.11 2010-03-01
- Added support for is_innet_ipv4 - simple check to see if IP is in network.
Thanks to "Bartłomiej Syryjczyk" <bartlomiej@syryjczyk.name> for suggesting
the function
0.10 2009-06-04
- Added initial support for is_ipv6. ipv6 is new territory for me, so please
send in your bug reports to me so that I can make sure I get it done
correctly.
0.09 2009-01-30
- Removed AUTOLOAD
0.08 2007-12-06
- Fixed is_ipv4 to treat leading 0's in an ip as invalid, i.e.: 017.1.1.1 is
invalid. Thanks to Joshua D. Abraham <jabra@spl0it.org> for submitting the
patch
0.07 2007-05-17
- Added POD testing, and minor cleanup related to that
0.06 2007-05-16
- Updated contact information to be neil@neely.cx, this is a purely cosmetic change
0.05 2007-03-06
- Added is_multicast_ipv4 and is_linklocal_ipv4. Thanks to Matt Dainty
<matt@bodgit-n-scarper.com> for doing all the work
0.04 2005-04-28
- Removed perl version dependency in Makefile.PL
0.03 2005-03-04
- Minor fix to pod markup
0.02 2005-03-04
- Added is_private_ipv4 is_loopback_ipv4 is_testnet_ipv4 is_public_ipv4
0.01 2005-03-03
- Original version; created by h2xs 1.23 with options -AXn Data::Validate::IP