IP range enumeration ==================== ``ivre iprange`` enumerates the IPv4 addresses matching a selector (country, autonomous system, region, city, CIDR, explicit range, local file or all routable IPs) and renders them in one of four output shapes: count, ranges, CIDRs, or every individual address. The country / AS / region / city selectors and the ``--routable`` selector rely on the MaxMind GeoIP CSV dumps and the APNIC BGP table populated by ``ivre ipdata --download``; ``--network``, ``--range`` and ``--file`` are pure arithmetic and work without any GeoIP data. CLI --- :: $ ivre iprange --network 192.0.2.0/24 --count 256 $ ivre iprange --network 192.0.2.0/30 192.0.2.0/30 $ ivre iprange --range 192.0.2.0 192.0.2.5 --cidrs 192.0.2.0/30 192.0.2.4/31 $ ivre iprange --country FR --count 83920880 $ ivre iprange --asnum AS3215 --cidrs --limit 3 2.3.0.0/16 2.4.0.0/14 2.8.0.0/13 $ ivre iprange --routable --count 3101530112 Country codes accept the same aliases as the rest of IVRE (``UK`` resolves to ``GB``; ``EU`` expands to every European Union member state). The ``--asnum`` flag accepts both ``ASnnnn`` and bare-integer forms; comma-separated lists are unioned (``--country FR,DE``, ``--asnum AS3215,AS12876``). The default output is ``--cidrs``. ``--addrs`` enumerates every individual address and is capped at one million entries to guard against accidental multi-gigabyte stdout floods; ``--force`` removes the cap. See the output of ``ivre help iprange`` for the full flag list. Web API ------- The same selectors are exposed at ``/cgi/iprange``: :: $ curl 'http://localhost/cgi/iprange?network=192.0.2.0/30&output=count' {"count": 4} $ curl 'http://localhost/cgi/iprange?asnum=AS3215&output=cidrs&limit=3' {"count": 20035071, "cidrs": ["2.3.0.0/16", "2.4.0.0/14", "2.8.0.0/13"]} The web route exposes ``output=count`` / ``ranges`` / ``cidrs`` (default) / ``addrs``; the ``json`` CLI shortcut is rejected over HTTP, where the response shape is already structured. ``output=addrs`` is bounded by the ``WEB_IPRANGE_ADDR_CAP`` configuration knob (default 100 000) so a ``/0`` selector cannot serialise billions of strings into a single response. MCP tool -------- The ``ip_range`` MCP tool exposes the same surface to LLM agents, with a tighter 10 000-address cap on ``output=addrs`` (to keep responses small enough to fit a model context window). Use ``output=cidrs`` (the default) or ``output=ranges`` for larger selections.