본문 바로가기

IT/WinpcapProgramming

Winpcap 프로그래밍 :: pcap.h 헤더함수

/* 
written by kaspy (kaspyx@gmail.com)
*/ 


void pcap_close(pcap_t* p)

 p와 할당되지 않은 데이터에 연계된 파일을 닫는 함수


int pcap_datalink(pcap_t* p)

어댑터의 link layer 값을 반환하는 함수

pcap_datalink() 여러 타입의 link layer 값을 반환한다.


l  DLT_NULL BSD loopback encapsulation

l  DLT_EN10MB Ethernet (10Mb, 100Mb, 1000Mb, and up)

l  DLT_IEEE802 IEEE 802.5 Token Ring

l  DLT_ARCNET ARCNET SLIP

l  DLT_PPP PPP

l  DLT_FDDI FDDI

l  DLT_ATM_RFC1483 RFC 1483 LLC/SNAP-encapsulated ATM

l  DLT_RAW raw IP

l  DLT_PPP_SERIAL PPP in HDLC-like framing

l  DLT_PPP_ETHER PPPoE

l  DLT_C_HDLC Cisco PPP with HDLC framing

l  DLT_IEEE802_11 IEEE 802.11 wireless LAN

l  DLT_LOOP OpenBSD loopback encapsulation

l  DLT_LINUX_SLL Linux "cooked" capture encapsulation

l  DLT_LTALK Apple LocalTalk


 int pcap_datalink_name_to_val(const char* name)

 int pcap_datalink_name_to_val(pcap_t* p, int cnt, pcap_handler callback, u_char* user)

pocket의 그룹을 수집한다. cnt pocket 받았을때 , 또는 시간이 초과 되어서 pcap_open_live()가 만기 설정되었을 때 return 된다.


Void pcap_fakecallback(u_char* userData, const sruct_pkthdr* h, const u_char* pkt)

FILE* pcap_file(pcap_t* p)

파일 capture 의 데이터 흐름의 값을 return

savefile pcap_open_offlint()에 의해 열려지거나 또는NULL의 값 또는 네트웨크 장치가 pcap_open_live()에 의해 열려져 있을 때, pcap_file()savefile 기본적인 I/O stream return


        int pcap_fileno(pcap_t* p)

캡쳐 장치의 file descriptor return

네트웨크 장치가 pcap_open_live()에 의해 열려지거나 -1

savefile pcap_open_offline()에 의해 열려질 때

 pcap_fileno()는 캡쳐된 packet이 읽혀진 곳에서부터 file

descriptor 숫자를 return

char* pcap_geterr(pcap_t* p)

마지막 pcap library error 에 포함된 error text return

int pcap_getnonblock(pcap_t* p, char* errbuf)

인터페이스의 non-blocking 상태를 얻는다

int pcap_is_swapped(pcap_t* p)

현재의 system이 현재의 savefile과 비교하여 다른 byte order를 가지고 있으면 true 반환

int pcap_list_datalinks(pcap_t* p, int**, dlt_buffer)

int pcap_loop(pcap_t* p, int cnt, pcap_handler callback, u_char* user)

cnt packet이 받아들여질 때 return, 그러나 pcap_open_live()에 의해 timeout set이 되지 않는다. 그래서 영원히 block 될수 있다.

int pcap_major_version(pcap_t* p)

savefile을 쓰는데 사용되는 pcap library major version number return

int pacp_minor_version(pcap_t* p)

savefile을 쓰는데 사용되는 pcap library minor version number return


const u_char* pcap_next(pcap_t* p, struct pcap_pkthdr* h)

다음 사용 가능한 packet return


 int pcap_next_ex(pcap_t* p, struct pcap_pkthdr** pkt_header, u_char** pkt_data)

오프라인 capture나 인터페이스로부터 packet 읽음

return

l  1, packet이 문제 없이 읽혀지면 return

l  0, pcap_open_live()이 시간이 경과되어 timeout set 되면 return

l  -1, 에러가 발생하면 return

l  -2, 오프라인 capture로부터 읽을떄 EOF에 도달하면 return


pcap_t* pcap_open_dead(int linktype, int snaplen)

library 에서 다른 함수를 호출할 때 pcap_open_dead() pcap_t structure를 생성하기 위해 사용되어진다. 이것은 BPF code를 컴파일하기 위하셔 libpcap를 사용할 때 일시적으로 사용된다.


void pcpa_perror(pcap_t* p, char* prefix)

마직막 pcap library의 에러를 출력한다.


int pcpa_setnonblock(pcap_t* p, int nonblock, char* errbuf)

blocking mode unblocking mode 를 교환한다.

Pcap_setnonblock() pcap_opern_live()가 열려 있고 non-blocking mode안에서 또는 non-blocking mode를 배척하고, non-blocking mode 0 or 1 에 따라 capture descriptor를 입력한다.


int pcap_snapshot(pcap_t* p)

프로그램에 보내질 packet 부분의 범위를 return

int pcap_strcasecmp(const char* sa, const char* s2)

char* pcap_strerror(int error)

pcap_strerror() strerror()이 가능하지 않을떄 제공된다.