2013-06-12 2 views
0

Я использую packet_mmap для захвата всех пакетов в системе, но, похоже, нет никакого способа помешать остальной ОС получать их. Я хочу иметь эксклюзивный контроль над пакетами, входящими в пользовательскую область, и решить, смогут ли они перейти на другие приложения в системе или если они будут удалены, поэтому я могу фильтровать пакеты на основе критериев.Фильтрация пакетов с помощью пакета MMAP?

Есть ли способ сделать это? Кажется, я не могу найти документацию по этому вопросу. Я предполагаю, что я хочу, чтобы удалить все входящие пакеты из IP-стека, чтобы никакая другая программа не получала их, а затем иметь возможность повторно вставлять пакеты по принципу «по отдельности».

ответ

0

Вы не можете делать то, что хотите, с разъемами PACKET - они не предназначены для этой цели.

Вместо этого вы должны использовать libnetfilter_queue, а также правило iptables, которое направляет все входящие пакеты в вашу очередь.

+0

Это дизайн с нулевой копией? а если нет, есть ли версия с нулевой копией? В любом случае, спасибо за ответ. – coder543

+0

@ coder543: Я так не верю. – caf

+0

Я принял ваш ответ, но в итоге выяснилось, что использование 'netdev_rx_handler_register()' для регистрации обработчика для фильтрации пакетов было более эффективным. – coder543