Revision history for Perl module Net::Netmask

2.0001 2021-03-29
 - BUGFIX: Return a netmask length of 0 whenever parsing an invalid
 - Add "safe_new()" method to make it more clear what new2() does. Note
   that this executes the same code as new2().

2.0000 2021-03-29

 - SECURITY: IPv4 addresses with leading zeros are no longer allowed.
   They will return a parse error like any invalid IP address.
 - SECURITY: 10.0.0, 10.0, and 10 address portions now by default return
   a parse error.  This can be overriden by calling new() like:
     Net::Netmask->new2('10/8', shortnet => 1);     # or new()
     Net::Netmask->new2('10', '8', shortnet => 1);  # or new()

   There is also a package-level variable that can change the default
   when "shortnet" isn't used passed into the constructor. Usage:
     local $Net::Netmask::SHORTNET_DEFAULT = 1;
     Net::Netmask->new('10', '8');  # or new2()

1.9104 2018-06-27

 - IPv6 support is now GA!

1.9104 2018-06-26

 - DEV release only
 - IPv6 support
 - Add Code of Conduct

1.9103 2018-06-18

 - Use ASCII-like regex matching (Github #4)
 - Convert tests to Test2
 - Pass perlcritic tests
 - Pass Kwalitee tests
 - Add contributor information
 - Add protocol() method (just a stub today that will always return

1.9102 2018-06-18

 - DEV release only
 - Contains most changes that made it to 1.9103.

1.9101 2018-06-02

 - fix precision issue on long-double platforms (BAYMAX)
 - Convert to use Dist::Zilla
 - Formatting changes

1.9100 2018-06-02

 - DEV release only
 - fix precision issue on long-double platforms (BAYMAX)
 - Convert to dist.zilla
 - Minor formatting changes

1.9022 2015-05-05

 - Changes from adamherzog: minor cleanups plus
 - A bunch of addtional tests
 - A couple of small code fixes

1.9021 2014-07-17

 - Spelling fix in documentation.

1.9019 2013-10-01

 - Rename $b to $bits so that netmask can be sorted.  Change mostly

1.9018 2013-09-26

 - Minor MANIFEST fix.

1.9017 2013-09-20

 - Add network split() function.
 - Re-arrange the distribution a bit.

1.9016 2011-03-22

 - Fix bug #46996: warnings issued for bad input.
 - Fix bug #43348: use POSIX::floor() instead of int()
 - Rewrite netmask.t to use Test::More

1.9015 2006-11-30

 - Fix bug # 22662 reported by grjones at gmail: cidrs2inverse
   wouldn't notice /32-sized leftovers.

1.9014 2006-10-13

 - Fix bug # 22085 reported by grjones at gmail: cidrs2inverse
 - wouldn't notice /32-sized holes.

1.9013 2006-09-06

 - Added the nextblock() method as suggested by Robert Drake <rdrake at>

 - Bugfix: it couldn't parse 10/8 or 127/8

1.9011 2004-05-31

 - Some speed improvements from Todd R. Eigenschink <todd at>

1.9009 2004-04-12

 - Fix to netmasks.t for compatability with older perls

1.9008 2004-04-06

 - Added cidrs2inverse() which will find the gaps in a list of blocks.
 - Based on a request from Howard Jones <howard.jones at>
   the tag() method was added.  It allows you to store your own data in
   a Net::Netmask object.  (Of course, you could have anyway as long as you
   didn't use the keys 'IBASE' or 'BITS')
 - Long ago, Alexandros M Manoussakis <amm2 at> reported a bug
   that findAllNetblock would often return the same block multiple times.  
 - Based on requests from Alexandros M Manoussakis <amm2 at>
   and Lamprecht Andreas <andreas.a.lamprecht at> the
   undefined behavior for overlapping blocks with cidrs2contiglists
   is no longer.  Such blocks will be in the same sublist.
 - Based on a requests from Tom Rudnick <trudnick at>
   and Anthony Pardini <tony at> new function was added:
   cidrs2cidrs().  cidrs2cidrs will condense a set of netblocks by
   combining blocks together that make up larger blocks.
 - Anthony Pardini <tony at>, Frank Tegtmeyer <fte @>
   and George Walker <gwalker at> pointed me to a bug
   with the contains() method.  Fixed.

1.9007 2004-01-01

 - At Max Baker <max at>'s request, the "require 5.6.1" 
   was removed for better compatability with older perl versions.

1.9006 2003-12-05

 - Removed '@'s from this file.

1.9005 2003-11-29

 - Matija Papec <matija at> suggested that I do a
   Schwartzian transform on the IP address sort function.  I 
   tried it.  It's faster.  Sort function replaced.

 - Added a sort_network_blocks function.
 - Added a contains() function to test if one block fits within
 - Peter Chen <petechen at> was concerned about 
   using an illegal bitmask.  Now checked.
 - Long ago, Alexandros M Manoussakis <amm2 at> noted that
   could be exported even though it was in EXPORT_OK.  Fixed.

1.9004 2003-05-28

 - Martin Lorensen <martin at>: make 'any' a synonym for
 - Bugfix (aslo from Martin): fix the require to accept 5.6.1

1.9003 2003-05-26

 - Roman Shishkin <roman at> provided several (public exported)
   functions for looking at network tables:
   Inspired: changing findOuterNetblock() so it can take a block
   as it's IP address.
 - Bugfix: notice that ' -' isn't a valid
   netmask.  Reported by Dan Wright <wright at>.
 - Bugfix: could not specify network ''.  Fix
   from Dominic Mitchell <dom at>.
 - Added ->sameblock() from Martin Lorensen <martin at>
 - Added ->cmpblocks().
 - Added overloaded stringification so that blocks stringify to their
 - Added overloaded block comparision so that blocks can be compared and
 - Added hostmask syntax a.b.c.d#hostmask - Martin Lorensen <martin at>
 - Bugfix: t/badnets.t was missing from the MANIFEST.
 - Some spelling and typo mistakes fixed in the documentation.

1.9002 2001-11-12

 - Change the license to make the Debian folks happy.  Interface through
   Jonas Smedegaard <dr at>.

1.9001 2001-09-29

 - Sapient Fridge <sapient.fridge at> and Alexander Karptsov
   <karp at> sent a patch for a bug in range2cidrlist.  The
   last IP in the range was skipped.
 - Sam Denton <sdenton at> requested support for 
 - Sam also sent a request that I include the world's fastest
   sort-by-ip-address-in-perl function in Net::Netmask as there didn't
   seem to be a better place to put it.  I've included it.  The function
   in question was found/benchmarked by John Porter and written about
   in the Perl-Users Digest, Issue 3860, Volume 8.
 - Sam sent a patch to eliminate a couple of trailing spaces in
   the error codes.
 - My IP address are now 216.240.32/19 instead of 140.174.82/19 and
   thus I've changed the examples in the pod.  :-)

1.9 2001-05-15

 - Added deleteNetblock to match storeNetblock.
 - Carol Lerche <cafl at> contributed findOuterNetblock()
   and findAllNetblocks().
 - Kevin Baker <kevin at> sent in patches that suggested a new
   handling of error conditions; extra error conditions to test for; and
   a test script to exercise the error conditions.
 - Bruce Peikon <Bruce.Peikon at> sent a contribution which suggested
   that enumerate could do so by network.
 - Dominic Mitchell <dom at> sent in code that suggested the 
   creation of cidrs2contiglists() and range2cidrlist().
 - A couple of documentation fixes from Igor Vinokurov <igor at>.

1.8 1999-09-20

 - Modified the match() method to return the position within the block.

1.7 1999-09-15

 - Added support for understanding network blocks in the form that the
   whois database uses: FirstIP-LastIP.

1.6 1999-03-27

 - Jochen Wiedmann <joe at> contributed a function to test an IP
   address and a block to test see if the IP address is in the block. 
   Accordingly, there is now a match() method.
 - Rob Walker <rob at> contributed a function to return the
   first usable adress in a block.  Instead of using that, I added a function
   to return the nth address in a block.  There is now an nth() function.

1.4 1998-11-29

 - Jean-Luc Szpyrka <Jean-Luc.Szpyrka at> requested that a
   function be provided that returns the oposite of a netmask.  Accordingly,
   there is now the hostmask() method.