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

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

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

Added the nextblock() method as suggested by Robert Drake <rdrake at stayonline.net>

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

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

Fix to netmasks.t for compatability with older perls

Added cidrs2inverse() which will find the gaps in a list of blocks.

Based on a request from Howard Jones <howard.jones at network-i.net> 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 ini.cmu.edu> reported a bug that findAllNetblock would often return the same block multiple times. Fixed.

Based on requests from Alexandros M Manoussakis <amm2 at ini.cmu.edu> and Lamprecht Andreas <andreas.a.lamprecht at siemens.com> 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 itc.nrcs.usda.gov> and Anthony Pardini <tony at pardini.org> 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 pardini.org>, Frank Tegtmeyer <fte @ fte.to> and George Walker <gwalker at irish-times.com> pointed me to a bug with the contains() method. Fixed.

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

Removed '@'s from this file.

Matija Papec <matija at post.hinet.hr> 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 another.

Peter Chen <petechen at netilla.com> was concerned about using an illegal bitmask. Now checked.

Long ago, Alexandros M Manoussakis <amm2 at ini.cmu.edu> noted that could be exported even though it was in EXPORT_OK. Fixed.

Martin Lorensen <martin at lorensen.dk>: make 'any' a synonym for 'default'.

Bugfix (aslo from Martin): fix the require to accept 5.6.1

Roman Shishkin <roman at rt.mipt.ru> provided several (public exported) functions for looking at network tables:

        dumpNetworkTable()
        checkNetblock()

Inspired: changing findOuterNetblock() so it can take a block as it's IP address.

Bugfix: notice that '218.0.0.0 - 221.255.255.255' isn't a valid netmask. Reported by Dan Wright <wright at smx.pair.com>.

Bugfix: could not specify network '0.0.0.0-255.255.255.255'. Fix from Dominic Mitchell <dom at semantico.com>.

Added ->sameblock() from Martin Lorensen <martin at lorensen.dk>

Added ->cmpblocks().

Added overloaded stringification so that blocks stringify to their description.

Added overloaded block comparision so that blocks can be compared and sorted.

Added hostmask syntax a.b.c.d#hostmask - Martin Lorensen <martin at lorensen.dk>

Bugfix: t/badnets.t was missing from the MANIFEST.

Some spelling and typo mistakes fixed in the documentation.

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

Sapient Fridge <sapient.fridge at WaCkY.zzn.com> and Alexander Karptsov <karp at visti.net> sent a patch for a bug in range2cidrlist. The last IP in the range was skipped.

Sam Denton <sdenton at wantec.com> requested support for a.b.c.d/mask.mask.mask.mask.

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. :-)

Added deleteNetblock to match storeNetblock.

Carol Lerche <cafl at securify.com> contributed findOuterNetblock() and findAllNetblocks().

Kevin Baker <kevin at apnic.net> 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 msdw.com> sent a contribution which suggested that enumerate could do so by network.

Dominic Mitchell <dom at semantico.com> sent in code that suggested the creation of cidrs2contiglists() and range2cidrlist().

A couple of documentation fixes from Igor Vinokurov <igor at rtsnet.ru>.

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

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

Jochen Wiedmann <joe at ispsoft.de> 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 varesearch.com> 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.

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

http://faqchest.dynhost.com/prgm/perlu-l/perl-98/perl-9809/perl-980905/perl98093023_24256.html