View this PageEdit this PageUploads to this PageVersions of this PageHomeRecent ChangesSearchHelp Guide

Port del comtret (torniquetes Dassault) de OS/2 1.x a Linux




Wednesday, 11 January 2006, 3:57:32 pm
Introducción al Ethernet (incl. perspectiva histórica) aunque ya esté todo implementado, he visto que hay el artículo Ethernet: de 2,94 A 1000 Mbps en 25 años da una introducción histórica muy buena, y describe de forma adeucada el nivel MAC y el funcionamiento (aunque hay mejores descripciones...). Además hay otros documentos interesantes.

Tuesday, 20 December 2005, 12:27:04 pm
Introduction to networking: LLC Intro to networking explica el LLC error recovery. Otro documento (de mayor dificultad; más vale haber comprendido en anterior antes de leer este) es Understanding LLC, en el que explican con mayor profundidad los mecanismos de corrección de errores del LLC.

Wednesday, 14 December 2005, 5:33:43 pm
Una descripción de NetBeui paso por paso Según este mensaje, en esta web (wayback machine) (copia local) se describe la lógica de la comunicación de NetBEUI.

Wednesday, 7 December 2005, 6:09:55 pm
Ahora me pide mensajes diferentes... se supone que está mal la parte de mandar/recibir mensajes Intenta mandar mensajes del tipo de NetServerEnum2, que se supone son para preguntarle al PDC la lista de hosts accesibles...

Wednesday, 7 December 2005, 11:47 am
Reiniciar las máquinas OS/2 Aparte de los métodos estándar, está el que se usa en los os2 (pupitres):
 detach rebwait 10
 exit

Wednesday, 7 December 2005, 10:20:45 am
Más información del NetBIOS Esta vez parece que bastante bien explicada, con ejemplos, aunque no completa (aunque parece que ya puse este enlace más abajo, el día 2 de Diciembre O:-)

Sunday, 4 December 2005, 1:03:36 pm
Futuro Una vez que funcione lo que ya está hecho, habría que:
  • Implementar reintentos de mandar de LLC. Esto implica guardar los mensajes enviados en un búffer circular y guardar en una matriz de información_de_buffer circular los inicios de cada mensaje y su longitud, de manera que cada vez que se reciba un paquere LLC se compruebe a ver si se han recibido los paquetes mas antiguos de 1s; si se han recibido, descartarlos en el búffer Si no, volverlos a mandar.
  • Implementar una máquina de estados correcta para NetBIOS, es decir, mandar la respuesta adecuada a cada mensaje.

Friday, 2 December 2005, 8:25:37 pm
Para pasar datos del unknown.log al ethereal Se hace con:
 $ text2pcap unknown.log unknown.tcp


Friday, 2 December 2005, 11:11:07 am
Información (por fiin) de NetBIOS sobre 802.2 Algunos documentos como NetBIOS Session Management Protocol y NetBIOS Name Management Protocol se encuentran en la siguiente URL:
Además se tiene de esta otra búsqueda

Friday, 2 December 2005, 9:30:20 am
Ya tengo la primera versión preliminar del netbeuidaemon Para comunicar con el pupitre he hecho otra librería, que se llama simplemsg (está ne salchicha, directorio sico-simplemsg). Lo que hace está comprobado con el simulador de torniquete y con el ethereal, pero me falta saber si la manera que tengo de calcular el siguiente número de serie de mensaje (tanto en el nivel LLC (el NR), como en el NetBIOS (el CorTr)) es correcto.

Wednesday, 30 November 2005, 7:13:57 pm
Descripción de SMB Aparte de la documentación ya mencionada para NetBIOS, existe la siguiente documentación de SMB:

Monday, 21 November 2005, 9:59:09 am
Prueba satisfactoria de "despertar" los torniquetes con el netbeuidaemon La hemos realizado en puertaangel(f6), que tiene a la máquina OS/2 sin ping. La captura de tcpdump está en seraphim:/home/dario/ethereal/ con el nombre puertaangel.tcp. Y se ve que responden corectamente :-b.

