Commit graph

551 commits

Author SHA1 Message Date
XANTRONIX Development
88743a5754 Decouple interface names from patty_ax25_if
Changes:

    * Remove interface name argument from patty_ax25_if_new()

    * Add interface name argument to patty_ax25_server_if_add()

    * Add interface name argument to patty_daemon_if_add()

    * In src/server.c, implement 'struct if_entry' to hold the interface
      name, file descriptor, and pointer to a patty_ax25_if object, to
      recouple names to their respective interfaces

    * Add a return argument to patty_bin_if_create() to store a pointer
      to a new interface name created from a declaration
2024-03-01 00:20:47 -05:00
XANTRONIX Development
61c17f8026 Skip non-SOCK_STREAM in aprs_is_connect() 2024-03-01 00:20:47 -05:00
XANTRONIX Development
fa34ba9e7c Attempt to set raw attributes on new socket PTYs
Attempt to set raw attributes on new socket PTYs to fix an issue on
Linux wherein any data written to a socket before the PTY subordinate
has been opened would be looped back in canonical mode, causing
frame errors; if tcsetattr() fails (usually on a non-Linux platform),
set errno to 0
2024-03-01 00:20:47 -05:00
XANTRONIX Development
9dd27b5924 Remove useless expression from patty_client_ping() 2024-03-01 00:20:47 -05:00
XANTRONIX Development
54d6324dea Fix invalid return in patty_ax25_aprs_is_send()
Fix invalid return in patty_ax25_aprs_is_send() wherein the number of
bytes written to APRS-IS was returned, rather than the number of AX.25
packet bytes; the number of bytes read is the more important value as it
is used later for repeating the frame to promiscuous mode SOCK_RAW
sockets
2024-03-01 00:20:47 -05:00
XANTRONIX Development
9f6f775ee4 Simplify handle_sock_raw() in src/server.c 2024-03-01 00:20:47 -05:00
XANTRONIX Development
754491b692 Update .gitignore 2024-03-01 00:20:47 -05:00
XANTRONIX Development
62f4f2ca7c Improve bin/tncd.c
Changes:

    * Ensure TNC PTYs are closed on error

    * Instead of waiting indefinitely, use patty_client_ping() to poll
      the status of the patty daemon to exit in a timely manner
2024-03-01 00:20:47 -05:00
XANTRONIX Development
e053d6cdbc Drop patty_kiss_tnc_recv() from handle_sock_raw()
Refactor handle_sock_raw() in src/server.c to remove usage of
patty_kiss_tnc_recv() in favor of its component methods:

    * patty_kiss_tnc_fill()
    * patty_kiss_tnc_drain()
    * patty_kiss_tnc_ready()
    * patty_kiss_tnc_flush()
