The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Модуль lapbether"
Отправлено Pavel515, 11-Мрт-19 10:01 
> Вам это все зачем?
> Сети X.25/FrameRelay/ISDN и другие практически умерли.
> IP+Ethernet их похоронили более 15-20 лет назад.
> Но если очень интересно, начните хотя бы с википедии.

Здравствуйте
Поверьте, задача есть
Немного истории:
Существовала себе ничего фирма Siemens и производила замечательное коммутационное оборудование: станции типа EWSD. Они управлялись в том числе посредством протокола X.25 В 2008 году не выдержав конкуренции на рынке производителей коммутационного оборудования Siemens, как производитель станций коммутации, как канальной так и пакетной приказал долго жить. Сначала там Nokia-Siemens, а потом и всё... Но станции на сети остались и их довольно много как классической телефонии EWSD, сотовых коммутаторов D900, пакетной коммутации hiE9200. В "нулевых", чтобы поспеть за технологиями Siemens все-таки выпустил несколько модулей(плат) и интерфейсом IP(Ethernet) IOP:UNI2, IOP:OAM, появилось (именно появилось. в ядрях меньше чем 2.6.32 - его нет, хотя в исходниках фигурирует 2000 год) устройство SSNC. У нас были приобретены модули IOP:OAM, которые выполняют ряд конвертаций протоколов. Устройство управления NetManaget(NetM)---(RFC1006)--->IOP:OAM-(X.25)->EWSD. Работали себе эти модули ничего 12 лет и стали ломаться. Что-бы не утомлять альтернатива:

NetM-----(RFC1006)--->(UnixPC  X.25 XOTD)-------->cisco(XOTD)-----x.25---->EWSD
часть (UnixPC  X.25 XOTD) на ядре 2.6.18 с использованием x25.ko x25tap.ko и xotd работает великолепно
Но x25tap не поддерживается в ядрах более чем 2.6.18, но появилось устройство lapb очень напоминающее x25tap.


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

А вопрос у меня простой. Если отбросить вопросы по необходимости, он становится академическим:
как "открыть" устройство lapb в своей программе?

в исходниках lapbether.c функция передающая информацию из облака x25 называется lapbeth_data_transmit
она работает и виден рост количества байтов и пакетов в команде ifconfig lapb0, и в программе, "открывающей" lapb как PF_PACKET,SOCK_RAW<ETH_P_ALL подключив напрямик к lapb0

strcpy( ifr.ifr_name, "lapb0");
if(( ioctl( fd, SIOCGIFINDEX, &ifr))==-1)

    sll.sll_family = AF_PACKET;
    sll.sll_ifindex = ifr.ifr_ifindex;
    sll.sll_protocol = htons(ETH_P_ALL);
//    sll.sll_pkttype = PACKET_OUTGOING;
//    sll.sll_hatype = ARPHRD_X25;

    rc =  bind( fd, (struct sockaddr*)&sll, sizeof( sll));
    if(rc == -1){
        printf("Bind socket error (%d)(%s)\n",errno,strerror(errno));
    return -1;
    }

    struct sockaddr_ll sll_in;
    socklen_t in_len;
    in_len = sizeof(sll_in);

    nr = recvfrom(fd,packet,40,0,(struct sockaddr*)&sll_in,&in_len);
видно в sll_in то же, что и в tcpdump -i lapb0 ...

in_len = 12
family   = 17
ifindex  = 6
protocol = 0x0805  ->ETH_P_X25 linux/if_ether.h
pkttype  = 4       ->PACKET_OUTGOING  linux/if_packet.h пакет идет из облака X25 кода-то наружу
hatype   = 271     ->ARPHDR_X25     linux/if_arp.h
halen    = 0
(00)(00)(00)(00)(00)(00)(00)(00)
len = 1
(01)   -> X25_IFACE_CONNECT linux/if_x25.h   запрос на установку соединения между 3 и 2 уровнем X25


TCPDUMP
00 04 01 0f 00 00 00 00 00 00 00 00 00 00 08 05 01
pkttype
      271(ARPHRD_X25)
            00 00 halen
                                          08 05(ETH_P_X25)
                                                 01 X25_IFACE_CONNECT


Передача в сторону облака X25 по всей вероятности должна вестись посредством функции
lapbeth_rcv, ссылка на которую указана в структуре,

static struct packet_type lapbeth_packet_type __read_mostly = {
    .type = cpu_to_be16(ETH_P_DEC),
    .func = lapbeth_rcv,
};

где также указан тип заголовка(протокола)  или чего ??? ETH_P_DEC
т.е. как я понимаю тут говорится ядру, что если в очереди пакетов для устройства lapb появится пакет с типом (заголовком) ETH_P_DEC, то надо выполнить процедуру lapbeth_rcv
и, к сожалению,(или просто не хватает информации как мне поступать), эта функция ядром не вызывается...

Помогите, пожалуйста, информацией по ядру unix (не надо отсылать к википедии, поверьте ITUT X25 - моя настольная книга, а вот по очередям пакетов в ядре как-то не очень)

Спасибо Вам огромное за ответ. Может мой вопрос настолько простой, что все на поверхности?
С уважением, Павел

 

Ваше сообщение
Имя*:
EMail:
Для отправки новых сообщений в текущей нити на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру