Code Monkey home page Code Monkey logo

rtpproxy's People

Contributors

bukinr avatar lemenkov avatar micmac1 avatar razvancrainea avatar sobomax avatar synety-jdebp avatar taisph avatar zenichev avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

rtpproxy's Issues

Recording Video Calls

Hi,
I'm using RTPproxy for my setup with all video calls. I want to record the video calls to be saved in disk and converted to mp4 or some video format.

What are my options, since I can only get audio saved in wav only.

Thanks,
Gohar

endpoint address latching issue

Hello!
Case:
sip schema: a - opensips v.2.1 (with rtpproxy) - b
media schema: a - rtpproxy (commit 7c27f22) - b
call schema:
step 1. opensips -> INVITE -> B (real IP in SDP)
step 2. B -> 200 -> opensips (real IP in SDP(1))
step 3. B (from real IP(1)) -> RTP -> rtpproxy
After step 3 session establishing successfully and RTP goes to both sides.

step 4. B -> Re-INVITE -> opensips (local IP in SDP(2))
step 5. opensips -> 200 -> B (same IP as in step 1 in SDP)
step 6. B (from real IP(3)) -> RTP -> rtpproxy
After step 5 rtpproxy pre-fills local address (2), which opensips tells him via UR command, but on step 6 when RTP-packets arrives from real IP (3) - rtpproxy didn't latch new real address and ignore all RTP from it.

Earlier i tried to reproduce issue on older version of rtpproxy (commit f9d2b03) and it successfully latched IP (3) after step 6, so i think something went wrong with address latching mechanics between commits f9d2b03 and 7c27f22

Issue always reproducing on 7c27f22 and never reproducing on f9d2b03 (tested on more than 10 instances of each of both versions)

feature for rtp over https

hello...
is there any feature or opensource tool to make rtp over https ?
because now issue is it is block in many countries .

Thanks

Jitter data in rtpp_acct_csv is sometimes wrong

Hi,
I'm running the RTPProxy with the flag: --dso lib/rtpproxy/rtpp_acct_csv.so, in order to log to file the jitter data calculated in the rtp_analyze.c ("rtpa_jitter_last_ino", "rtpa_jitter_max_ino", "rtpa_jitter_avg_ino", "rtpa_jitter_last_ina", "rtpa_jitter_max_ina", "rtpa_jitter_avg_ina").

I have 2 questions regarding this log:
1. What is the units for the jitter? seconds / ms?
2. After examining the jitter stats from the log file, I see sometimes jitter data that doesn't make any sense:
f.e.
In a specific call log for a call with 12 seconds duration I get the next data:
The originator jitter seems to be OK:
"rtpa_jitter_last_ino", "rtpa_jitter_max_ino", "rtpa_jitter_avg_ino"
7.181892,43.909236,13.803124

But the answerer jitter seems to be not logical:
"rtpa_jitter_last_ina", "rtpa_jitter_max_ina", "rtpa_jitter_avg_ina"
80.685281,13936773.413711,554700.367942

Is this issue is known? Do you know why it happens?

Thanks

rtpproxy not relaying data

Hi:

I am trying to use rtpproxy with my SIP proxy. It starts a session and both SIP clients send data to rtpproxy port as I see on wireshark after I modify the SDP part. I see data comming to rtpproxy but no data comes out of it. What could be going on wrong? Configuratoin issue? Bug? I send here a log of rtpproxy.

halplus@halplus-VirtualBox ~ $ rtpproxy -f -s unix:/var/run/rtp/rtpproxy.sock -d DBUG:LOG_LOCAL3
INFO:main: rtpproxy started, pid 11266
ERR:main: can't open pidfile for writing: Permission denied
DBUG:handle_command: received command "U rWiXCizLxX 192.168.200.146 7076 SA6YGw3uI"
INFO:handle_command: new session rWiXCizLxX, tag SA6YGw3uI requested, type strong
INFO:handle_command: new session on a port 37110 created, tag SA6YGw3uI
INFO:handle_command: pre-filling caller's address with 192.168.200.146:7076
DBUG:doreply: sending reply "37110
"
DBUG:handle_command: received command "U rWiXCizLxX 192.168.200.140 7078 SA6YGw3uI"
INFO:handle_command: adding strong flag to existing session, new=1/0/0
INFO:handle_command: lookup on ports 37110/0, session timer restarted
INFO:handle_command: pre-filling caller's address with 192.168.200.140:7078
DBUG:doreply: sending reply "37110
"
INFO:process_rtp: session timeout
INFO:remove_session: RTP stats: 0 in from callee, 0 in from caller, 0 relayed, 0 dropped
INFO:remove_session: RTCP stats: 0 in from callee, 0 in from caller, 0 relayed, 0 dropped
INFO:remove_session: session on ports 37110/0 is cleaned up

Implement software-based transcoding support

It would be nice if RTPproxy could do codec conversion between one side and another in addition to just simple packet forwarding. We can start with low-complexity, royalty free codecs like G.711 and iLbc. This could be the natural first step to add support for using hardware-assisted transcoding, since the changes on the command channel would be shared by both and particular way of doing it will be shielded from the view of the outside client connecting to the rtpproxy.

Rough plan of the attack:

o define necessary changes at the protocol level;
o implement new protocol features and test;
o implement actual transcoding, this should be very similar to the re-packetization feature that is already there, and would probably share some of its code.

rtpproxy delay in audio relay when using re-packetization

Hi,
I am facing an issue when using the re-packetization feauture of rtpproxy.

When a media session is updated with a Re-Invite audio is only relays about 7 to 15 seconds seconds later.

This only happens when using zNN in opensips script, If i remove the re-packetization audio is passed immediately when on re-invite etc.

This seems to happen whenever a party changes their Source port.

below is an egsample when a 200ok is passed it changes source port in SDB and rtpproxy only relays the packets around 7 seconds later.

http://salamander.iburst.co.za:8000/personal/signalling.txt

I have tried this without bridging i get the same result.

I have also tried rtpproxy-2.0.0 and 1.2.1 with same reults, the only difference is with 2.0.0 when using repacketization the audio is distorted after changing the payload.

Regards
Trevor Steyn

Change from random to urandom in seed

RTPProxy uses dev/random at the moment, which I am guessing is for random() and picking UDP ports ?

Anyhow, it's eating a lot of entropy every time you run it, so on a small VM which incidentally falls in a hypervisor with almost no other vms, you'll simply run out of entropy.

Meaning that if you restart too many times, you'll simply get stuck in a wait4( for the call to random().

Not a very common occurance, but still a bug you need semi-deep knowledge about linux to figure out of, for example strace.

rm /dev/random && ln -s /dev/urandom /dev/random fixes the problem temporarily, so using urandom from the start should be just fine I guess.

No support for codec SILK

It is requested to please include support for codec "SILK" to play announcement directly form RTPproxy.

Corrupted files recorded by RTP-Proxy start_recording() function

We have kamailio 4.4.6 with rtppproxy module as sip proxy and asterisk 13.13 behind it as media gateway.
After activating start_recording() function in kamailio config we received corrupted rtp files when establishing video calls. If use only audio calls - everything fine.
Rtpproxy run as service with command line
/usr/bin/rtpproxy -F -s udp:127.0.0.1 7722 -l 195.50.5.109 10.10.4.8 -d DBUG LOG_LOCAL0 -P -r /tmp/tcpdump -S /tmp -R. Where 195.50.5.109 and 10.10.4.8 is external and internal ip respectively.
Main issue with files- it has broken pcap format. And either wireshark, tshark, tcpdump cant open it. Error is usually "The capture file appears to be damaged or corrupt.
(pcap: File has 4060086461-byte packet, bigger than maximum of 262144)". Also possible to find enormous big udp packet inside it :
Length: 15105 (bogus, payload length 58)
[Expert Info (Error/Malformed): Bad length value 15105 > IP payload length]
[Bad length value 15105 > IP payload length]

Broken files are in attach. Please change extension from txt to pcap.
1call.audio.txt
1call.video.txt

media to SIP IP (instead of RTP)

Trying the last master c29f551.
I have INVITE with different IP in SIP and RTP (in SDP part). For example:
SIP sip_ip:sip_port
RTP rtp_ip:rtp_port
sip_ip and rtp_ip are public
Early media from sippy go to sip_ip:rtp_port, so no any ringback for calling party. If calling party send some RTP to sippy, then sippy switched to rtp_ip:rtp_port and all is fine (just some start RTP are dropped). After ACK it is the same

each RTP media stream requires four open connections

