Можно ли реализовать функции запрашивающего устройства 802.1X с помощью драйверов фильтра NDIS6 LWF?

У меня есть требование реализовать проводной запросчик 802.1x, для которого мне нужно разработать драйвер на основе NDIS 6, который также работает как фильтр.

Я знаю, что можно реализовать функциональность фильтрации с помощью фильтров LWF. В WDK также доступны примеры сквозных фильтров. У меня не было онлайн-ресурса для изучения того, какой тип драйвера выбрать для разработки, чтобы поддерживать функциональность 802.1x.

возможно ли это сделать через LWF или мне нужно разработать драйвер минипорта для работы этого проводного соединения 802.1x?


person Community    schedule 26.11.2015    source источник


Ответы (1)


Честно говоря, я довольно невежественен в OneX, так что потерпите меня, если я скажу что-то глупое или очевидное.

Когда вы пишете LWF, вы должны концептуально думать, что ваш драйвер фильтра является частью сетевой карты; ваш фильтр может возиться со всем, что делает сетевая карта, до того, как остальная часть ОС увидит это. (И наоборот, когда ОС обращается к сетевому адаптеру, ваш фильтр начинает работать с командой до того, как сетевой адаптер ее увидит.) Итак, что вам нужно сделать, так это прочитать поведение того, что предполагается для минипорта. сделать для OneX, а затем спросите себя: «Как бы я впихнул такое поведение поверх невежественного драйвера мини-порта?».

В NDIS6 каждая сетевая карта имеет один или несколько «портов». Типичная сетевая карта Ethernet имеет ровно один порт, который также называется «портом по умолчанию». Состояние аутентификации OneX — это свойство порта. Типичная сетевая карта Ethernet не будет предпринимать никаких конкретных действий, и в этом случае она получит порт по умолчанию, назначенный с параметрами по умолчанию (т. е. аутентификация не требуется).

Минипорт может в любое время обновить параметры порта, введя NDIS_STATUS_PORT_STATE. Эта индикация состояния информирует ОС о новых состояниях управления и авторизации.

Теоретически LWF может прикрепить базовую поддержку OneX к мини-порту, просто выдав эту индикацию состояния сначала один раз, а затем снова при каждом изменении состояния OneX. Чтобы правильно заполнить другие поля индикации состояния (например, XmitLinkSpeed), вам, вероятно, потребуется кэшировать эти поля из сетевой карты. Вы можете запросить эту структуру из нижнего уровня в любое время, запросив OID_GEN_PORT_STATE.

Вы также должны перехватить эту индикацию состояния, если она исходит снизу от вас (т. е. из мини-порта или нижнего LWF). Если это произойдет, возьмите значения из нижнего уровня, объедините значения для полей, которые вам нужны (control и authz), а затем распространите индикацию состояния.

Я не могу обещать, что этого достаточно, чтобы все заработало, так как я не знаю никого, кто делал это раньше.

person Jeffrey Tippet    schedule 01.12.2015