public static int GetSiblingCount(this NetMask mask, SiblingOptions options)
{
if (mask == null)
throw new ArgumentNullException(nameof(mask));
bool includeSelf = BitHelper.IsOptionSet(options, SiblingOptions.IncludeSelf);
bool includeBroadcast = BitHelper.IsOptionSet(options, SiblingOptions.IncludeBroadcast);
bool includeNetworkIdentifier = BitHelper.IsOptionSet(options, SiblingOptions.IncludeNetworkIdentifier);
var hostPartBits = mask.GetMaskBytes().CountFromRight(false);
var total = 1 << hostPartBits;
total -= includeSelf ? 0 : 1;
total -= includeBroadcast ? 0 : 1;
total -= includeNetworkIdentifier ? 0 : 1;
// TODO: Testing
return total;
}
}