diff options
author | mazzoo <mazzoo@8d8ab74c-27aa-4a3d-9bde-523a2bc1f624> | 2008-12-30 12:49:26 +0000 |
---|---|---|
committer | mazzoo <mazzoo@8d8ab74c-27aa-4a3d-9bde-523a2bc1f624> | 2008-12-30 12:49:26 +0000 |
commit | 11521c89e3d43f88825251f5cbc54b9706be9f63 (patch) | |
tree | e9fb33e6837236490b9825e7fe875d8e0412445c | |
parent | e994341809e6860a87452aebacd7c3ac344e2e4a (diff) |
improve pcapstein and autorec
I am about to leave 25c3 - it was lots of fun, have a nice time
and I hope to see you next year.
git-svn-id: https://dedected.org/svn/trunk@7 8d8ab74c-27aa-4a3d-9bde-523a2bc1f624
-rw-r--r-- | com-on-air_cs-linux/tools/dect_cli.c | 31 | ||||
-rw-r--r-- | com-on-air_cs-linux/tools/pcapstein.c | 25 |
2 files changed, 44 insertions, 12 deletions
diff --git a/com-on-air_cs-linux/tools/dect_cli.c b/com-on-air_cs-linux/tools/dect_cli.c index 1b317f5..84e2fd8 100644 --- a/com-on-air_cs-linux/tools/dect_cli.c +++ b/com-on-air_cs-linux/tools/dect_cli.c @@ -353,20 +353,25 @@ void do_autorec(void) LOG("### autorec turned %s\n", cli.autorec ? "ON":"OFF"); } +void do_stop_keep_autorec(void) +{ + LOG("### stopping DIP\n"); + uint16_t val; + val = COA_MODE_IDLE; + if (ioctl(cli.fd, COA_IOCTL_MODE, &val)){ + LOG("couldn't ioctl()\n"); + exit(1); + } + cli.mode = MODE_STOP; +} + void do_stop(void) { if (!(cli.mode & MODE_STOP)) { - LOG("### stopping DIP\n"); - uint16_t val; - val = COA_MODE_IDLE; - if (ioctl(cli.fd, COA_IOCTL_MODE, &val)){ - LOG("couldn't ioctl()\n"); - exit(1); - } - cli.mode = MODE_STOP; - cli.autorec = 0; + do_stop_keep_autorec(); } + cli.autorec = 0; } void process_cli_data() @@ -465,6 +470,10 @@ void process_dect_data() while ( sizeof(cli.packet) == read(cli.fd, &cli.packet, sizeof(cli.packet))) { + + /* stop hopping one we synchronized */ + cli.hop = 0; + if (!cli.pcap) { LOG("### got sync\n"); @@ -625,6 +634,7 @@ void mainloop(void) if( (cli.hop) && ( (cli.mode & MODE_FPSCAN) || + (cli.mode & MODE_PPSCAN) || (cli.mode & MODE_CALLSCAN) || (cli.mode & MODE_JAM ) )) { @@ -644,7 +654,7 @@ void mainloop(void) (cli.mode != MODE_CALLSCAN) ) { - do_stop(); + do_stop_keep_autorec(); do_callscan(); if (cli.pcap) { @@ -652,6 +662,7 @@ void mainloop(void) pcap_close(cli.pcap); cli.pcap_d = NULL; cli.pcap = NULL; + cli.hop = 1; } } } diff --git a/com-on-air_cs-linux/tools/pcapstein.c b/com-on-air_cs-linux/tools/pcapstein.c index a4e97f6..8caf957 100644 --- a/com-on-air_cs-linux/tools/pcapstein.c +++ b/com-on-air_cs-linux/tools/pcapstein.c @@ -26,6 +26,9 @@ struct file_info fi; +int pp_slot = -1; +int fp_slot = -1; + void usage(void) { fprintf(stderr, "usage: pcapstein <dect-pcap-file>\n"); @@ -90,10 +93,28 @@ void init(char * fname) void process_b_field(const struct pcap_pkthdr *h, const u_char *pkt) { + + if ( (pkt[0x17] == 0x16) && (pkt[0x18] == 0x75) ) - write(fi.fpp, &pkt[0x21], 40); + { + if (pp_slot < 0) + { + pp_slot = pkt[0x11]; + }else{ + if (pp_slot == pkt[0x11]) + write(fi.fpp, &pkt[0x21], 40); + } + } else - write(fi.ffp, &pkt[0x21], 40); + { + if (fp_slot < 0) + { + fp_slot = pkt[0x11]; + }else{ + if (fp_slot == pkt[0x11]) + write(fi.ffp, &pkt[0x21], 40); + } + } } void process_pcap_packet( |