Friday, 18 November 2005, 5:56:02 pm
¡Exito en la primera prueba! En marqués de vadillo (f5), que tiene el pupitre OS/2 apagado, al menos un torniquete ha respondido a mi "despertado" con el netbeuidaemon :-))). El Lunes, más pruebas (con un tcpdump para ver el resultado real y todo eso).

Friday, 18 November 2005, 7:29:51 am
Un programa que hace lo mismo que mi netbauidaemon: veth Resulta que hay un programa que hace lo mismo que el netbeuidaemon, el VETH - Virtual Ethernet Device for Linux, pero para crear una tarjeta de red virtual. Usa tun/tap para obtener una MAC adicional, pero por lo demás es muy parecido al tornsim que he hecho junto al netbeuidaemon. Puede ser interesante para ver si hay algo que pueda hacerse mejor (aunque no creo que tenga muchas diferencias, ya que el método es bastante directo) ;-). Bueno, por de pronto me ha servido para saber el nombre del miembro de la estructura ifreq que contiene la MAC :-D.

Thursday, 17 November 2005, 5:13:21 pm
Captura de otra conversación completa (dia.tcp) La captua de noche.tcp no era completa, ya que los mensajes mayores de 96 bytes estaban cortados. He realizado otra con la siguiente línea de comando:
 tcpdump -s 1024 -xx -i eth2 -w dia.tcp
De reseñar:
  • El el 395s se reinicia (de forma ordenada; hicimos un "detach rebwait 10" en la máquina OS/2).
  • En el 119s hay mensajes de Mailslot
  • En el 153s hay mensajes de "TreeConnect"

Thursday, 17 November 2005, 8:42 am
Detalles sobre OS/2 Para hacer las pruebas:

Thursday, 17 November 2005, 8:31:45 am
Captura de una conversación completa (noche.tcp) Está en seraphim:/home/dario/ethereal/noche.tcp, y hay que mirar a partir de los 23300s, que es cuando el OS/2 hizo el shutdown. Antes del shutdown:

  • El el 23301s mensajes de disconnect de la máquina OS/2

A partir de ese momento, se ven:

  • El el 23342s mensajes de discover de cuando se levantó OS/2.

Otros detalles interesantes:

  • La MAC de la máquina OS/2 es "0000c0d9adbc"
  • Los filtros (coloring rules) a poner para mejorar la lectura, son:

NombrefiltroBg color
from os2 eth.src == 00:00:c0:d9:ad:bc#FDB3B3
to os2eth.dst == 00:00:c0:d9:ad:bc#CAFFA1

  • El filtro a poner para que sólo salga la comunicacion entre ESC0 y 4002

(eth.src == 00:00:c0:d9:ad:bc && (eth.dst == 00:00:c0:44:b6:c2 || eth.dst == 03:00:00:00:00:01)) || eth.src == 00:00:c0:44:b6:c2


Wednesday, 16 November 2005, 8:59:41 pm
Sobre el protocolo Usan DIX 1.0, es decir, poniendo el length, no el proto, y eso es para no tener que usar "SNA sobre ethernet", sino poner a continuación SNA directamente (los SAP y todo eso).

Monday, 14 November 2005, 5:32:30 pm
Cosas a estudiar en el núcleo En los siguientes sitios:
  • salchicha:/usr/src/netbeui/linux-2.4.31/net/802/p8022.c
Lo que parece es que IPX tb usa 802.2 (y eso me vendria muy bien).

Friday, 11 November 2005, 5:06:01 pm
Más ejemplos

Tuesday, 8 November 2005, 7:51:35 am
Sobre packet(7) y PF_PACKET Se dispone de la siguiente documentación (sacada, entre otras, de esta búsqueda y esta otra):
r->fd = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL));
//ETH_P_ECONET+1 = ETH_P_80211_RAW according to the linux-wlan headers.
// ssl is a sockaddr_ll
sll.sll_ifindex = get_index("eth0"); // SIOCGIFINDEX wrapper
//int get_index(char ifName) {
// struct ifreq ifr;
// int s;
// s=socket(PF_INET, SOCK_DGRAM,0);
// memset(&ifr,0,sizeof(ifr));
// strcpy(ifr.ifr_name, ifName); // ifName is e.g. "wlan0"
// if(ioctl(s, SIOCGIFINDEX, &ifr) !=0) {
//   close(s);
//   return(-1);
// }
// close(s);
// return(ifr.ifr_ifindex);
//}
sll.sll_protocol = htons(ETH_P_ALL);
if(bind(r->fd, (struct sockaddr )&sll, sizeof(sll)) == -1)
   ...