2024-03-01 00:20:47 -05:00
XANTRONIX Development
50eaef806d Reset TNC command state on frame end 2024-03-01 00:20:47 -05:00
XANTRONIX Development
26716a5b2a Fix handling of SOCK_RAW frames
Fix issue handling SOCK_RAW frames wherein patty_ax25_sock_send() is
used instead of patty_ax25_if_send() to send frames through the
interface bound to the socket
2024-03-01 00:20:47 -05:00
XANTRONIX Development
bec778de7b Implement bin/tncd.c
Implement bin/tncd.c to expose a network interface as a KISS TNC device
over a PTY
2024-03-01 00:20:47 -05:00
XANTRONIX Development
3cf9d4093a Add patty_client_read(), patty_client_write()
Add patty_client_read(), patty_client_write() to allow direct I/O with
a pattyd(8) process from a patty_client object
2024-03-01 00:20:47 -05:00
XANTRONIX Development
df84f68678 Prevent server dying on invalid client requests 2024-03-01 00:20:47 -05:00
XANTRONIX Development
9709cef6dc Fix patty_client_socket_response struct name 2024-03-01 00:20:47 -05:00
XANTRONIX Development
84a4815708 Whitespace tweaks 2024-03-01 00:20:47 -05:00
XANTRONIX Development
b2789a4d56 Implement patty_ax25_if_recv()
Implement patty_ax25_if_recv() as a utility function to allow one to
use when instantiating a network interface without a full network stack
2024-03-01 00:20:47 -05:00
XANTRONIX Development
c8c00c994c Handle non-DATA KISS commands in src/tnc.c
Handle non-DATA KISS commands in src/tnc.c, rather than simply returning
-1 setting errno to EIO
2024-03-01 00:20:47 -05:00
XANTRONIX Development
0b568435e9 Use fflush() after printing pty in bin/pattyd.c 2024-03-01 00:20:47 -05:00
XANTRONIX Development
bcc1c69d45 Increase print_addr() buffer size in src/print.c
Increase print_addr() buffer size in src/print.c to allow for a nul
terminator
2024-03-01 00:20:47 -05:00
XANTRONIX Development
fbefda6103 Avoid connecting to APRS-IS via UDP
Avoid connecting to APRS-IS via UDP by filtering out getaddrinfo()
results of SOCK_DGRAM type
2024-03-01 00:20:47 -05:00
XANTRONIX Development
7172863a1a Close sockets on failure to write, don't die 2024-03-01 00:20:47 -05:00
XANTRONIX Development
dfd0978113 Move patty_ax25_if_stats accounting into drivers
Move patty_ax25_if_stats accounting into drivers to help provide a more
consistent interface for accessing and incrementing interface statistics
2024-03-01 00:20:47 -05:00
XANTRONIX Development
9a1b163954 Add APRS-IS link resilience for some frame errors
Add APRS-IS link resilience for some errors encoding APRS-IS TNC2 format
frames as AX.25 by simply dropping the frame and moving on to the next
2024-03-01 00:20:47 -05:00
XANTRONIX Development
78f42b02ea Prevent SSIDs >15 in patty_ax25_pton() 2024-03-01 00:20:47 -05:00
XANTRONIX Development
02033990a6 Remove usage of snprintf() from patty_ax25_ntop()
Remove usage of snprintf() from patty_ax25_ntop() to gain better control
over the behavior of how the 'len' argument and nul terminator are
handled
2024-03-01 00:20:47 -05:00
XANTRONIX Development
c98d07e876 Rename struct members, variables
Rename struct members, variables for better visual appeal
2024-03-01 00:20:47 -05:00
XANTRONIX Development
70d112eb91 Implement patty_ax25_aprs_is_send()
Implement patty_ax25_aprs_is_send() to be able to encode any outbound UI
frames in TNC2 format, and to send them to a remote APRS-IS server

Other changes:

    * Remove unimplemented patty_ax25_aprs_is_printf() declaration

    * Remove unimplemented patty_ax25_aprs_is_readline() declaration
2024-03-01 00:20:47 -05:00
XANTRONIX Development
34e5629bc9 Use const qualifier in src/frame.c where proper 2024-03-01 00:20:47 -05:00
XANTRONIX Development
e40f2ded36 Add error reporting for APRS-IS interface failures 2024-03-01 00:20:47 -05:00
XANTRONIX Development
7eca9a09c9 Use patty_error_fmt() for errors in pattyd(8) 2024-03-01 00:20:47 -05:00
XANTRONIX Development
d1b507e81f Rename patty_error_isset() to patty_error_set()
Rename patty_error_isset() to patty_error_set() in src/error.c (for now)
2024-03-01 00:20:47 -05:00
XANTRONIX Development
606237606d Move APRS-IS connection code to aprs_is_connect()
Move APRS-IS connection code to aprs_is_connect() in src/aprs_is.c
2024-03-01 00:20:47 -05:00
XANTRONIX Development
52350ad0e8 patty_ax25_pton(): Make calls ending in - invalid 2024-03-01 00:20:47 -05:00
XANTRONIX Development
8f01ab1cd4 Make patty_print_header() use TNC2 format
Make patty_print_header() use TNC2 format for representing source,
destination and repeater addresses
2024-03-01 00:20:47 -05:00
XANTRONIX Development
77bb1bf030 s/PATTY_AX25_CALLSIGN_LEN/PATTY_AX25_CALLSTRLEN/g 2024-03-01 00:20:47 -05:00
XANTRONIX Development
e2796596ac Allow patty_ax25_pton() to accept APRS characters 2024-03-01 00:20:47 -05:00
XANTRONIX Development
dc97e5d324 Add APRS-IS interface documentation to doc/pattyd.conf.5 2024-03-01 00:20:47 -05:00
XANTRONIX Development
a807a9ec9d Implement APRS-IS interface type
Implement an APRS-IS interface type which is capable of receiving all
APRS-IS traffic which can be represented in AX.25 frames; currently,
there are no provisions for handling extended features such as
non-numeric SSIDs, nor a client nor server which facilitate direct
APRS-IS communication.  Presently, APRS-IS traffic cannot be sent from
this interface.

