Поднимаем сеть

6 views
Skip to first unread message

Дмитрий Зубаревич

unread,
Mar 31, 2011, 8:53:01 PM3/31/11
to Embox
Всем привет!
Передо мной стоит задача написания псевдодрайвера loopback, с помощью
которого можно будет фиксить севую подсистему. Идейно все понятно,
реализация готова, с прилагающимся тестом (вероятно есть ошибки в ней,
но пока нет возможности протестить). Проблема вобщем-то одна: никак не
удается заставить пакеты идти в loopback, хотя вроде как все подключил
в мэйках и конфигах (коммит r2371). Складывается впечатление, что дело
не доходит даже до инициализации драйвера. Хотя файл в сборку
попадает. Как с этим бороться?

Eldar Abusalimov

unread,
Apr 1, 2011, 4:14:00 AM4/1/11
to em...@googlegroups.com, Дмитрий Зубаревич
Добавлял в стартовый скрипт такие строки?
ifconfig -a 127.0.0.1 -p 255.0.0.0 -h -m 0:0:0:0:0:0 -u lo
route -n 127.0.0.0 -m 255.0.0.0 -d lo add

1 апреля 2011 г. 4:53 пользователь Дмитрий Зубаревич <dmitryzu...@gmail.com> написал:



--
Best regards,
Eldar Sh. Abusalimov

Anton Bondarev

unread,
Apr 1, 2011, 4:28:50 AM4/1/11
to Embox
да и еще проверь что сеть тянет за собой драйвер лупбека (он должен
инициализироваться).
Можно вставить вывод в функцию инициализации драйвера. И посмотреть
что сгенерил dot ( проверить зависимости то бишь)

On 1 апр, 12:14, Eldar Abusalimov <eldar.abusali...@gmail.com> wrote:
> Добавлял в стартовый скрипт такие строки?
>
> ifconfig -a 127.0.0.1 -p 255.0.0.0 -h -m 0:0:0:0:0:0 -u lo
> route -n 127.0.0.0 -m 255.0.0.0 -d lo add
>
> 1 апреля 2011 г. 4:53 пользователь Дмитрий Зубаревич <

> dmitryzubarev...@gmail.com> написал:

Дмитрий Зубаревич

unread,
Apr 1, 2011, 5:25:55 AM4/1/11
to em...@googlegroups.com
Эльдар, забыл добавить строку "route -n 127.0.0.0 -m 255.0.0.0 -d lo add", но её добавление не помогло=(
Антон, в том то все и дело, что даже до инициализации дело не доходит. Хотя похоже ты прав лупбек,то к драйверам я привязал, а вот сеть за собой драйвера похоже не тянет. Спасибо=) Приду с пар попробую исправить. 

1 апреля 2011 г. 12:28 пользователь Anton Bondarev <anto...@mail.ru> написал:

Nikolay Korotky

unread,
Apr 1, 2011, 6:36:06 AM4/1/11
to Embox
Поднялось?

On Apr 1, 1:25 pm, Дмитрий Зубаревич <dmitryzubarev...@gmail.com>
wrote:


> Эльдар, забыл добавить строку "route -n 127.0.0.0 -m 255.0.0.0 -d lo add",
> но её добавление не помогло=(
> Антон, в том то все и дело, что даже до инициализации дело не доходит. Хотя
> похоже ты прав лупбек,то к драйверам я привязал, а вот сеть за собой
> драйвера похоже не тянет. Спасибо=) Приду с пар попробую исправить.
>

> 1 апреля 2011 г. 12:28 пользователь Anton Bondarev <anton2...@mail.ru>написал:

Дмитрий Зубаревич

unread,
Apr 1, 2011, 8:37:30 AM4/1/11
to em...@googlegroups.com
Драйвер проинициализировался по крайней мере, сча буду дальше копать=)

1 апреля 2011 г. 14:36 пользователь Nikolay Korotky <sik...@gmail.com> написал:

Дмитрий Зубаревич

