void _say_range_by_ip(GeoIP * gi, uint32_t ipnum ) { unsigned long last_nm, mask, low, hi; char ipaddr[16]; char tmp[16]; char ** range; if (info_flag == 0) { return; /* noop unless extra information is requested */ } range = GeoIP_range_by_ip( gi, __num_to_addr_r( ipnum, ipaddr ) ); if (range == NULL) { return; } printf( " ipaddr: %s\n", ipaddr ); printf( " range_by_ip: %s - %s\n", range[0], range[1] ); last_nm = GeoIP_last_netmask(gi); mask = 0xffffffff << ( 32 - last_nm ); low = ipnum & mask; hi = low + ( 0xffffffff & ~mask ); printf( " network: %s - %s ::%ld\n", __num_to_addr_r( low, ipaddr ), __num_to_addr_r( hi, tmp ), last_nm ); printf( " ipnum: %u\n", ipnum ); printf( " range_by_num: %lu - %lu\n", __addr_to_num( range[0]), __addr_to_num(range[1]) ); printf( " network num: %lu - %lu ::%lu\n", low, hi, last_nm ); GeoIP_range_by_ip_delete(range); }
int main(int argc, char *argv[]) { FILE *f; GeoIP *gi; char *domain; char host[50]; char **ret; gi = GeoIP_open("../data/GeoIPDomain.dat", GEOIP_INDEX_CACHE); if (gi == NULL) { fprintf(stderr, "Error opening database\n"); exit(1); } f = fopen("domain_test.txt", "r"); if (f == NULL) { fprintf(stderr, "Error opening domain_test.txt\n"); exit(1); } printf("IP\tdomain\tnetmask\tbeginIp\tendIp\n"); while (fscanf(f, "%s", host) != EOF) { domain = GeoIP_name_by_name(gi, (const char *)host); if (domain != NULL) { ret = GeoIP_range_by_ip(gi, (const char *)host); printf("%s\t%s\t%d\t%s\t%s\n", host, _mk_NA(domain), GeoIP_last_netmask(gi), ret[0], ret[1]); GeoIP_range_by_ip_delete(ret); free(domain); } } fclose(f); GeoIP_delete(gi); return 0; }
static PyObject * GeoIP_last_netmask_Py(PyObject *self, PyObject * args) { GeoIP_GeoIPObject* GeoIP = (GeoIP_GeoIPObject*)self; return Py_BuildValue("i", GeoIP_last_netmask(GeoIP->gi) ); }