> Вам это все зачем?
> Сети 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 - моя настольная книга, а вот по очередям пакетов в ядре как-то не очень)
Спасибо Вам огромное за ответ. Может мой вопрос настолько простой, что все на поверхности?
С уважением, Павел