FreeCalypso > hg > freecalypso-tools
diff rvinterf/lowlevel/logsent.c @ 0:e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sat, 11 Jun 2016 00:13:35 +0000 |
parents | |
children | a1065c17429c |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/rvinterf/lowlevel/logsent.c Sat Jun 11 00:13:35 2016 +0000 @@ -0,0 +1,85 @@ +/* + * This module implements the logging of sent packets + */ + +#include <sys/types.h> +#include <stdio.h> +#include <string.h> +#include <strings.h> +#include "../include/pktmux.h" +#include "../include/limits.h" + +static void +log_sent_ati(pkt, pktlen) + u_char *pkt; +{ + char buf[MAX_PKT_TO_TARGET*4+10]; + int i, c; + char *dp; + + strcpy(buf, "Sent to ATI: "); + dp = buf + 13; + for (i = 1; i < pktlen; i++) { + c = pkt[i]; + if (c & 0x80) { + *dp++ = 'M'; + *dp++ = '-'; + c &= 0x7F; + } + if (c < 0x20) { + *dp++ = '^'; + *dp++ = c + '@'; + } else if (c == 0x7F) { + *dp++ = '^'; + *dp++ = '?'; + } else + *dp++ = c; + } + *dp = '\0'; + output_line(buf); +} + +static void +log_sent_gpf(pkt, pktlen) + u_char *pkt; +{ + char buf[MAX_PKT_TO_TARGET*4+30]; + + strcpy(buf, "Sent "); + format_g23_packet(pkt, pktlen, buf + 5); + output_line(buf); +} + +static void +log_sent_other(pkt, pktlen) + u_char *pkt; +{ + char buf[MAX_PKT_TO_TARGET*3+5]; + int i; + char *dp; + + dp = buf; + strcpy(dp, "Sent"); + dp += 4; + for (i = 0; i < pktlen; i++) { + sprintf(dp, " %02X", pkt[i]); + dp += 3; + } + *dp = '\0'; + output_line(buf); +} + +log_sent_packet(pkt, pktlen) + u_char *pkt; +{ + switch (pkt[0]) { + case RVT_L23_HEADER: + log_sent_gpf(pkt, pktlen); + return; + case RVT_AT_HEADER: + log_sent_ati(pkt, pktlen); + return; + default: + log_sent_other(pkt, pktlen); + } +}