-L Adjust the number of simultaneous open connections. Note that each RTP media stream requires four open connections. A SIP call can open more than one RTP media stream depending on the client's setup.
-----can any guys explain me why "each RTP media stream requires four open connections", As I know,each normal audio call have 2 media stream in different directions, caller-->callee and callee-->caller.
and from the tcpdump capture file I can see each UE in an audio call establish one udp connection to one rtpproxy port, and UE send rtp stream to the port and received rtp stream from the port. so it means in this audio call, rtpproxy only need open two port to handle the rtp stream.
but this result can not match the description about the "-L" command flag in rtpproxy v2.0.0 Release Notes.

Segmentation fault in rtpproxy v2.0.0


---
 src/rtpp_wi.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/rtpp_wi.c b/src/rtpp_wi.c
index 305cb52..0587582 100644
--- a/src/rtpp_wi.c
+++ b/src/rtpp_wi.c
@@ -100,7 +100,7 @@ rtpp_wi_malloc_sgnl(int signum, const void *data, size_t datalen)
     wi->wi_type = RTPP_WI_TYPE_SGNL;
     wi->flags = signum;
     if (datalen > 0) {
-        wi->msg = (char *)wi + datalen;
+        wi->msg = (char *)wi + sizeof(struct rtpp_wi);
         wi->msg_len = datalen;
         memcpy(wi->msg, data, datalen);
     }

---

Area is reworked in current SW and looks OK, so this issue is just for info. Maybe it helps somebody.

OpenBSD: Make Fails

Hi rtpproxy team, I guess that OpenBSD is not among the supported systems. I tried to build the rtpproxy anyway and ended up with the following error. If it is familiar, can you help me move forward please? Thanks!

PRE-COMPILATION PHASE

Installed packages (a clean server, more or less):
root@server:~ # pkg_info
autoconf-2.67p1 automatically configure source code on many Un*x platforms
autoconf-2.69p2 automatically configure source code on many Un*x platforms
automake-1.15.1 GNU Standards-compliant Makefile generator
bcg729-1.0.1 software G729A encoder and decoder library
bzip2-1.0.6p8 block-sorting file compressor, unencumbered
colorls-6.0 ls(1) that can use color to display file attributes
curl-7.53.1 get files from FTP, Gopher, HTTP or HTTPS servers
cvsps-2.1p0 generate patchsets from CVS repositories
db-4.6.21p3v0 Berkeley DB package, revision 4
desktop-file-utils-0.23 utilities for dot.desktop entries
e2fsprogs-1.42.12p4 utilities to manipulate ext2 filesystems
easy-rsa-3.0.1 small RSA key management package
flac-1.3.2 free lossless audio codec
gawk-4.1.3p1 GNU awk
gcc-libs-4.9.4p4 GNU compiler collection: support libs
gettext-0.19.8.1 GNU gettext runtime libraries and programs
git-2.12.2 GIT - Tree History Storage Tool
glib2-2.50.3 general-purpose utility library
gmp-6.1.2 library for arbitrary precision arithmetic
gsm-1.0.16 GSM audio codec library and converter
help2man-1.47.4 generates simple manual pages from program output
htop-2.0.2 interactive process viewer
icu4c-58.2p0 International Components for Unicode
iperf-2.0.5p4 tool for measuring maximum TCP and UDP bandwidth
jpeg-1.5.1p0v0 SIMD-accelerated JPEG codec replacement of libjpeg
kamailio-4.3.3p4 mature and flexible open source SIP server
libarchive-3.3.1 multi-format archive and compression library
libelf-0.8.13p3 read, modify, create ELF files on any arch
libexecinfo-0.3v0 clone of backtrace facility found in the GNU libc
libffi-3.2.1p2 Foreign Function Interface
libiconv-1.14p3 character set conversion library
libogg-1.3.2p0 Ogg bitstream library
libsigsegv-2.10p2 library for handling page faults in user mode
libsndfile-1.0.27 library to handle various audio file formats
libsrtp-1.5.4p0 secure RTP library
libunistring-0.9.7 manipulate Unicode strings
libvorbis-1.3.5 audio compression codec library
libxml-2.9.4p0 XML parsing library
links+-2.14-no_x11 graphics and text browser
lua-5.2.4p1 powerful, light-weight programming language (version 5.2.4)
lua-5.3.4 powerful, light-weight programming language (version 5.3.4)
lz4-1.7.4.2 fast BSD-licensed data compression
lzo2-2.10 portable speedy lossless data compression library
m4-1.4.18 GNU m4
mawk-1.3.4.20161120 fast POSIX-compliant awk
metaauto-1.0p1 wrapper for gnu auto*
mpfr-3.1.5.2 library for multiple-precision floating-point computations
nghttp2-1.21.0 library for HTTP/2
nmap-7.40 scan ports and fingerprint stack of network hosts
openssl-1.0.2k TLS/SSL library and tools
openvpn-2.4.1 easy-to-use, robust, and highly configurable VPN
p5-Error-0.17024 error/exception handling in an OO-ish way
pcre-8.38p0 perl-compatible regular expression library
pftop-0.7p15 curses-based real time state and rule display for pf
python-2.7.13p0 interpreted object-oriented programming language
python-3.6.0p0 interpreted object-oriented programming language
quirks-2.304 exceptions to pkg_add rules
rsync-3.1.2p0 mirroring/synchronization over low bandwidth links
sqlite3-3.17.0 embedded SQL implementation
unzip-6.0p10-iconv extract, list & test files in a ZIP archive
xz-5.2.3 LZMA compression and decompression tools
zip-3.0p0 create/update ZIP files compatible with PKZip(tm)
zsh-5.3.1 Z shell, Bourne shell-compatible

A few checks to find related libraries and files:
user@server:rtpproxy % find /usr/local -name gsm.h
/usr/local/include/gsm.h

user@server:rtpproxy % find /usr/local -name encoder.h
/usr/local/include/bcg729/encoder.h
/usr/local/include/FLAC++/encoder.h

user@server:rtpproxy % find /usr/local -name sndfile.h
/usr/local/include/sndfile.h

user@server:rtpproxy % find /usr/local -name "*g729*"
/usr/local/include/bcg729
/usr/local/lib/pkgconfig/libbcg729.pc
/usr/local/lib/libbcg729.la
/usr/local/lib/libbcg729.a
/usr/local/lib/libbcg729.so.0.0

user@server:rtpproxy % ls -l /usr/local/include/bcg729
total 16
-rw-r--r-- 1 root bin 3130 Apr 2 15:40 decoder.h
-rw-r--r-- 1 root bin 3108 Apr 2 15:40 encoder.h

user@server:rtpproxy % find /usr/local -name srtp.h
/usr/local/include/eopenssl/openssl/srtp.h
/usr/local/include/srtp/srtp.h

All libraries:
user@server:rtpproxy % ls -l /usr/local/include
total 2976
drwxr-xr-x 2 root wheel 512 Aug 21 11:21 FLAC
drwxr-xr-x 2 root wheel 512 Aug 21 11:21 FLAC++
-rw-r--r-- 1 root bin 52251 Apr 1 22:50 archive.h
-rw-r--r-- 1 root bin 32986 Apr 1 22:50 archive_entry.h
-rw-r--r-- 1 root bin 2383 Apr 1 22:45 autosprintf.h
drwxr-xr-x 2 root wheel 512 Aug 21 11:21 bcg729
drwxr-xr-x 2 root wheel 512 Aug 12 06:07 blkid
-rw-r--r-- 1 root bin 6245 Apr 1 22:44 bzlib.h
-rw-r--r-- 2 root bin 2118 Apr 1 22:49 com_err.h
drwxr-xr-x 2 root wheel 512 Aug 12 04:46 curl
drwxr-xr-x 2 root wheel 512 Aug 21 10:50 db4
drwxr-xr-x 2 root wheel 512 Aug 12 06:07 e2p
drwxr-xr-x 3 root wheel 512 Nov 28 2016 eopenssl
drwxr-xr-x 2 root wheel 512 Aug 12 06:07 et
-rw-r--r-- 1 root bin 1262 Apr 1 22:44 execinfo.h
drwxr-xr-x 2 root wheel 512 Aug 12 06:07 ext2fs
-rw-r--r-- 1 root bin 13338 Apr 1 22:44 ffi.h
-rw-r--r-- 1 root bin 4193 Apr 1 22:44 ffitarget.h
-rw-r--r-- 1 root bin 30929 Apr 1 23:01 gawkapi.h
drwxr-xr-x 3 root wheel 512 Aug 15 01:37 gio-unix-2.0
drwxr-xr-x 5 root wheel 512 Aug 15 01:37 glib-2.0
-rw-r--r-- 1 root bin 83656 Apr 1 22:48 gmp.h
-rw-r--r-- 1 root bin 116607 Apr 1 22:48 gmpxx.h
-rw-r--r-- 1 root bin 1681 Apr 1 22:46 gsm.h
-rw-r--r-- 1 root bin 9343 Apr 1 22:44 iconv.h
-rw-r--r-- 1 root bin 2225 Apr 1 22:47 jconfig.h
-rw-r--r-- 1 root bin 15088 Apr 1 22:47 jerror.h
-rw-r--r-- 1 root bin 15049 Apr 1 22:47 jmorecfg.h
-rw-r--r-- 1 root bin 49875 Apr 1 22:47 jpeglib.h
-rw-r--r-- 1 root bin 1585 Apr 1 22:44 libcharset.h
drwxr-xr-x 2 root wheel 512 Aug 12 06:33 libelf
-rw-r--r-- 1 root bin 16654 Apr 1 22:45 libintl.h
drwxr-xr-x 3 root wheel 512 Aug 12 06:07 libxml2
-rw-r--r-- 1 root bin 1395 Apr 1 22:44 localcharset.h
drwxr-xr-x 2 root wheel 512 Aug 12 04:47 lua-5.2
drwxr-xr-x 2 root wheel 512 Aug 12 04:48 lua-5.3
-rw-r--r-- 1 root bin 23375 Apr 1 22:48 lz4.h
-rw-r--r-- 1 root bin 16730 Apr 1 22:48 lz4frame.h
-rw-r--r-- 1 root bin 11596 Apr 1 22:48 lz4hc.h
drwxr-xr-x 2 root wheel 512 Aug 12 06:07 lzma
-rw-r--r-- 1 root bin 9737 Apr 1 22:44 lzma.h
drwxr-xr-x 2 root wheel 1024 Aug 12 04:47 lzo
-rw-r--r-- 1 root bin 6236 Aug 14 14:17 mpf2mpfr.h
-rw-r--r-- 1 root bin 51310 Aug 14 14:17 mpfr.h
drwxr-xr-x 2 root wheel 512 Aug 12 04:46 nghttp2
drwxr-xr-x 2 root wheel 512 Aug 21 11:21 ogg
drwxr-xr-x 2 root wheel 512 Aug 12 04:48 openvpn
-rw-r--r-- 1 root bin 31706 Apr 1 22:44 pcre.h
-rw-r--r-- 1 root bin 6600 Apr 1 22:44 pcre_scanner.h
-rw-r--r-- 1 root bin 6312 Apr 1 22:44 pcre_stringpiece.h
-rw-r--r-- 1 root bin 26529 Apr 1 22:44 pcrecpp.h
-rw-r--r-- 1 root bin 6783 Apr 1 22:44 pcrecpparg.h
-rw-r--r-- 1 root bin 5452 Apr 1 22:44 pcreposix.h
drwxr-xr-x 2 root wheel 2560 Aug 12 06:33 python2.7
drwxr-xr-x 2 root wheel 2560 Aug 14 14:42 python3.6m
-rw-r--r-- 1 root bin 8267 Aug 14 14:11 sigsegv.h
-rw-r--r-- 1 root bin 28663 Apr 1 22:51 sndfile.h
-rw-r--r-- 1 root bin 12615 Apr 1 22:51 sndfile.hh
-rw-r--r-- 1 root bin 496403 Apr 1 22:45 sqlite3.h
-rw-r--r-- 1 root bin 30004 Apr 1 22:45 sqlite3ext.h
drwxr-xr-x 2 root wheel 1024 Aug 21 11:22 srtp
drwxr-xr-x 2 root wheel 512 Aug 12 06:07 ss
-rw-r--r-- 1 root bin 20563 Apr 1 22:49 unicase.h
drwxr-xr-x 2 root wheel 4608 Aug 14 14:44 unicode
-rw-r--r-- 1 root bin 7731 Apr 1 22:49 uniconv.h
-rw-r--r-- 1 root bin 44854 Apr 1 22:49 unictype.h
-rw-r--r-- 1 root bin 4665 Apr 1 22:49 unigbrk.h
-rw-r--r-- 1 root bin 4337 Apr 1 22:49 unilbrk.h
-rw-r--r-- 1 root bin 1833 Apr 1 22:49 uniname.h
-rw-r--r-- 1 root bin 10964 Apr 1 22:49 uninorm.h
-rw-r--r-- 1 root bin 9731 Apr 1 22:49 unistdio.h
-rw-r--r-- 1 root bin 23005 Apr 1 22:49 unistr.h
drwxr-xr-x 2 root wheel 512 Aug 12 06:07 unistring
-rw-r--r-- 1 root bin 1961 Apr 1 22:49 unitypes.h
-rw-r--r-- 1 root bin 2881 Apr 1 22:49 uniwbrk.h
-rw-r--r-- 1 root bin 2431 Apr 1 22:49 uniwidth.h
drwxr-xr-x 2 root wheel 512 Aug 12 06:07 uuid
drwxr-xr-x 2 root wheel 512 Aug 21 11:21 vorbis

The 'elperiodic' library is present:
user@server:rtpproxy % find /tmp/rtpproxy -name elperiodic.h
/tmp/rtpproxy/libelperiodic/src/elperiodic.h

PRECOMPILATION PHASE

Git files cloning phase:
user@server:/tmp % git clone -b master https://github.com/sippy/rtpproxy.git
Cloning into 'rtpproxy'...
remote: Counting objects: 12822, done.
remote: Total 12822 (delta 0), reused 0 (delta 0), pack-reused 12822
Receiving objects: 100% (12822/12822), 6.12 MiB | 1.26 MiB/s, done.
Resolving deltas: 100% (9298/9298), done.

user@server:/tmp % git -C rtpproxy submodule update --init --recursive
Submodule 'libelperiodic' (https://github.com/sobomax/libelperiodic.git) registered for path 'libelperiodic'
Cloning into '/tmp/rtpproxy/libelperiodic'...
Submodule path 'libelperiodic': checked out '0faebe31044de1dc6eb163f7cfc690a55d2f7ae4'

user@server:/tmp % cd rtpproxy

The 'configure' phase:
user@server:rtpproxy % ./configure
checking whether to enable maintainer-specific portions of Makefiles... no
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... ./install-sh -c -d
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking build system type... amd64-unknown-openbsd6.1
checking host system type... amd64-unknown-openbsd6.1
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking whether gcc understands -c and -o together... yes
checking for style of include used by make... GNU
checking dependency style of gcc... gcc3
checking how to run the C preprocessor... gcc -E
checking how to print strings... print -r
checking for a sed that does not truncate output... /usr/bin/sed
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for fgrep... /usr/bin/grep -F
checking for ld used by gcc... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
checking the name lister (/usr/bin/nm -B) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 196608
checking how to convert amd64-unknown-openbsd6.1 file names to amd64-unknown-openbsd6.1 format... func_convert_file_noop
checking how to convert amd64-unknown-openbsd6.1 file names to toolchain format... func_convert_file_noop
checking for /usr/bin/ld option to reload object files... -r
checking for objdump... objdump
checking how to recognize dependent libraries... match_pattern /lib[^/]+(.so.[0-9]+.[0-9]+|.so|_pic.a)$
checking for dlltool... no
checking how to associate runtime and link libraries... print -r --
checking for ar... ar
checking for archiver @file support... @
checking for strip... strip
checking for ranlib... ranlib
checking command to parse /usr/bin/nm -B output from gcc object... ok
checking for sysroot... no
checking for mt... mt
checking if mt is a manifest tool... no
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for dlfcn.h... yes
checking for objdir... .libs
checking if gcc supports -fno-rtti -fno-exceptions... no
checking for gcc option to produce PIC... -fPIC -DPIC
checking if gcc PIC flag -fPIC -DPIC works... yes
checking if gcc static flag -static works... yes
checking if gcc supports -c -o file.o... yes
checking if gcc supports -c -o file.o... (cached) yes
checking whether the gcc linker (/usr/bin/ld) supports shared libraries... yes
checking whether -lc should be explicitly linked in... yes
checking dynamic linker characteristics... openbsd6.1 ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes
checking for dlfcn.h... (cached) yes
checking for dladdr in -ldl... no
checking gsm.h usability... no
checking gsm.h presence... no
checking for gsm.h... no
checking g729_encoder.h usability... no
checking g729_encoder.h presence... no
checking for g729_encoder.h... no
checking bcg729/encoder.h usability... no
checking bcg729/encoder.h presence... no
checking for bcg729/encoder.h... no
checking g722.h usability... no
checking g722.h presence... no
checking for g722.h... no
checking sndfile.h usability... no
checking sndfile.h presence... no
checking for sndfile.h... no
checking srtp/srtp.h usability... no
checking srtp/srtp.h presence... no
checking for srtp/srtp.h... no
checking srtp2/srtp.h usability... no
checking srtp2/srtp.h presence... no
checking for srtp2/srtp.h... no
checking elperiodic.h usability... no
checking elperiodic.h presence... no
checking for elperiodic.h... no
checking siplog.h usability... no
checking siplog.h presence... no
checking for siplog.h... no
checking for ANSI C header files... (cached) yes
checking arpa/inet.h usability... yes
checking arpa/inet.h presence... yes
checking for arpa/inet.h... yes
checking fcntl.h usability... yes
checking fcntl.h presence... yes
checking for fcntl.h... yes
checking limits.h usability... yes
checking limits.h presence... yes
checking for limits.h... yes
checking netdb.h usability... yes
checking netdb.h presence... yes
checking for netdb.h... yes
checking netinet/in.h usability... yes
checking netinet/in.h presence... yes
checking for netinet/in.h... yes
checking for stdlib.h... (cached) yes
checking for string.h... (cached) yes
checking for strings.h... (cached) yes
checking sys/socket.h usability... yes
checking sys/socket.h presence... yes
checking for sys/socket.h... yes
checking sys/time.h usability... yes
checking sys/time.h presence... yes
checking for sys/time.h... yes
checking for unistd.h... (cached) yes
checking err.h usability... yes
checking err.h presence... yes
checking for err.h... yes
checking endian.h usability... yes
checking endian.h presence... yes
checking for endian.h... yes
checking sys/endian.h usability... yes
checking sys/endian.h presence... yes
checking for sys/endian.h... yes
checking for an ANSI C-conforming const... yes
checking whether time.h and sys/time.h may both be included... yes
checking for struct sockaddr_un.sun_len... yes
checking for size_t... yes
checking for working alloca.h... no
checking for alloca... yes
checking for stdlib.h... (cached) yes
checking for GNU libc compatible malloc... yes
checking for working memcmp... yes
checking return type of signal handlers... void
checking for atexit... yes
checking for gettimeofday... yes
checking for memset... yes
checking for mkdir... yes
checking for socket... yes
checking for strchr... yes
checking for strdup... yes
checking for strerror... yes
checking for clock_gettime... yes
checking for __sync_fetch_and_add... yes
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating src/Makefile
config.status: creating makeann/Makefile
config.status: creating tests/Makefile
config.status: creating extractaudio/Makefile
config.status: creating libexecinfo/Makefile
config.status: creating modules/Makefile
config.status: creating modules/acct_csv/Makefile
config.status: creating pertools/Makefile
config.status: creating pertools/udp_contention/Makefile
config.status: creating src/config.h
config.status: executing depfiles commands
config.status: executing libtool commands
=== configuring in libelperiodic (/tmp/rtpproxy/libelperiodic)
configure: running /bin/sh ./configure --disable-option-checking '--prefix=/usr/local' --cache-file=/dev/null --srcdir=.
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... ./install-sh -c -d
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking whether to enable maintainer-specific portions of Makefiles... no
checking build system type... amd64-unknown-openbsd6.1
checking host system type... amd64-unknown-openbsd6.1
checking how to print strings... print -r
checking for style of include used by make... GNU
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking whether gcc understands -c and -o together... yes
checking dependency style of gcc... gcc3
checking for a sed that does not truncate output... /usr/bin/sed
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for fgrep... /usr/bin/grep -F
checking for ld used by gcc... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
checking the name lister (/usr/bin/nm -B) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 196608
checking how to convert amd64-unknown-openbsd6.1 file names to amd64-unknown-openbsd6.1 format... func_convert_file_noop
checking how to convert amd64-unknown-openbsd6.1 file names to toolchain format... func_convert_file_noop
checking for /usr/bin/ld option to reload object files... -r
checking for objdump... objdump
checking how to recognize dependent libraries... match_pattern /lib[^/]+(.so.[0-9]+.[0-9]+|.so|_pic.a)$
checking for dlltool... no
checking how to associate runtime and link libraries... print -r --
checking for ar... ar
checking for archiver @file support... @
checking for strip... strip
checking for ranlib... ranlib
checking command to parse /usr/bin/nm -B output from gcc object... ok
checking for sysroot... no
checking for a working dd... /bin/dd
checking how to truncate binary pipes... /bin/dd bs=4096 count=1
checking for mt... mt
checking if mt is a manifest tool... no
checking how to run the C preprocessor... gcc -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for dlfcn.h... yes
checking for objdir... .libs
checking if gcc supports -fno-rtti -fno-exceptions... no
checking for gcc option to produce PIC... -fPIC -DPIC
checking if gcc PIC flag -fPIC -DPIC works... yes
checking if gcc static flag -static works... yes
checking if gcc supports -c -o file.o... yes
checking if gcc supports -c -o file.o... (cached) yes
checking whether the gcc linker (/usr/bin/ld) supports shared libraries... yes
checking whether -lc should be explicitly linked in... yes
checking dynamic linker characteristics... openbsd6.1 ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes
checking for gcc... (cached) gcc
checking whether we are using the GNU C compiler... (cached) yes
checking whether gcc accepts -g... (cached) yes
checking for gcc option to accept ISO C89... (cached) none needed
checking whether gcc understands -c and -o together... (cached) yes
checking dependency style of gcc... (cached) gcc3
checking for ranlib... (cached) ranlib
checking for clock_gettime... yes
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating src/Makefile
config.status: executing depfiles commands
config.status: executing libtool commands

The 'make' phase:
user@server:rtpproxy % make
Making all in libexecinfo
gcc -DHAVE_CONFIG_H -I. -I../src -g3 -O0 -fno-omit-frame-pointer -g -O2 -MT libexecinfo_a-execinfo.o -MD -MP -MF .deps/libexecinfo_a-execinfo.Tpo -c -o libexecinfo_a-execinfo.o `test -f 'execinfo.c' || echo './'`execinfo.c
mv -f .deps/libexecinfo_a-execinfo.Tpo .deps/libexecinfo_a-execinfo.Po
gcc -DHAVE_CONFIG_H -I. -I../src -g3 -O0 -fno-omit-frame-pointer -g -O2 -MT libexecinfo_a-stacktraverse.o -MD -MP -MF .deps/libexecinfo_a-stacktraverse.Tpo -c -o libexecinfo_a-stacktraverse.o `test -f 'stacktraverse.c' || echo './'`stacktraverse.c
mv -f .deps/libexecinfo_a-stacktraverse.Tpo .deps/libexecinfo_a-stacktraverse.Po
rm -f libexecinfo.a
ar cru libexecinfo.a libexecinfo_a-execinfo.o libexecinfo_a-stacktraverse.o
ranlib libexecinfo.a
Making all in makeann
gcc -Wall -DHAVE_CONFIG_H -I. -I../src -I../extractaudio -std=gnu99 -Wall -Wno-uninitialized -g -O2 -MT makeann-makeann.o -MD -MP -MF .deps/makeann-makeann.Tpo -c -o makeann-makeann.o `test -f 'makeann.c' || echo './'`makeann.c
mv -f .deps/makeann-makeann.Tpo .deps/makeann-makeann.Po
gcc -Wall -DHAVE_CONFIG_H -I. -I../src -I../extractaudio -std=gnu99 -Wall -Wno-uninitialized -g -O2 -MT makeann-g729_compat.o -MD -MP -MF .deps/makeann-g729_compat.Tpo -c -o makeann-g729_compat.o `test -f '../extractaudio/g729_compat.c' || echo './'`../extractaudio/g729_compat.c
mv -f .deps/makeann-g729_compat.Tpo .deps/makeann-g729_compat.Po
/bin/sh ../libtool --tag=CC --mode=link gcc -std=gnu99 -Wall -Wno-uninitialized -g -O2 -o makeann makeann-makeann.o makeann-g729_compat.o
libtool: link: gcc -std=gnu99 -Wall -Wno-uninitialized -g -O2 -o makeann makeann-makeann.o makeann-g729_compat.o
makeann-makeann.o: In function `main':
/tmp/rtpproxy/makeann/makeann.c:174: warning: warning: sprintf() is often misused, please use snprintf()
Making all in modules
Making all in acct_csv
/bin/sh ../../libtool --tag=CC --mode=compile gcc -Wall -DHAVE_CONFIG_H -I. -I../../src -std=gnu99 -Wall -Wno-uninitialized -g -O2 -MT rtpp_acct_csv.lo -MD -MP -MF .deps/rtpp_acct_csv.Tpo -c -o rtpp_acct_csv.lo rtpp_acct_csv.c
libtool: compile: gcc -Wall -DHAVE_CONFIG_H -I. -I../../src -std=gnu99 -Wall -Wno-uninitialized -g -O2 -MT rtpp_acct_csv.lo -MD -MP -MF .deps/rtpp_acct_csv.Tpo -c rtpp_acct_csv.c -fPIC -DPIC -o .libs/rtpp_acct_csv.o
libtool: compile: gcc -Wall -DHAVE_CONFIG_H -I. -I../../src -std=gnu99 -Wall -Wno-uninitialized -g -O2 -MT rtpp_acct_csv.lo -MD -MP -MF .deps/rtpp_acct_csv.Tpo -c rtpp_acct_csv.c -o rtpp_acct_csv.o >/dev/null 2>&1
mv -f .deps/rtpp_acct_csv.Tpo .deps/rtpp_acct_csv.Plo
/bin/sh ../../libtool --tag=CC --mode=link gcc -std=gnu99 -Wall -Wno-uninitialized -g -O2 -avoid-version -module -shared -export-dynamic -o rtpp_acct_csv.la -rpath /usr/local/lib/rtpproxy rtpp_acct_csv.lo
libtool: link: gcc -shared -fPIC -DPIC -o .libs/rtpp_acct_csv.so .libs/rtpp_acct_csv.o -g -O2
libtool: link: ( cd ".libs" && rm -f "rtpp_acct_csv.la" && ln -s "../rtpp_acct_csv.la" "rtpp_acct_csv.la" )
/bin/sh ../../libtool --tag=CC --mode=compile gcc -Wall -DHAVE_CONFIG_H -I. -I../../src -DRTPP_DEBUG -g3 -O0 -fno-omit-frame-pointer -g -O2 -MT rtpp_acct_csv_debug_la-rtpp_acct_csv.lo -MD -MP -MF .deps/rtpp_acct_csv_debug_la-rtpp_acct_csv.Tpo -c -o rtpp_acct_csv_debug_la-rtpp_acct_csv.lo `test -f 'rtpp_acct_csv.c' || echo './'`rtpp_acct_csv.c
libtool: compile: gcc -Wall -DHAVE_CONFIG_H -I. -I../../src -DRTPP_DEBUG -g3 -O0 -fno-omit-frame-pointer -g -O2 -MT rtpp_acct_csv_debug_la-rtpp_acct_csv.lo -MD -MP -MF .deps/rtpp_acct_csv_debug_la-rtpp_acct_csv.Tpo -c rtpp_acct_csv.c -fPIC -DPIC -o .libs/rtpp_acct_csv_debug_la-rtpp_acct_csv.o
libtool: compile: gcc -Wall -DHAVE_CONFIG_H -I. -I../../src -DRTPP_DEBUG -g3 -O0 -fno-omit-frame-pointer -g -O2 -MT rtpp_acct_csv_debug_la-rtpp_acct_csv.lo -MD -MP -MF .deps/rtpp_acct_csv_debug_la-rtpp_acct_csv.Tpo -c rtpp_acct_csv.c -o rtpp_acct_csv_debug_la-rtpp_acct_csv.o >/dev/null 2>&1
mv -f .deps/rtpp_acct_csv_debug_la-rtpp_acct_csv.Tpo .deps/rtpp_acct_csv_debug_la-rtpp_acct_csv.Plo
/bin/sh ../../libtool --tag=CC --mode=link gcc -g3 -O0 -fno-omit-frame-pointer -g -O2 -avoid-version -module -shared -export-dynamic -o rtpp_acct_csv_debug.la -rpath /usr/local/lib/rtpproxy rtpp_acct_csv_debug_la-rtpp_acct_csv.lo ../../libexecinfo/libexecinfo.a

*** Warning: Trying to link with static lib archive ../../libexecinfo/libexecinfo.a.
*** I have the capability to make that library automatically link in when
*** you link to this library. But I can only do this if you have a
*** shared version of the library, which you do not appear to have
*** because the file extensions .a of this argument makes me believe
*** that it is just a static archive that I should not use here.
libtool: link: gcc -shared -fPIC -DPIC -o .libs/rtpp_acct_csv_debug.so .libs/rtpp_acct_csv_debug_la-rtpp_acct_csv.o -g3 -O0 -g -O2
libtool: link: ( cd ".libs" && rm -f "rtpp_acct_csv_debug.la" && ln -s "../rtpp_acct_csv_debug.la" "rtpp_acct_csv_debug.la" )
Making all in libelperiodic/src
gcc -DPACKAGE_NAME="libelperiodic" -DPACKAGE_TARNAME="libelperiodic" -DPACKAGE_VERSION="1.0" -DPACKAGE_STRING="libelperiodic\ 1.0" -DPACKAGE_BUGREPORT="[email protected]" -DPACKAGE_URL="" -DPACKAGE="libelperiodic" -DVERSION="1.0" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=".libs/" -I. -g3 -O0 -fPIC -g -O2 -MT libelperiodic_a-periodic.o -MD -MP -MF .deps/libelperiodic_a-periodic.Tpo -c -o libelperiodic_a-periodic.o `test -f 'periodic.c' || echo './'`periodic.c
In file included from periodic.c:35:
prdic_timespecops.h:37:1: warning: "timespecadd" redefined
In file included from periodic.c:27:
/usr/include/sys/time.h:117:1: warning: this is the location of the previous definition
In file included from periodic.c:35:
prdic_timespecops.h:47:1: warning: "timespecsub" redefined
In file included from periodic.c:27:
/usr/include/sys/time.h:126:1: warning: this is the location of the previous definition
mv -f .deps/libelperiodic_a-periodic.Tpo .deps/libelperiodic_a-periodic.Po
gcc -DPACKAGE_NAME="libelperiodic" -DPACKAGE_TARNAME="libelperiodic" -DPACKAGE_VERSION="1.0" -DPACKAGE_STRING="libelperiodic\ 1.0" -DPACKAGE_BUGREPORT="[email protected]" -DPACKAGE_URL="" -DPACKAGE="libelperiodic" -DVERSION="1.0" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=".libs/" -I. -g3 -O0 -fPIC -g -O2 -MT libelperiodic_a-prdic_math.o -MD -MP -MF .deps/libelperiodic_a-prdic_math.Tpo -c -o libelperiodic_a-prdic_math.o `test -f 'prdic_math.c' || echo './'`prdic_math.c
In file included from prdic_math.c:32:
prdic_timespecops.h:37:1: warning: "timespecadd" redefined
In file included from prdic_math.c:27:
/usr/include/sys/time.h:117:1: warning: this is the location of the previous definition
In file included from prdic_math.c:32:
prdic_timespecops.h:47:1: warning: "timespecsub" redefined
In file included from prdic_math.c:27:
/usr/include/sys/time.h:126:1: warning: this is the location of the previous definition
mv -f .deps/libelperiodic_a-prdic_math.Tpo .deps/libelperiodic_a-prdic_math.Po
rm -f libelperiodic.a
ar cru libelperiodic.a libelperiodic_a-periodic.o libelperiodic_a-prdic_math.o
ranlib libelperiodic.a
gcc -DPACKAGE_NAME="libelperiodic" -DPACKAGE_TARNAME="libelperiodic" -DPACKAGE_VERSION="1.0" -DPACKAGE_STRING="libelperiodic\ 1.0" -DPACKAGE_BUGREPORT="[email protected]" -DPACKAGE_URL="" -DPACKAGE="libelperiodic" -DVERSION="1.0" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=".libs/" -I. -g -O2 -MT testskew.o -MD -MP -MF .deps/testskew.Tpo -c -o testskew.o testskew.c
mv -f .deps/testskew.Tpo .deps/testskew.Po
/bin/sh ../libtool --tag=CC --mode=link gcc -g -O2 -o testskew testskew.o libelperiodic.a -lm
libtool: link: gcc -g -O2 -o testskew testskew.o libelperiodic.a -lm
Making all in src
../src/genfincode.sh rtpp_timed.h rtpp_timed_fin.h rtpp_timed_fin.c
../src/genfincode_stat.sh rtpp_stream.h rtpp_stream_fin.h rtpp_stream_fin.c
../src/genfincode_stat.sh rtpp_server.h rtpp_server_fin.h rtpp_server_fin.c
../src/genfincode_stat.sh rtpp_refcnt.h rtpp_refcnt_fin.h rtpp_refcnt_fin.c
../src/genfincode.sh rtpp_log_obj.h rtpp_log_obj_fin.h rtpp_log_obj_fin.c
../src/genfincode.sh rtpp_command_rcache.h rtpp_command_rcache_fin.h rtpp_command_rcache_fin.c
../src/genfincode.sh rtpp_socket.h rtpp_socket_fin.h rtpp_socket_fin.c
../src/genfincode.sh rtpp_record.h rtpp_record_fin.h rtpp_record_fin.c
../src/genfincode.sh rtpp_ttl.h rtpp_ttl_fin.h rtpp_ttl_fin.c
../src/genfincode.sh rtpp_pipe.h rtpp_pipe_fin.h rtpp_pipe_fin.c
../src/genfincode.sh rtpp_pcount.h rtpp_pcount_fin.h rtpp_pcount_fin.c
../src/genfincode.sh rtpp_sessinfo.h rtpp_sessinfo_fin.h rtpp_sessinfo_fin.c
../src/genfincode.sh rtpp_pcnt_strm.h rtpp_pcnt_strm_fin.h rtpp_pcnt_strm_fin.c
../src/genfincode.sh rtpp_ringbuf.h rtpp_ringbuf_fin.h rtpp_ringbuf_fin.c
../src/genfincode.sh rtpp_module_if.h rtpp_module_if_fin.h rtpp_module_if_fin.c
../src/genfincode.sh rtpp_port_table.h rtpp_port_table_fin.h rtpp_port_table_fin.c
../src/genfincode.sh rtpp_acct.h rtpp_acct_fin.h rtpp_acct_fin.c
../src/genfincode_stat.sh rtpp_netaddr.h rtpp_netaddr_fin.h rtpp_netaddr_fin.c
make all-am
gcc -Wall -DHAVE_CONFIG_H -I. -Werror=implicit-function-declaration -Wall -I../libelperiodic/src -g -O2 -MT rtpproxy-main.o -MD -MP -MF .deps/rtpproxy-main.Tpo -c -o rtpproxy-main.o `test -f 'main.c' || echo './'`main.c
In file included from main.c:70:
rtpp_refcnt.h:55: warning: type qualifiers ignored on function return type
main.c: In function 'main':
main.c:822: warning: implicit declaration of function 'sched_setscheduler'
mv -f .deps/rtpproxy-main.Tpo .deps/rtpproxy-main.Po
gcc -Wall -DHAVE_CONFIG_H -I. -Werror=implicit-function-declaration -Wall -I../libelperiodic/src -g -O2 -MT rtpproxy-rtpp_server.o -MD -MP -MF .deps/rtpproxy-rtpp_server.Tpo -c -o rtpproxy-rtpp_server.o `test -f 'rtpp_server.c' || echo './'`rtpp_server.c
In file included from rtpp_server.c:41:
rtp_packet.h:38: error: field 'raddr' has incomplete type
rtp_packet.h:39: error: field '_laddr' has incomplete type
In file included from rtpp_server.c:44:
rtpp_refcnt.h:55: warning: type qualifiers ignored on function return type
*** Error 1 in src (Makefile:989 'rtpproxy-rtpp_server.o')
*** Error 1 in src (Makefile:673 'all')
*** Error 1 in /tmp/rtpproxy (Makefile:506 'all-recursive')

no audio with kamailio & rtpproxy bebind NAT

Hi everyone,
I'm new to kamailio and rtpproxy and the problem's been bothering me for days. Any help would highly appreciated.

My network topology is as follows:
kamailio5.0 and rtpproxy2.0 are running on the same server. The server is behind NAT, its private ip is 10.240.0.62, public ip is . The server has 5060 tcp&udp, 35000-65000 udp port enabled.
There're 2 sip clients(test && test1) running in another LAN(175.100.202.xxx) .

Situation:
Both clients registered successfully and they can call each other. But neither of them has audio.(If i kill rtpproxy, audio is ok).

My kamailio cfg(only posted the part that i change),

#!KAMAILIO
#!define WITH_MYSQL
#!define WITH_DEBUG
#!define WITH_AUTH
#!define WITH_USRLOCDB
#!define WITH_ANTIFLOOD
#!define WITH_NAT
#!define WITH_PSTN

listen=udp:10.240.0.62:5060 advertise :5060
modparam("rtpproxy", "rtpproxy_sock", "udp:10.240.0.62:64000")

**rtpproxy cmd**:

rtpproxy -A <PUBLICIP> -F -l 10.240.0.62 -m 35000 -M 65000 -s udp:*:64000 -d INFO

Since audio is fine when rtpproxy is not running, I'm assuming i must not configured the rtpproxy properly. The rtpproxy log:

INFO:GLOBAL:rtpp_command_ul_handle: new IPv4/IPv4 session OcriYpSuGsYXQS3W5rKm3Xu5ucwUASIR, tag s-r9nPOPymqfGKOX-WsijidfeaVmGMTY;1 requested, type strong
INFO:OcriYpSuGsYXQS3W5rKm3Xu5ucwUASIR:rtpp_command_ul_handle: new session on IPv4 port 37410 created, tag s-r9nPOPymqfGKOX-WsijidfeaVmGMTY;1
INFO:OcriYpSuGsYXQS3W5rKm3Xu5ucwUASIR:rtpp_stream_prefill_addr: pre-filling caller's RTP address with 175.100.202.254:4008
INFO:OcriYpSuGsYXQS3W5rKm3Xu5ucwUASIR:rtpp_stream_prefill_addr: pre-filling caller's RTCP address with 175.100.202.254:4009
INFO:OcriYpSuGsYXQS3W5rKm3Xu5ucwUASIR:rtpp_command_ul_handle: lookup on ports 37410/37724, session timer restarted
INFO:OcriYpSuGsYXQS3W5rKm3Xu5ucwUASIR:rtpp_stream_prefill_addr: pre-filling callee's RTP address with 175.100.202.33:63974
INFO:OcriYpSuGsYXQS3W5rKm3Xu5ucwUASIR:rtpp_stream_prefill_addr: pre-filling callee's RTCP address with 175.100.202.33:63975
INFO:OcriYpSuGsYXQS3W5rKm3Xu5ucwUASIR:__rtpp_stream_fill_addr: callee's address filled in: 175.100.202.33:10876 (RTCP)
INFO:OcriYpSuGsYXQS3W5rKm3Xu5ucwUASIR:rtpp_command_ul_handle: adding strong flag to existing session, new=1/0/0
INFO:OcriYpSuGsYXQS3W5rKm3Xu5ucwUASIR:rtpp_command_ul_handle: lookup on ports 37410/37724, session timer restarted
INFO:OcriYpSuGsYXQS3W5rKm3Xu5ucwUASIR:rtpp_command_ul_handle: lookup on ports 37410/37724, session timer restarted
INFO:OcriYpSuGsYXQS3W5rKm3Xu5ucwUASIR:rtpp_cmd_delete_ematch: forcefully deleting session 1 on ports 37410/37724
INFO:OcriYpSuGsYXQS3W5rKm3Xu5ucwUASIR:rtpp_pipe_get_stats: RTP stats: 0 in from callee, 0 in from caller, 0 relayed, 0 dropped, 0 ignored
INFO:OcriYpSuGsYXQS3W5rKm3Xu5ucwUASIR:rtpp_pipe_get_stats: RTCP stats: 2 in from callee, 0 in from caller, 2 relayed, 0 dropped, 0 ignored
INFO:OcriYpSuGsYXQS3W5rKm3Xu5ucwUASIR:rtpp_session_dtor: session on ports 37410/37724 is cleaned up
INFO:OcriYpSuGsYXQS3W5rKm3Xu5ucwUASIR:rtpp_stream_dtor: RTP stream from callee: SSRC=NONE, ssrc_changes=0, psent=0, precvd=0, plost=0, pdups=0
INFO:OcriYpSuGsYXQS3W5rKm3Xu5ucwUASIR:rtpp_stream_dtor: RTP stream from caller: SSRC=NONE, ssrc_changes=0, psent=0, precvd=0, plost=0, pdups=0

wrong interface after early announcement

Dear all,
I receive a call from an external IP on my external interface. I make rtpproxy_offer (frocei) to get an early announcement from an announcement server with an internal IP (10.*.*.*). Afterwards I make a 2nd rtpproxy_offer (frocee) for the INVITE to the callee with an external IP.
But the SDP in the 2nd INVITE points out my internal IP.
thanks and best regards
Marco

rtpproxy.log: https://pastebin.com/q5fEXKWH

SIP client          | rtpproxy            | rtpproxy              | SIP client
offer               |                     |                       |              
87.136.67.7:1242  ->| offer               |                       |              
                    |                     |  10.249.152.6:20306 ->| internal announcement server           
                    |                     |                       |              
                    |                     |            answer     |<-  10.249.152.21:16744             
                    |<- 62.155.10.4:29218 |                       |              
                    |                     |                       |              
                    |                     |                       |              

     <============================= announcement =============================>

                    |                     |                       |              
                    |                     |                       |              
                    |                     |                       |              
87.136.67.7:1242  ->|  offer              |                       |    
                    |                     |  10.249.152.6:20306 ->| external callee  

How to work extractaudio

Hello,

Do you have any examples for how to run extractaudio ?
I have tried any combination but didn't get any output file.
/usr/src/rtpproxy/extractaudio/extractaudio ?
usage: extractaudio [-idsn] [-F file_fmt] [-D data_fmt] rdir outfile [link1] ... [linkN]
e.g:
/usr/src/rtpproxy/extractaudio/extractaudio -F wav /tmp/rtp/3HQ_lYL8EqHRda3dDnplDg..-0=efe5cbf28320cd17db01e1c280300850.a.rtp 1.wav
but when I give a.rtp file, there is no output.
Thank you for your help.

Build broken on ubuntu

It seems that the include hierachy is broken?

In file included from rtpp_util.c:43:0:
rtpp_cfg_stable.h:81:5: error: unknown type name ‘uint16_t’
uint16_t port_table[65536];
^

Same for all the other int types, like uint8 etc.

stdint.h is available (as checked by ./configure) and working as it should in a little toy .h / .c I made just to see.

Tried on two different boxes with ubuntu 14.04.
Build worked before I put my issue about the urandom thing.

If I manually add the include to the erroring header file, it works just fine, until it tries to compile cfg_stable.h file where its still missing.

I am not fluent enough in C to find out where things should be in general, which is why I'm making an issue instead of just fixing it :)

Building a Debian package for v2

Any tips on building a debian package for v2 for those not all that familiar with building packages? Our goal is to make v2 distributable via our internal apt repo, since it's not available via any debian repo we can find.

I primarily seem to keep running into issues with running dpkg-buildpackage -rfakeroot & it wanting to run through a test suite. Any way to skip the tests?

G.722 codec stream is not resized

Trying to resize 10ms stream with Uz40/Uz40, the stream getting out as 10ms stream as well. Please see attached files. 9.pcap for one side and 10.pcap is for the other side.
screenshot317
screenshot316

Resizing works erratically on Linux, causing new forwarding1 test to fail

I am observing resizing to not working at all or behaving erratically on Linux for most of the codecs as compared to the same codecs on FreeBSD. Please see attached files, the stats on top is FreeBSD, the stats on the bottom is Linux. Resizing is done using Uz40/Lz60.

First session (FreeBSD on top, Linux on bottom):
screenshot321

Some extra debug for the first session showing output G.722 packets with different size than the rest (which is why it went down from 3000 packets to 2970):
screenshot322

Second session (FreeBSD on top, Linux on bottom):
screenshot320

rtpproxy only relay RTCP but not RTP

Hi everyone,
I'm running kamailio and rtpproxy on the same server behind a NAT.

I start the deamon using command:
rtpproxy -A 35.185.130.154 -F -l 10.240.0.62 -m 35000 -M 65000 -s udp:*:64000 -d INFO

When two sip clients call each other, the rtpproxy syslog shows that a rtp session has been established successfully.

rtpp_command_ul_handle: new session on IPv4 port 56340 created ...
...
rtpp_command_ul_handle: lookup on ports 56340/44468, session timer restarted

but the two clients have no audio. And I can noly capture RTCP packets on the server, NO RTP packet.

sudo tcpdump -i eth0 udp port 56340 -vv -X

0 packets captured
0 packets received by filter
0 packets dropped by kernel

sudo tcpdump -i eth0 udp port 56341 -vv -X

06:56:51.983377 IP (tos 0x0, ttl 52, id 22062, offset 0, flags [none], proto UDP (17), length 36)
175.100.202.33.6746 > kamailio-test-01.c.cmbackup-1009.internal.56341: [udp sum ok] UDP, length 8
0x0000: 4500 0024 562e 0000 3411 abe7 af64 ca21 E..$V...4....d.!
0x0010: 0af0 003e 1a5a dc15 0010 4010 80c9 0001 ...>.Z....@.....
0x0020: 5768 6c67 Whlg
1 packets captured
1 packets received by filter
0 packets dropped by kernel

Am I missing something in the config? Appreciate it if anyone could help.

Cheers
Jesse

Create regression / test suite

It would be nice to have easy-to-use and easy-to-extend regression / test suite that would go through all supported commands and verify that each of them performs as expected. In doing so, it can also test various aspects of API, i.e. test that all sippy.Rtp_proxy_client, sippy.Rtp_proxy_client_xxx, sippy.Rtp_proxy_session, are functional and exception-free.

One approach that we can take is to use rtpproxy that is being tested itself to generate/analyze RTP traffic, so successful completion of the test suite would not only means that all commands are processed properly, but that actual RTP is handled correctly.

auto fix client ip and port

My client(behind NAT) first send INVITE request to sip proxy(kamailio) with sdp(use local ip and port), then after session establish complete client know rtpproxy ip(public) and port. So client send its rtp stream to rtpproxy, but rtpproxy found rtp stream comes from another ip and port(NAT public ip and new assigned port). So rtpproxy discard these package. Any way can auto fix map ports with new client ip and port? How can I configure it?

Wont build because of libelperiodic

This is probably more of a ID10T error then a bug..... When trying to build rtpproxy I get:
=== configuring in libelperiodic (/usr/src/rtpproxy/libelperiodic)
configure: WARNING: no configuration information is in libelperiodic

however libelperiodic is installed.
[root@bounce rtpproxy]# find / -name 'libelperiodic.so' | grep '/lib/'
/usr/lib/libelperiodic.so
/usr/local/lib/libelperiodic.so
[root@bounce rtpproxy]#

rtpproxy crash

Hello,
I have a problem with rtpproxy which crashes with this message :

Feb 8 02:15:26 orange-pa2 rtpproxy[32699]: rtpproxy: rtpp_stats.c:398: rtpp_stats_update_derived: Assertion `dst->last_ts < dtime' failed.
Feb 8 02:15:26 orange-pa2 systemd[1]: rtpproxy-resp-orange.service: main process exited, code=killed, status=6/ABRT
Feb 8 02:15:26 orange-pa2 systemd[1]: Unit rtpproxy-resp-orange.service entered failed state.

I'm running commit 3938d6d (Date: Wed Oct 19 14:40:44 2016 -0700)

Has this problem been fixed in latest releases ?
Regards,
Cédric

Create protocol documentation

It would be nice to have an extensive and easy to use protocol/API documentation that folks like OpenSIPS or Kamalio can use to integrate and test. I'd start with the protocol level, explaining some design decisions and constrains and go with more detailed format for each command and its options. There are some source code reorg changes that are pending on my dev box that can be useful as a starting point.

Below is the list that we can start with.

o "U[opts] callid remote_ip remote_port from_tag [to_tag] [notify_socket notify_tag]";
o "L[opts] callid remote_ip remote_port from_tag [to_tag]";
o "D[w] callid from_tag [to_tag]";
o "P[n] callid pname codecs from_tag [to_tag]";
o "R[-xxx-] call_id from_tag [to_tag]";
o "C[-xxx-] call_id -XXX- from_tag [to_tag]";
o "S call_id from_tag [to_tag]";
o "VF feature_num";
o "V";
o "I[b]";
o "Q call_id from_tag [to_tag]";
o "X";

rtpproxy-2.0.0 coredump issue--when rtpproxy started as real Ip not localhost

rtpproxy -l x.x.x.x -s udp:10.x.x.x:12221 -m 10000 -M 65535 -F -d ERR:LOG_LOCAL1 will generate coredump file,
rtpproxy -l x.x.x.x -s udp:localhost:12221 -m 10000 -M 65535 -F -d ERR:LOG_LOCAL1 is OK

I checked the coredump file and find null pointer problem...

(gdb) bt
#0  create_twinlistener (cf=0x7fffe6feb0d0, ia=0x0, port=0x7fe8c2bfccfc, fds=0x7fe8c2bfccf0) at rtpp_command.c:109
#1  rtpp_create_listener (cf=0x7fffe6feb0d0, ia=0x0, port=0x7fe8c2bfccfc, fds=0x7fe8c2bfccf0) at rtpp_command.c:160
#2  0x000000000040de97 in rtpp_command_ul_handle (cf=0x7fffe6feb0d0, cmd=0x7fe8bc0008c0, ulop=0x7fe8bc002c60, sp=0x0, sidx=-1) at rtpp_command_ul.c:439
#3  0x0000000000407e4d in handle_command (cf=0x7fffe6feb0d0, cmd=<value optimized out>) at rtpp_command.c:527
#4  0x000000000040a0bd in process_commands (arg=0x7fffe6feb0d0) at rtpp_command_async.c:172
#5  rtpp_cmd_queue_run (arg=0x7fffe6feb0d0) at rtpp_command_async.c:385
#6  0x0000003de3a079d1 in start_thread () from /lib64/libpthread.so.0
#7  0x0000003de36e88fd in clone () from /lib64/libc.so.6
(gdb) f 0
#0  create_twinlistener (cf=0x7fffe6feb0d0, ia=0x0, port=0x7fe8c2bfccfc, fds=0x7fe8c2bfccf0) at rtpp_command.c:109
109     fds[i] = socket(ia->sa_family, SOCK_DGRAM, 0);
(gdb) p ia
$1 = (struct sockaddr *) 0x0
(gdb) f 1
#1  rtpp_create_listener (cf=0x7fffe6feb0d0, ia=0x0, port=0x7fe8c2bfccfc, fds=0x7fe8c2bfccf0) at rtpp_command.c:160
160     rval = create_twinlistener(cf->stable, ia, *port, fds);
(gdb) p ia
$2 = (struct sockaddr *) 0x0

Using diffrent port for sending and recieving UDP packets.

The architecture is following :

client--------------->kamailio+rtpproxy------>softswitch

I'm concerned with the client--->rtpproxy path.

rtpproxy uses the same port from receiving UDP packets from client and sending udp packets to client. Can this be changed, like they will use different ports? From README, it seems the algorithm rtpproxy follows when establishing session, dictates the port usage described above. So i think to achieve what i'm describing i have to change the src of rtpproxy. Which section of the code i should concentrate on? (I'm willing to submit patches, this behaviour then will be toggled from command line)

