Сетевой драйвер, помогите разобраться.

Тема в разделе "WASM.UNIX", создана пользователем nebula, 15 июл 2009.

  1. kamatoz

    kamatoz New Member

    Публикаций:
    0
    Регистрация:
    5 мар 2004
    Сообщения:
    31
    Адрес:
    Russia
    Зачем ты изобретаешь свою структуру, это бред. Sk_buff сделан специально чтоб не производить копирование памяти при добавлении заголовков. Для отправки пакета не нужно выставлять заголовки transport_header; mac_header, нужен только network. И еще, skb пакет при отправке освобождается. Ошибок вагон, от отсутствия проверок выделения памяти до отсутствия понимания как работать с skb. Я прикрипил работающий код, воббщем кури его пока не поймешь :) собирать просто make, запуск insmod skb_send.ko ip=0x0A0A0AFF
    где ip это адрес удаленной машины в hex ( сетевой броадкаст указуй ). Проверить отправку можешь запустив wireshark.
     
  2. kamatoz

    kamatoz New Member

    Публикаций:
    0
    Регистрация:
    5 мар 2004
    Сообщения:
    31
    Адрес:
    Russia
    Хм терь по пунктам:
    1. Ehernet заголовок заполняет отправитель, а не сетевой адаптер.
    2. Указатели выставляются так
    Код (Text):
    1. //когда skb->data указывает на iphdr в данных skb
    2. skb_set_network_header ( skb, 0);
    3. //аналогично для транспортного и канального уровня
    4. //когда skb->data указывает на ethernet
    5. skb_set_mac_header (skb, 0);
    6. //когда skb->data указывает на транспортный
    7. skb_set_transport_header(skb,0);
    Они должны указывать на память в skb->data.
    3. Чтоб система не висла намертво нужно всегд обрабатывать ошибки, и мне кажется она у тебя виснет не на dev_queue_xmit а на kfree_skb
    И еще пользуйся выводом отладочной инфы, выводи сетевые интерфейсы через которые отправляешь, каменть dev_queue_xmit чтоб проверить на ней ли валится и т.п.
     
  3. nebula

    nebula New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2009
    Сообщения:
    19
    kamatoz
    Спасибо ОГРОМНОЕ.!
    Буду курить код, пока не пойму =)

    Полагаю, сегодня появятся ещё вопросы.
     
  4. nebula

    nebula New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2009
    Сообщения:
    19
    Не подскажите ли, как узнать точный размер данных (содержащихся в принятом.. tcp пакете)?
     
  5. nebula

    nebula New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2009
    Сообщения:
    19
    ПОвторю вопрос.
    Как узнать точный размер отсылаемых(или принимаемых данных в буфере сокета) strlen не помогает )
     
  6. s0larian

    s0larian New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2004
    Сообщения:
    489
    Адрес:
    Крыжёпполь
    skb->len и skb->data_len