URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 1414
[ Назад ]

Исходное сообщение
"block device -> socket"

Отправлено dmitry , 19-Фев-03 17:32 
Имеем Linux. Нужно обмануть программу, которая работает с serial port:
она предполагает, что работает с неким девайсом на порту, а на самом деле
все байты от девайса и для девайса перенаправляются через TPC/IP на другую машину в сети.

Я предполагаю сделать модуль ядра, связанный с байт-ориентированным устройством
в /dev/. Ну, к примеру, /dev/ttyS150 Модуль экспортирует функции чтения/записи для
этого устройства. Ну, допустим, программу обманул. /dev/ttyS150 есть, модуль есть,
а как заставить модуль перекидывать/принимать байтики через сокет на другую машину?
на уровне модулей ядра ведь нет никаких сокетов..

Какие мысли?

Спасибо.


Содержание

Сообщения в этом обсуждении
"RE: block device -> socket"
Отправлено Bob , 20-Фев-03 18:40 
Предлагаю следующее решение (на уровне идеи).
Понадобятся модуль ядра и демон.
Демон создает сокет для ТСР-соединения и передает дескриптор сокета модулю.
Модуль перехватывает системный вызов open и ждет момента открытия устройства, например /dev/ttyS0. Если программа попытается его открыть, модуль вернет ей дескриптор сокета, и дальнейшая запись данных из программы будет осуществляться в сокет.


"RE: block device -> socket"
Отправлено Z0termaNN , 21-Фев-03 22:20 
в большинстве случаев не нужно писать никаких драйверов, достаточно
2 программ - клиент и демон (типа mserver), а программу достаточно
заставить читать с  pty,  конечно, если не тербуется считывать состояние
сигналов.