Ignore packets with mismatching callsigns to avoid accidental
connections between devices controlled by different stations.
As a special case, if the device is configured with the default
callsign (N0CALL), then let anyone connect. This allows configuration
of new devices without needing to change the ground station callsign.
Signed-off-by: Keith Packard <keithp@keithp.com>
if (!(ao_rx_packet.status & PKT_APPEND_STATUS_1_CRC_OK))
return 0;
+ /* Accept packets with matching call signs, or any packet if
+ * our callsign hasn't been configured
+ */
+ if (ao_xmemcmp(ao_rx_packet.packet.callsign,
+ ao_config.callsign,
+ AO_MAX_CALLSIGN) != 0 &&
+ ao_xmemcmp(ao_config.callsign, CODE_TO_XDATA("N0CALL"), 7) != 0)
+ return 0;
+
/* SYN packets carry no data */
if (ao_rx_packet.packet.len == AO_PACKET_SYN) {
rx_seq = ao_rx_packet.packet.seq;