now it is specified whether the packet is uplink or downlink

master
Thomas Bertani 10 years ago
parent 871aec9332
commit 377cd66473
  1. 2
      README
  2. 7
      src/main.c

@ -1,6 +1,6 @@
* ot290-gsmtap
This is a command line utility which reads the trace frames sent by the Sagem OT-290 trough the serial line and forwards the GSM L2/L3 and GPRS RLC/MAC messages to a host as GSMTAP packets so that you can use Wireshark to analyze them.
This is a command line utility which reads the trace frames sent by the Sagem OT-290 trough the serial line and forwards the GSM/GPRS ones to the specified host as GSMTAP packets so that you can use Wireshark to analyze them.
In order for this tool to run, you have to set on the phone the Trace or Data/Trace mode (Main Menu -> Test Tool -> Info & Settings -> Serial links setup).

@ -104,16 +104,13 @@ void testgsmtap(unsigned char *AppMsg, unsigned short AppMsgLength)
{
int format = (AppMsg[2] >> 1 & 0b1111);
length = AppMsg[3] << 8 | AppMsg[4];
/*int i = 0;
printf("* L%d format:%d, Length:%d, FreqBit:%d, U/D: %d, LayerMessageFrame: [", (AppMsg[1] == 0x00) ? 3 : 2, format, length, AppMsg[2] >> 5, (AppMsg[2] & 1));
for (i=0; i<length; i++) printf("%d, ", AppMsg[5+i]);
printf("\b\b]\n");*/
const size_t buf_len = sizeof(struct gsmtap_hdr) + length;
unsigned char buf[buf_len];
struct gsmtap_hdr *gh = (struct gsmtap_hdr *) buf;
memset(gh, 0, sizeof(*gh));
gh->version = GSMTAP_VERSION;
gh->hdr_len = sizeof(*gh)/4;
if ((AppMsg[2] & 1) == 1) gh->arfcn = htons(GSMTAP_ARFCN_F_UPLINK);
if ((format == 0) || (format == 2)) gh->type = GSMTAP_TYPE_UM_BURST;
else gh->type = GSMTAP_TYPE_UM;
gh->sub_type = GSMTAP_CHANNEL_UNKNOWN;
@ -214,5 +211,5 @@ int main(int argc, char **argv)
myreq[9] = 0; myreq[10] = 25; //LayerMessage-disable request
req(myreq, sizeof(myreq));
printf("[*] Checksum errors: %d/%d | Total errors: %d/%d\n", s.checksumErrors, s.packets, s.totalErrors, s.packets);
return 0;
return (s.totalErrors == 0) ? 0 : 1;
}

Loading…
Cancel
Save