Blame About-NetAddr-IP.txt

Packit 0b51a0
About NetAddr::IP
Packit 0b51a0
Packit 0b51a0
At some point a user wrote and asked the difference between 
Packit 0b51a0
NetAddr::IP and NetAddr::IP::Lite
Packit 0b51a0
Packit 0b51a0
NetAddr::IP::Lite contains only "basic" IP address operations to create IP objects, 
Packit 0b51a0
print or return their characteristics, do basic IP arithmetic, etc... a lot of 
Packit 0b51a0
which is implemented in XS in its sub-classes, whereas NetAddr::IP contains complex 
Packit 0b51a0
operations on nets, net ranges , etc... all implemented in perl. If you don't use 
Packit 0b51a0
those, you don't need the overhead of loading them, the autoloader, etc... 
Packit 0b51a0
Likewise, NetAddr::IP::Utilities and NetAddr::IP::InetBase exist to provide 
Packit 0b51a0
"very basic" ipv4 and ipv6 utilities without the overhead of their superclasses 
Packit 0b51a0
for module writers need to work with ipv4 & ipv6 "numbers" but do not need object 
Packit 0b51a0
oriented overhead or functionality. 
Packit 0b51a0
Packit 0b51a0
Take a brief look at the SRC of each to see what is supported in each without 
Packit 0b51a0
having to wade through the man pages to figure out where the overlap is. 
Packit 0b51a0
Basically the modules are broken down into these functional areas that cover 
Packit 0b51a0
various aspects of manipulating IP numbers.
Packit 0b51a0
Packit 0b51a0
NetAddr::IP::InetBase mostly XS
Packit 0b51a0
net to text conversion routines
Packit 0b51a0
        inet_aton
Packit 0b51a0
        inet_ntoa
Packit 0b51a0
        ipv6_aton
Packit 0b51a0
        ipv6_ntoa
Packit 0b51a0
        ipv6_n2x
Packit 0b51a0
        ipv6_n2d
Packit 0b51a0
        inet_any2n
Packit 0b51a0
        inet_n2dx
Packit 0b51a0
        inet_n2ad
Packit 0b51a0
        inet_ntop
Packit 0b51a0
        inet_pton
Packit 0b51a0
	etc...
Packit 0b51a0
Packit 0b51a0
NetAddr::IP::Util adds to above, mostly XS
Packit 0b51a0
	 above + ip arithmetic
Packit 0b51a0
        addconst
Packit 0b51a0
        add128
Packit 0b51a0
        sub128
Packit 0b51a0
        bin2bcd
Packit 0b51a0
        bcd2bin
Packit 0b51a0
        ipv4to6
Packit 0b51a0
        mask4to6
Packit 0b51a0
        ipanyto6
Packit 0b51a0
        maskanyto6
Packit 0b51a0
        ipv6to4
Packit 0b51a0
        bin2bcdn
Packit 0b51a0
        bcdn2txt
Packit 0b51a0
        bcdn2bin
Packit 0b51a0
        comp128
Packit 0b51a0
        naip_gethostbyname (platform/socket independent)
Packit 0b51a0
	etc...
Packit 0b51a0
Packit 0b51a0
NetAddr::IP::Lite adds to above
Packit 0b51a0
mostly 1 or 2 line functions and/or calls to sub classes
Packit 0b51a0
	all the "new" functions
Packit 0b51a0
	all overload functions ( + - ++ -- = print eq ne == > >= < <= cmp)
Packit 0b51a0
	  "copy"  (clone rather than reference)
Packit 0b51a0
  return of IP parameters such as
Packit 0b51a0
	  broadcast
Packit 0b51a0
	  network
Packit 0b51a0
	  addr
Packit 0b51a0
	  mask
Packit 0b51a0
	  masklen
Packit 0b51a0
	  bits
Packit 0b51a0
	  version
Packit 0b51a0
	  cidr
Packit 0b51a0
	  aton
Packit 0b51a0
	  range
Packit 0b51a0
	  numeric
Packit 0b51a0
	  bigint
Packit 0b51a0
	  contains
Packit 0b51a0
	  within
Packit 0b51a0
	  first
Packit 0b51a0
	  last
Packit 0b51a0
	  nth
Packit 0b51a0
	  num
Packit 0b51a0
Packit 0b51a0
NetAddr::IP adds to above
Packit 0b51a0
	  wildcard
Packit 0b51a0
	  short
Packit 0b51a0
	  full
Packit 0b51a0
	  full6
Packit 0b51a0
	  splitref
Packit 0b51a0
	  split
Packit 0b51a0
	  rsplit
Packit 0b51a0
	  hostenum
Packit 0b51a0
	  compact
Packit 0b51a0
	  compactref
Packit 0b51a0
	  coalesce
Packit 0b51a0
	  re
Packit 0b51a0
	  re6
Packit 0b51a0
Packit 0b51a0
enjoy...