[OpenSIPS-Devel] GeoIP with IPv6 support -- how shall I do it?
    Rick van Rein 
    rick at openfortress.nl
       
    Tue Jul 31 14:48:11 CEST 2012
    
    
  
Hello,
I am adding IPv6 support to the mmgeoip module.  What I'd like to know is what
you guys think is the preferred approach:
 1. Keep the IPv6 routines separate, conformant to the GeoIP API but leading to
    cloned code;
 2. Share most code, and try databases in the order they are specified.
In case 1, we'd end up writing stuff like
	if (af == INET6) {
		mmg_lookupv6 ("$si");
	} else {
		mmg_lookup ("$si");
	}
and the routines for v4 and v6 handling would basically be duplicates with
minor modifications.
In case 2, we'd end up writing the usual stuff, like
	mmg_lookup ("$si");
and it would automatically try in the order of specification, possibly
just a single database, but more likely two of them:
	modparam ("mmgeoip", "mmgeoip_city_db_path", "/path/to/GeoLiteCity.dat")
	modparam ("mmgeoip", "mmgeoip_city_dbv6_path", "/path/to/GeoLiteCityv6.dat")
I could easily generalise this mechanism to an array of databases, and gain a
lot of flexibility (including local overrides),
	modparam ("mmgeoip", "mmgeoip_city_db_path", "/path/to/GeoLiteCity_local.dat")
	modparam ("mmgeoip", "mmgeoip_city_db_path", "/path/to/GeoLiteCity.dat")
	modparam ("mmgeoip", "mmgeoip_city_dbv6_path", "/path/to/GeoLiteCityv6.dat")
I would suggest approach 2, also because that is completely backwards compatible.
Opinions?
Cheers,
 -Rick
    
    
More information about the Devel
mailing list