From: Keith Packard Date: Wed, 28 Sep 2011 06:50:43 +0000 (-0700) Subject: altos: Require callsign match in packet code X-Git-Tag: 1.0.9.4~54 X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=commitdiff_plain;h=77639dae0fb9975219c2e211ea6dd6c7965eeea2 altos: Require callsign match in packet code 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 --- diff --git a/src/cc1111/ao_packet.c b/src/cc1111/ao_packet.c index f502d67c..7eeb0710 100644 --- a/src/cc1111/ao_packet.c +++ b/src/cc1111/ao_packet.c @@ -68,6 +68,15 @@ ao_packet_recv(void) 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;