can't disable bridging mode

Hello!
i have rtpproxy (7c27f22) with patch from my other issue.
network interfaces on my server:
eth0: x.x.x.x (internal)
eth1: y.y.y.y (external)

present sip behavior:
A (ext) -> (ext) opensips v.2.1 (int) -> (int) B
A with ext sip and rtp addresses, B with internal sip and external sdp addresses.

present sdp behavior:
step1: A INVITE (int (not real, nated) sdp) -> opensips (int SDP x.x.x.x) -> B
step2: B 200OK (ext sdp) -> opensips (ext sdp y.y.y.y) -> A

present rtp behavior:
A (ext) -> (ext y.y.y.y) rtpproxy (int x.x.x.x) -> (ext) B

rtpproxy launch options:
/bin/rtpproxy -s udp:x.x.x.x 2222 -p /run/rtpproxy/rtpproxy.pid -u rtpproxy rtpproxy -m 10000 -M 60000 -d DBUG LOG_LOCAL1 -l y.y.y.y

rtpproxy is controlled by opensips directly, without rtpproxy-cluster.

rtpproxy log output:
Nov 18 18:00:40 rtpproxy-1-01-dev rtpproxy[3151]: DBUG:GLOBAL:rtpc_doreply: sending reply "51028 x.x.x.x\n"
Nov 18 18:00:40 rtpproxy-1-01-dev rtpproxy[3151]: DBUG:GLOBAL:rtpc_doreply: sending reply "25882 x.x.x.x\n"
Nov 18 18:00:41 rtpproxy-1-01-dev rtpproxy[3151]: DBUG:GLOBAL:rtpc_doreply: sending reply "31290 y.y.y.y\n"
Nov 18 18:00:41 rtpproxy-1-01-dev rtpproxy[3151]: DBUG:GLOBAL:rtpc_doreply: sending reply "15180 y.y.y.y\n"

expected sdp behavior:
step1: A INVITE (int (not real, nated) sdp) -> opensips (ext SDP y.y.y.y) -> B
step2: B 200OK (ext sdp) -> opensips (ext sdp y.y.y.y) -> A

expected rtp behavior:
A (ext) -> (ext y.y.y.y) rtpproxy (ext y.y.y.y) -> (ext) B

It looks like when i specify single address in -l parameter, rtpproxy not disabling bridge mode and whatever use addresses of both interfaces for bridging RTP. When i specifiy single advertised address by -A parameter, rtpproxy sends it correctly in SDP, but still proxying RTP via both addresses.
Or maybe i doing something wrong, so please tell me what is it directly.

One way audio after port change

I have encountered an issue where a UA is sending a re-invite to change the RTP port, but after the re-invite was sent, it still continues sending the last few packets of the first RTP stream. This causes RTPProxy to re-latch to the previous port and then ignore and discard all packets from the new port.

The following code in the _rtpp_stream_check_latch_override function from rtpp.stream.c seems to be where things are going wrong:

if (SEQ_DIST(pvt->latch_info.seq, packet->parsed->seq) > 536)
        return (0);

After changing the above to the following, the issue is resolved:

if (SEQ_DIST(pvt->latch_info.seq, packet->parsed->seq) < 50 || SEQ_DIST(pvt->latch_info.seq, packet->parsed->seq) > 536)
        return (0);

This allows for up to 50 packets to be received from the previous stream after receiving an update command.

Is there perhaps a better way to fix this issue? Would this change introduce any harmful side effects you can think of?

I realise that the UA is actually at fault here and my change is a hack/workaround to deal with the faulty UA, but could there also be other situations where RTP packets may arrive late which would also result in the same issue? Maybe then it would be better to correctly handle this type of situation.

Idle time for each of existing sessions

Can you explain me this?
"the proxy tracks idle time for each of existing sessions (i.e. the time within which there were no packets relayed), and automatically cleans up a sessions whose idle times exceed the value specified at compile time (60 seconds by default)."

Is it SESSION_TIMEOUT?

At man page:
-T max_ttl
Limit the maximum TTL (Time To Live) of outgoing IP packets to the value of max_ttl.

At main.c SESSION_TIMEOUT used as default value for max_ttl :
cf->stable->max_ttl = SESSION_TIMEOUT;

And then:
case 'T':
cf->stable->max_ttl = atoi(optarg);

There is no set TTL of outgoing IP packets using max_ttl.

  1. Is it a mistake at man page?

There is no tracking idle time for streams.
I checked it with SIPP.
2) Is it a mistake at README?

H264 frame corrupted when using rtpproxy

Hello

I am currently making test calls with the baresip client and I have an issue with the video stream. When I make direct LAN calls without using kamailio+rtpproxy the video stream is fine, but when I make the same call with rtpproxy in the middle, I get a lot of H264 decoding errors from baresip.
I think that the packets are being corrupted by rtpproxy, or maybe some are dropped, I don't really know, but if someone could help me to confirm that rtpproxy is responsible of the issue and to fix the issue, that would be really nice :)

