summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Osterried <ax25@x-berg.in-berlin.de>2016-07-04 10:14:57 +0200
committerThomas Osterried <ax25@x-berg.in-berlin.de>2016-07-04 10:14:57 +0200
commit8f73f5e8d01fab77ba14083ae30f4ae859a6ecc1 (patch)
tree6865b17760f0c5c9226f6bef86517029cd9c1759
parentec4368814f892e9c9bce03ec027305e0817861b0 (diff)
added "-d a" option to mheard:
Display the data from c and s combined in one view. Requires wide screen. Patch by Folkert van Heusden <mail@vanheusden.com> Signed-off-by: Thomas Osterried <ax25@x-berg.in-berlin.de>
-rw-r--r--ax25/mheard.c71
1 files changed, 63 insertions, 8 deletions
diff --git a/ax25/mheard.c b/ax25/mheard.c
index 2370a46..92fcf75 100644
--- a/ax25/mheard.c
+++ b/ax25/mheard.c
@@ -41,16 +41,19 @@ static void PrintHeader(int data)
{
switch (data) {
case 0:
- printf("Callsign Port Packets Last Heard\n");
+ printf("Callsign Port Packets Last Heard\n");
break;
case 1:
- printf("Callsign Port\n");
+ printf("Callsign Port\n");
break;
case 2:
- printf("Callsign Port #I #S #U First Heard Last Heard\n");
+ printf("Callsign Port #I #S #U First Heard Last Heard\n");
break;
case 3:
- printf("Callsign Port Packets Type PIDs\n");
+ printf("Callsign Port Packets Type PIDs\n");
+ break;
+ case 4:
+ printf("Callsign Port #I #S #U First Heard Last Heard Packets Type PIDs Targets\n");
break;
}
}
@@ -68,7 +71,7 @@ static void PrintPortEntry(struct PortRecord *pr, int data)
call = ax25_ntoa(&pr->entry.from_call);
if ((s = strstr(call, "-0")) != NULL)
*s = '\0';
- printf("%-10s %-5s %5d %s\n",
+ printf("%-9s %-5s %5d %s\n",
call, pr->entry.portname, pr->entry.count, lh);
break;
case 1:
@@ -102,14 +105,14 @@ static void PrintPortEntry(struct PortRecord *pr, int data)
call = ax25_ntoa(&pr->entry.from_call);
if ((s = strstr(call, "-0")) != NULL)
*s = '\0';
- printf("%-10s %-5s %5d %5d %5d %s %s\n",
+ printf("%-9s %-5s %5d %5d %5d %s %s\n",
call, pr->entry.portname, pr->entry.iframes, pr->entry.sframes, pr->entry.uframes, fh, lh);
break;
case 3:
call = ax25_ntoa(&pr->entry.from_call);
if ((s = strstr(call, "-0")) != NULL)
*s = '\0';
- printf("%-10s %-5s %5d %5s ",
+ printf("%-9s %-5s %5d %5s ",
call, pr->entry.portname, pr->entry.count, types[pr->entry.type]);
if (pr->entry.mode & MHEARD_MODE_ARP)
printf(" ARP");
@@ -137,6 +140,55 @@ static void PrintPortEntry(struct PortRecord *pr, int data)
printf(" Unknown");
printf("\n");
break;
+ case 4:
+ strcpy(lh, ctime(&pr->entry.last_heard));
+ lh[19] = 0;
+ strcpy(fh, ctime(&pr->entry.first_heard));
+ fh[19] = 0;
+ call = ax25_ntoa(&pr->entry.from_call);
+ if ((s = strstr(call, "-0")) != NULL)
+ *s = '\0';
+ printf("%-9s %-5s %5d %5d %5d %s %s",
+ call, pr->entry.portname, pr->entry.iframes, pr->entry.sframes, pr->entry.uframes, fh, lh);
+ printf("%5d %5s ", pr->entry.count, types[pr->entry.type]);
+ if (pr->entry.mode & MHEARD_MODE_ARP)
+ printf(" ARP ");
+ if (pr->entry.mode & MHEARD_MODE_FLEXNET)
+ printf(" FlexNet ");
+ if (pr->entry.mode & MHEARD_MODE_IP_DG)
+ printf(" IP-DG ");
+ if (pr->entry.mode & MHEARD_MODE_IP_VC)
+ printf(" IP-VC ");
+ if (pr->entry.mode & MHEARD_MODE_NETROM)
+ printf(" NET/ROM ");
+ if (pr->entry.mode & MHEARD_MODE_ROSE)
+ printf(" Rose ");
+ if (pr->entry.mode & MHEARD_MODE_SEGMENT)
+ printf(" Segment ");
+ if (pr->entry.mode & MHEARD_MODE_TEXNET)
+ printf(" TexNet ");
+ if (pr->entry.mode & MHEARD_MODE_TEXT)
+ printf(" Text ");
+ if (pr->entry.mode & MHEARD_MODE_PSATFT)
+ printf(" PacsatFT ");
+ if (pr->entry.mode & MHEARD_MODE_PSATPB)
+ printf(" PacsatPB ");
+ if (pr->entry.mode & MHEARD_MODE_UNKNOWN)
+ printf(" Unknown ");
+ if (pr->entry.mode == 0)
+ printf(" ");
+
+ buffer[0] = '\0';
+ for (i = 0; i < pr->entry.ndigis; i++) {
+ if (i)
+ strcat(buffer, ",");
+ call = ax25_ntoa(&pr->entry.digis[i]);
+ if ((s = strstr(call, "-0")) != NULL)
+ *s = '\0';
+ strcat(buffer, call);
+ }
+ printf("%s\n", buffer);
+ break;
}
}
@@ -310,6 +362,9 @@ int main(int argc, char *argv[])
case 's':
data = 2;
break;
+ case 'a':
+ data = 4; /* s + c */
+ break;
default:
fprintf(stderr, "mheard: invalid display type '%s'\n", optarg);
return 1;
@@ -342,7 +397,7 @@ int main(int argc, char *argv[])
return 0;
case '?':
case ':':
- fprintf(stderr, "Usage: %s [-d cmns] [-n] [-o cfpt] [-v] [port ...]\n", argv[0]);
+ fprintf(stderr, "Usage: %s [-d cmnsa] [-n] [-o cfpt] [-v] [port ...]\n", argv[0]);
return 1;
}
}