Probablemente la mayor ventaja de usar la implementación del kernel del protocolo de packet radio de radioaficionados , es la facilidad que obtenemos para desarrollar aplicaciones y programas para usarlo.
A pesar de que la Programación de Red bajo Unix está fuera del alcance de este documento, describiré los detalles elementales de cómo puedes hacer uso de los protocolos AX.25, NetRom, y Rose dentro de tu software.
Bajo Linux, la programación de red de AX.25, NetRom y Rose es similar a la de TCP/IP. La mayor diferencia es la familia de direcciones usada, y las estructuras de direcciones que necesitan mantenerse en su lugar.
Las familias de direcciones para AX.25, NetRom y Rose son respectivamente AF_AX25, AF_NETROM y AF_ROSE.
Se deben incluir siempre los ficheros de cabeceras "ax25.h", "netrom.h" y "rose.h" si vas a usar esos protocolos. Un diseño sencillo de máximo nivel se veria así:
Para AX.25:
#include <netax25/ax25.h> int s, addrlen = sizeof(struct full_sockaddr_ax25); struct full_sockaddr_ax25 sockaddr; sockaddr.fsa_ax25.sax25_family = AF_AX25 |
Para NetRom:
#include <netax25/ax25.h> #include <netrom/netrom.h> int s, addrlen = sizeof(struct full_sockaddr_ax25); struct full_sockaddr_ax25 sockaddr; sockaddr.fsa_ax25.sax25_family = AF_NETROM; |
Para Rose:
#include <netax25/ax25.h> #include <netrose/rose.h> int s, addrlen = sizeof(struct sockaddr_rose); struct sockaddr_rose sockaddr; sockaddr.srose_family = AF_ROSE; |
Dentro de la librería lib/ax25.a del paquete de utilidades de AX.25, hay rutinas que manejan la conversión de los indicativos, pero si quieres, tu puedes escribir las tuyas.
Las utilidades user_call son excelentes ejemplos con que trabajar. El código fuente de ellas está incluido en el paquete de Utilidades AX.25. Si empleas un poco de tiempo trabajando con ellas, verás rápidamente que el 90 por ciento del trabajo se invierte preparándose para abrir el socket. Actualmente la conexión es fácil, prepararla lleva tiempo.
El ejemplo es sencillo para no ser muy confuso. Si tienes alguna pregunta, diríjete directamente a la lista linux-hams y alguien seguramente te ayudará.