Решил написать мост на С++, на rawSocket. Но столкнулся с массой неприятностей. Сначала пробовал сделать два потока в которых создал по два сокета : если в один приходит - то из другого послать. Аналогично сделал с другим потоком. Вышло так , что первый пакет который приходил дублировался и посылался трилион раз. Непонятно почему , ведь сокет был не в nonblock-моде. Далее пробовал epoll(тут офк нонблок мод поставил). Вроде даже получилось, но как то не так все то работает, то работает криво, то вообще никак. Работает криво это с одного ПК идут только АРПпинги но обычный не идет . Зато с другого идет и пинг и АРПпинг. Я даже заметил то что почти всегда работает только когда включаю Wireshark, но опять же не всегда. Может знаете как лучше это делать или какие то очевидные ошибки ,которые мне не понять. Код вот, http://pastebin.com/j8fgz7mC