dataLen = recvfrom(s, buffer,bufferSize, 0, NULL, NULL);

  • Contenido de la estructura sll cuando se captura en "coocked mode" según el ethereal. Esta es la razón por la que los paquetes del ethereal no se corresponden con DIX 2.0, porque está capturando el SLL y no está haciendo un dump de la información de la estructura SLL, que debiera contener el tipo de paquete que ha recibido en la ethernet. La cabecera que de la que está haciendo dump es una "sintética" generada por Linux, al haber quitado la real.
  • Según el /usr/include/linux/if_ether.h, el tipo que nos correspondería sería el ETH_P_802_2 (0x0004) o ETH_P_TR_802_2 (0x0011), pero no sé la direrencia entre ambas. Quizás este código comentado del núcleo 2.6 pueda ser de ayuda (¿eh? ¿Linux 2.6 sí soporta LLC? Hmmm....).

Monday, 7 November 2005, 10:45:14 am
Implementar LLC/NetBeui Está disponible la siguiente documentación:

Friday, 4 November 2005, 4:33:28 pm
Para capturar los paquetes Resulta que lo mejor es usar el pcap, que es lo que usa el tcpdump y el ethereal. Hay algo de documentación de las funciones del pcap. Más información:

Friday, 4 November 2005, 8:15:54 am
Enlaces sobre OS/2 Par instalarlo y poder hacer pruebas:

Para descomprimir los disquettes se necesita DOS, por lo que es útil el:

Básicamente es usar la siguiente configuración en un fichero dosemu.conf en el directorio actual:
$_cpu = "80386"
$_floppy_a = "threeinch:/dev/fd0"
$_floppy_b = "fiveinch:/dev/fd1"
$_layout = "es-latin1"

Después basta con arrancar el dosemu de manera que use esa configuración:
 # dosemu -f dosemu.conf
Y en el dosemu escribir (para montar el /tmp en f:)
 C:\> lredir f: linux\fs/tmp


Thursday, 3 November 2005, 12:55:04 pm
Información sobre el protocolo LLC IEEE 802.2 Logical Link Control (LLC) protocol (cache) y NetBIOS y SMB (cache). Por otra parte, se supone que NetBIOS va por encima de NetBEUI (aunque no es estrictamente necesario, tal y como se ve aquí).

Thursday, 3 November 2005, 12:30:56 pm
Protocolos... No está de más repasar the tcpip reference page, en la que tienen una lista bastante completa de protocolos. También es razonable mirar RFC1700: Assigned numbers. Sea como sea, las tramas LLC están al mismo nivel que las IP, con lo que es unformación "complementaria" pero no necesariamente útil.

Monday, 31 October 2005, 11:59:27 am
packet(7) soporta mandar tramas LLC desde userland Resulta que se puede implementar el protocolo que necesitamos directamente desde userland (req. ser root para poner la tarj. en modo promiscuo y todo eso, pero tampoco es para tanto):
  • packet(7) - mandar tramas a nivel 2 de OSI (permite implementar protocolos, como el 802.2 (NetBEUI va sobre eso)).
  • The LAN Information Server - LISa Implementa una especia de micro-samba sin usar SMB... pero usa NetBIOS (no NetBEUI, que es lo que necesito).



Wednesday, 26 October 2005, 11:22:47 am
Para regenerar las dependencias Resulta que al instalar pcmcia como paquete aparte, hay que regenerar las dependencias después de instalar un nuevo núcleo. En el pupitre_Sc, como root y estando en rw, se hace:
# depmod -ae -F /boot/System.map-2.4.31-acme5-f6 2.4.31-acme5-f6

Wednesday, 26 October 2005, 8:32:09 am
Correcciones al config del kernel de debian para el pupitre Daba un símbolo no encontrado para IDE, siguiendo este HOWTO, simplemente lo he puesto incuído en el núcleo en vez de como módulo. También he desactivado el soporte PCMCIA, para poder compilar aparte el pcmcia_cs con soporte pnpbios.

