Как получить значение дескриптора фильтра сокета (sflt_filter.sf_handle) с сайта Apple для регистрации фильтрации пакетов
Я пытаюсь получить ключ дескриптора для сокета-фильтра для регистрации фильтрации пакетов. Я уже зарегистрировал его для пакетов TCP, теперь я хочу зарегистрировать его для пакетов UDP. Этот ключ дескриптора должен быть уникальным среди других приложений.
sflt_filter.sf_handle = 0xAACAF333;
Я получил его раньше, около 2 лет назад, по ссылке ( http://developer.apple.com/datatype/), но теперь он перенаправлен на другую ссылку.
Я прочитал ссылку, в которой говорится, что коды создателей игнорируются в 10.6 и выше. Но для реализации kext для фильтрации пакетов нам нужно, чтобы этот код был уникальным.
Кто-нибудь знает, как получить уникальный ключ? ИЛИ Не требуется получить уникальный ключ? ИЛИ их другой способ использовать ручку сейчас?
Заранее спасибо.
1 ответ
Я знаю, что вопрос очень устарел, но я столкнулся с той же проблемой, и только для следующего, который тоже будет:
теперь вы можете зарегистрироваться и получить уникальный дескриптор для фильтра, вызывающего функцию kev_vendor_code_find из sys/kern_event.h, передавая идентификатор пакета и указатель на переменную uint32.
После этого в пользовательском пространстве вы можете получить этот дескриптор с помощью SIOCGKEVVENDOR ioctl, передав указатель на структуру kev_vendor_code с тем же идентификатором пакета в поле vendor_string.
Вы не должны делать никаких вещей, чтобы "отменить регистрацию" этого дескриптора (но вы должны отменить регистрацию фильтра с этим дескриптором в driver::stop())