Probably the biggest advantage of using the kernel based implementations of the amateur packet radio protocols is the ease with which you can develop applications and programs to use them.
While the subject of Unix Network Programming is outside the scope of this document I will describe the elementary details of how you can make use of the AX.25, NetRom and Rose protocols within your software.
Network programming for AX.25, NetRom and Rose is quite similar to programming for TCP/IP under Linux. The major differences being the address families used, and the address structures that need to be mangled into place.
The address family names for AX.25, NetRom and Rose are AF_AX25
,
AF_NETROM
and AF_ROSE
respectively.
You must always include the `ax25.h
' header file, and also the
`netrom.h
' or `rose.h
' header files if you are dealing with those
protocols. Simple top level skeletons would look something like the following:
For AX.25:
#include <ax25.h>
int s, addrlen = sizeof(struct full_sockaddr_ax25);
struct full_sockaddr_ax25 sockaddr;
sockaddr.fsa_ax25.sax25_family = AF_AX25
For NetRom:
#include <ax25.h>
#include <netrom.h>
int s, addrlen = sizeof(struct full_sockaddr_ax25);
struct full_sockaddr_ax25 sockaddr;
sockaddr.fsa_ax25.sax25_family = AF_NETROM;
For Rose:
#include <ax25.h>
#include <rose.h>
int s, addrlen = sizeof(struct sockaddr_rose);
struct sockaddr_rose sockaddr;
sockaddr.srose_family = AF_ROSE;
There are routines within the lib/ax25.a
library built in the
AX25 utilities package that manage the callsign conversions for you. You can
write your own of course if you wish.
The user_call utilities are excellent examples from which to work. The source code for them is included in the AX25 utilities package. If you spend a little time working with those you will soon see that ninety percent of the work is involved in just getting ready to open the socket. Actually making the connection is easy, the preparation takes time.
The example are simple enough to not be very confusing. If you have any
questions, you should feel to direct them to the linux-hams
mailing
list and someone there will be sure to help you.