@@ -904,6 +904,8 @@ void config_init (char *fname, struct audio_s *p_audio_config,
904
904
p_misc_config -> maxv22 = AX25_N2_RETRY_DEFAULT / 2 ; /* Max SABME before falling back to SABM. */
905
905
p_misc_config -> v20_addrs = NULL ; /* Go directly to v2.0 for stations listed. */
906
906
p_misc_config -> v20_count = 0 ;
907
+ p_misc_config -> noxid_addrs = NULL ; /* Don't send XID to these stations. */
908
+ p_misc_config -> noxid_count = 0 ;
907
909
908
910
/*
909
911
* Try to extract options from a file.
@@ -4796,6 +4798,42 @@ void config_init (char *fname, struct audio_s *p_audio_config,
4796
4798
}
4797
4799
4798
4800
4801
+ /*
4802
+ * NOXID address [ address ... ] - Stations known not to understand XID.
4803
+ * After connecting to these (with v2.2 obviously), don't try using XID commmand.
4804
+ * AX.25 for Linux is the one known case so far.
4805
+ * Possible to have multiple and they are cummulative.
4806
+ */
4807
+
4808
+ else if (strcasecmp (t , "NOXID" ) == 0 ) {
4809
+
4810
+ t = split (NULL ,0 );
4811
+ if (t == NULL ) {
4812
+ text_color_set (DW_COLOR_ERROR );
4813
+ dw_printf ("Line %d: Missing address(es) for NOXID.\n" , line );
4814
+ continue ;
4815
+ }
4816
+
4817
+ while (t != NULL ) {
4818
+ int const strict = 2 ;
4819
+ char call_no_ssid [AX25_MAX_ADDR_LEN ];
4820
+ int ssid , heard ;
4821
+
4822
+ if (ax25_parse_addr (AX25_DESTINATION , t , strict , call_no_ssid , & ssid , & heard )) {
4823
+ p_misc_config -> noxid_addrs = (char * * )realloc (p_misc_config -> noxid_addrs , sizeof (char * ) * (p_misc_config -> noxid_count + 1 ));
4824
+ p_misc_config -> noxid_addrs [p_misc_config -> noxid_count ++ ] = strdup (t );
4825
+ }
4826
+ else {
4827
+ text_color_set (DW_COLOR_ERROR );
4828
+ dw_printf ("Line %d: Invalid station address for NOXID command.\n" , line );
4829
+
4830
+ // continue processing any others following.
4831
+ }
4832
+ t = split (NULL ,0 );
4833
+ }
4834
+ }
4835
+
4836
+
4799
4837
/*
4800
4838
* Invalid command.
4801
4839
*/
0 commit comments