Ethernet Bridge

Home Forums Discussions Support Portal Ethernet Bridge

This topic contains 3 replies, has 2 voices, and was last updated by  Vadim Smirnov 1 week, 4 days ago.

Viewing 4 posts - 1 through 4 (of 4 total)
  • Author
    Posts
  • #9678

    alexander
    Participant

    Здравствуйте!
    Использую вашу программу, которая организует мост между 2 сетевыми картами (link). При работе программы время от времени пропадает связь между компьютерами. Время работы до сбоя всегда разное: часы или дни. Закономерности не обнаружил. Перезапуск программы решает проблему: связь восстанавливается. Как добиться того, чтобы связь не пропадала?

    #9679

    Vadim Smirnov
    Moderator

    Судя по симптомам, скорей всего дело в том, что один из интерфейсов переподключается в процессе работы. Это поведением можно симитировать сделав disable/enable одной из сетевых карт моста в процессе работы.

    Простоты ради Ethernet Bridge не обрабатывает изменения сетевой конфигурации. Нужно бы добавить мониторинг изменений доступных интерфейсов (SetAdapterListChangeEvent) и останавливать/перезапускать мост когда один из адаптеров “уходит”/”возвращается”.

    Как-нибудь доработаю на досуге, по хорошему для длительной работы из него вообще предпочтительней сделать сервис.

    #9681

    alexander
    Participant

    Значит, чтобы в моей программе, которая организует мост таким же образом, как и ваш Ethernet Bridge, нужно мониторить событие по SetAdapterListChangeEvent и по его срабатыванию пересоздавать мост, используя новые индексы интерфейсов из GetTcpipBoundAdaptersInfo?

    #9682

    Vadim Smirnov
    Moderator

    В общем да, рестартовать мост имеет смысл если произошли изменения в используемых интерфейсах, остальные изменения можно игнорировать. Внутренне HANDLE сетевого адаптера – это указатель на структуру в ядре, она удаляется только при удалении адаптера из системы, то есть HANDLE может изменится только если адаптер был удален и снова добавлен.

    Единственно, если 32-битное приложение работает с драйвером на 64-битной системе, то NDISAPI включает дополнительный уровень трансляции для хэндлов (из 32 в 64 битные) и на постоянство хэндлов полагаться нельзя, 32-битные хэндлы в этом случае – индексы в массиве 64-битных.

Viewing 4 posts - 1 through 4 (of 4 total)

You must be logged in to reply to this topic.