Tuesday, 25 October 2005, 12:51:32 pm
Uso del mkinitrd He instalado de mala manera (sin actualizar el modutils, usando un núcleo 2.4 para ejemplo) el initrd-tools en salchicha. Para usarlo, se hace (en el propio pupitre_sc o bien en zen, que tiene la misma versión de Debian):
# mkinitrd -o /boot/initrd.img-`uname -r` /lib/modules/`uname -r`
por ejemplo (tomado de cómo lo creaba para el 2.2.26):
# mkinitrd -k -o /boot/initrd.img-2.4.31-acme5-f6 -r /dev/hda1 2.4.31-acme5-f6



Tuesday, 25 October 2005, 11:44:44 am
Nuevo intento de usar el núcleo con soporte NetBEUI Esta vez usando como base este .config, y activando las opciones como módulo de 802.2, NetBEUI e IPv6 (esta última para asegurarse de que están todas las dependencias, tal y como dicen en la página de NetBEUI para linux.

Friday, 1 July 2005, 10:59:06 am
Soporte samba sobre netbios sobre netbeui en linux Requiere de lo siguiente:

Thursday, 16 June 2005, 5:10:08 pm
Hay más implementaciones de CIFS aparte de samba: smblib Los fuentes (algo antiguos) están aquí. La pena es que no tenga implementado NetBEUI.

Thursday, 16 June 2005, 3:54:10 pm
Descripción del protocolo CIFS/E (mailstot) Resulta que Microsoft tiene publicado un draft (copia local: draft-leach-cifs-browser-spec-00.html) que incluye entre otras cosas el mailslot protocol. En este advisory cuentan que ese es el protocolo del winpopup.exe y explican un poco como funciona.
Se accede a ellos usando:
Stack usadaPuertosNotas
SMB over NetBIOS over NetBEUI-se supone que se puede usar en linux
SMB over NetBIOS over TCP/IP138/udp
139/tcp
Requiere haber negociado previamente una sesión NetBIOS usando el "NetBIOS name resolution service" (137/udp)
SMB natively over TCP/IP
(without NetBIOS)
445/udp
445/tcp
-

Para más información: artículo con la relación entre los redirectores, SMB, NetBIOS y NetBEUI.
Para curiosos: historia del samba (hasta 1999).

Thursday, 16 June 2005, 12:46:48 pm
Cólo usar mensajes sobre SMB: smbmount Para ver cómo mandar mensajes con el prorocolo NetBIOS: smbmount.c. Más información en el CVS del samba.

Thursday, 16 June 2005, 11:46:33 am
Resulta que DosMakeMailSlot es de LAN Manager Según esta página, DosMakeMailSlot() es una función de LAN Manager. Lo cual significa que seguramente implique que se comunica usando NetBIOS/NetBeui. Por lo que se ve, es una capa del stack de samba; Según una captura de tráfico del ethereal de alguien usando samba, salen cosas como la siguiente (en este caso estaba listando los equipos del "neighborhood"):
Frame 2 (216 bytes on wire, 216 bytes captured)
Ethernet II, Src: 00:04:76:8e:3f:64, Dst: ff:ff:ff:ff:ff:ff
Internet Protocol, Src Addr: X.Y.Z.41 (X.Y.Z.41), 
    Dst Addr: X.Y.Z.63 (X.Y.Z.63) User Datagram Protocol, Src Port: netbios-dgm (138),
    Dst Port: netbios-dgm (138) NetBIOS Datagram Service SMB (Server Message Block Protocol) SMB MailSlot Protocol Microsoft Windows Browser Protocol
Para más información de los protocolos implicados, puede ser interesante ver esta reseña de un libro sobre CIFS (samba)

Monday, 9 May 2005, 8:59:33 am
Primeras impresiones: usa APIs de 16-bit (OS/2 1.x) Usa funciones de comunicación de los APIs de 16-bit de OS/2.


Descripción del proyecto


Portar la librería de OS/2 1.x comtret a Linux. Sirve para comunicar a través de una LAN (vía BNC) con el "calculador" (CPU embebida) que está dentro de los torniquetes de la barrera de torniquetes y los controla.

Attachs:

draft-leach-cifs-browser-spec-00.html