|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
01.12.2021, 17:50 | #1 |
Пользователь
Регистрация: 14.08.2019
Сообщений: 65
|
Принимать буфер только с одного устройства - не разобрался с функциями. Linux
Собираюсь использовать трассировку ядра чтобы перенаправлять буфер между сетевыми устройствами на передачу и на прием. Нужно чтобы драйвер принял буфер только с одного устройства из нескольких. Смотрел справку по функциям: e1000_xmit_frame - которая должна работать на отправку, и netif_receive_skb - которая должна работать на прием.
Отправка - определен аргумент функции для указания устройства. Код:
Код:
Вот скриншот, где буду делать трассировку. И ссылка на карту ядра https://makelinux.github.io/kernel/map/ |
13.12.2021, 23:57 | #2 |
Пользователь
Регистрация: 14.08.2019
Сообщений: 65
|
Неужели никто не прояснит мне ситуацию по вопросу? Видимо, ядро и драйверы, - это отрасль не для народа а для корпораций. Оно же принимает со всех устройств сразу - как так...
|
14.12.2021, 07:13 | #3 |
фрилансер
Участник клуба
Регистрация: 11.10.2019
Сообщений: 1,018
|
не вникая в детали (я и не смогу вникнуть ) - как насчёт варианта по некоторому идентификатору узнавать пакеты конкретного устройства и сохранять только их, остальные игнорировать?
|
14.12.2021, 16:02 | #4 | |
Пользователь
Регистрация: 14.08.2019
Сообщений: 65
|
Цитата:
Если по MAC-адресу, то следует сказать, что у устройств он может совпадать. По IP-адресу тоже не получится, так как это должно работать без DHCP. |
|
15.12.2021, 06:44 | #5 |
фрилансер
Участник клуба
Регистрация: 11.10.2019
Сообщений: 1,018
|
GrimHex, значит, по контенту пакета нужно как-то определять источник
|
15.12.2021, 18:30 | #6 |
Пользователь
Регистрация: 14.08.2019
Сообщений: 65
|
Не существует конкретной сетевой службы, для которой можно определить по контенту, - должны работать абсолютно все соединения на сетевом устройстве. Принцип наподобие "ethernet повторителя" или "ethernet свитча". Фабричные образцы которых, к слову, часто работают под управлением Линукс, - это значит что решение есть, но я его просто не знаю. Может быть, - патчат ядро, может быть, - используют недокументированные функции.
Последний раз редактировалось GrimHex; 15.12.2021 в 18:41. |
10.08.2022, 23:43 | #7 |
Форумчанин
Регистрация: 20.12.2016
Сообщений: 270
|
Ну что в итоге? Я раньше с таким кодом дело не имел, ядро линукс, мало кто с ним напрямую так работает. Думаю, если есть функции приема и передачи, значит должен быть параметр, отвечающий за то откуда(если на прием) и куда(если для передачи). Соответственно можно управлять потоком данных как угодно.
формошлеп.рф
witech.su |
11.08.2022, 13:05 | #8 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,357
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как в Linux работать с драйвером сетевого устройства? | GrimHex | Linux (Ubuntu, Debian, Red Hat, CentOS, Mint) | 1 | 10.02.2021 17:11 |
вызов generic_make_request из обработчика запросов блочного устройства - Linux Kerne - Низкоуровневое программирование | ZenBooster | Linux (Ubuntu, Debian, Red Hat, CentOS, Mint) | 2 | 02.10.2019 10:53 |
Насколько хороша мысль принимать только rvalue аргументы? | New man | Общие вопросы C/C++ | 1 | 03.02.2019 09:54 |
Загрузка файла большого размера с одного устройства | monolitsk | PHP | 9 | 20.02.2014 11:23 |
Как скопировать текст в буфер обмена с одного edit-a и вставить в другой | SeRhy | Общие вопросы Delphi | 2 | 26.07.2008 23:02 |