Changes:

    * Add patty_ax25_aprs_is driver type in src/aprs_is.c

    * Implement 'aprs-is' interface configuration type in bin/if.c; make
      separate, smaller state machines for handling base interface
      config, KISS, and APRS-IS interface config
2024-03-01 00:20:47 -05:00
XANTRONIX Development
29fbea2e18 Use snprintf() to format SSID in patty_ax25_ntop() 2024-03-01 00:20:47 -05:00
XANTRONIX Development
7041b73e0e Simplify patty_ax25_pton() state machine
Simplify patty_ax25_pton() state machine to remove the unnecessary
ADDR_NONE state
2024-03-01 00:20:47 -05:00
XANTRONIX Development
eaa3a3a06a Use PATTY_AX25_ADDRSTRLEN in patty_ax25_pton() 2024-03-01 00:20:47 -05:00
XANTRONIX Development
b8c19ea6cd Fix address padding bug in patty_ax25_pton()
Fix address padding bug in patty_ax25_pton() wherein a literal space was
filled into an address field, rather than a space (0x20) shifted left by
one
2024-03-01 00:20:47 -05:00
XANTRONIX Development
d5e2062dea Split patty_ax25_if_recv() into specific parts
Split patty_ax25_if_recv() into the following parts:

    * patty_ax25_if_fill(), to fill the internal PHY buffer

    * patty_ax25_if_drain(), to drain the internal PHY buffer and decode
      any data present in the buffer

    * patty_ax25_if_ready(), to test if a complete frame has been
      decoded

    * patty_ax25_if_flush(), to return the final number of bytes decoded
      in the PHY buffer and reset the decoding state

Other changes:

    * Implement a finite state machine for decoding KISS traffic in
      src/tnc.c, patty_ax25_kiss_drain()

    * Refactor src/server.c, handle_iface() to use the aforementioned
      frame receive/decode methods
2024-03-01 00:20:47 -05:00
XANTRONIX Development
2f5c877762 Fix uninitialized memory in patty_kiss_tnc_driver() 2024-03-01 00:20:47 -05:00
XANTRONIX Development
4b1e0ff46d Better variable name in patty_kiss_tnc_recv() 2024-03-01 00:20:47 -05:00
XANTRONIX Development
16b46168b2 Remove unneeded variable in patty_kiss_tnc_recv() 2024-03-01 00:20:47 -05:00
XANTRONIX Development
bd1238e0bd Improve frame encoding error handling, reporting
Changes:

    * Improve error detection in patty_ax25_frame_encode()

    * Make patty_ax25_frame_encode() set EOVERFLOW when encoding beyond
      the caller specified limit

    * Make patty_ax25_frame_encode_reply_to() set EOVERFLOW when
      encoding beyond the caller specified limit
2024-03-01 00:20:47 -05:00
XANTRONIX Development
30b17d337b Fix #include cycle in include/patty/kiss/tnc.h 2024-03-01 00:20:47 -05:00
XANTRONIX Development
00fd626757 Fix patty_conf_read() backslash escape bug
Fix patty_conf_read() bug wherein backslash escapes simply did not
work as intended
2024-03-01 00:20:47 -05:00