Module inet.ipaddr
Package inet.ipaddr

Interface AddressSection

All Superinterfaces:
AddressComponent, AddressComponentRange, AddressDivisionSeries, AddressItem, AddressItemRange, AddressSegmentSeries, AddressStringDivisionSeries, Comparable<AddressItem>, Serializable
All Known Implementing Classes:
IPAddressSection, IPv4AddressSection, IPv6AddressSection, MACAddressSection

public interface AddressSection extends AddressSegmentSeries
Author:
sfoley
  • Method Details

    • contains

      boolean contains(AddressSection other)
      Determines if one section contains another.

      Sections must have the same number of segments to be comparable.

      For sections which are aware of their position in an address (IPv6 and MAC), their respective positions must match to be comparable.

      Parameters:
      other -
      Returns:
      whether this section contains the given address section
    • overlaps

      boolean overlaps(AddressSection other)
      Determines if one section overlaps another.

      Sections must have the same number of segments to be comparable.

      For sections which are aware of their position in an address (IPv6 and MAC), their respective positions must match to be comparable.

      Parameters:
      other -
      Returns:
      whether this section overlaps the given address section
    • enumerate

      BigInteger enumerate(AddressSection other)
      Indicates where an address section sits relative to the ordering of individual address sections within this section.

      Determines how many address section elements precede the given address section element, if the given address section is within this address section. If above the range, it is the distance to the upper boundary added to the address section count less one, and if below the range, the distance to the lower boundary.

      In other words, if the given address section is not in this section but above it, returns the number of individual address sections preceding the given address section from the upper section boundary, added to one less than the total number of individual address sections within. If the given address section is not in this section but below it, returns the number of individual address sections following the given address section to the lower section boundary.

      enumerate returns null when the argument is a multi-valued section. The argument must be an individual address section.

      When this address section is also single-valued, the returned value is the distance (difference) between this address section and the argument address section.

      enumerate is the inverse of the increment method:

      • section.enumerate(section.increment(inc)) = inc
      • section.increment(section.enumerate(individualSection)) = individualSection
      If the given address section does not have the same version or type as this address section, then null is returned. If the given address section is the same version and type, but has a different segment count, then SizeMismatchException is thrown.
    • prefixEquals

      boolean prefixEquals(AddressSection other)
      Determines if the argument section matches this section up to the prefix length of this section.

      The entire prefix of this section must be present in the other section to be comparable.

      For sections which are aware of their position in an address (IPv6 and MAC), the argument section must have the same or an earlier position in the address to match all prefix segments of this section, and the matching is lined up relative to the position.

      Parameters:
      other -
      Returns:
      whether the argument section has the same address section prefix as this
    • getLower

      AddressSection getLower()
      Description copied from interface: AddressSegmentSeries
      If this represents a series with ranging values, returns a series representing the lower values of the range. If this represents an series with a single value in each segment, returns this.
      Specified by:
      getLower in interface AddressComponentRange
      Specified by:
      getLower in interface AddressSegmentSeries
      Returns:
    • getUpper

      AddressSection getUpper()
      Description copied from interface: AddressSegmentSeries
      If this represents a series with ranging values, returns a series representing the upper values of the range. If this represents a series with a single value in each segment, returns this.
      Specified by:
      getUpper in interface AddressComponentRange
      Specified by:
      getUpper in interface AddressSegmentSeries
      Returns:
    • reverseSegments

      AddressSection reverseSegments()
      Description copied from interface: AddressSegmentSeries
      Returns a new segment series with the segments reversed. This does not throw IncompatibleAddressException since all address series can reverse their segments.
      Specified by:
      reverseSegments in interface AddressSegmentSeries
      Returns:
    • reverseBits

      AddressSection reverseBits(boolean perByte)
      Description copied from interface: AddressSegmentSeries
      Returns a new segment series with the bits reversed.
      Specified by:
      reverseBits in interface AddressComponent
      Specified by:
      reverseBits in interface AddressSegmentSeries
      Parameters:
      perByte - if true, only the bits in each byte are reversed, if false, then all bits in the component are reversed
      Returns:
    • reverseBytes

      AddressSection reverseBytes()
      Description copied from interface: AddressSegmentSeries
      Returns a new segment series with the bytes reversed.
      Specified by:
      reverseBytes in interface AddressComponent
      Specified by:
      reverseBytes in interface AddressSegmentSeries
      Returns:
    • reverseBytesPerSegment

      AddressSection reverseBytesPerSegment()
      Description copied from interface: AddressSegmentSeries
      Returns a new segment series with the bytes reversed within each segment.
      Specified by:
      reverseBytesPerSegment in interface AddressSegmentSeries
      Returns:
    • toPrefixBlock

      AddressSection toPrefixBlock()
      Description copied from interface: AddressSegmentSeries
      If this series has a prefix length, returns the block for that prefix. Otherwise, this address series is returned.
      Specified by:
      toPrefixBlock in interface AddressSegmentSeries
      Returns:
      the block of address series for the prefix length
    • removePrefixLength

      @Deprecated AddressSection removePrefixLength()
      Deprecated.
      Description copied from interface: AddressSegmentSeries
      Removes the prefix length while zeroing out the bits beyond the prefix.

      If the series already has a prefix length, the bits outside the prefix become zero. Use AddressSegmentSeries.withoutPrefixLength() to remove the prefix length without changing the series values.

      Equivalent to calling removePrefixLength(true)

      Specified by:
      removePrefixLength in interface AddressSegmentSeries
      Returns:
      See Also:
    • withoutPrefixLength

      AddressSection withoutPrefixLength()
      Description copied from interface: AddressSegmentSeries
      Provides the same address with no prefix. The values remain unchanged.

      Use AddressSegmentSeries.removePrefixLength() as an alternative that deletes the host at the same time by zeroing the host values.

      Specified by:
      withoutPrefixLength in interface AddressSegmentSeries
    • removePrefixLength

      @Deprecated AddressSection removePrefixLength(boolean zeroed)
      Deprecated.
      Description copied from interface: AddressSegmentSeries
      Removes the prefix length. If zeroed is false, the bits that were host bits do not become zero, unlike AddressSegmentSeries.removePrefixLength()
      Specified by:
      removePrefixLength in interface AddressSegmentSeries
      Parameters:
      zeroed - whether the bits outside the prefix become zero
      Returns:
    • adjustPrefixBySegment

      AddressSection adjustPrefixBySegment(boolean nextSegment)
      Description copied from interface: AddressSegmentSeries
      Increases or decreases prefix length to the next segment boundary.

      Follows the same rules as AddressSegmentSeries.adjustPrefixLength(int):
      When prefix length is increased, the bits moved within the prefix become zero. When a prefix length is decreased, the bits moved outside the prefix become zero. To avoid the zeroing behaviour, use AddressSegmentSeries.adjustPrefixBySegment(boolean, boolean) with second arg false.

      Specified by:
      adjustPrefixBySegment in interface AddressSegmentSeries
      Parameters:
      nextSegment - whether to move prefix to previous or following segment boundary
      Returns:
    • adjustPrefixBySegment

      AddressSection adjustPrefixBySegment(boolean nextSegment, boolean zeroed)
      Description copied from interface: AddressSegmentSeries
      Increases or decreases prefix length to the next segment boundary.
      Specified by:
      adjustPrefixBySegment in interface AddressSegmentSeries
      Parameters:
      nextSegment - whether to move prefix to previous or following segment boundary
      zeroed - whether the bits that move from one side of the prefix to the other become zero or retain their original values
      Returns:
    • adjustPrefixLength

      AddressSection adjustPrefixLength(int adjustment)
      Description copied from interface: AddressSegmentSeries
      Increases or decreases prefix length by the given increment.

      When prefix length is increased, the bits moved within the prefix become zero. When the prefix is extended beyond the segment series boundary, it is removed. When a prefix length is decreased, the bits moved outside the prefix become zero. To avoid the zeroing behaviour, use AddressSegmentSeries.adjustPrefixLength(int, boolean) with second arg false.

      Specified by:
      adjustPrefixLength in interface AddressSegmentSeries
      Parameters:
      adjustment -
      Returns:
    • adjustPrefixLength

      AddressSection adjustPrefixLength(int adjustment, boolean zeroed)
      Description copied from interface: AddressSegmentSeries
      Increases or decreases prefix length by the given increment.
      Specified by:
      adjustPrefixLength in interface AddressSegmentSeries
      Parameters:
      adjustment - the increment
      zeroed - whether the bits that move from one side of the prefix to the other become zero or retain their original values
      Returns:
    • setPrefixLength

      AddressSection setPrefixLength(int prefixLength)
      Description copied from interface: AddressSegmentSeries
      Sets the prefix length.

      If this series has a prefix length, and the prefix length is increased, the bits moved within the prefix become zero. For an alternative that does not set bits to zero, use AddressSegmentSeries.setPrefixLength(int, boolean) with the second argument as false.

      When the prefix is extended beyond the segment series boundary, it is removed.

      The bits that move from one side of the prefix length to the other (ie bits moved into the prefix or outside the prefix) are zeroed.

      Specified by:
      setPrefixLength in interface AddressSegmentSeries
      Parameters:
      prefixLength -
      Returns:
    • setPrefixLength

      AddressSection setPrefixLength(int prefixLength, boolean zeroed)
      Description copied from interface: AddressSegmentSeries
      Sets the prefix length.

      When the prefix is extended beyond the segment series boundary, it is removed.

      Specified by:
      setPrefixLength in interface AddressSegmentSeries
      Parameters:
      zeroed - whether the bits that move from one side of the prefix length to the other (ie bits moved into the prefix or outside the prefix) are zeroed.
      Returns:
    • applyPrefixLength

      @Deprecated AddressSection applyPrefixLength(int networkPrefixLength)
      Deprecated.
      Description copied from interface: AddressSegmentSeries
      Applies the given prefix length to create a new segment series.

      Similar to AddressSegmentSeries.setPrefixLength(int) except that prefix lengths are never increased. When this series already has a prefix length that is less than or equal to the requested prefix length, this series is returned.

      Otherwise the returned series has the given prefix length.

      The bits moved outside the prefix will become zero in the returned series.

      Specified by:
      applyPrefixLength in interface AddressSegmentSeries
      Parameters:
      networkPrefixLength -
      Returns:
      See Also:
    • getIterable

      Iterable<? extends AddressSection> getIterable()
      Description copied from interface: AddressComponentRange
      Useful for using an instance in a "for-each loop". Otherwise just call AddressComponentRange.iterator() directly.
      Specified by:
      getIterable in interface AddressComponentRange
      Specified by:
      getIterable in interface AddressSegmentSeries
      Returns:
    • iterator

      Iterator<? extends AddressSection> iterator()
      Description copied from interface: AddressComponentRange
      Iterates through the individual address components.

      An address component can represent an individual segment, address, or section, or it can represent multiple, typically a subnet of addresses or a range of segment or section values.

      Call AddressItem.isMultiple() to determine if this instance represents multiple, or AddressItem.getCount() for the count.

      Specified by:
      iterator in interface AddressComponentRange
      Specified by:
      iterator in interface AddressSegmentSeries
      Returns:
    • spliterator

      Description copied from interface: AddressComponentRange
      Partitions and traverses through the individual address components.
      Specified by:
      spliterator in interface AddressComponent
      Specified by:
      spliterator in interface AddressComponentRange
      Specified by:
      spliterator in interface AddressSegmentSeries
      Returns:
    • stream

      Stream<? extends AddressSection> stream()
      Description copied from interface: AddressComponentRange
      Returns a sequential stream of the individual address components. For a parallel stream, call BaseStream.parallel() on the returned stream.
      Specified by:
      stream in interface AddressComponentRange
      Specified by:
      stream in interface AddressSegmentSeries
      Returns:
    • prefixIterator

      Iterator<? extends AddressSection> prefixIterator()
      Description copied from interface: AddressSegmentSeries
      Iterates through the individual prefixes.

      If the series has no prefix length, then this is equivalent to AddressSegmentSeries.iterator()

      Specified by:
      prefixIterator in interface AddressSegmentSeries
    • prefixSpliterator

      AddressComponentSpliterator<? extends AddressSection> prefixSpliterator()
      Description copied from interface: AddressSegmentSeries
      Partitions and traverses through the individual prefixes for the prefix length of this series.
      Specified by:
      prefixSpliterator in interface AddressSegmentSeries
      Returns:
    • prefixStream

      Stream<? extends AddressSection> prefixStream()
      Description copied from interface: AddressSegmentSeries
      Returns a sequential stream of the individual prefixes for the prefix length of this series. For a parallel stream, call BaseStream.parallel() on the returned stream.
      Specified by:
      prefixStream in interface AddressSegmentSeries
      Returns:
    • prefixBlockIterator

      Iterator<? extends AddressSection> prefixBlockIterator()
      Description copied from interface: AddressSegmentSeries
      Iterates through the individual prefix blocks.

      If the series has no prefix length, then this is equivalent to AddressSegmentSeries.iterator()

      Specified by:
      prefixBlockIterator in interface AddressSegmentSeries
    • prefixBlockSpliterator

      AddressComponentSpliterator<? extends AddressSection> prefixBlockSpliterator()
      Description copied from interface: AddressSegmentSeries
      Partitions and traverses through the individual prefix blocks for the prefix length of this series.
      Specified by:
      prefixBlockSpliterator in interface AddressSegmentSeries
      Returns:
    • prefixBlockStream

      Stream<? extends AddressSection> prefixBlockStream()
      Description copied from interface: AddressSegmentSeries
      Returns a sequential stream of the individual prefix blocks for the prefix length of this series. For a parallel stream, call BaseStream.parallel() on the returned stream.
      Specified by:
      prefixBlockStream in interface AddressSegmentSeries
      Returns:
    • increment

      AddressSection increment(long increment)
      Description copied from interface: AddressSegmentSeries
      Returns the series from the subnet that is the given increment upwards into the subnet range, with the increment of 0 returning the first address in the range.

      If the subnet has multiple values and the increment exceeds the subnet size, then the amount by which it exceeds the size - 1 is added to the upper series of the range (the final iterator value).

      If the increment is negative, it is added to the lower series of the range (the first iterator value).

      If the subnet is just a single address values, the series is simply incremented by the given value, positive or negative.

      If a subnet has multiple values, a positive increment value is equivalent to the same number of values from the AddressSegmentSeries.iterator() For instance, a increment of 0 is the first value from the iterator, an increment of 1 is the second value from the iterator, and so on. A negative increment added to the subnet count is equivalent to the same number of values preceding the upper bound of the iterator. For instance, an increment of count - 1 is the last value from the iterator, an increment of count - 2 is the second last value, and so on.

      An increment of size count gives you the series just above the highest series of the subnet. To get the series just below the lowest series of the subnet, use the increment -1.

      Specified by:
      increment in interface AddressSegmentSeries
      Parameters:
      increment -
      Returns:
    • incrementBoundary

      AddressSection incrementBoundary(long increment)
      Description copied from interface: AddressSegmentSeries
      If the given increment is positive, adds the value to the upper series (AddressSegmentSeries.getUpper()) in the subnet range to produce a new series. If the given increment is negative, adds the value to the lower series (AddressSegmentSeries.getLower()) in the subnet range to produce a new series. If the increment is zero, returns this.

      In the case where the series is a single value, this simply returns the address produced by adding the given increment to this address series.

      Specified by:
      incrementBoundary in interface AddressSegmentSeries
      Parameters:
      increment -
      Returns: