AgeCommit message (Collapse)AuthorFilesLines
2013-12-26db: Fetch the authorized key using ulonglongKevin Redon1-2/+3
Location Update Requests time out and get rejected because the subscriber is not authorized. Authorizing the subscriber through openBSC or sqlite3 doesn't help the subscriber is still seen and shown as not authorized The value is read as uint, this is the wrong type it's a (u)longlong in libdbi 0.9.0 and later.
2013-12-19mgcp/rtp: Only patch timestamp alignment errorsJacob Erlbeck7-76/+143
Currently, all timestamps are force to SeqNo*d + C which is more than required by the nanoBTS which seems to be sensitive to alignment errors only (dTS != k*d, d = ptime * rate = 160). This patch replaces the force_constant_timing feature by a force_aligned_timing feature. The timestamp offset will only be changed (and timestamp errors counted) when the alignment does not match to the raster based on ptime (default 20ms). The VTY interface does not change. Sponsored-by: On-Waves ehf
2013-12-19mgcp/test: Use differential output for counters and timestampJacob Erlbeck2-112/+236
Currently the counter and output timestamp values are written out for each packet. This makes it difficult to see in the diffs what has been changed significantly. This patch changes this by showing differences for those values. The absolute input values are also shown now. In addition, the sequence numbers (the difference for the output value) are written, too. Sponsored-by: On-Waves ehf
2013-12-19mgcp/test: Add test cases for constant RTP sequence numberJacob Erlbeck2-5/+49
This adds two test cases: 1. Packet repetition (dSeq=0, dTS=0) 2. Broken seqNo (dSeq=0, dTS=160) The second had been already present in the test cases, but it was a mere copy&paste mistake which turned out to be rather helpful. This patch therefore turns it into a documented test case. Sponsored-by: On-Waves ehf
2013-12-19Add EFR support to TRAU muxer + test caseAndreas Eversberg11-59/+379
Decoding and encoding of FR and EFR TRAU frames are put into seperate functions. CRC check is done to detect bad EFR TRAU frames. The test case includes FR and EFR transcoding. EFR support was tested with Nokia InSite BTS and Siemens BS11.
2013-12-18Fix: Nokia requires VTY's "oml e1" parameters alsoAndreas Eversberg1-1/+1
When writing config file, OML configuration must be written for all E1 based BTS, which includes Nokia *Site BTS.
2013-12-18contrib/rtp: Fix default payload caseJacob Erlbeck1-1/+3
There is the wrong record field selection being used to extract the default value. It returns the tuple offset instead of the value. This patch fixes this. Sponsored-by: On-Waves ehf
2013-12-13Merge branch 'jerlbeck/features/mgcp-get-info-from-sdp'Holger Hans Peter Freyther7-54/+337
2013-12-13mgcp: Optionally send ptime in SDPJacob Erlbeck4-5/+88
Currently the SDP 'ptime' media attribute is never set in generated MGCP responses. This patch optionally includes the 'ptime' attribute if packet_duration_ms is != 0. This behaviour can be enabled/disabled by using the VTY command "sdp audio-payload send-ptime" (enabled by default). Sponsored-by: On-Waves ehf
2013-12-13mgcp: Parse SDP to get rate and packet durationJacob Erlbeck3-11/+61
This patch parses the 'ptime' and 'maxptime' SDP attributes, and the SDP rate information and sets up packet_duration_ms accordingly. If the packet duration is unknown or allows for different values (e.g. because 'ptime' uses a range or 'maxptime' allows for more than one frame) the duration is set to 0. Sponsored-by: On-Waves ehf
2013-12-13mgcp: Put local connection options into a structJacob Erlbeck4-11/+47
Currently the local connection options have been stored as a string. This patch replaces this string by a struct (that still contains a string) along with the parsed fields (only the packetization period at the moment). It also re-adds the calls to set_local_cx_options() to the handle_create_con() and handle_modify_con() functions. Except for the test program this has no side effects, since the LCO values aren't used yet.
2013-12-13mgcp/test: Output the packet duration after MGCP parsingJacob Erlbeck2-5/+85
This also adds additional MDCX tests (based on MDCX4) to test the analysis of different combinations of 'p' and 'ptime' fields. Sponsored-by: On-Waves ehf
2013-12-13mgcp/rtp: Refactor timestamp offset calculation into own functionJacob Erlbeck1-32/+66
Currently the timestamp offset calculation is done in two different places. This patch moves and unifies both code parts into a separate function. Sponsored-by: On-Waves ehf
2013-12-13contrib/rtp: Add tool to create RTP state filesJacob Erlbeck1-0/+392
This tool provides the following features: - Output formats: state, C arrays - Optionally take RTP payload from existing state files - Generate streams with RTP timestamp jumps and/or delays - Set/change SSRC or payload type Requires erlang to be installed. Example: Generate 300 packets, set playout time offset to 1s, set RTP timestamp offset to 8000 (1s), generate another 100 packets, the RTP payload is copied from rtp.state: ./gen_rtp_header.erl --type=98 --file=rtp.state -- 0 300 0 --delay=1.0 100 8000 Sponsored-by: On-Waves ehf
2013-12-13contrib/rtp: Enhance RTP replay toolJacob Erlbeck2-5/+19
This patch adds optional parameters to pass the state file, the destination address (default, the destination port (default 4000), the source port (default 0). So it is called as follows: gst -a [FILE [HOST [SOURCEPORT [DESTPORT]]]] In addition, nonexistant FILEs are no longer created but opened read-only instead. Sponsored-by: On-Waves ehf
2013-12-13build: db_test does not use dlopen/dlsym.. remove LIBRARY_DL from depsHolger Hans Peter Freyther1-1/+1
2013-12-13build: channel_test does not use dlopen/dlsym remove LIBRARY_DL depHolger Hans Peter Freyther1-1/+1
2013-12-13build: osmo-nitb does not use dlopen/dlsym remove LIBRARY_DLHolger Hans Peter Freyther1-1/+1
osmo-nitb does not use dlopen/dlsym so we can remove the depedency to LIBRARY_DL.
2013-12-13build: Remove bogus depends from ipaccess-configHolger Hans Peter Freyther1-2/+1
The code does not use libmsc and doesn't use dlsym/dlopen etc. So let us remove LIBRARY_DL as dependency.
2013-12-13freebsd: dlopen/dlsym/dlerror is part of libc, use LIBRARY_DL for linkingNikola4-4/+4
In FreeBSD there is no spearate library for dlopen, dlsym and dlerror. Use LIBRARY_DL to check for this condition.
2013-12-12si: Make sure to not overwrite orig_arfcn_hi in the range encodingHolger Hans Peter Freyther3-3/+3
Andreas highlighted that the doubel assignment is not needed and wrong. Change the code to assign chan_list[0] before writing the base frequency to the header. Update the testcase to make the highest bit set and update the test result.
2013-12-12ipa-proxy: Socket creation can fail, address coverity issueHolger Hans Peter Freyther1-0/+7
Fixes: Coverity CID 1040722
2013-12-12vty: Address coverity issue with subscr->name never being NULLHolger Hans Peter Freyther1-1/+1
Coverity points out that subscr->name is an array and never NULL. Use strlen instead in this check. Fixes: Coverity CID 1040717
2013-12-12subscriber: Address coverity warning and truncate the IMSIHolger Hans Peter Freyther1-1/+2
The IMSI can only be 15 characters in length, our define gives us a length of 17. This means we have place for two NULs. Use strncpy and make sure it is null-terminated. Fixes: Coverity CID 1040707
2013-12-12smpp_mirror: Initialize rc when cmd_id is not DELIVER_SMHolger Hans Peter Freyther1-0/+2
Fixes: Coverity CID 1042369
2013-12-12build: Ignore file generated by automakeHolger Hans Peter Freyther1-0/+1
2013-12-12mgcp: Address compiler error for sprintf misusage...Holger Hans Peter Freyther1-1/+1
The hardening flags of debian have highlighted this sprintf mis-usage in the testcase. Address it.
2013-12-12debian: Enable hardening for the OpenBSC packagesHolger Hans Peter Freyther1-0/+2
2013-12-12debian: Build debug packages for each of the target packagesHolger Hans Peter Freyther2-0/+65
2013-12-10Merge remote-tracking branch 'jerlbeck/features/rtp-header-patching'Holger Hans Peter Freyther7-48/+409
2013-12-10mgcp/rtp: Refactored packet_duration computationJacob Erlbeck3-7/+25
Since the packet duration is given in ms with the 'ptime' RTP media attribute and also with the 'p' MGCP local connection option, the computation is changed to use this value (if present). The computation assumes, that there are N complete frames in a packet and takes into account, that the ptime value possibly had been rounded towards the next ms value (which is never the case with a frame length of exact 20ms). Sponsored-by: On-Waves ehf
2013-12-10mgcp/rtp: Fix RTP timestamps if enabledJacob Erlbeck3-46/+68
This forces the output timing to fulfill dTS = dSegNo * fixedPacketDuration where dSegNo = seqNo - lastSeqNo. If timestamp patching is enabled, the output timestamp will be set to lastTimestamp + dTS. This kind of relative updating is used to handle seqNo- and timestamp-wraparounds properly. The updating of timestamp and SSRC has been separated and the patch field of mgcp_rtp_state has been renamed to patch_ssrc to reflect it's semantics more closely. The offset fields are now used always and will change the corresponding header field if they are != 0. Ticket: OW#1065 Sponsored-by: On-Waves ehf
2013-12-10mgcp/rtp: Only patch SSRC once after MDCX if enabledJacob Erlbeck3-2/+6
Currently the output SSRC is always forced to be the same if SSRC patching is enabled. This patch modifies this to optionally restrict the number of SSRC changes that will be corrected. Note that the configuration only allows for the 'once' mode and 'off'. Sponsored-by: On-Waves ehf
2013-12-10mgcp/rtp: Use SSRC in proper byte orderingJacob Erlbeck2-10/+14
The ssrc has been used without respect to proper byte ordering in mgcp_patch_and_count(). This only affected log messages. This patch introduces a new variable 'ssrc' that takes the value of the SSRC in proper byte order. Sponsored-by: On-Waves ehf
2013-12-10mgcp/rtp: Compute default packet duration at state initialisiationJacob Erlbeck2-10/+14
This patch adds a packet_duration field to mgcp_rtp_state which contains the RTP packet's duration in RTP timestamp units or 0, when the duration is unknown or not fixed. Sponsored-by: On-Waves ehf
2013-12-10mgcp/rtp: Only update RTP header field offsets if enabledJacob Erlbeck1-16/+28
Currently seq_offset and timestamp_offset are updated on each SSRC change even when SSRC patching is not allowed. This patch fixes this by changing mgcp_patch_and_count() to only update these fields when SSRC patching is allowed. Sponsored-by: On-Waves ehf
2013-12-10mgcp/rtp: Change the log message shown when the SSRC changesJacob Erlbeck1-7/+9
Show old and new SSRC. Move logging command upward to show the values immediately after the change has been detected and before any fixing attempt is made. Sponsored-by: On-Waves ehf
2013-12-10mgcp/rtp: Add RTP header patch mode configurationJacob Erlbeck6-7/+181
This adds datastructures and a VTY frontend to configure the different type of RTP header patching: SSRC and timestamp. Note that timestamp patching is not yet implemented. Sponsored-by: On-Waves ehf
2013-12-05mgcp/rtp: Fix output timing error counterJacob Erlbeck2-21/+32
The tsdelta computation and error detection didn't handle the intialisation phase properly. This patches fixes this by skipping the output timing validation when the SSRCs don't match. Sponsored-by: On-Waves ehf
2013-12-05mgcp/rtp: Add more test cases for RTP header patchingJacob Erlbeck2-4/+114
This patch extends the existing RTP error check test by adding a check for timestamp errors after SSRC changes and a check for a segno delta of 2 (with a timestamp delta of 320). To test SSRC patching too, a corresponding line will be written on each SSRC change that has been detected in the output stream. In addition there is now support for selectively enabling/disabling SSRC and timestamp patching. The RTP test sequence is repeated for all combinations thereof. Sponsored-by: On-Waves ehf
2013-12-05Merge branch 'jerlbeck/mgcp-cleanups'Holger Hans Peter Freyther7-42/+281
2013-12-05mgcp: Handle SDP in CRCX received by the MGWJacob Erlbeck2-2/+11
So far the SDP part of the CRCX message has been ignored by the MGW. This patch adds SDP parsing for this case, eventually updating the net end's payload type and connection parameters. Sponsored-by: On-Waves ehf
2013-12-05mgcp/nat: Take payload type from SDP dataJacob Erlbeck3-6/+16
So far the payload type used in RTP streams has been taken from the trunk configuration in NAT mode. This patch changes the implementation to use the payload type announced in the SDP part of MGCP messages and responses. SDP descriptions more than one m=audio line are not yet supported properly (always the last one is taken). Ticket: OW#466 Sponsored-by: On-Waves ehf
2013-12-05mgcp: NUL-terminate MGCP messageJacob Erlbeck1-1/+15
The MGCP message isn't always NUL-terminated when arriving at mgcp_handle_message(). This may lead to undefined results. This patch ensures that the message text is NUL-terminated by setting *msg->tail to '\0' in mgcp_handle_message(). Addresses: <000b> mgcp_protocol.c:642 Unhandled option: 'r'/114 on 0x3 <000b> mgcp_protocol.c:593 Unhandled SDP option: '='/61 on 0x3 <000b> mgcp_protocol.c:871 Unhandled option: '.'/46 on 0x2 Sponsored-by: On-Waves ehf
2013-12-05mgcp: Refactor MGCP/SDP parsingJacob Erlbeck1-32/+66
This patch separates the SDP parsing from the (message specific) MGCP parsing. Sponsored-by: On-Waves ehf
2013-12-05mgcp: Add tests for payload types in MGCP messagesJacob Erlbeck4-6/+98
These tests mainly check whether the SDP parsing works properly by looking at the payload type detected. Sponsored-by: On-Waves ehf
2013-12-05mgcp: Add new for_each_line macro that also returns empty linesJacob Erlbeck3-0/+80
This patch add the for_each_line macro based on a strline_r() function (similar to strtok_r()), that is also part of this patch. This strline_r() function is tolerant with respect to line endings, it supports CR-only, CRLF, and LF-only and any combinations thereof (note that a CRLF is always detected as a single line break). Similar to for_each_non_empty_line (the former for_each_line) where the 'save' pointer needed to be initialised by a call to strtok_r(), the new for_each_line macro expects, that the 'save' pointer has been initialised by a call to strline_r(). Also note, that for_each_line/strline_r and for_each_non_empty_line/strtok_r may use the 'save' pointer differently, so calls to them can not be mixed. Sponsored-by: On-Waves ehf
2013-12-05mgcp: Rename for_each_line to for_each_non_empty_lineJacob Erlbeck1-6/+6
The implementation of for_each_line is based on strtok() and skips any sequence of CR and LF. Thus empty lines are never detected. There exists code which tests for an empty line to detect the beginning of the SDP part which is dead code currently (the parser works nevertheless due to other reasons). So the semantics of this macro have been misunderstood at least once. This patch renames the macro to reflect the semantics more precisely. Sponsored-by: On-Waves ehf
2013-11-27osmo-nitb: don't print 'bac_hack' in usage/help outputHarald Welte1-1/+1
2013-11-25mgcp/rtp: Fix timestamp offset when patching RTP packetsJacob Erlbeck5-12/+49
The current implementation increments the seqno but does not increment the RTP timestamp, leading to two identical timestamps following one after the other. This patch fixes this by adding the computed tsdelta when the offset is calulated. In the unlikely case, that a tsdelta hasn't been computed yet when the SSRC changes, a tsdelta is computed based on the RTP rate and a RTP packet duration of 20ms (one speech frame per channel and packet). If the RTP rate is not known, a rate of 8000 is assumed. Note that this approach presumes, that the per RTP packet duration (in samples) is the same for the last two packets of the stream being replaced (the first one). Sponsored-by: On-Waves ehf