2013-06-24 3 views
2

원시 소켓을 기반으로 코드를 구현하고 있습니다. 오는 이더넷 프레임을 받기 위해서 나는 이더넷 인터페이스에 생성 한 소켓을 묶어야 만한다. 필자가 아는 한, SO_BINDTODEVICE 옵션과 함께 setsockopt() 함수를 사용하는 것입니다.SO_BINDTODEVICE 옵션 FreeBSD에 대한 지원

문제는 내가 그런 옵션을 지원하지 않는 FreeBSD를 사용하고 있다는 것입니다. 이 기능이나 다른 신뢰할 수있는 대안을 활성화하기 위해 사용할 패치가 있습니까?

+1

왜 libpcap을 사용하지 않습니까? – antiduh

답변

0

IPv6를 사용하는 경우 sendto을 사용할 수 있습니다 (this example 참조). 유감스럽게도 IPv4에서는 작동하지 않습니다.

antiduh가 말한 것처럼 /dev/bpf (보통 root으로 제한됨)에 액세스 할 수 있다면 libpcap을 사용하여 패킷을 캡처 할 수 있습니다.