Commit Graph

41 Commits

Author SHA1 Message Date
Harald Welte 456135a605 e1_recorder: Fix potential null-dereference
Fixes: CID#307523: Dereference null return value (NULL_RETURNS)
Change-Id: I481f0695f971f5cd2e77b8c9c62d423a70e0840d
2023-07-18 14:40:30 +02:00
Harald Welte e9ce31876d handle telnet_init_default() error case
Closes: CID#307532
Change-Id: I0210b535b844529e217fd5d6ffb01f94a262dc9c
2023-02-06 17:03:34 +01:00
arehbein 55a1b836ea osmo-e1-recorder: Transition to use of 'telnet_init_default'
Related: OS#5809
Change-Id: Id8148f71f4231de40c4762094e2969d11821e5c4
2022-12-19 22:34:39 +01:00
Harald Welte b9c7fd8f79 Fix use of logging_vty_add_cmds(void) API function.
This function never accepted any arguments.  However, a sloppy
declaration in the header file as logging_vty_add_cmds() allowed
to pass any number of any type arguments until recently.

Change-Id: Icdbe2f253c9e17ff82bd3b1dc3d4fbea4ad6f333
2022-11-06 10:29:41 +01:00
Harald Welte 130eeb39f7 fix "-Werror" build against latest libosmo-abis
libosmo-abisrecently marked the 'out_cb' of the subchan_demux
as 'const', which caused compiler warnings/errors.

Related: libosmo-abis.git Ia082b9fddf03d02afd007825a1588a3ef0dbedae
Change-Id: I0cf430980e50fa8094f0efc7642004fb5923c4c6
2020-06-09 09:03:55 +02:00
Harald Welte 456888a273 make e1cap format portable
The original format included a 'struct timeval' into the packet header,
which unfortunately is non-potrable between e.g. i386 and amd64.

Change-Id: I0d22ad8f772d173c2252c2f6c562faee2e578806
2019-12-04 14:15:47 +01:00
Harald Welte 8486938efb e1_recorder: Skip storing data to disk if line is in ALARM state
Change-Id: Ie4c671053d372bc700f506198d1916853da03b9e
2019-12-04 14:15:47 +01:00
Harald Welte 1b41abda3d e1cap_dump: Avoid deprecated osmo_init_logging() API
Change-Id: I7d9d88eb5615f6b323b6c36eceb4d847bae01d1d
2019-12-04 14:15:47 +01:00
Harald Welte 45e12d3f8e e1_recorder: Avoid deprecated osmo_init_logging() API
Change-Id: Ib0e7c90eb8049acd48d6b3cf32ec2fc2c7a2ef29
2019-12-04 14:15:47 +01:00
Harald Welte b36921fffc e1cap_dump: Add -h and -V to print help / version of program
Change-Id: I621c1f15e1bdb38691ae1fc50c5190ae2701eb58
2019-12-04 12:08:33 +01:00
Harald Welte 06e3198e70 e1_recorder: Add --help and --version command line arguments
Change-Id: Ie676466e5406243cf4205948cddd95426e2b8c10
2019-12-04 12:08:33 +01:00
Harald Welte 2c5c079e53 print error message when config file cannot be opened
Change-Id: I52514adf853c0d2dc5114864f0713e549733786d
2019-12-04 12:08:33 +01:00
Harald Welte cbf23b6465 exit(2) on unsupported positional arguments on command line
Change-Id: I6d4efa6ddef41607aecd5ceee78e400db821292f
2019-12-04 12:08:33 +01:00
Harald Welte 50595fb9b5 vty: Make sure to save timeslot mode in lowercase (as vty expects)
Change-Id: I9b11fbe3bf85b7096a3bd5f9b67168350e66a90a
2019-12-04 12:08:33 +01:00
Harald Welte de9e646193 vty: don't store configurations for timeslots in mode NONE
This reflects what happens in libosmo-abis during 'show e1'
and makes sure we don't attempt to write for more TS than exist
(e.g. in the T1 case).

Change-Id: Iaeac2d080ae3ddc27901cbc4be5220100e9820a8
2019-12-04 12:04:22 +01:00
Harald Welte 3863beef26 e1cap_dump: fix superchannel without pcap output
We have to check if g_pcap_fd is >= 0,as we initialize it to -1.

Change-Id: I458c02b4619b6fb2c7d30b1ce3bbac86243a6977
2019-11-24 18:56:12 +01:00
Harald Welte bad3897529 convert build system to autotools
Change-Id: I705b5356309507c39eaf517ca5b9ce0e1aa89852
2019-11-24 18:42:29 +01:00
Harald Welte 6df0729271 fix various compiler warnings
Change-Id: I65a862132563f578eff11b8d085960b820f5d4b7
2019-11-24 18:42:26 +01:00
Harald Welte 6f45dcdc25 storage.c: Fix compiler error due to missing writev() declaration
storage.c:90:7: error: implicit declaration of function ‘writev’; did you mean ‘write’? [-Werror=implicit-function-declaration]
   90 |  rc = writev(g_out_fd, iov, ARRAY_SIZE(iov));
      |       ^~~~~~
      |       write

