Release Notes/Change History

Release 1.7 (TBA)

mod_asn now supports AS lookups of IPv6 addresses. This requires a current version of the contrib ip4r PostgreSQL data type (which despite its name now supports IPv6), and a slightly changed database scheme - it is probably simplest if you drop the pfx2asn database table and recreate it.

Release 1.6 (r100, Jan 7, 2014)

This release adjusts for the API changes in Apache 2.4. Thanks Cristian Rodriguez for the help. (issue 128, issue 129)

This release also fixes a bug in the asn_get_routeviews script: It could fail when the BGP routing data snapshot contains bogus AS numbers. (issue 93) Patch courtesy of agy.

asn_get_routeviews now allows to only download routing data, but don’t process it, by using the switch --download-only. In addition, --no-download can be used if the data is distributed by other means, e.g. with distro updates. Thanks Dagobert Michelsen for the suggestion! (issue 127)

This release also adds documentation.

Release 1.5 (r88, Sep 5, 2010)

This release fixes one important bug, and improves documentation.

  • mod_asn now avoids lookups of IPv6 addresses. The database of AS (autonomous system) numbers is IPv4-only, and in addition, attempted lookups seem to cause problems within the PostgreSQL ip4r contrib data type. The symptom was a failure of the database after a while of running, and subsequent error messages from Apache. See issue 58.
  • The used version of the APR/APR-Util library is now checked when Apache starts, and not when the module is compiled. This is useful to choose the correct way to access the database, which unfortunately changed between the 1.2 and 1.3 (APR-Util) release. This change makes the deployment more robust, because even if a user mixes packages from different distro versions on a system, mod_asn will still work correctly. This improves the existing fix for issue 7.
  • The documentation has been updated with
    • updated examples of Debian package names and filenames
    • an improved example about installing onto an existing database

Release 1.4 (r79, Mar 27, 2010)

This release does not bring about significant user-visible changes, but under the hood, some optimizations were done.

  • For more efficient database connection usage, mod_asn now closes the used connection when its handler quits. Before, a connection with lifetime of the request was acquired; if a long-running handler runs after mod_asn, this could mean that the connection is blocked for other threads until the end of the request. This could occur, for instance, when mod_mirrorbrain ran later, but exited early because a file was supposed to be delivered directly. This was tracked in issue 44.
  • Database errors from the lower DBD layer are now resolved to strings, where available. In relation to this: if an IP address is not found it isn’t necessarily an error, because it could be a private IP, for instance, which is never present in global routing tables. That case is now logged with NOTICE log level.
  • When compiling mod_asn with the Apache Portable Runtime 1.2, different semantics are used to access database rows, couting from 0 instead of from 1. It seemed to work either way (maybe because only a single row is accessed), but hopefully now it is done more correctly and therefore safer in the future. See issue 29 and issue 7 for the context.
  • In the documentation, the support scripts are now mentioned without their .py suffix in the example for data import, which might be less confusing.

Release 1.3 (r70, Jul 30, 2009)

  • Bugs in the asn_get_routeviews and asn_import scripts were fixed:
    • The logic which decided whether to download the routing data snapshot file was fixed. If asn_get_routeviews is called and it finds a file which was downloaded less then 8 hours ago, the file is reused. If no file exists or the file is older than 8 hours, it is downloaded again.
    • Deletion of existing entries in the database is now prevented, if not at least one entry has been imported. This fixes a bug where the routing data would be deleted if the script was called with no input.

Release 1.2 (Jul 28, 2009)

  • asn_get_routeviews script:
    • download data from the mirror provided by the MirrorBrain project, so doesn’t get additional traffic by additional users downloading from them
  • the documentation has been moved into a docs subdirectory, and rewritten in reStructured Text format, from which HTML is be generated via Sphinx ( When the documentation is changed in subversion, the changes automatically get online on
  • documentation updates
  • “debian” subdirectory added, for Debian package builds
  • the Subversion repository was moved to

Release 1.1 (Jul 4, 2009)

  • mod_asn.c:
    • bump version (1.1)
    • update year in copyright header
  • asn_import script:
    • be able to read config from /etc/asn_import.conf or /etc/mirrorbrain.conf; thus, the script doesn’t need to be edited any longer with database configuration data and credentials.
      1. if a MirrorBrain config file is found, it is used (and the MirrorBrain instance can be selected with -b on the commandline, if needed)
      2. alternatively, the script looks for a config file named /etc/asn_import.conf.
  • asn_get_routeviews script:
    • handle the slightly changed format of routeviews data
    • more sanity checks for parsing newer routing data
    • add links to binaries for Debian and ebuilds for Gentoo
    • add instructions for troubleshooting and testing
    • correct a wrong example of loading mod_asn instead of mod_dbd
    • added example for cron snippet for updating the routing database
    • documentation about the newly supported config file
  • add debian subdirectory for building Debian packages

Release 1.0 (Mar 31, 2009)

  • mod_asn.c:
    • fix bug that lead to ignorance of variables in the subprocess environment set by ASIPEnvvar, which falsely looked for the wrong variable name (one that was configured via ASIPHeader).
  • document an example how to log the looked up data

Older changes

Please refer to the subversion changelog: respectively