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
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:
#include <ax25.h> int s, addrlen = sizeof(struct full_sockaddr_ax25); struct full_sockaddr_ax25 sockaddr; sockaddr.fsa_ax25.sax25_family = AF_AX25
#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;
#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
list and someone there will be sure to help you.