0.200003 2016-04-11
- The Teredo range is no longer removed from the database when
"remove_reserved_networks" is enabled. This range is globally routable and
aliased to the IPv4 range when "alias_ipv6_to_ipv4" is enabled. Previously
this alias would be removed if both "alias_ipv6_to_ipv4" and
"remove_reserved_networks" were enabled.
- Allow changing the record size when unfreezing a frozen tree
0.200002 2016-04-07
- The in-memory tree now has a root record rather than a root node. This fixes
the insertion of a /0 network (GitHub #55) and a segmentation fault when
merging two /1 networks into a /0 network (GitHub #58). Although insertions
of /0 are allowed (e.g., to create a default record for the database),
writing, iterating, and freezing a database that only contains a single /0
data record are currently forbidden.
- Fixed a bug where an incorrect node_count could be written to the database,
causing invalid metadata errors when reading it.
- The node_count() method on the Tree object now always recalculates the node
count rather than using a possibly incorrect cached value.
0.200001 2016-04-04
[ BACKWARDS INCOMPATIBILITIES ]
- Inserts into IPv4 aliased subtrees are no longer allowed when
alias_ipv6_to_ipv4 is enabled. When using an aliased tree, you will only be
able to insert IPv4 networks into ::0.0.0.0/96. If you are inserting these
addresses using IPv4 notation, not IPv6, this is the default location and
the change will not affect you. The reason for this is that inserting into
the aliased subnets leads to complications in determining the correct tree
depth for the insert and could also cause unintentional overwriting of data.
[ BUGFIXES ]
- Some memory leaks when throwing an exception were fixed.
0.200000 2016-03-31
[ BACKWARDS INCOMPATIBILITIES ]
- When calling $tree->write_tree(), this module now defaults to removing
reserved and private networks from the tree before writing the tree to the
filehandle. If you want to create a tree that contains private networks, set
the constructor parameter "remove_reserved_networks" to false. This change
of behavior was done to allow code that previously used
Net::Works::Network->range_as_subnets() to use the new insert_range() method
added in this release.
- When recursively merging a subtree, alias nodes are no longer followed.
Although this is a behavior change, it should not affect most users are
previously aliasing was done when the tree was written.
[ ENHANCEMENTS ]
- This module no longer used Net::Works internally. This was done to improve
performance.
- Added MaxMind::DB::Writer::Tree->insert_range() method to provide a
mechanism for adding IP address ranges that are not well-defined networks.
- Added MaxMind::DB::Writer::Tree->remove_network() to allow for removing a
network from a tree.
[ BUGFIXES ]
- Previously, inserting IPv6-mapped IPv4 addresses into a IPv6 tree with IPv4
aliasing enabled could result in a corrupt search tree unless the deprecated
"::a.b.c.d" mapping was used. This happened because the IPv4 aliasing was
only done after all of the data had been inserted.
0.100007 2016-03-24
- MaxMind::DB::Writer::Tree->new now accepts a merge_strategy parameter. When
merge_record_collisions is set, the default merge strategy is "toplevel",
which only merges the top level of the record hash. A new "recurse" merge
strategy has been added, which recursively merged the records data
structure, including both arrays and hashes. Please see the documentation
for more details.
0.100006 2016-01-18
- The documentation incorrectly stated the the MaxMind::DB::Writer::Tree->new
parameter "map_key_type_callback" was optional. It is actually required.
0.100005 2015-10-26
- $tree->insert_network now takes an optional additional-arguments hash
reference parameter. If this hash contains a truthy value for the
force_overwrite key, any data for the network will be overwritten even when
merge_record_collisions is enabled.
0.100004 2015-07-15
- Previously two equivalent data structures added to a database could end up
with different keys, causing both to be added to the final file separately.
The key generation was updated to reduce the likelihood of this happening.
0.100003 2015-06-04
- Fixed a bug in the data thawing code that incorrectly incremented the
SV referencing the HV rather than the HV. This could cause warnings about
attempts to free an unreferenced SV.
- Fixed memory leaks on merge failures.
- Minor code cleanups.
0.100002 2015-04-23
- Fixed test suite on OS X: Altered to cope with different Net::Works network
rendering on OS X
0.100001 2015-03-12
- Updated to the latest versions of the Math::Int128 (0.21) and Math::Int64
(0.51) C API integration code, as well as depending on the newest version of
the module from Perl.
0.080000 2015-03-04
- Implemented $tree->freeze_tree and
MaxMind::DB::Writer::Tree->new_from_frozen_tree methods. This provides a way
of passing the tree between different processes.
- Made the attribute reader methods for all values passed to the constructor
public.
- Added some docs on how insert order affects overlapping networks. GitHub
#18.
- Fixed memory leaks when adding data to the tree.
- Reduced the size of various structs used in the C code to reduce memory
usage.
0.060000 2014-11-11
- The map_key_type_callback argument for the MaxMind::DB::Writer::Tree class
is now required. In some use cases it's not really used but in the most
common use case leaving it out simply leads to confusing errors when
attempting to write the tree to disk. GH #10.
0.050007 2014-10-20
- The writer now iterates over the search tree in depth-first order when the
MaxMind::DB::Writer::Tree->iterate method is called. This means that
networks are seen in IP address order.
0.050006 2014-07-28
- The writer now throw an error when writing out the database if it would try
to write a record value in the search tree that is larger than the search
tree can handle. For example, if your record size is 24 bits, you cannot
write a value larger than (2^24)-1. Fixed by Greg Oschwald.
- The Build.PL file shipped with this distro now dies if you try to run it on
Windows, since this module simply doesn't work on Windows.
0.050005 2014-07-03
- The merge-on-collision feature was fairly broken. Fixed by Greg Oschwald.
0.050004 2014-05-27
- First public release