Seancfoley IPAddress Versions Save

Java library for handling IP addresses and subnets, both IPv4 and IPv6

v5.4.0

1 year ago
  • added PrefixBlockAllocator for automatic CIDR prefix block allocation
  • added AddedTree and AssociativeAddedTree classes for expanded constructAddedNodesTree methods
  • added getBlockSize and getBitsForCount in AddressItem
  • added matchUnordered and matchOrdered in Address
  • eliminated invalid AddressValueException when joining a range with the IPv4 max value to an IPv6 range, issue #86
  • fix to generation of strings from parsed address data, issue #87
  • fix to IPv4 address primitive int upper value generation, issue #96

v5.3.4

2 years ago
  • a fix to avoid ClassCastException when converting IPv4-mapped address to java.net.Inet6Address, issue #73
  • fixed the creation of HostName from an unresolved compressed-IPv6 socket address, issue #74
  • added IPAddressString.isIPv4Mapped for issue #75
  • fixed a class-loading issue with string parsing, issue #79
  • removed AddressDivision.getDivisionValueCount() and AddressDivision.getDivisionPrefixCount(int) because of potential overflow with divisions 63 or 64 bits long. If you have a segment, use getValueCount(), or with IPAddressSegment use getPrefixValueCount(int), which both return int. Otherwise, use getPrefixCount(int) or getCount() which return BigInteger
  • fixed issues with comparing non-standard division groupings with address comparators
  • added verification when host-masking multiple-valued segments
  • added verification when splitting IPv6AddressSegment
  • fixed check when reversing per-byte multiple-valued division
  • fixed trie-printing method option withNonAddedKeys
  • fixed an issue with serialization of parsed hosts with qualifiers
  • added control over parsing empty zones (a zone specifier followed by no zone)
  • added a small fix to host name parsing some unusual host names
  • a fix to IPv4AddressSection.toMaxHost
  • fixed a rare synchronization issue when generating division strings in AddressDivisionBase

v5.3.3

3 years ago
  • more flexible and efficient IPv6 zone handling
  • addresses issue #48, converting prefixed addresses with zone to Inet6Address
  • more efficient merging

v5.3.2

3 years ago
  • new longestPrefixMatch and longestPrefixMatchNode methods in AddressTrie, AddressTrieMap and AddressTrieSet, for more efficient matching without using the linked list from elementsContaining
  • added binary string parsing for IPv4 and IPv6 (see javadoc for IPAddressString for supported formats), and producing binary segmented strings with toSegmentedBinaryString
  • added support for parsing strings with uppercase hex 0X and binary 0B
  • improved performance of mergeToPrefixBlocks and mergeToSequentialBlocks, also resulting in a different ordering of the result, sorted by lower value. The old ordering remains attainable with the comparator IPAddressSegmentSeries.getPrefixLenComparator
  • added asNewTrie to TrieNode to create a new trie which is a copy of the sub-trie with the node as root
  • added IPAddressSeqRange.extend(IPAddressRange) to extend ranges more efficiently
  • added IPAddress.applyToBounds to use covering and spanning methods with multiple addresses or subnets, not just two
  • added IPAddressString.prefixContains(IPAddressString) for quick prefix-based containment checks
  • fixed inconsistency between prefixEquals in IPAddressString vs IPAddress with addresses that have no prefix length
  • fixed issue in IPAddressString.prefixEquals involving prefix not on segment boundary
  • fixed issue with spanWithPrefixBlocks not splitting up subnets with multiple prefix blocks
  • fix to string parsing control with allowsReverseRange, also added missing allowBase85
  • fix to issue #41, duplicate property key
  • fix to issue #44, wrong super method call
  • fix to issue #46, wrong boundary check incrementing IPv6 segment at index 2

v5.3.1

3 years ago

Fixes reversed sub-node order with trie block size iterator

v5.3.0

3 years ago

This version introduces address tries, associative address tries, address sets backed by address tries, and maps backed by associative address tries

  • added AddressTrie and its subclasses for IPv4, IPv6 and MAC
  • added AssociativeAddressTrie and its subclasses for IPv4, IPv6 and MAC
  • tries can be used as Java collections framework navigable set
  • associative tries can be used as Java collections framework navigable map
  • added testBit and isOneBit methods to all series and segments
  • fixed IPAddressSeqRange join(IPAddressSeqRange...) for issue #37
  • added OSGI manifest details for OSGI support for issue #33

v5.2.1

4 years ago

Minor fixes to IPv4/v6 conversions 6 to 4, isatap, and embedded address extraction.

v5.2.0

4 years ago

This version introduces methods for Java 8 functional-style operations.

  • added stream methods for addresses, address sections, address segments, and ip address sequential ranges: stream, prefixStream, prefixStream(int prefixLength), prefixBlockStream, prefixBlockStream(int prefixLength), blockStream(int segmentCount), sequentialBlockStream, segmentsStream
  • added corresponding spliterator methods: spliterator, prefixSpliterator, prefixSpliterator(int prefixLength), prefixBlockSpliterator, prefixBlockSpliterator(int prefixLength), blockSpliterator(int segmentCount), sequentialBlockSpliterator, segmentsSpliterator
  • added functions to create a single stream from multiple spliterators in AddressComponentRange:
    • <T extends AddressComponent> Stream<T> stream(Function<T, Stream<? extends T>> addrStreamFunc, T ...components)
    • <T extends AddressComponent> Stream<T> stream(Function<T, Stream<? extends T>> addrStreamFunc, Collection<? extends T> components)
  • added coverWithPrefixBlock method to find single covering prefix block, the smallest prefix block covering two subnets or addresses
  • added IPAddressString and HostName parsed mask access through getMask method
  • made sub-typing of address classes easier by loosening restrictions on using multiple network objects
  • altered network mask with prefix length so that it is single host
  • fixed a serialization issue involving IPAddressString instances with masks
  • fixed a threading issue with IPAddressString.getDivisionGrouping
  • fixed issue #32, mergeToPrefixBlocks exception on /1 prefix blocks

v4.3.3

4 years ago
  • fix to issue #32, mergePrefixBlocks exception on /1 prefix blocks
  • fixed 4.3.2 javadoc

v5.1.0

4 years ago

Mostly parsing and masking improvements.

  • getSequentialRange() method added to IPAddressString for direct access to sequential range
  • improved handling of masking and bitwise-oring subnets. isMaskCompatibleWithRange replaced by maskRange, same with bitwise-or.
  • getDivisionGrouping() method added to IPAddressString for "as-is" parsing
  • toString() for division strings adjusted, no longer using '*' due to varying bit lengths for divisions and potentially no segment separator to indicate bit length, also using radix matching parsed string
  • reverse ranges allowed in parsed strings
  • improved control/support of inferred range boundaries
  • fix to leading zeros detection for issue #20
  • fix to generation of IPv6 sections from bytes
  • adjusted IPAddress.toAddressString() to improve toHostAddress() in resulting IPAddressString
  • added toZeroNetwork() to get IP address with network bits zeroed
  • added getNetworkMask() and getHostMask() to IPAddressSegmentSeries as requested in issue #27
  • a few other minor fixes