Модераторы: xvr
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [kernel] пустые skb собственного устройства, почему появляются пустые skb? 
V
    Опции темы
null56
Дата 3.2.2011, 22:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 721
Регистрация: 19.3.2008

Репутация: 4
Всего: 12



Всем привет
Задача: создать собственное устройство netdevice для дальнейшего использования
Решение:
Код

struct net_device * dev = alloc_netdev(sizeof(struct my_private_t), "boff%d", &setup);
register_netdev(dev)
dev->mtu = DEVICE_MTU;
dev_priv = netdev_priv(dev);

// функция колбака
setup(struct net_device *dev)
{
    dev->netdev_ops = &ops;
    ether_setup(dev);
    dev->tx_queue_len = 0;
    random_ether_addr(dev->dev_addr);
}


ops хранит колбаки операции с устройством
Код

net_device_ops boff_ops =
{
    .ndo_open = open,
    .ndo_stop = stop,
    .ndo_start_xmit = xmit,
    .ndo_get_stats = stats,
    .ndo_do_ioctl = ioctl
};


 вот их описания
Код

int open(struct net_device *dev)
{
    netif_start_queue(dev);
    return 0;
}

int stop(struct net_device *dev)
{
    netif_stop_queue(dev);
    return 0;
}

ioctl(struct net_device * dev, struct ifreq *ifr, int cmd)
{
...
}

stats(struct net_device *dev)
{
...
}

int xmit(struct sk_buff *skb, struct net_device *dev)
{
// вопрос связан с этой функцией !!!
}

Если приведенная мною выше регистрация верна, то один неясный момент я для себя открыл и хотел бы спросить почему это происходит
После регистрации сетевого устройства, оно появляется в списке выключенных сетевых девайсов. Я поднимаю его через ifconfig, назначая адрес, никакой процесс в системе не знает об этом устройстве. В xmit у меня появляется ПУСТОЙ пакет, в смысле skb->data_len == 0, то же самое происходит при пинговке адреса из той же подсети, что и адрес заданный мной моему девайсу...
Вот характеристики этого пакета
Цитата

data_len = 0; mac_len = 0; skb_headroom = 2; skb_tailroom = <150;

Что это за пакет? Откуда он берется? Кто его пысылает (я не про пинг, а про поднятие интерфейса)? что мне  с ним делать?

Надеюсь понятно в чем мой вопрос. Прошу посмотреть процедуру регистрации сетевого устройства и если с ней порядок, то дайте пожалуйста ответ, те кто знает. Где хоть какие - то данные этого пакета?

Заранее благодарен за помощь




PM MAIL   Вверх
null56
Дата 3.2.2011, 22:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 721
Регистрация: 19.3.2008

Репутация: 4
Всего: 12



Понял, надо сделать
Код

skb_reset_mac_header

и все встает на свои места... извиняюсь
PM MAIL   Вверх
fish9370
Дата 4.2.2011, 11:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 663
Регистрация: 15.4.2007
Где: Москва

Репутация: 2
Всего: 1



null56, а ты свой блог не ведешь? все что ты делаешь очень интересно, у меня нет сейчас времени самому этим заниматься, но рано или поздно я до этого доберусь.. но следить за твоими успехами хотелось бы..

и может у тебя есть svn где можно было бы брать твои наработки? звучит конечно нагло, но я так понимаю, ты это все равно делаешь под лицензией GPL?


--------------------
undefined
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема »


 




[ Время генерации скрипта: 0.0828 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.