#include #include #include #include #include #include #include static void usage(int argc, char **argv, const char *message, ...) { if (message != NULL) { va_list args; va_start(args, message); vfprintf(stderr, message, args); fprintf(stderr, "\n"); va_end(args); } fprintf(stderr, "usage: %s /dev/ttyXX|kiss.cap\n", argv[0]); exit(1); } int main(int argc, char **argv) { patty_ax25_server *server; patty_ax25_if *iface; if (argc != 2) { usage(argc, argv, "No TNC device or KISS dump file provided"); } if ((server = patty_ax25_server_new()) == NULL) { goto error_server_new; } if ((iface = patty_ax25_if_new(PATTY_AX25_IF_KISS_TNC, argv[1])) == NULL) { goto error_if_new; } if (patty_ax25_if_addr_add(iface, "KZ3ROX", 0) < 0) { goto error_if_addr_add; } if (patty_ax25_server_add_if(server, iface) < 0) { goto error_server_add_if; } if (patty_ax25_server_run(server) < 0) { fprintf(stderr, "%s: %s: %s: %s\n", argv[0], argv[1], "patty_ax25_server_run()", strerror(errno)); goto error_server_run; } patty_ax25_server_destroy(server); return 0; error_server_run: error_server_add_if: error_if_addr_add: error_if_new: patty_ax25_server_destroy(server); error_server_new: return 1; }