findEmptyRanges()

in src/logic/Packer.js [109:130]


  findEmptyRanges(space, firstFreeIpDec) {
    const startIp = IPUtils.netStart(IPUtils.dotToDec(space.net), space.mask);
    const endIp = IPUtils.netEnd(startIp, space.mask);
    const maxIp = startIp + (endIp - firstFreeIpDec);
    const freeNets = [];
    let currentIp = startIp;
    for (let mask = space.mask; mask < 32; mask ++ ) {
      const subnet = {
        mask: mask,
      };
      const fit = this.fit(currentIp, maxIp, subnet);
      if (fit.fit) {
        freeNets.unshift({
          mask: mask,
          netStart: endIp - fit.end +startIp,
          netEnd: endIp - currentIp +startIp,
        });
        currentIp = fit.end + 1;
      }
    }
    return freeNets;
  }