2014-12-31 8 views
3

필터 설치/제거에 lib-pcap 라이브러리를 사용하고 있습니다.Libpcap API가 필터를 제거하지 않습니다.

pcap 필터를 설치하려면, pcap_compile 다음에 잘 작동하는 pcap_setfilter를 사용하십시오.

필터를 제거 할 때 pcap_freecode를 사용하지만 불행히도 위의 설치 필터가 제거되지 않는 것 같습니다.

도움을 주시면 감사하겠습니다.

답변

3

pcap_freecode()은 이름에서 알 수 있듯이 필터를 제거하지 않습니다. 필터를 설치 해제하는 API가있는 경우 이름이 다를 수 있습니다. pcap_compile() ( 복사본이 pcap_setfilter()에 의해 설치된 복사본)에 의해 할당 된 메모리를 해제하는 데 사용됩니다.

불행히도 필터를 제거 할 API가 없습니다. 그러나 모든 패킷을 허용하는 필터를 설치할 수 있습니다. 필터를 설치하지 않는 것과 동일한 효과가 있습니다. pcap_compile() (빈 문자열, 즉 null 포인터가 아닌 "")에 빈 문자열을 전달하면 해당 문자열을 모든 패킷을 허용하는 필터로 컴파일합니다.

+0

답장을 보내 주셔서 감사합니다. 따라서 기본적으로 빈 문자열 ""을 전달하면 이전에 설치된 모든 필터가 지워집니다. – Ashish

+0

필터가 하나뿐입니다.'pcap_setfilter()'와 함께 필터가 설치되어 있고'pcap_setfilter()'를 다시 호출하면 이전 필터가 제거되고 새 필터로 바뀝니다. 새로운 필터가''''필터 문자열로부터 컴파일 되었다면, 아무것도 필터링하지 않는 필터이므로 사실상 이전 필터가 지워집니다. –

관련 문제