unread,
Apr 1, 2011, 10:53:18 AM4/1/11
to em...@googlegroups.com
Хм... Ситуация значит такая: бегу по стеку протоколов, попадаю в ip_send_packet. Там вызывается функция ip_route, в которой из таблички rt_table[RT_TABLE_SIZE] должна быть вытянута ссылка на драйвер, через который надо посылать пакет в сеть. Я правильно излагаю?
Если правильно, то проблема в следующем: табличка rt_table[RT_TABLE_SIZE] абсолютно пуста, хотя заполняться она должна, повидимому, стартовым скриптом, в котором я прописал следующие строки:

"ifconfig -a 127.0.0.1 -p 255.0.0.0 -h -m 0:0:0:0:0:0 -u lo",

"route -n 127.0.0.0 -m 255.0.0.0 -d lo add",

Как с этим бороться?

1 апреля 2011 г. 16:37 пользователь Дмитрий Зубаревич <dmitryzu...@gmail.com> написал:

Дмитрий Зубаревич

unread,
Apr 1, 2011, 6:19:44 PM4/1/11
to Embox
Так... Продолжу разговор с самим собой)
Положение дел сейчас такое: стартовый скрипт по прежниму отрабатывает
бесследно, зато если после запуска системы выполнить команды ifconfig -
a 127.0.0.1 -p 255.0.0.0 -m 0:0:0:0:0:0 -u lo и route -n 127.0.0.0 -m
255.0.0.0 -d lo add, то в табличке rt_table[RT_TABLE_SIZE] появляется
некая информация, правда тест всё равно валится, но это пока не столь
важно. Интересует вопрос: почему стартовый скрипт не оставляет никаких
следов после своего выполнения? И вообще когда именно он выполняется?
И можно ли это как-то проследить при отладке?

On 1 апр, 18:53, Дмитрий Зубаревич <dmitryzubarev...@gmail.com> wrote:
> Хм... Ситуация значит такая: бегу по стеку протоколов, попадаю в

> *ip_send_packet.


> Там вызывается функция ip_route, в которой из таблички
> rt_table[RT_TABLE_SIZE] должна быть вытянута ссылка на драйвер, через

> который надо посылать пакет в сеть. Я правильно излагаю?*
> *Если правильно, то проблема в следующем: табличка r**t_table[RT_TABLE_SIZE]


> абсолютно пуста, хотя заполняться она должна, повидимому, стартовым

> скриптом, в котором я прописал следующие строки:**
> *
> *


> "ifconfig -a 127.0.0.1 -p 255.0.0.0 -h -m 0:0:0:0:0:0 -u lo",
> "route -n 127.0.0.0 -m 255.0.0.0 -d lo add",

> *
> *
> *
> *Как с этим бороться?
> *


>
> 1 апреля 2011 г. 16:37 пользователь Дмитрий Зубаревич <

> dmitryzubarev...@gmail.com> написал:

Anton Bondarev

unread,
Apr 2, 2011, 1:31:50 AM4/2/11
to Embox
Так. а какой конфиг ты используешь? Все наработки выложены?

По поводу стартового скрипта. Очень странно, должен отрабатывать.
Поскольку ты не можешь набирать команды пока он не отработал.

Дмитрий Зубаревич

unread,
Apr 2, 2011, 5:46:18 AM4/2/11
to em...@googlegroups.com
Sparc/debag, все выложено, вроде. В силу того, что не знаю когда выполняется стартовый скрипт, пробовал запускать тест когда уже предлагается ввод команд. Но если перед этим не выполнять вышеуказанные команды, то это бесполезно.
2 апреля 2011 г. 9:31 пользователь Anton Bondarev <anto...@mail.ru> написал:

Nikolay Korotky

unread,
Apr 2, 2011, 7:32:21 AM4/2/11
to Embox
Попробуй перекочевать на x86/debug, там данной проблемы не обоняю, да
и отлаживать будет проще.

On Apr 2, 1:46 pm, Дмитрий Зубаревич <dmitryzubarev...@gmail.com>
wrote:


> Sparc/debag, все выложено, вроде. В силу того, что не знаю когда выполняется
> стартовый скрипт, пробовал запускать тест когда уже предлагается ввод
> команд. Но если перед этим не выполнять вышеуказанные команды, то это
> бесполезно.

> 2 апреля 2011 г. 9:31 пользователь Anton Bondarev <anton2...@mail.ru>написал:

Дмитрий Зубаревич