not work if file descriptor 0 is closed

Hi,
I need to start rtpproxy from a daemon, which will close default file descriptors like: STDIN, STDOUT, STDERR.

But rtpproxy will not work properly then.

Here is a small reproducible example:

#include <assert.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int main(void)
{
  close(0);
  if (-1 == system("rtpproxy -p /var/run/rtpproxy.pid -s unix:/var/run/rtpproxy.sock -RF")) {
    fprintf(stderr, "system: %m\n");
    assert(0);
  }
  return 0;
}

check status by:

ls  -lR  /proc/$(pgrep rtpproxy)/fd  2> /dev/null;  netstat  -naxp | grep  rtpproxy

unix socket not open properly.

RTP SSRC Multiplexing support

This is more of a suggestion.

My main concern related to firewall rules to allow multiple UDP ports to connect from internet. Firewall will allow maximum 3,4 port for rtpproxy to allow rtp entity to stream.

I have went through
https://tools.ietf.org/html/draft-peterson-rosenberg-avt-rtp-ssrc-demux-00#page-4

There is a suggested way to multiplex multiple rtp session to (I only need RTP voice) two ports rtp-voice, and rtcp-voice ports. This is RTP SSRC multiplexing approach.

Can rtpproxy comply with this. ?

Custom RTPProxy Modules?

Howdy! Is there support for custom modules for RTPProxy? I'm looking for the ability to hook into RTPProxy to analyze the media streams in real time.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.