Change-Id: If98737199f5a6e8fb37a4fd6403ee973dcf70612
2019-11-24 18:06:06 +01:00
Harald Welte 41a5300243 e1_recorder: Add LAPD PCAP dump support
We can now write a PCAP file from the HDLC-decoded super channel.
2016-11-14 23:22:49 +01:00
Harald Welte 90bd7b6709 hdlc: add call-back function for completely decoded HDLC frames
... and some more comments/documentation
2016-11-14 22:06:46 +01:00
Harald Welte 1df5cf4950 e1cap_dump: Implement functional HDLC decode of super-channel
Finally the bit ordering and bit format of the SuperChannel has been
figured out.
* the data as read from DAHDI must be flipped (0->1 / 1->0). why?
* the data must be read lsb-first when converting into a bit-buffer

We are now getting the following output e.g. for a OM2000 "TX
Configuration Request" message:
fa 03 8a 8a 80 80 00 13 00 b0 0b 00 ff 01 20 00 2e 2b 1c 00 06 01 95 81 76 00 e9 bf
^ lapd hdr  ^ OML    ^l ^OM2000 TX Config Req for 43 dBm
2016-11-14 21:29:01 +01:00
Harald Welte 6daa71dbd2 hdlc: Simplify + Fix HDLC implementation
* remove the notion of states, as there is really only one state
* implement zero removal / bit stuffing for synchronous links
2016-11-14 21:26:11 +01:00
Harald Welte 90fb785804 hdlc: Add some more comments to the code [cosmetic] 2016-11-14 19:34:30 +01:00
Harald Welte d83c51379b WIP: More work on SuperChannel decode, but it doesn't work yet... 2016-10-26 09:38:24 +02:00
Harald Welte c1b9cab053 e1cap_dump: Add SC (Super Channel) mode
In the super channel mode, it seems the BTS transmits one byte in each
timeslot, accross the entire link.

This basically means that if you have a 10 byte long signalling message
to be sent, its first byte will be in TS1 up until the tenth byte in
TS10.

As we are reading in 160 byte chunks from the E1 timeslots, we build a
matrix with 160 columns (for each byte) and 24/30 rows (timeslots).  So
we write 24 times 160 bytes into the matrix.

Once we have completed all timeslots, we start to read the matrix by
reading byte 0 of each timeslot (in incrementing TS order), next byte 1
of each timeslot, ... until we end up having read 160 times 24 bytes
from the matrix.

The resulting bitstream needs to be HDLC-synchronized and the resulting
messages passed up for further decoding.
2016-10-23 19:36:14 +02:00
Harald Welte 4dc14a751b e1_recorder: add config option for configuration file 2016-10-19 10:55:25 +02:00
Harald Welte 2ac78497dd e1_recorder: propagate errors to main, where we exit() in case of failing to open file 2016-10-19 10:55:25 +02:00
Harald Welte df7a306df5 e1_recorder: Add signal handlers for log file rotation + talloc report 2016-10-19 10:55:25 +02:00
Harald Welte 13351138e2 e1_inp: Use HDLC mode for signalling, not SIGN
The SIGN mode implies that LAPD instances are bound to the timeslots, which is
of course not what we want in a pure capturing/recording scenario.

Instead, use the new E1INP_TS_TYPE_HDLC mode, which allows us to capture
any HDLC framed messages on E1/T1 timeslots, whether LAPD or e.g. MTP.
2016-10-19 10:54:59 +02:00
Harald Welte 525af1832e e1cap_dump: Add 16k sub-channel demux + filter
We can now filter a given 16k sub-slot out of the capture data and
export it to stdout.
2016-10-19 00:38:46 +02:00
Harald Welte f403232e0f e1cap_dump: Add capability to filter on a given line+timeslot and for binary output 2016-10-19 00:23:10 +02:00
Harald Welte 57ea229e8a storage.c: Remove debug printf() 2016-10-19 00:22:55 +02:00
Harald Welte 74d1e3409d e1cap_dump: Print human-readable time 2016-10-19 00:06:22 +02:00
Harald Welte dbb0f5ae99 add a command line tool for dumping the contents of a capture file 2016-10-18 23:51:54 +02:00
Harald Welte 232b972035 storage.h: make sure we use packed attribute not aligned.
This was a stupid mistake when writing the header initially, let's try
to fix it while staying binary compatible.
2016-10-18 23:50:49 +02:00
Harald Welte 4a92d0b9b9 e1_recorder: Fix msgb memory leaks in absence of a mirror port 2016-10-18 21:36:01 +02:00
Harald Welte afb6d39908 storage.h: document fields of header 2016-10-17 18:50:19 +02:00
Harald Welte b7e40238d7 first functional version that actually records + mirrors data 2016-07-29 14:26:50 +02:00
Harald Welte 0e91aa1ec5 fix compilation 2016-07-28 21:03:40 +02:00
Harald Welte 39cfbf435d initial import of incomplete project to record E1 lines 2016-07-28 09:04:11 +02:00