Esempio n. 1
0
vmod_geoip2__init(VRT_CTX, struct vmod_geoip2_geoip2 **vpp,
    const char *vcl_name, VCL_STRING filename)
{
	struct vmod_geoip2_geoip2 *vp;
	MMDB_s mmdb;
	int error;

	(void)vcl_name;

	CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC);
	AN(vpp);
	AZ(*vpp);

	VSL(SLT_Debug, 0, "geoip2.geoip2: Using maxminddb %s",
	    MMDB_lib_version());

	error = MMDB_open(filename, MMDB_MODE_MMAP, &mmdb);
	if (error != MMDB_SUCCESS) {
		VSL(SLT_Error, 0, "geoip2.geoip2: %s",
		    MMDB_strerror(error));
		return;
	}

	ALLOC_OBJ(vp, VMOD_GEOIP2_MAGIC);
	AN(vp);
	*vpp = vp;
	vp->mmdb = mmdb;
}
Esempio n. 2
0
void gdgeoip2_init(void) {
    unsigned x, y, z;
    if(sscanf(MMDB_lib_version(), "%3u.%3u.%3u", &x, &y, &z) == 3)
        if(x > 1 || (x == 1 && (y > 1 || (y == 1 && z > 4))))
            libmmdb_gt_114 = true;
}
CAMLprim value mmdb_ml_version(void)
{
  return caml_copy_string(MMDB_lib_version());
}