@@ -976,6 +976,9 @@ void server_send_monitored (int chan, packet_t pp, int own_xmit)
976
976
// Format addresses in AGWPR monitoring format such as:
977
977
// 1:Fm ZL4FOX-8 To Q7P2U2 Via WIDE3-3
978
978
979
+ // Issue 530 pointed out that in this situation it is customary to put * after each used address,
980
+ // not just the last used as in the TNC-2 monitoring format.
981
+
979
982
static void mon_addrs (int chan , packet_t pp , char * result , int result_size )
980
983
{
981
984
char src [AX25_MAX_ADDR_LEN ];
@@ -986,16 +989,20 @@ static void mon_addrs (int chan, packet_t pp, char *result, int result_size)
986
989
int num_digi = ax25_get_num_repeaters (pp );
987
990
988
991
if (num_digi > 0 ) {
992
+ char via [AX25_MAX_REPEATERS * (AX25_MAX_ADDR_LEN + 1 )]; // complete via path
993
+ strlcpy (via , "" , sizeof (via ));
989
994
990
- char via [AX25_MAX_REPEATERS * (AX25_MAX_ADDR_LEN + 1 )];
991
- char stemp [AX25_MAX_ADDR_LEN + 1 ];
992
- int j ;
995
+ for (int j = 0 ; j < num_digi ; j ++ ) {
996
+ char digiaddr [AX25_MAX_ADDR_LEN ];
993
997
994
- ax25_get_addr_with_ssid (pp , AX25_REPEATER_1 , via );
995
- for (j = 1 ; j < num_digi ; j ++ ) {
996
- ax25_get_addr_with_ssid (pp , AX25_REPEATER_1 + j , stemp );
997
- strlcat (via , "," , sizeof (via ));
998
- strlcat (via , stemp , sizeof (via ));
998
+ if (j != 0 ) {
999
+ strlcat (via , "," , sizeof (via )); // comma if not first address
1000
+ }
1001
+ ax25_get_addr_with_ssid (pp , AX25_REPEATER_1 + j , digiaddr );
1002
+ strlcat (via , digiaddr , sizeof (via ));
1003
+ if (ax25_get_h (pp , AX25_REPEATER_1 + j )) {
1004
+ strlcat (via , "*" , sizeof (via ));
1005
+ }
999
1006
}
1000
1007
snprintf (result , result_size , " %d:Fm %s To %s Via %s " ,
1001
1008
chan + 1 , src , dst , via );
0 commit comments