unread,
Apr 2, 2011, 8:19:35 AM4/2/11
to em...@googlegroups.com
Хм... Пугает процесс установки QEMU описанный на вики... Но попробовать наверное стоит, спасибо за совет)

2 апреля 2011 г. 15:32 пользователь Nikolay Korotky <sik...@gmail.com> написал:

Дмитрий Зубаревич

unread,
Apr 2, 2011, 12:27:15 PM4/2/11
to Embox
По поводу стартового скрипта... Вобщем ночью лучше спать, а не
прогать) Жестко протупил, как - не скажу, слишком стыдно)
Тем не менее одна проблема все же есть: стартовый скрипт выполняется
после выполнения тестов, но это в принципе не так критично. Вобщем
пока все норм, будет время - продолжу фиксить лупбэк)

Nikolay Korotky

unread,
Apr 2, 2011, 3:06:36 PM4/2/11
to Embox
Читаем внимательнее вики, там описан НЕ процесс установки QEMU, а
различные юзкейсы работы с ним. В данном случае ничего кроме "qemu -
nographic -kernel embox" не требуется делать.

On Apr 2, 4:19 pm, Дмитрий Зубаревич <dmitryzubarev...@gmail.com>

Eldar Abusalimov

unread,
Apr 3, 2011, 1:34:05 PM4/3/11
to em...@googlegroups.com, Nikolay Korotky
Привет,

Тест на loopback валит систему. Причем при отладке все хорошо. Падает где-то в kernel_sendmsg.
tsim-leon3 build/base/bin/embox # падает
tsim-leon3 -gdb build/base/bin/embox # не падает
tsim-leon3 -fast_uart build/base/bin/embox # не падает

Похоже на какой-нибудь null-pointer или гонку.

Конфиг: sparc/debug

2 апреля 2011 г. 23:06 пользователь Nikolay Korotky <sik...@gmail.com> написал:

Дмитрий Зубаревич

unread,
Apr 3, 2011, 2:54:20 PM4/3/11
to em...@googlegroups.com
хм... Поищу в чем трабл... Хотя, как его искать если при отладке он не
появляется?

03.04.11, Eldar Abusalimov<eldar.ab...@gmail.com> написал(а):

Eldar Abusalimov

unread,
Apr 3, 2011, 2:57:54 PM4/3/11
to em...@googlegroups.com, Дмитрий Зубаревич
Поправка: воспроизводится на ревизиях r2390-r2394 (на них была включена промежуточная линковка)


3 апреля 2011 г. 22:54 пользователь Дмитрий Зубаревич <dmitryzu...@gmail.com> написал:

Eldar Abusalimov

unread,
Apr 3, 2011, 2:59:17 PM4/3/11
to em...@googlegroups.com, Дмитрий Зубаревич
Я ставил бряк на kernel_sendmsg в самом tsim'е и дальше шел по шагам и смотрел регистры... Лучшего придумать не смог =)


3 апреля 2011 г. 22:57 пользователь Eldar Abusalimov <eldar.ab...@gmail.com> написал:

Nikolay Korotky

unread,
Apr 3, 2011, 6:02:24 PM4/3/11
to Embox
На x86/debug аналогично, и падает точнее внутри dev_queue_xmit (dev-
>header_ops->rebuild).

On Apr 3, 9:34 pm, Eldar Abusalimov <eldar.abusali...@gmail.com>
wrote:

Дмитрий Зубаревич

unread,
Apr 3, 2011, 6:12:35 PM4/3/11
to em...@googlegroups.com
Хм... Ок, а в чем заключается процесс промежуточной линковки?

4 апреля 2011 г. 2:02 пользователь Nikolay Korotky <sik...@gmail.com> написал:

Eldar Abusalimov

unread,
Apr 3, 2011, 6:37:16 PM4/3/11
to em...@googlegroups.com, Дмитрий Зубаревич
Если интересно, гугли по запросу ld partial linking.

В данном случае это не суть важно, просто итоговый образ компонуется немного в другом порядке. Но этого достаточно, чтобы могла проявиться какая-нибудь подлая ошибка.


4 апреля 2011 г. 2:12 пользователь Дмитрий Зубаревич <dmitryzu...@gmail.com> написал:
Reply all
Reply to author
Forward
0 new messages