public class MACAddressSection extends AddressDivisionGrouping implements AddressSection, java.lang.Iterable<MACAddressSection>
| Modifier and Type | Class and Description |
|---|---|
static class |
MACAddressSection.MACStringOptions
Represents a clear way to create a specific type of string.
|
AddressDivisionGrouping.StringOptions| Modifier and Type | Field and Description |
|---|---|
int |
addressSegmentIndex |
boolean |
extended |
| Constructor and Description |
|---|
MACAddressSection(Address.SegmentValueProvider valueProvider) |
MACAddressSection(Address.SegmentValueProvider lowerValueProvider,
Address.SegmentValueProvider upperValueProvider,
int startIndex,
boolean extended) |
MACAddressSection(Address.SegmentValueProvider valueProvider,
int startIndex,
boolean extended) |
MACAddressSection(byte[] bytes) |
MACAddressSection(byte[] bytes,
int startIndex,
boolean extended) |
MACAddressSection(long value) |
MACAddressSection(long value,
int startIndex,
boolean extended) |
MACAddressSection(MACAddressSegment segment)
Constructs a single segment section, the segment being the leading segment.
|
MACAddressSection(MACAddressSegment[] segments)
Use this constructor for any address section that includes the leading segment of a MAC address
|
MACAddressSection(MACAddressSegment[] segments,
int startIndex,
boolean extended) |
MACAddressSection(MACAddressSegment segment,
int startIndex,
boolean extended)
Constructs a single segment section with the segment at the given index in the address.
|
| Modifier and Type | Method and Description |
|---|---|
MACAddressSection |
adjustPrefixBySegment(boolean nextSegment)
Increases or decreases prefix length to the next segment boundary.
|
MACAddressSection |
adjustPrefixBySegment(boolean nextSegment,
boolean zeroed)
Increases or decreases prefix length to the next segment boundary.
|
MACAddressSection |
adjustPrefixLength(int adjustment)
Increases or decreases prefix length by the given increment.
|
MACAddressSection |
adjustPrefixLength(int adjustment,
boolean zeroed)
Increases or decreases prefix length by the given increment.
|
MACAddressSection |
append(MACAddressSection other) |
MACAddressSection |
appendToPrefix(MACAddressSection other) |
MACAddressSection |
applyPrefixLength(int prefixLength)
Applies the given prefix length to create a new segment series.
|
boolean |
contains(AddressSection other)
Determines if one section contains another.
|
boolean |
contains(MACAddressSection other) |
boolean |
equals(java.lang.Object o) |
int |
getBitCount() |
int |
getBitsPerSegment()
Returns the number of bits comprising each segment in this series.
|
int |
getByteCount()
returns the number of bytes in each of the address components represented by this instance
|
int |
getBytesPerSegment()
Returns the number of bytes comprising each segment in this series.
|
MACAddressSegment |
getDivision(int index) |
AddressDivisionGrouping |
getDottedGrouping() |
IPv6AddressNetwork |
getIPv6Network() |
java.lang.Iterable<MACAddressSection> |
getIterable()
Useful for using an instance in a "for-each loop".
|
MACAddressSection |
getLower()
If this represents a series with ranging values, returns a series representing the lower values of the range.
|
MACAddressNetwork |
getNetwork()
Returns the network object for series of the same version (eg IPv4, IPv6 and MAC each have their own network object)
|
MACAddressSection |
getODISection() |
int |
getODISegmentCount() |
MACAddressSection |
getOUISection() |
int |
getOUISegmentCount() |
java.math.BigInteger |
getPrefixCount()
If this has a prefix length, the count of the range of values in the prefix.
|
java.lang.Integer |
getPrefixLength()
The bit-length of the portion of the address that is not specific to an individual address but common amongst a group of addresses.
|
MACAddressSection |
getSection()
Gets the subsection from the series that comprises all segments
|
MACAddressSection |
getSection(int index)
Gets the subsection from the series starting from the given index
|
MACAddressSection |
getSection(int index,
int endIndex)
Gets the subsection from the series starting from the given index and ending just before the give endIndex
|
MACAddressSegment |
getSegment(int index)
Returns the segment from this series at the given index.
|
int |
getSegmentCount()
Returns the number of segments in this series.
|
MACAddressSegment[] |
getSegments()
Returns the segments of this series of segments as an array.
|
void |
getSegments(AddressSegment[] segs)
Copies the existing segments into the given array.
|
void |
getSegments(java.util.Collection<? super MACAddressSegment> segs) |
void |
getSegments(int start,
int end,
AddressSegment[] segs,
int destIndex)
get the segments from start to end and insert into the segs array at the the given index
|
void |
getSegments(int start,
int end,
java.util.Collection<? super MACAddressSegment> segs) |
java.lang.String[] |
getSegmentStrings()
Returns the an array with the values of each segment as they would appear in the normalized with wildcards string.
|
MACAddressSection |
getUpper()
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.
|
MACAddressSection |
increment(long increment)
Returns the series from the subnet that is the given increment upwards into the subnet range,
or if the given increment is negative the given increment downwards into the subnet range,
or if this is just an individual series, it simply adds the increment to this.
|
MACAddressSection |
insert(int index,
MACAddressSection other) |
boolean |
isEntireAddress(boolean extended) |
boolean |
isEUI64(boolean asMAC)
Equivalent to isEUI64(asMAC, false)
|
boolean |
isEUI64(boolean asMAC,
boolean partial)
Whether this section is consistent with an EUI64 section,
which means it came from an extended 8 byte address,
and the corresponding segments in the middle match 0xff and 0xff/fe for MAC/not-MAC
|
boolean |
isExtended() |
boolean |
isPrefixed()
Indicates if the address represents all devices with the same OUI segments.
|
java.util.Iterator<MACAddressSection> |
iterator()
Iterates through the individual segment series.
|
long |
longValue() |
java.util.Iterator<MACAddressSection> |
prefixBlockIterator()
Iterates through the individual prefix blocks.
|
MACAddressSection |
removePrefixLength()
Removes the prefix length.
|
MACAddressSection |
removePrefixLength(boolean zeroed)
Removes the prefix length.
|
MACAddressSection |
replace(int startIndex,
int endIndex,
MACAddressSection replacement,
int replacementStartIndex,
int replacementEndIndex)
Replaces segments starting from startIndex and ending before endIndex with the segments starting at replacementStartIndex and
ending before replacementEndIndex from the replacement section
|
MACAddressSection |
replace(int index,
MACAddressSection replacement)
Replace the segments of this section starting at the given index with the given replacement segments
|
MACAddressSection |
reverseBits(boolean perByte)
Returns a new segment series with the bits reversed.
|
MACAddressSection |
reverseBytes()
Returns a new segment series with the bytes reversed.
|
MACAddressSection |
reverseBytesPerSegment()
Returns a new segment series with the bytes reversed within each segment.
|
MACAddressSection |
reverseSegments()
Returns a new segment series with the segments reversed.
|
java.util.Iterator<MACAddressSegment[]> |
segmentsIterator()
Iterates through the individual segments.
|
MACAddressSection |
setPrefixLength(int prefixLength)
Sets the prefix length.
|
MACAddressSection |
setPrefixLength(int prefixLength,
boolean zeroed)
Sets the prefix length.
|
java.lang.String |
toCanonicalString()
This produces a canonical string using the canonical standardized IEEE 802 MAC address representation of xx-xx-xx-xx-xx-xx
For range segments, '..' is used: 11-22-33..44-55-66
|
java.lang.String |
toColonDelimitedString() |
java.lang.String |
toCompressedString()
This produces a shorter string for the address that uses the canonical representation but not using leading zeroes.
|
java.lang.String |
toDashedString() |
java.lang.String |
toDottedString()
This produces the dotted hexadecimal format aaaa.bbbb.cccc
|
MACAddressSection |
toEUI64(boolean asMAC)
If this section is part of a shorter 48 bit MAC or EUI-48 address see
isExtended(),
then the required sections are inserted (FF-FF for MAC, FF-FE for EUI-48) to extend it to EUI-64. |
IPv6AddressSection |
toEUI64IPv6()
Converts to Ipv6.
|
java.lang.String |
toHexString(boolean with0xPrefix)
Writes this address as a single hexadecimal value with always the exact same number of characters, with or without a preceding 0x prefix.
|
java.lang.String |
toNormalizedString()
The normalized string returned by this method is the most common representation of MAC addresses: xx:xx:xx:xx:xx:xx
|
java.lang.String |
toNormalizedString(AddressDivisionGrouping.StringOptions stringOptions) |
static java.lang.String |
toNormalizedString(AddressDivisionGrouping.StringOptions opts,
AddressDivisionGrouping section) |
MACAddressSection |
toOUIPrefixBlock()
Returns a section in which the range of values match the block for the OUI (organizationally unique identifier) bytes
|
MACAddressSection |
toPrefixBlock()
If this series has a prefix length, returns the block for that prefix.
|
java.lang.String |
toSpaceDelimitedString()
This produces a string delimited by spaces: aa bb cc dd ee ff
|
java.lang.String |
toString() |
long |
upperLongValue() |
compareTo, containsPrefixBlock, containsSinglePrefixBlock, getBytes, getBytes, getCount, getDivisionCount, getDivisionStrings, getMinPrefixLengthForBlock, getPrefixLengthForSingleBlock, getUpperBytes, getUpperBytes, getUpperValue, getValue, hashCode, includesMax, includesZero, isFullRange, isMax, isMore, isMultiple, isPrefixBlock, isSinglePrefixBlock, isZerocontainsPrefixBlock, containsSinglePrefixBlock, getDivisionStrings, getMinPrefixLengthForBlock, getPrefixLengthForSingleBlock, getUpperValue, getValue, isMore, isPrefixBlock, isSinglePrefixBlockgetDivisionCountgetBytes, getBytes, getCount, getUpperBytes, getUpperBytes, includesMax, includesZero, isFullRange, isMax, isMultiple, isZeropublic final int addressSegmentIndex
public final boolean extended
public MACAddressSection(MACAddressSegment segment)
segment - public MACAddressSection(MACAddressSegment segment, int startIndex, boolean extended)
segment - public MACAddressSection(MACAddressSegment[] segments)
public MACAddressSection(MACAddressSegment[] segments, int startIndex, boolean extended)
public MACAddressSection(Address.SegmentValueProvider valueProvider)
public MACAddressSection(Address.SegmentValueProvider valueProvider, int startIndex, boolean extended)
public MACAddressSection(Address.SegmentValueProvider lowerValueProvider, Address.SegmentValueProvider upperValueProvider, int startIndex, boolean extended)
public MACAddressSection(byte[] bytes,
int startIndex,
boolean extended)
public MACAddressSection(byte[] bytes)
public MACAddressSection(long value,
int startIndex,
boolean extended)
public MACAddressSection(long value)
public MACAddressNetwork getNetwork()
AddressSegmentSeriesgetNetwork in interface AddressSegmentSeriespublic IPv6AddressNetwork getIPv6Network()
public boolean equals(java.lang.Object o)
equals in class AddressDivisionGroupingpublic MACAddressSegment[] getSegments()
AddressSegmentSeriesAddressSegmentSeries.getSegment(int) and AddressSegmentSeries.getSegmentCount() instead when feasible.getSegments in interface AddressSegmentSeriespublic void getSegments(AddressSegment[] segs)
AddressSegmentSeriesAddressSegmentSeries.getSegmentCount()getSegments in interface AddressSegmentSeriespublic void getSegments(int start,
int end,
AddressSegment[] segs,
int destIndex)
AddressSegmentSeriesgetSegments in interface AddressSegmentSeriesstart - the first segment index from this series to be includedend - the first segment index to be excludedsegs - the target arraydestIndex - where to insert the segments in the segs arraypublic boolean isExtended()
public int getSegmentCount()
AddressSegmentSeriesgetSegmentCount in interface AddressSegmentSeriespublic boolean isEntireAddress(boolean extended)
public MACAddressSegment getDivision(int index)
getDivision in interface AddressDivisionSeriesgetDivision in interface AddressStringDivisionSeriesgetDivision in class AddressDivisionGroupingpublic MACAddressSegment getSegment(int index)
AddressSegmentSeriesgetSegment in interface AddressSegmentSeriespublic void getSegments(java.util.Collection<? super MACAddressSegment> segs)
public void getSegments(int start,
int end,
java.util.Collection<? super MACAddressSegment> segs)
public int getBitsPerSegment()
AddressSegmentSeriesgetBitsPerSegment in interface AddressSegmentSeriespublic int getBytesPerSegment()
AddressSegmentSeriesgetBytesPerSegment in interface AddressSegmentSeriespublic int getByteCount()
AddressComponentgetByteCount in interface AddressComponentpublic int getBitCount()
getBitCount in interface AddressItemgetBitCount in class AddressDivisionGroupingpublic java.math.BigInteger getPrefixCount()
AddressDivisionSeries
If this has no prefix length, returns the same value as AddressItem.getCount()
getPrefixCount in interface AddressDivisionSeriesgetPrefixCount in class AddressDivisionGroupingpublic boolean isPrefixed()
isPrefixed in interface AddressDivisionSeriesisPrefixed in class AddressDivisionGroupingpublic int getOUISegmentCount()
public int getODISegmentCount()
public java.lang.Integer getPrefixLength()
AddressDivisionSeriesTypically this is the largest number of bits in the upper-most portion of the section for which the remaining bits assume all possible values.
For IP addresses, this must be explicitly defined when the address is created. For example, 1.2.0.0/16 has a prefix length of 16, while 1.2.*.* has no prefix length, even though they both represent the same set of addresses and are considered equal. Prefixes can be considered variable for any given IP addresses and can depend on the routing table.
The methods AddressDivisionSeries.getMinPrefixLengthForBlock() and AddressDivisionSeries.getPrefixLengthForSingleBlock() can help you to obtain or define a prefix length if one does not exist already.
1.2.0.0/16 and 1.2.*.* both the same equivalent and minimum prefix length of 16.
For MAC addresses, the prefix is initially defined by the range, so 1:2:3:*:*:* has a prefix length of 24 by definition. Addresses derived from the original may retain the original prefix length regardless of their range.
getPrefixLength in interface AddressDivisionSeriesgetPrefixLength in class AddressDivisionGroupingpublic MACAddressSection getSection()
AddressSegmentSeriesgetSection in interface AddressSegmentSeriespublic MACAddressSection getSection(int index)
AddressSegmentSeriesgetSection in interface AddressSegmentSeriespublic MACAddressSection getSection(int index, int endIndex)
AddressSegmentSeriesgetSection in interface AddressSegmentSeriespublic MACAddressSection getOUISection()
public MACAddressSection getODISection()
public MACAddressSection toOUIPrefixBlock()
public IPv6AddressSection toEUI64IPv6()
public boolean isEUI64(boolean asMAC)
public boolean isEUI64(boolean asMAC,
boolean partial)
partial - whether missing segments are considered a match (this only has an effect if this section came from an extended 8 byte address),
or in other words, we don't consider 6 byte addresses to be "missing" the bytes that would make it 8 byte.asMAC - whether to search for the ffff or fffe patternpublic MACAddressSection toEUI64(boolean asMAC)
isExtended(),
then the required sections are inserted (FF-FF for MAC, FF-FE for EUI-48) to extend it to EUI-64.
However, if the section does not encompass the parts of the address where
the new sections should be placed, then the section is unchanged.
If the section is already part of an EUI-64 address, then it is checked
to see if it has the segments that identify it as extended to EUI-64 (FF-FF for MAC, FF-FE for EUI-48),
and if not, IncompatibleAddressException is thrown.asMAC - public MACAddressSection append(MACAddressSection other)
public MACAddressSection appendToPrefix(MACAddressSection other)
public MACAddressSection insert(int index, MACAddressSection other)
public MACAddressSection replace(int index, MACAddressSection replacement)
index - replacement - public MACAddressSection replace(int startIndex, int endIndex, MACAddressSection replacement, int replacementStartIndex, int replacementEndIndex)
startIndex - endIndex - replacement - replacementStartIndex - replacementEndIndex - java.lang.IndexOutOfBoundsExceptionAddressValueException - if the resulting section would exceed the maximum segment count for this address type and versionpublic boolean contains(MACAddressSection other)
other - public MACAddressSection getLower()
AddressSegmentSeriesgetLower in interface AddressComponentgetLower in interface AddressSectiongetLower in interface AddressSegmentSeriespublic MACAddressSection getUpper()
AddressSegmentSeriesgetUpper in interface AddressComponentgetUpper in interface AddressSectiongetUpper in interface AddressSegmentSeriespublic long longValue()
public long upperLongValue()
public MACAddressSection reverseBits(boolean perByte)
AddressSegmentSeriesreverseBits in interface AddressComponentreverseBits in interface AddressSectionreverseBits in interface AddressSegmentSeriesperByte - if true, only the bits in each byte are reversed, if false, then all bits in the component are reversedpublic MACAddressSection reverseBytes()
AddressSegmentSeriesreverseBytes in interface AddressComponentreverseBytes in interface AddressSectionreverseBytes in interface AddressSegmentSeriespublic MACAddressSection reverseBytesPerSegment()
AddressSegmentSeriesreverseBytesPerSegment in interface AddressSectionreverseBytesPerSegment in interface AddressSegmentSeriespublic MACAddressSection reverseSegments()
AddressSegmentSeriesIncompatibleAddressException since all address series can reverse their segments.reverseSegments in interface AddressSectionreverseSegments in interface AddressSegmentSeriespublic MACAddressSection removePrefixLength()
AddressSegmentSeriesIf the series already has a prefix length, the bits outside the prefix become zero.
removePrefixLength in interface AddressSectionremovePrefixLength in interface AddressSegmentSeriespublic MACAddressSection removePrefixLength(boolean zeroed)
AddressSegmentSeriesremovePrefixLength in interface AddressSectionremovePrefixLength in interface AddressSegmentSerieszeroed - whether the bits outside the prefix become zeropublic MACAddressSection adjustPrefixBySegment(boolean nextSegment)
AddressSegmentSeries
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.
adjustPrefixBySegment in interface AddressSectionadjustPrefixBySegment in interface AddressSegmentSeriesnextSegment - whether to move prefix to previous or following segment coundarypublic MACAddressSection adjustPrefixBySegment(boolean nextSegment, boolean zeroed)
AddressSegmentSeriesadjustPrefixBySegment in interface AddressSectionadjustPrefixBySegment in interface AddressSegmentSeriesnextSegment - whether to move prefix to previous or following segment coundaryzeroed - whether the bits that move from one side of the prefix to the other become zero or retain their original valuespublic MACAddressSection adjustPrefixLength(int adjustment)
AddressSegmentSeriesWhen 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.
adjustPrefixLength in interface AddressSectionadjustPrefixLength in interface AddressSegmentSeriespublic MACAddressSection adjustPrefixLength(int adjustment, boolean zeroed)
AddressSegmentSeriesadjustPrefixLength in interface AddressSectionadjustPrefixLength in interface AddressSegmentSeriesadjustment - the incrementzeroed - whether the bits that move from one side of the prefix to the other become zero or retain their original valuespublic MACAddressSection applyPrefixLength(int prefixLength)
AddressSegmentSeries
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.
applyPrefixLength in interface AddressSectionapplyPrefixLength in interface AddressSegmentSeriesAddressSegmentSeries.setPrefixLength(int)public MACAddressSection setPrefixLength(int prefixLength)
AddressSegmentSeriesIf this series has a prefix length, and the 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.
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.
setPrefixLength in interface AddressSectionsetPrefixLength in interface AddressSegmentSeriesAddressSegmentSeries.applyPrefixLength(int)public MACAddressSection setPrefixLength(int prefixLength, boolean zeroed)
AddressSegmentSeriesWhen the prefix is extended beyond the segment series boundary, it is removed.
setPrefixLength in interface AddressSectionsetPrefixLength in interface AddressSegmentSerieszeroed - 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.public MACAddressSection toPrefixBlock()
AddressSegmentSeriestoPrefixBlock in interface AddressSectiontoPrefixBlock in interface AddressSegmentSeriespublic java.lang.Iterable<MACAddressSection> getIterable()
AddressComponentAddressComponent.iterator() directly.getIterable in interface AddressComponentgetIterable in interface AddressSectiongetIterable in interface AddressSegmentSeriespublic java.util.Iterator<MACAddressSection> iterator()
AddressSegmentSeriesiterator in interface AddressComponentiterator in interface AddressSectioniterator in interface AddressSegmentSeriesiterator in interface java.lang.Iterable<MACAddressSection>public java.util.Iterator<MACAddressSection> prefixBlockIterator()
AddressSegmentSeriesAddressSegmentSeries.iterator()prefixBlockIterator in interface AddressSectionprefixBlockIterator in interface AddressSegmentSeriespublic java.util.Iterator<MACAddressSegment[]> segmentsIterator()
AddressSegmentSeriessegmentsIterator in interface AddressSegmentSeriespublic MACAddressSection increment(long increment)
AddressSegmentSeriesIf the subnet has multiple values and the increment exceeds the subnet size, then the amount by which is exceeds the size is added to the upper series of the range (the final iterator value) or is subtracted from the lower series of the range (the first iterator value) if negative.
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 iterator. For instance, a increment of 1 is value 1 from the iterator, an increment of 2 is the second value from the iterator, and so on. A negative increment is equivalent to the same number of values preceding the upper bound of the iterator. For instance, an increment of -1 is the last value from the iterator, and increment of -2 is the second last value, and so on.
Therefore, to get the series just above the highest series of the subnet, use an increment of size:count > 1 ? count + 1 : 1 where count is the subnet size.
To get the series just below the lowest series of the subnet, use an increment of size:-(count > 1 ? count + 1 : 1) where count is the subnet size.
increment in interface AddressSectionincrement in interface AddressSegmentSeriespublic java.lang.String toHexString(boolean with0xPrefix)
toHexString in interface AddressComponentpublic java.lang.String toNormalizedString(AddressDivisionGrouping.StringOptions stringOptions)
public static java.lang.String toNormalizedString(AddressDivisionGrouping.StringOptions opts, AddressDivisionGrouping section)
public java.lang.String toNormalizedString()
toNormalizedString in interface AddressComponentpublic java.lang.String toCanonicalString()
toCanonicalString in interface AddressSegmentSeriespublic java.lang.String toCompressedString()
toCompressedString in interface AddressSegmentSeriespublic java.lang.String toDottedString()
public java.lang.String toSpaceDelimitedString()
public java.lang.String toDashedString()
public java.lang.String toColonDelimitedString()
public java.lang.String toString()
toString in class AddressDivisionGroupingpublic java.lang.String[] getSegmentStrings()
AddressSegmentSeriesgetSegmentStrings in interface AddressSegmentSeriespublic AddressDivisionGrouping getDottedGrouping()
public boolean contains(AddressSection other)
AddressSectioncontains in interface AddressSection