Hi kj,
On Wed, Jun 03, 2009 at 09:35:15AM +0100, kj wrote:
I need to feed subnets into a database in the format 192.168.0.% or
192.168.%.%
Whenever I find myself trying to do something like this, I stop and
consider if my database design is optimal.
You can store an IPv4 address as a 32-bit unsigned integer, and you
can store an IPv4 network as one of those together with a prefix
between 0 and 32. You can then do operations on these.
However...
which means, for example, 192.168.0.0/23 should break down into:
192.168.0.%
192.168.1.%
Does anyone know of a way to convert this?
Perl's Net::Netmask module helps:
$ perl -MNet::Netmask -e '$block = new Net::Netmask(192.168.0.0/23); print
join(\n, $block-enumerate(24)), \n;'
192.168.0.0
192.168.1.0
After adding some validation, you could replace the trailing '.0'
with '.%'.
Cheers,
Andy
--
http://bitfolk.com/ -- No-nonsense VPS hosting
I have just recently purchased a Feathercraft Big Kahuna kayak
does it have a heater?
Of course not. Everyone knows you can't have your kayak and heat it.
-- James Fidell
signature.asc
Description: Digital signature