Bilibili/bbip

Name: bbip

Owner: bilibili

Description: Bilibili High Performance IP Resolve Library

Created: 2017-05-12 09:39:52.0

Updated: 2018-02-07 03:22:33.0

Pushed: 2017-06-18 07:00:58.0

Homepage: null

Size: 45

Language: C++

GitHub Committers

UserMost Recent Commit# Commits

Other Committers

UserEmailMost Recent Commit# Commits

README

bbip

A library to resolve IPv4 address to geographic position. Support to Language: Thrift protocol, PHP, Lua.

Directory Struct
Build LUA Module
ua
 && make install
Usage for LUA
ire("bbip");
= bbip.new("BBIP.dat");
preload()
i = 1, 10000000 do
-- return as multiple variables
range_start, range_end, country, province, city, district, isp, type, desc, lat, lng, cidr = bip:query("223.5.5.5")
print(range_start, range_end, country, province, city, district, isp, type, desc, lat, lng, cid)
-- return as a Lua Table
rc = bip:query_table("223.5.5.5")

Usage for C
lude <arpa/inet.h>
lude "bbip.h"

main(int argc, const char **argv)

bbip_t bbip;
int bbip_errno;
bbip_result_t *result;
struct in_addr addr;
FILE *fpData;

if (argc < 2) {
    printf("usage:\n");
    printf("  bbip_demo <ip>\n");
    return 1;
}
fpData = fopen("bbip.dat", "rb");
if (fpData == NULL) {
   fprintf(stderr, "Invalid data file\n");
   return 1;
}
if (bbip_init(&bbip, fpData, &bbip_errno) == NULL) {
   fprintf(stderr, "init bbip failed: %d\n", bbip_errno);
   return 1;
}
bbip_preload(&bbip);  // increase performance

inet_aton(argv[1], &addr);
result = bbip_search(&bbip, ntohl(addr.s_addr));
if (result != NULL) {
    printf("country: %.*s\n", result->country_len, result->country);
    printf("province: %.*s\n", result->province_len, result->province);
    printf("city: %.*s\n", result->city_len, result->city);
    printf("isp: %.*s\n", result->isp_len, result->isp);
    free(result);
}

gcc -o demo demo.c bbip.c


This work is supported by the National Institutes of Health's National Center for Advancing Translational Sciences, Grant Number U24TR002306. This work is solely the responsibility of the creators and does not necessarily represent the official views of the National Institutes of Health.