Ядро получит пакет, затем пропустит его через список фильтров (например, обычно есть фильтр для IPsec, брандмауэр и т. Д.), И после прохождения всех этих фильтров он передает пакет в приложение. libpcap - это еще один фильтр, но он просто добавляет пакет во внутреннюю базу данных для обработки, а не проверяет пакет, изменяет или делает все остальное, что будут делать другие фильтры.
Для того, что вы хотите сделать, самое простое решение - использовать брандмауэр.