getHosts method

List<String> getHosts()

Implementation

List<String> getHosts() {
  final hosts = <String>[];
  final parts = cidr.split('/');
  final ip = parts[0];
  final mask = int.parse(parts[1]);
  final ipParts = ip.split('.');
  final total = 1 << (32 - mask);

  List<int> ipPartsInt = ipParts.map((e) => int.parse(e)).toList();

  int i = 0;
  while (true) {
    final String ip = '${ipPartsInt[0]}.${ipPartsInt[1]}.${ipPartsInt[2]}.${ipPartsInt[3]}';

    hosts.add(ip);
    i++;
    if (i == total) {
      break;
    }

    ipPartsInt[3]++;
    if (ipPartsInt[3] > 255) {
      ipPartsInt[3] = 0;

      for (int j = 2; j >= 0; j--) {
        ipPartsInt[j]++;
        if (ipPartsInt[j] <= 255) {
          break;
        }

        ipPartsInt[j] = 0;
      }
    }
  }

  return hosts;
}