Skip to content

API kr_search (KO)

JoungKyun Kim edited this page Jul 17, 2016 · 4 revisions

이름

kr_search - libkrisp database 에서 IP 에 대한 정보를 검색하여 반환 합니다.

사용법

#include <krisp.h>

typedef struct netinfos {
    char      err[1024]; // get error messages
    char      ip[256];   // given address
    char      icode[64]; // ISP code
    char      iname[64]; // ISP full name
    char      ccode[4];  // Country code
    char      cname[64]; // Country full name
    ulong     netmask;   // network mask of range
    ulong     start;     // start of range
    ulong     end;       // end of range
    bool      verbose;   // verbose option
} KRNET_API;

int kr_search (KRNET_API * isp, KR_API * db);

설명

kr_search API는 주어진 ip 또는 호스트 이름에 대한 정보를 검색 합니다. kr_search API는 기본적으로, data file의 krisp table을 검색 합니다.

krisp tabel 외에 다른 table을 생성하여 관리하기 위하여 libkrisp는 kr_search_ex API를 제공 합니다. ‘man 3 kr_search_ex‘를 참고 하십시오.

kr_search API를 호출하기 전에 KRNET_API struct의 ip member를 꼭 초기화 해 주어야 합니다.

strcpy (isp.ip, ipaddress);
kr_search (&isp, db);

반환값

성공 시에 0을 반환하며, 실패 시에 1을 반환 합니다. 검색 결과가 없는 것은 성공으로 간주를 합니다.

예제

#include <krisp.h>

int main (void) {
    KR_API * db;
    KRNET_API isp;
    char * addr = "kns.kornet.net";
    char * database = NULL;
    char err[1024];

    if ( kr_open (&db, database, err) == false ) {
        fprintf (stderr, "ERROR Connect: %s\n", err);
        return 1;
    }

    isp.verbose = false;
    // defined safecpy_256 in krispapi.h
    safecpy_256 (isp.ip, addr);
    if ( kr_search (&isp, db) ) {
        printf ("ERROR: %s\n", isp.err);
        kr_close (&db);
        return 1;
    }

    kr_close (&db);

    /*
     * long2ip is include libipcalc.
     * https://github.com/Joungkyun/libipcalc/wiki/API-long2ip
     * long2ip is returned in a statically allocated buffer, which
     * subsequent calls will overwrite. For thread safe, use long2ip_r.
     */
    printf ("%-15s %-15s %-20s", ip, isp.ip, isp.icode);
    printf ("%-15s ", long2ip (isp.start));
    printf ("%-15s %s", long2ip (isp.end), isp.iname);

    return 0;
}

저자

김정균 >https://joungkyun.github.com>

버그

https://github.com/Joungkyun/libkrisp/issues

저작권

Copyright (c) 2016 JoungKyun.Kim <http://oops.org>

이 API는 LGPL 2.1을 따르며, 사용 시의 어떠한 문제에 대하여 보증하지 않습니다.

참조

kr_open(3), kr_close(3), kr_search_ex(3)

Clone this wiki locally