Coder Social home page Coder Social logo

irtlab / rtptools Goto Github PK

View Code? Open in Web Editor NEW
157.0 11.0 63.0 36.24 MB

RTP Tools

Home Page: http://www.cs.columbia.edu/irt/software/rtptools/

License: Other

HTML 7.02% Makefile 2.67% C 75.30% Shell 2.82% Roff 11.19% CSS 0.16% QMake 0.85%
rtp rtptools rfc3550 transport protocol real-time streaming telephony video teleconference

rtptools's Introduction

RTP Tools

RTP Tools is a set of small applications that can be used for processing RTP data. Refer to the individual manpages for details.

  • rtpplay play back RTP sessions recorded by rtpdump
  • rtpsend generate RTP packets from textual description, generated by hand or rtpdump
  • rtpdump parse and print RTP packets, generating output files suitable for rtpplay and rtpsend
  • rtptrans RTP translator between unicast and multicast networks
  • multidump Start multiple rtpdumps simultaneously.
  • multiplay Start multiple rtpplays simultaneously.

Installation

RTP tools should compile and run on any POSIX compatible system, as well as on Windows. Some operating systems also provide a prebuilt package of RTP tools.

On UNIX, the usual ./configure && make should work. Read on for the details.

configure

Run ./configure to configure the build for your system. This will produce three files:

  • config.h containing the #include and HAVE_ lines
  • config.log containing the details of autodetection
  • Makefile.local which defines CC, PREFIX and the like

Read the standard output and Makefile.local. If these look different from what you expected, read configure.local.example, create configure.local, and run ./configure again.

The ./configure script is accompanied by a set of simple programs autodetecting the availability of system functions (e.g. have-err.c), and whether extra libraries need to be involved (e.g. -lnsl for have-gethostbyname.c).

For C functions that might not be present in the system, we provide autoconfiguration tests and compat-*.c implementations. (e.g. compat-strtonum.c). Please report any that turn out to be missing.

Read config.log, which shows shows the compiler commands used to test the libraries installed on your system, and the standard output and standard error output these commands produce. Failures are most likely to happen if headers or libraries are installed in unusual places or interfaces defined in unusual headers. You can also look at config.h and check that the #define HAVE_* lines match your expectations.

build

Once the source is configured as above, run make to build RTP tools. Any POSIX-compatible make, in particular both BSD make and GNU make, should work. If the build fails, read configure.local.example again.

install

Run make -n install and check where everything will go. If that differs from your expectations, set the *DIR variables in configure.local and go back to running ./configure.

Install the binaries and the manpages with make install. Depending on the PREFIX (which is /usr/local by default), you might need to sudo make install or doas make install.

Windows

Open rtptools.sln on MS Visual Studio and press F7 to build.

rtptools's People

Contributors

huseyinkozan avatar janakj avatar janstary avatar jonathanlennox avatar mcd500 avatar njh avatar orgads avatar schulzrinne avatar sobomax avatar tmatth 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

rtptools's Issues

install the manpages

The *.1 manpages do not install with ./configure ; make ; make install.
I added a naive man1_MANS line to Makefile.am in the manpage pull,
but apparently more needs to be done -- by someone who knows the auto* tools.

rtpdump with multiple network interfaces

Hi,

I have been running rtpdump on my MacBook with an Internet connection over Wifi and an AES67 Audio over IP codec connected directly to an Ethernet adaptor, which is sending audio using RTP to a multicast address.

When both network interfaces are enabled, rtpdump does not receive any packets. But if I disable the Wifi interface, it works fine. I don't remember this behaviour when I was last playing with multicast - maybe it is new behaviour in Mac OS? Or maybe I never had more than one network interface.

I started looking into it and found this Stack Overflow question:
https://stackoverflow.com/questions/46484186/receiving-multicast-udp-packets-from-a-single-network-interface-on-macos

So it looks like the following line in rtpdump.c, causes Mac OS to join the multicast group only on the default network interface?

mreq.imr_interface.s_addr = htonl(INADDR_ANY);

Would it make sense to add a command line option to rtpdump to specify the interface address or maybe the interface name to receive multicast packets on?

Thanks,

nick.

Mac OS build is failing due to ACTION macro problems

~/Projects/rtptools(master) $ cc --version
Apple LLVM version 8.1.0 (clang-802.0.42)
Target: x86_64-apple-darwin16.7.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
~/Projects/rtptools(master) $ make
cc -g -W -Wall -Wmissing-prototypes -Wstrict-prototypes -Wwrite-strings -Wno-unused-parameter -c hpt.c
hpt.c:47:5: warning: no previous prototype for function 'hpt'
      [-Wmissing-prototypes]
int hpt(char *h, struct sockaddr *sa, unsigned char *ttl)
    ^
1 warning generated.
cc -g -W -Wall -Wmissing-prototypes -Wstrict-prototypes -Wwrite-strings -Wno-unused-parameter -c host2ip.c
host2ip.c:47:16: warning: no previous prototype for function 'host2ip'
      [-Wmissing-prototypes]
struct in_addr host2ip(char *host)
               ^
host2ip.c:56:42: warning: comparison of integers of different signs: 'in_addr_t'
      (aka 'unsigned int') and 'int' [-Wsign-compare]
  else if ((in.s_addr = inet_addr(host)) != -1) {
            ~~~~~~~~~~~~~~~~~~~~~~~~~~~  ^  ~~
2 warnings generated.
cc -g -W -Wall -Wmissing-prototypes -Wstrict-prototypes -Wwrite-strings -Wno-unused-parameter -c rd.c
cc -g -W -Wall -Wmissing-prototypes -Wstrict-prototypes -Wwrite-strings -Wno-unused-parameter -c rtpdump.c
rtpdump.c:168:11: warning: passing 'const char [1]' to parameter of type
      'char *' discards qualifiers
      [-Wincompatible-pointer-types-discards-qualifiers]
    usage("");
          ^~
rtpdump.c:120:25: note: passing argument to parameter 'argv0' here
static void usage(char *argv0)
                        ^
rtpdump.c:173:11: warning: passing 'const char [1]' to parameter of type
      'char *' discards qualifiers
      [-Wincompatible-pointer-types-discards-qualifiers]
    usage("");
          ^~
rtpdump.c:120:25: note: passing argument to parameter 'argv0' here
static void usage(char *argv0)
                        ^
rtpdump.c:171:28: warning: comparison of integers of different signs:
      'in_addr_t' (aka 'unsigned int') and 'int' [-Wsign-compare]
  if (sin->sin_addr.s_addr == -1) {
      ~~~~~~~~~~~~~~~~~~~~ ^  ~~
rtpdump.c:273:12: warning: returning 'const char *' from a function with result
      type 'char *' discards qualifiers
      [-Wincompatible-pointer-types-discards-qualifiers]
    return r->version == RTP_VERSION ? "RTP" : "VATD";
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
rtpdump.c:277:12: warning: returning 'const char *' from a function with result
      type 'char *' discards qualifiers
      [-Wincompatible-pointer-types-discards-qualifiers]
    return r->common.version == RTP_VERSION ? "RTCP" : "VATC";
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
rtpdump.c:343:43: warning: format specifies type 'unsigned long' but the
      argument has type 'uint32_t' (aka 'unsigned int') [-Wformat]
      fprintf(out, "csrc[%d]=0x%0lx ", i, r->csrc[i]);
                               ~~~~       ^~~~~~~~~~
                               %0x
rtpdump.c:376:46: warning: format specifies type 'long' but the argument has
      type '__darwin_suseconds_t' (aka 'int') [-Wformat]
      (v->flags ? -now.tv_sec : now.tv_sec), now.tv_usec,
                                             ^~~~~~~~~~~
rtpdump.c:381:42: warning: format specifies type 'long' but the argument has
      type '__darwin_suseconds_t' (aka 'int') [-Wformat]
      (r->m ? -now.tv_sec : now.tv_sec), now.tv_usec,
                                         ^~~~~~~~~~~
rtpdump.c:399:24: warning: initializing 'char *' with an expression of type
      'const char [4]' discards qualifiers
      [-Wincompatible-pointer-types-discards-qualifiers]
    {RTCP_SDES_END,    "end"}, 
                       ^~~~~
rtpdump.c:400:24: warning: initializing 'char *' with an expression of type
      'const char [6]' discards qualifiers
      [-Wincompatible-pointer-types-discards-qualifiers]
    {RTCP_SDES_CNAME,  "CNAME"},
                       ^~~~~~~
rtpdump.c:401:24: warning: initializing 'char *' with an expression of type
      'const char [5]' discards qualifiers
      [-Wincompatible-pointer-types-discards-qualifiers]
    {RTCP_SDES_NAME,   "NAME"},
                       ^~~~~~
rtpdump.c:402:24: warning: initializing 'char *' with an expression of type
      'const char [6]' discards qualifiers
      [-Wincompatible-pointer-types-discards-qualifiers]
    {RTCP_SDES_EMAIL,  "EMAIL"},
                       ^~~~~~~
rtpdump.c:403:24: warning: initializing 'char *' with an expression of type
      'const char [6]' discards qualifiers
      [-Wincompatible-pointer-types-discards-qualifiers]
    {RTCP_SDES_PHONE,  "PHONE"},
                       ^~~~~~~
rtpdump.c:404:24: warning: initializing 'char *' with an expression of type
      'const char [4]' discards qualifiers
      [-Wincompatible-pointer-types-discards-qualifiers]
    {RTCP_SDES_LOC,    "LOC"},
                       ^~~~~
rtpdump.c:405:24: warning: initializing 'char *' with an expression of type
      'const char [5]' discards qualifiers
      [-Wincompatible-pointer-types-discards-qualifiers]
    {RTCP_SDES_TOOL,   "TOOL"},
                       ^~~~~~
rtpdump.c:406:24: warning: initializing 'char *' with an expression of type
      'const char [5]' discards qualifiers
      [-Wincompatible-pointer-types-discards-qualifiers]
    {RTCP_SDES_NOTE,   "NOTE"},
                       ^~~~~~
rtpdump.c:407:24: warning: initializing 'char *' with an expression of type
      'const char [5]' discards qualifiers
      [-Wincompatible-pointer-types-discards-qualifiers]
    {RTCP_SDES_PRIV,   "PRIV"},
                       ^~~~~~
rtpdump.c:408:24: warning: initializing 'char *' with an expression of type
      'const char [7]' discards qualifiers
      [-Wincompatible-pointer-types-discards-qualifiers]
    {11,               "SOURCE"},
                       ^~~~~~~~
rtpdump.c:393:6: warning: no previous prototype for function 'member_sdes'
      [-Wmissing-prototypes]
void member_sdes(FILE *out, member_t m, rtcp_sdes_type_t t, char *b, int len)
     ^
rtpdump.c:635:29: warning: format specifies type 'long' but the argument has
      type '__darwin_suseconds_t' (aka 'int') [-Wformat]
                now.tv_sec, now.tv_usec, parse_type(ctrl, packet->p.data),
                            ^~~~~~~~~~~
rtpdump.c:648:29: warning: format specifies type 'long' but the argument has
      type '__darwin_suseconds_t' (aka 'int') [-Wformat]
                now.tv_sec, now.tv_usec, parse_type(ctrl, packet->p.data),
                            ^~~~~~~~~~~
rtpdump.c:581:6: warning: no previous prototype for function 'packet_handler'
      [-Wmissing-prototypes]
void packet_handler(FILE *out, t_format format, int trunc,
     ^
rtpdump.c:667:6: warning: initializing 'char *' with an expression of type
      'const char [5]' discards qualifiers
      [-Wincompatible-pointer-types-discards-qualifiers]
    {"dump",    F_dump},
     ^~~~~~
rtpdump.c:668:6: warning: initializing 'char *' with an expression of type
      'const char [7]' discards qualifiers
      [-Wincompatible-pointer-types-discards-qualifiers]
    {"header",  F_header},
     ^~~~~~~~
rtpdump.c:669:6: warning: initializing 'char *' with an expression of type
      'const char [4]' discards qualifiers
      [-Wincompatible-pointer-types-discards-qualifiers]
    {"hex",     F_hex},
     ^~~~~
rtpdump.c:670:6: warning: initializing 'char *' with an expression of type
      'const char [5]' discards qualifiers
      [-Wincompatible-pointer-types-discards-qualifiers]
    {"rtcp",    F_rtcp},
     ^~~~~~
rtpdump.c:671:6: warning: initializing 'char *' with an expression of type
      'const char [6]' discards qualifiers
      [-Wincompatible-pointer-types-discards-qualifiers]
    {"short",   F_short},
     ^~~~~~~
rtpdump.c:672:6: warning: initializing 'char *' with an expression of type
      'const char [8]' discards qualifiers
      [-Wincompatible-pointer-types-discards-qualifiers]
    {"payload", F_payload},
     ^~~~~~~~~
rtpdump.c:673:6: warning: initializing 'char *' with an expression of type
      'const char [6]' discards qualifiers
      [-Wincompatible-pointer-types-discards-qualifiers]
    {"ascii",   F_ascii},
     ^~~~~~~
29 warnings generated.
cc -g -W -Wall -Wmissing-prototypes -Wstrict-prototypes -Wwrite-strings -Wno-unused-parameter -o rtpdump hpt.o host2ip.o                     rd.o rtpdump.o 
cc -g -W -Wall -Wmissing-prototypes -Wstrict-prototypes -Wwrite-strings -Wno-unused-parameter -c notify.c
notify.c:71:6: warning: no previous prototype for function 'check_clr_fd'
      [-Wmissing-prototypes]
void check_clr_fd(void)
     ^
notify.c:141:13: warning: no previous prototype for function
      'notify_set_itimer_func' [-Wmissing-prototypes]
Notify_func notify_set_itimer_func(
            ^
notify.c:208:63: warning: format specifies type 'unsigned long' but the argument
      has type '__darwin_suseconds_t' (aka 'int') [-Wformat]
      fprintf(stderr, "Timeout: %lu.%06lu\n", timeout.tv_sec, timeout.tv_usec);
                                    ~~~~~                     ^~~~~~~~~~~~~~~
                                    %06d
3 warnings generated.
cc -g -W -Wall -Wmissing-prototypes -Wstrict-prototypes -Wwrite-strings -Wno-unused-parameter -c multimer.c
multimer.c:95:6: warning: no previous prototype for function 'timer_check'
      [-Wmissing-prototypes]
void timer_check(void)
     ^
multimer.c:119:17: warning: no previous prototype for function 'timer_set'
      [-Wmissing-prototypes]
struct timeval *timer_set(struct timeval *interval, 
                ^
multimer.c:191:17: warning: no previous prototype for function 'timer_get'
      [-Wmissing-prototypes]
struct timeval *timer_get(struct timeval *timeout)
                ^
multimer.c:231:5: warning: no previous prototype for function 'timer_pending'
      [-Wmissing-prototypes]
int timer_pending(void)
    ^
4 warnings generated.
cc -g -W -Wall -Wmissing-prototypes -Wstrict-prototypes -Wwrite-strings -Wno-unused-parameter -c rtpplay.c
In file included from rtpplay.c:52:
./hsearch.h:43:16: error: redefinition of 'entry'
typedef struct entry {
               ^
/usr/include/search.h:16:16: note: previous definition is here
typedef struct entry {
               ^
In file included from rtpplay.c:52:
./hsearch.h:46:3: error: typedef redefinition with different types ('struct
      (anonymous struct at ./hsearch.h:43:16)' vs 'struct entry')
} ENTRY;
  ^
/usr/include/search.h:19:3: note: previous definition is here
} ENTRY;
  ^
In file included from rtpplay.c:52:
./hsearch.h:49:9: error: redefinition of enumerator 'FIND'
        FIND, ENTER
        ^
/usr/include/search.h:22:2: note: previous definition is here
        FIND, ENTER
        ^
In file included from rtpplay.c:52:
./hsearch.h:49:15: error: redefinition of enumerator 'ENTER'
        FIND, ENTER
              ^
/usr/include/search.h:22:8: note: previous definition is here
        FIND, ENTER
              ^
In file included from rtpplay.c:52:
./hsearch.h:50:3: error: typedef redefinition with different types
      ('enum ACTION' vs 'enum ACTION')
} ACTION;
  ^
/usr/include/search.h:23:3: note: previous definition is here
} ACTION;
  ^
rtpplay.c:361:52: warning: passing 'char *' to parameter of type
      'unsigned char *' converts between pointers to integer types with
      different sign [-Wpointer-sign]
    if (hpt(argv[optind], (struct sockaddr *)&sin, &ttl) < 0) {
                                                   ^~~~
rtpplay.c:317:63: note: passing argument to parameter 'ttl' here
  extern int hpt(char *h, struct sockaddr *sa, unsigned char *ttl);
                                                              ^
rtpplay.c:365:29: warning: comparison of integers of different signs:
      'in_addr_t' (aka 'unsigned int') and 'int' [-Wsign-compare]
    if (sin.sin_addr.s_addr == -1) {
        ~~~~~~~~~~~~~~~~~~~ ^  ~~
2 warnings and 5 errors generated.
make: *** [rtpplay.o] Error 1

Configure file is in transition.

I have merged the new configure file replacing auotools.
During the transition, some of the feature of autotools is missing but we are planning to add features one by one.
I know there are people who do not like having less features but it is indispensable during of any project when refactoring. I will take full responsible of this situation and please do not flame @janstary.

The features not working at the moment where I noticed are:
*) make rprm
*) make check (honestly there were no test program on rtptools)
*) cross-compilation
*) building on Windows.

I have created a branch which is based on autotool as with-autotools.
For those who are just interested on using rtptools with the feature above,
$ git clone https://github.com/columbia-irt/rtptools rtptools-autotools
$ cd rtptools-autotools
$ git checkout with-autotools
$ aclocal
$ automake --add-missing --force-missing
$ autoconf

I have no plan to update the branch with-autotools when the master evolves.
The branch with-autotools will be frozen and it is planned to be deleted when the master become mature.

RTP dissector for tcpdump

The ubiquituous tcpdump traffic analyzer analyzes packets on the TCP/UDP -> IP -> ETH level,
but also has dissectors for the insides of some chosen protocols (such as DNS).
As the RTP Tools contain detailed knowledge of the RTP protocol (obviously),
it might be beneficial to extract some of that knowledge to create
a RTP dissector to be used in tcpdump and wireshark.

I have not looked yet at how much of that they do now.

build fails on win for 'err.h'

#97 is a big step forward of rtptools getting better.

In the transition, It fails to build on Win.
1>d:\documents\dev\rtptools\rtptools-1.23\utils.c(34): fatal error C1083: Cannot open include file: 'err.h': No such file or directory
1>utils.obj : error LNK2019: unresolved external symbol _warnx referenced in function _hpt

Even it fails to build on Win at the moment, moving to err() is great way to go.

Also it has the error message.
1>utils.obj : error LNK2019: unresolved external symbol _inet_aton referenced in function _host2ip
Windows do not have inet_aton for some unknown reason, but has inet_pton().
https://stackoverflow.com/questions/2420663/windows-equivalent-of-inet-aton
https://msdn.microsoft.com/en-us/library/windows/desktop/cc805844(v=vs.85).aspx

I hope somebody from MS is watching all the discussion this github. :)

gcc preferred over cc

This is current git on OpenBSD current/amd64.
The system comes with the following compilers:

-r-xr-xr-x  6 root  bin  42331608 Mar 17 18:38 /usr/bin/cc
-r-xr-xr-x  6 root  bin  42331608 Mar 17 18:38 /usr/bin/clang
-r-xr-xr-x  1 root  bin    200872 Mar 17 18:38 /usr/bin/gcc

That is, cc is a hardlink to clang (5.0.1), and gcc is gcc (4.2.1).
Without specifying a compiler with ./configure ... CC=..., it seems
that gcc is picked up by default.

Is that intentional? Why?

make distclean

make distclean should remove autom4te.cache and possibly other autoconf cruft.

rtpdump: uninitialized value of start in RD_hdr_t will be written when reading from a file

The rtpdump_header() is writing the RD_hdr_t to the dump file.
When rtpdump is reading packet from network, then
struct timeval start;
is set as
gettimeofday(&start, 0);
but when rtpdump is reading packet from a file, then
struct timeval start;
is used as uninitialized and the value could be anything.

This is the definition of RD_hdr_t.

typedef struct {
  struct timeval start;  /* start of recording (GMT) */
  u_int32 source;        /* network source (multicast address) */
  u_int16 port;          /* UDP port */
} RD_hdr_t;

Who cross compile rtptools

The configure file in master branch do not support cross compile at the moment.

These are the examples for the person who just want to download it and croos build it.

$ git clone https://github.com/columbia-irt/rtptools rtptools-autotools
$ cd rtptools-autotools
$ git checkout with-autotools
$ aclocal
$ automake --add-missing --force--missing
$ autoconf

For ARM32
$ ./configure --host=arm-linux-gnueabihf
$ make clean
$ make
$ file rtptrans
rtptrans: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, for GNU/Linux 2.6.32, BuildID[sha1]=26761e8336bb5b7b353be19b72426d528d577b4d, not stripped

For ARM64
$ ./configure --host=aarch64-linux-gnu
$ make clean
$ make
$ file rtptrans
rtptrans: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.7.0, BuildID[sha1]=f750a201408358aaace438739278b199d34d5122, not stripped

For PPC32 which is bigendian and has advantage on performance of network packet processing.
$ ./configure --host=powerpc-linux-gnu
$ make clean
$ make
$ file rtptrans
rtptrans: ELF 32-bit MSB executable, PowerPC or cisco 4500, version 1 (SYSV), dynamically linked, interpreter /lib/ld.so.1, for GNU/Linux 3.2.0, BuildID[sha1]=3a3d2191be1d0170b2ffc73748e00e397b77cfaa, not stripped

For PPC64 also bigendian
$ ./configure --host=powerpc64-linux-gnu
$ make clean
$ make
$ file rtptrans
rtptrans: ELF 64-bit MSB executable, 64-bit PowerPC or cisco 7500, version 1 (SYSV), dynamically linked, interpreter /lib64/ld64.so.1, for GNU/Linux 3.2.0, BuildID[sha1]=c3b13403204fbe119a7717d9cfdb6d54b6100bee, not stripped

Move source files to 'src'?

Hi,

It is a bit daunting when you first look at the repository due to the number of files in root.

Might be a bit tidier if the source files were moved to a 'src' directory?

nick.

make rpm is not working at the moment

This is the log when I tried make rpm two days ago.
I will come back on this next week to make a fix.

rm -rf .rpmbuild
mkdir -p .rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}
cp rtptools-1.23.tar.gz .rpmbuild/SOURCES/
sed s/VERSION/1.23/g  rtptools.spec > rtptools-1.23.spec
mv rtptools-1.23.spec .rpmbuild/SPECS/
rpmbuild --define "_topdir `pwd`/.rpmbuild" \
	-ba .rpmbuild/SPECS/rtptools-1.23.spec
Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.elLEfm
drwxrwxr-x rtptools/rtptools 0 2018-03-31 12:08 rtptools-1.23/
-rw-r--r-- rtptools/rtptools 1541 2018-03-31 12:08 rtptools-1.23/LICENSE
-rw-r--r-- rtptools/rtptools 4852 2018-03-31 12:08 rtptools-1.23/Makefile
-rw-r--r-- rtptools/rtptools  660 2018-03-31 12:08 rtptools-1.23/Makefile.depend
-rw-r--r-- rtptools/rtptools 2823 2018-03-31 12:08 rtptools-1.23/bark.rtp
-rwxr-xr-x rtptools/rtptools 8019 2018-03-31 12:08 rtptools-1.23/configure
-rw-r--r-- rtptools/rtptools 3188 2018-03-31 12:08 rtptools-1.23/configure.local.example
-rw-r--r-- rtptools/rtptools 11372 2018-03-31 12:08 rtptools-1.23/ChangeLog.html
-rw-r--r-- rtptools/rtptools  2493 2018-03-31 12:08 rtptools-1.23/multidump.1
-rw-r--r-- rtptools/rtptools  2289 2018-03-31 12:08 rtptools-1.23/multiplay.1
-rw-r--r-- rtptools/rtptools  5806 2018-03-31 12:08 rtptools-1.23/rtpdump.1
-rw-r--r-- rtptools/rtptools  3624 2018-03-31 12:08 rtptools-1.23/rtpplay.1
-rw-r--r-- rtptools/rtptools  4671 2018-03-31 12:08 rtptools-1.23/rtpsend.1
-rw-r--r-- rtptools/rtptools  3049 2018-03-31 12:08 rtptools-1.23/rtptrans.1
-rwxr-xr-x rtptools/rtptools  2831 2018-03-31 12:08 rtptools-1.23/multidump
-rwxr-xr-x rtptools/rtptools  2744 2018-03-31 12:08 rtptools-1.23/multiplay
-rw-r--r-- rtptools/rtptools  4618 2018-03-31 12:08 rtptools-1.23/ansi.h
-rw-r--r-- rtptools/rtptools  2282 2018-03-31 12:08 rtptools-1.23/host2ip.c
-rw-r--r-- rtptools/rtptools  2342 2018-03-31 12:08 rtptools-1.23/hpt.c
-rw-r--r-- rtptools/rtptools  9178 2018-03-31 12:08 rtptools-1.23/multimer.c
-rw-r--r-- rtptools/rtptools   208 2018-03-31 12:08 rtptools-1.23/multimer.h
-rw-r--r-- rtptools/rtptools  6564 2018-03-31 12:08 rtptools-1.23/notify.c
-rw-r--r-- rtptools/rtptools  3985 2018-03-31 12:08 rtptools-1.23/notify.h
-rw-r--r-- rtptools/rtptools  3354 2018-03-31 12:08 rtptools-1.23/rd.c
-rw-r--r-- rtptools/rtptools  6286 2018-03-31 12:08 rtptools-1.23/rtp.h
-rw-r--r-- rtptools/rtptools 23184 2018-03-31 12:08 rtptools-1.23/rtpdump.c
-rw-r--r-- rtptools/rtptools  3130 2018-03-31 12:08 rtptools-1.23/rtpdump.h
-rw-r--r-- rtptools/rtptools 12919 2018-03-31 12:08 rtptools-1.23/rtpplay.c
-rw-r--r-- rtptools/rtptools 25165 2018-03-31 12:08 rtptools-1.23/rtpsend.c
-rw-r--r-- rtptools/rtptools 15958 2018-03-31 12:08 rtptools-1.23/rtptrans.c
-rw-r--r-- rtptools/rtptools  6908 2018-03-31 12:08 rtptools-1.23/sysdep.h
-rw-r--r-- rtptools/rtptools  4197 2018-03-31 12:08 rtptools-1.23/vat.h
-rw-r--r-- rtptools/rtptools   931 2018-03-31 12:08 rtptools-1.23/have-err.c
-rw-r--r-- rtptools/rtptools   943 2018-03-31 12:08 rtptools-1.23/have-gethostbyname.c
-rw-r--r-- rtptools/rtptools  1067 2018-03-31 12:08 rtptools-1.23/have-hsearch.c
-rw-r--r-- rtptools/rtptools   856 2018-03-31 12:08 rtptools-1.23/have-progname.c
-rw-r--r-- rtptools/rtptools  1210 2018-03-31 12:08 rtptools-1.23/have-strtonum.c
-rw-r--r-- rtptools/rtptools   890 2018-03-31 12:08 rtptools-1.23/have-msgcontrol.c
-rw-r--r-- rtptools/rtptools  2675 2018-03-31 12:08 rtptools-1.23/compat-err.c
-rw-r--r-- rtptools/rtptools  2949 2018-03-31 12:08 rtptools-1.23/compat-hsearch.c
-rw-r--r-- rtptools/rtptools  2298 2018-03-31 12:08 rtptools-1.23/compat-hsearch.h
-rw-r--r-- rtptools/rtptools  1006 2018-03-31 12:08 rtptools-1.23/compat-progname.c
-rw-r--r-- rtptools/rtptools  1791 2018-03-31 12:08 rtptools-1.23/compat-strtonum.c
drwxrwxr-x rtptools/rtptools     0 2018-03-31 12:08 rtptools-1.23/win/
-rw-rw-r-- rtptools/rtptools  8149 2018-03-31 12:08 rtptools-1.23/win/getopt.c
-rw-rw-r-- rtptools/rtptools  2307 2018-03-31 12:08 rtptools-1.23/win/getopt.h
-rw-rw-r-- rtptools/rtptools  2971 2018-03-31 12:08 rtptools-1.23/win/gettimeofday.c
-rw-rw-r-- rtptools/rtptools  1860 2018-03-31 12:08 rtptools-1.23/win/gettimeofday.h
-rw-rw-r-- rtptools/rtptools  2214 2018-03-31 12:08 rtptools-1.23/win/rtptools.sln
-rw-rw-r-- rtptools/rtptools  1934 2018-03-31 12:08 rtptools-1.23/win/winsocklib.c
-rw-rw-r-- rtptools/rtptools  1799 2018-03-31 12:08 rtptools-1.23/win/winsocklib.h
-rw-rw-r-- rtptools/rtptools  5299 2018-03-31 12:08 rtptools-1.23/win/rtpdump.vcxproj
-rw-rw-r-- rtptools/rtptools  5708 2018-03-31 12:08 rtptools-1.23/win/rtpplay.vcxproj
-rw-rw-r-- rtptools/rtptools  5672 2018-03-31 12:08 rtptools-1.23/win/rtpsend.vcxproj
-rw-rw-r-- rtptools/rtptools  5598 2018-03-31 12:08 rtptools-1.23/win/rtptrans.vcxproj
Executing(%build): /bin/sh -e /var/tmp/rpm-tmp.OWfbtt
config.log: writing...
make[1]: Entering directory `/home/rtptools/dev/rtptools/.rpmbuild/BUILD/rtptools-1.23'
cc -g -W -Wall -Wmissing-prototypes -Wstrict-prototypes -Wwrite-strings -Wno-unused-parameter -c hpt.c
cc -g -W -Wall -Wmissing-prototypes -Wstrict-prototypes -Wwrite-strings -Wno-unused-parameter -c host2ip.c
cc -g -W -Wall -Wmissing-prototypes -Wstrict-prototypes -Wwrite-strings -Wno-unused-parameter -c rd.c
cc -g -W -Wall -Wmissing-prototypes -Wstrict-prototypes -Wwrite-strings -Wno-unused-parameter -c rtpdump.c
cc -g -W -Wall -Wmissing-prototypes -Wstrict-prototypes -Wwrite-strings -Wno-unused-parameter -c compat-err.c
cc -g -W -Wall -Wmissing-prototypes -Wstrict-prototypes -Wwrite-strings -Wno-unused-parameter -c compat-hsearch.c
cc -g -W -Wall -Wmissing-prototypes -Wstrict-prototypes -Wwrite-strings -Wno-unused-parameter -c compat-progname.c
cc -g -W -Wall -Wmissing-prototypes -Wstrict-prototypes -Wwrite-strings -Wno-unused-parameter -c compat-strtonum.c
cc -g -W -Wall -Wmissing-prototypes -Wstrict-prototypes -Wwrite-strings -Wno-unused-parameter -o rtpdump hpt.o host2ip.o                     rd.o rtpdump.o compat-err.o compat-hsearch.o compat-progname.o compat-strtonum.o -lnsl
cc -g -W -Wall -Wmissing-prototypes -Wstrict-prototypes -Wwrite-strings -Wno-unused-parameter -c notify.c
cc -g -W -Wall -Wmissing-prototypes -Wstrict-prototypes -Wwrite-strings -Wno-unused-parameter -c multimer.c
cc -g -W -Wall -Wmissing-prototypes -Wstrict-prototypes -Wwrite-strings -Wno-unused-parameter -c rtpplay.c
cc -g -W -Wall -Wmissing-prototypes -Wstrict-prototypes -Wwrite-strings -Wno-unused-parameter -o rtpplay hpt.o host2ip.o notify.o multimer.o rd.o rtpplay.o compat-err.o compat-hsearch.o compat-progname.o compat-strtonum.o -lnsl
cc -g -W -Wall -Wmissing-prototypes -Wstrict-prototypes -Wwrite-strings -Wno-unused-parameter -c rtpsend.c
cc -g -W -Wall -Wmissing-prototypes -Wstrict-prototypes -Wwrite-strings -Wno-unused-parameter -o rtpsend hpt.o host2ip.o notify.o multimer.o      rtpsend.o compat-err.o compat-hsearch.o compat-progname.o compat-strtonum.o -lnsl
cc -g -W -Wall -Wmissing-prototypes -Wstrict-prototypes -Wwrite-strings -Wno-unused-parameter -c rtptrans.c
cc -g -W -Wall -Wmissing-prototypes -Wstrict-prototypes -Wwrite-strings -Wno-unused-parameter -o rtptrans hpt.o host2ip.o notify.o multimer.o      rtptrans.o compat-err.o compat-hsearch.o compat-progname.o compat-strtonum.o -lnsl
make[1]: Leaving directory `/home/rtptools/dev/rtptools/.rpmbuild/BUILD/rtptools-1.23'
Executing(%install): /bin/sh -e /var/tmp/rpm-tmp.Z0a6fD
make[1]: Entering directory `/home/rtptools/dev/rtptools/.rpmbuild/BUILD/rtptools-1.23'
install -d /usr/local/bin      && install -m 0755 rtpdump rtpplay rtpsend rtptrans multidump multiplay /usr/local/bin
make[1]: Leaving directory `/home/rtptools/dev/rtptools/.rpmbuild/BUILD/rtptools-1.23'


RPM build errors:

OpenBSD port

Now that the license is accaptable, prepare an OpenBSD port of RTP tools.

RTP Tools website offline?

Hi,

The RTP Tools website is displaying an error:
https://www.cs.columbia.edu/irt/software/rtptools/

Additionally the status code is 200 but also has a 404 status header:

~ $ curl -v https://www.cs.columbia.edu/irt/software/rtptools/
*   Trying 128.59.11.206...
* TCP_NODELAY set
* Connected to www.cs.columbia.edu (128.59.11.206) port 443 (#0)
* ALPN, offering http/1.1
* TLS 1.2 connection using TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
* ALPN, server did not agree to a protocol
* Server certificate: *.cs.columbia.edu
* Server certificate: InCommon RSA Server CA
* Server certificate: USERTrust RSA Certification Authority
> GET /irt/software/rtptools/ HTTP/1.1
> Host: www.cs.columbia.edu
> User-Agent: curl/7.64.1
> Accept: */*
> 
< HTTP/1.1 200 OK
< date: Sun, 21 Jun 2020 23:22:36 GMT
< server: Apache/2.4.29 (Ubuntu)
< status: 404 Not Found
< vary: Accept-Encoding
< content-length: 97
< content-type: text/html; charset=UTF-8
< set-cookie: cs-webservers=web4-ssl-public; path=/
< cache-control: private
< 
<p class='fatal'><img alt='Fatal error' src="/mice/icon/bomb.gif"> Error page not specified!</p>
* Connection #0 to host www.cs.columbia.edu left intact
* Closing connection 0

It would be really useful to have this back online.

nick.

make distcheck fails

make distcheck is failing for me on Mac OS and Linux:

/usr/bin/make  dist-gzip am__post_remove_distdir='@:'
make[1]: *** No rule to make target `win/rtptools.suo', needed by `distdir'.  Stop.
make: *** [dist] Error 2

But given #50, maybe this is a "Won't Fix".

Does not support big-endian system at the moment

With the autotools,
the endian of the system was detected by
#AC_C_BIGENDIAN

and rtp.h was expecting to have WORDS_BIGENDIAN or not to properly work on bigendian system.

#ifdef WORDS_BIGENDIAN
#define RTP_BIG_ENDIAN 1
#else
#define RTP_LITTLE_ENDIAN 1
#endif

Something similar of AC_C_BIGENDIAN in configure would probably do.

use even-numbered ports for RTP

RFC 3550:
RTP relies on the underlying protocol(s) to provide demultiplexing of
RTP data and RTCP control streams. For UDP and similar protocols,
RTP SHOULD use an even destination port number and the corresponding
RTCP stream SHOULD use the next higher (odd) destination port number.

use the payload type mapping

The payload type map 99416b0 defined in rtpdump.c
should also be used in rtpplay.c instead of the recalculated period table,
which merely turns the 8000 frequency into a 1/8000 timestamp diff,
and similarly for all other payload types. Also, the table is outdated.

winsock

Windows needs to call WSAStartup() before using sockets,
which we do in win/winsocklib.c in the startupSocket() function
(and define it away in sysdep.h if not on windows).
Otherwise, we would get socket: No error.

In the actual WSAStartup(), we require version 1.1, which according to MSDN
is the latest available for Windows 95 and Win NT 3.51. (Yes, it's 2018 here.)
The latest version documented there is 2.2, which supports up to Windows Server 2008.

Can windows users please test the following?

  • how much we still need to do this (no error does not sound like an error)
  • how much we need/want to stay with version 1.1 of winsock

rtptrans: uses ipv4 address for SSRC in RTP header

In the rtptrans.c

 rtp_hdr_send.ssrc = sin_from.sin_addr.s_addr;

The size of ssrc and ipv4 address is same uint32_t and it is working at the moment.
The descriotion in RFC for SSRC,
https://tools.ietf.org/html/rfc3550#page-59

   The SSRC identifier carried in the RTP header and in various fields
   of RTCP packets is a random 32-bit number that is required to be
   globally unique within an RTP session.  It is crucial that the number
   be chosen with care in order that participants on the same network or
   starting at the same time are not likely to choose the same number.

   It is not sufficient to use the local network address (such as an
   IPv4 address) for the identifier because the address may not be
   unique.  Since RTP translators and mixers enable interoperation among
   multiple networks with different address spaces, the allocation
   patterns for addresses within two spaces might result in a much
   higher rate of collision than would occur with random allocation.

   Multiple sources running on one host would also conflict.

Replace the SSRC with random generator and testing the rtptrans should be fine.
The description of generating SSRC in RFC is also described at A.6 in
https://tools.ietf.org/html/rfc3550#page-85
The method in the RFC used md5 function which does not have in Windows and also md5 is starting to be deprecated on most of the system, might be OK to just use regular random() or own random generator.

windows build

Is the Windows portion of the README still valid?
I removed the references to NT which seemed most anachronic,
but can someone please verify that the described process still works?
Is Visual C++ 6.0 still relevant? Do we care about building on Windows
or should we just get rid of that?

Build error on Windows

After merging the
#64
for fixing distcheck and cleaning up the package of rtptools.
it fails to build on Windows.

Probably adding
#include <stding.h>
on both rtp.h and rtpdump.h
and
adding ENTRY which was declared in ansi.h will fix it.

This is some of the error messages:
3>d:\documents\dev\rtptools\rtptools-win\rtpdump.h(59): error C2061: syntax error : identifier 'uint16_t'
3>d:\documents\dev\rtptools\rtptools-win\rtpplay.c(146): error C2065: 'ENTRY' : undeclared identifier

rtpsend: "Line ???? is invalid"

Using macOS Catalina, I first installed rtptools with brew.
Tried to compile it myself, same issue.
When trying to send raw PCM data to an Omnia One, an AES67 compliant broadcast audio processor (which should accept 24 bits 48k big endian stereo PCM) with rtpsend I get an error "Line {???} is invalid".
"Reverse" command to play audio directly coming from the device with rtpdump and SoX is working fine.
I tried piping SoX with same parameters to correctly encode the audio.
Capture d’écran 2020-06-21 à 23 55 40
I also got "Line {RIFF???WAVEfmt }" when I tried to send directly a 24 bits 48k 2ch wav file.
Any idea ?

generate html version of manpages

Currently, rtptools.html still contains much of the mapage content.
Link to the the individual *.html manpages instead.
They need to be generated first, with either of
mandoc -Thtml rtpdump.1 > dtpdump.html
groff -Thtml -mdoc rtpdump.1 > rtpdump.html
(and similarly for the others).

use standard integer type names

This is how rtptools curently names the various integer types, in types.h:

/* 32 bit machines */
#if ULONG_MAX == MAX32U
typedef short int16;
typedef int   int32;
typedef unsigned long  u_int32;
typedef unsigned short u_int16;

etc for the other sizes. Isn't that completely backwards?

"If we happen to be on a 32bit machine, short is 16bits,
so lets name short int16 (sic) and call it that".

If we need 16bit integers, why not just call them the standard int16_t
and be done with it, regardless of what machine this is?

separate the generation of html pages

Currently, the rtp*.html pages are generated as a part of normal build (make).
But the local user never needs those. Make it a separate build target (make html).

win/*.suo

The win/*.suo files seem to be some binary artifacts of the windows build.
Can we remove them from the repository?

Don't require GNU make

Commit d238467 introduces

$(html_DATA): $(man_MANS)
	groff -Thtml -mdoc $< > $@

which generates the html manpages (to put on the web)
from the real manpages, but the syntax is GNU specific.
The resulting Makefile cannot be compiled with standard make(1),
which up to now was possible; GNU make is needed for this.

Using $< in a non-suffix rule context is a GNUmake idiom.

That one line creates a needless dependency.

RTPDump to file

Is there a way to create a rtpdump file from a pcap file as input? let me know which command I could use?

ac_fn_c_try_link: command not found

configure complains while checking for gethostbyname():

checking for gethostbyname... ./configure: line 1589: ac_fn_c_try_link: command not found

rtpdump segfaults

Running the trivial tests proposed in #91 reveals failures already.

While on some systems, ./rtpdump < bark.rtp works just fine,
on this OpenBSD 6.2/ppc box:

$ ./rtpdump < bark.rtp                                        
Segmentation fault (core dumped) 

Some output formats (rtpdump -F) work, some don't:

$ ./rtpdump -F hex < bark.rtp
Segmentation fault (core dumped) 

$ ./rtpdump -F ascii < bark.rtp
Segmentation fault (core dumped)

$ ./rtpdump -F rtcp < bark.rtp
Segmentation fault (core dumped)

$ ./rtpdump -F short < bark.rtp 
-1.-00044 20000
0.000044 50000
0.000044 70000
0.000044 90000
0.000044 110000
0.000044 130000
0.000044 150000
0.000044 170000
0.000044 190000
0.000044 220000
0.000044 230000
0.000044 260000
0.000044 280000
0.000044 290000
0.000044 380000

$ ./rtpdump -F payload < bark.rtp > bark.raw 
fwrite: Bad address

$ ./rtpdump -F payload < bark.rtp            
tt@͒P    ͒0` @"@^@^@4}
[...]
Segmentation fault (core dumped) 

$ ./rtpdump -F dump < bark.rtp > dump.rtp            
$ ./rtpdump -F header < bark.rtp  > dump.hdr

The files dump.rtp and dump.hdr start, respectively, with

#!rtpplay1.0 0.0.16.0/59904
#!rtpplay1.0 0.0.16.0/11696

How did those numbers get there?

Also,

$ ls -l dump.* bark.raw                      
-rw-r--r--  1 hans  hans     0 Mar 31 17:16 bark.raw
-rw-r--r--  1 hans  hans  8044 Mar 31 17:13 dump.hdr
-rw-r--r--  1 hans  hans  2825 Mar 31 17:12 dump.rtp

so the payload dump didn't actually work,
and saving just the headers is more than saving everything.

The -1.-00044 20000 seems strange too.

A similar thing happens on OpenBSD 6.3/armv7,
except ./rtpdump -F payload < bark.rtp > dump.raw works,
-F short gives

$ ./rtpdump -F short < bark.rtp  
-44.-00001 20000 3988999488
44.000000 50000 3988999648
44.000000 70000 3988999808
44.000000 90000 3988999968
44.000000 110000 3989000128
44.000000 130000 3989000288
44.000000 150000 3989000448
44.000000 170000 3989000608
44.000000 190000 3989000768
44.000000 220000 3989000928
44.000000 230000 3989001088
44.000000 260000 3989001248
44.000000 280000 3989001408
44.000000 290000 3989001568
44.000000 380000 3989001728

(compare to the -F short output above),
and -F dump and -F header output starts with

#!rtpplay1.0 152.153.253.191/4618
#!rtpplay1.0 56.189.254.191/5415

Something is definitely amiss on a very basic level.

Enable Travis CI for the columbia-irt/rtptools repository

Travis CI doesn't seem to have been enabled for the columbia-irt/rtptools repository, these are still both 404:

travis-ci.org is for public repos and mirrors the Github URL structure.

This is the Travis CI build for my own fork of the repo (https://github.com/njh/rtptools):
https://travis-ci.org/njh/rtptools

There is a Getting Started guide here:
https://docs.travis-ci.com/user/getting-started/

Also check that Travis CI has been activated as a Github integration:
https://github.com/columbia-irt/rtptools/settings/installations

RFC: moving getopt() to compat-*

This is just for request for comment. Not an issue.

Just Windows did not have getopt() when in the era of rtptools was working with autotools, the getopt.h/c are stored under directory win.

Since we are starting using compat-, would be good to move getopt.h/c gettimeofday.h/c to compat-?

The gettimeofday.c uses windows dedicated functions and do not work other than Win but the code of getopt.h/c is universal from
https://github.com/kimgr/getopt_port

getopt

Why do we have win/getopt.[ch]? Do windows not have getopt(3)?

replace hsearch()?

Currently, rtpplay.c uses hsearch(3) to remember the SSRCs and their timstamps.
Now, hsearch is available almost everywhere, but does not exist on windows.

We provide a bundled implementation of hsearch (buggy, straight from glibc 2.0, 1993),
and with #72 we properly test whether to use it.

I believe that the use of a full-fledged hash table implementation is overkill for what we need,
and should replace it with a simple list. Then we could dispense with hsearch altogether,
wouldn't need to test for it, wouldn't need to provide a compatibility implementation,
and could do one thing uniformly on all systems.

Centos 7 source rpm build fails with /usr/bin ... conflicts with file from package filesystem...

On Centos 7, I tried to build and then install the source rpm:

rpmbuild --rebuild rtptools-1.22-1.src.rpm
sudo yum localinstall ~/rpmbuild/RPMS/x86_64/rtptools-1.22-1.x86_64.rpm

But it errors out with:

Transaction check error:
file /usr/bin from install of rtptools-1.22-1.x86_64 conflicts with file from package filesystem-3.2-25.el7.x86_64

I'm not an expert, but I hacked in a fix:
rpm -i rtptools-1.22-1.src.rpm
cd ~/rpmbuild/SPECS/
emacs ~/rpmbuild/SPECS/rtptools-1.22.spec

Change the last few lines to, expicitly list the files that should be installed in /usr/bin:

%files
/usr/bin/multidump
/usr/bin/multiplay
/usr/bin/rtpdump
/usr/bin/rtpplay
/usr/bin/rtpsend
/usr/bin/rtptrans
%{_mandir}
#%{_bindir}

rpmbuild -bp rtptools-1.22.spec
rpmbuild -ba rtptools-1.22.spec

sudo yum localinstall ~/rpmbuild/RPMS/x86_64/rtptools-1.22-1.x86_64.rpm

Thanks to:
https://wiki.centos.org/HowTos/RebuildSRPM
https://stackoverflow.com/questions/38401664/rpmbuild-simple-copy-of-files
https://bugs.launchpad.net/galera/+bug/1199000
https://www.aelius.com/njh/posts/0002

rtptools does not compile on Solaris

This is curent git on SunOS 5.11 11.3 sun4v sparc.

$ uname -a
SunOS fray1 5.11 11.3 sun4v sparc SUNW,SPARC-Enterprise-T5120 Solaris

$ ./configure --prefix=$HOME --mandir=$HOME/man
checking for a BSD-compatible install... /opt/sfw/bin/install -c
checking whether build environment is sane... yes
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking build system type... sparc-sun-solaris2.11
checking host system type... sparc-sun-solaris2.11
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
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 ANSI C... none needed
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 for a BSD-compatible install... /opt/sfw/bin/install -c
checking for groff... yes
checking for mandoc... yes
checking for man2html... no
checking for egrep... egrep
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 search.h usability... yes
checking search.h presence... yes
checking for search.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 for stdint.h... (cached) yes
checking rpcsvc/ypclnt.h usability... yes
checking rpcsvc/ypclnt.h presence... yes
checking for rpcsvc/ypclnt.h... yes
checking for an ANSI C-conforming const... yes
checking whether byte ordering is bigendian... yes
checking for uid_t in sys/types.h... yes
checking for off_t... yes
checking for pid_t... yes
checking for size_t... yes
./configure[4531]: AC_TYPE_UINT16_T: not found [No such file or directory]
checking whether time.h and sys/time.h may both be included... yes
checking whether struct tm is in sys/time.h or time.h... time.h
checking whether gcc needs -traditional... no
checking return type of signal handlers... void
checking for strftime... yes
checking for vprintf... yes
checking for _doprnt... yes
checking for gethostbyname... no
checking for gettimeofday... yes
checking for mktime... yes
checking for select... yes
checking for strdup... yes
checking for strerror... yes
checking for strstr... yes
checking for strtol... yes
checking for uname... yes
checking for gethostbyname... (cached) no
checking for gethostbyname in -lnsl... yes
checking for yp_match... yes
checking for socket... no
checking for socket in -lsocket... yes
configure: creating ./config.status
config.status: creating Makefile
config.status: executing depfiles commands

$ make
if gcc -DPACKAGE_NAME="rtptools" -DPACKAGE_TARNAME="rtptools" -DPACKAGE_VERSION="1.22" -DPACKAGE_STRING="rtptools\ 1.22" -DPACKAGE_BUGREPORT="" -DPACKAGE="rtptools" -DVERSION="1.22" -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_SEARCH_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_UNISTD_H=1 -DHAVE_STDINT_H=1 -DHAVE_YP=1 -DWORDS_BIGENDIAN=1 -DTIME_WITH_SYS_TIME=1 -DRETSIGTYPE=void -DHAVE_STRFTIME=1 -DHAVE_VPRINTF=1 -DHAVE_DOPRNT=1 -DHAVE_GETTIMEOFDAY=1 -DHAVE_MKTIME=1 -DHAVE_SELECT=1 -DHAVE_STRDUP=1 -DHAVE_STRERROR=1 -DHAVE_STRSTR=1 -DHAVE_STRTOL=1 -DHAVE_UNAME=1 -DHAVE_LIBNSL=1 -DHAVE_YP_MATCH=1 -DHAVE_LIBSOCKET=1 -I. -I. -g -O2 -Wall -MT host2ip.o -MD -MP -MF ".deps/host2ip.Tpo" -c -o host2ip.o host2ip.c;
then mv -f ".deps/host2ip.Tpo" ".deps/host2ip.Po"; else rm -f ".deps/host2ip.Tpo"; exit 1; fi
if gcc -DPACKAGE_NAME="rtptools" -DPACKAGE_TARNAME="rtptools" -DPACKAGE_VERSION="1.22" -DPACKAGE_STRING="rtptools\ 1.22" -DPACKAGE_BUGREPORT="" -DPACKAGE="rtptools" -DVERSION="1.22" -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_SEARCH_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_UNISTD_H=1 -DHAVE_STDINT_H=1 -DHAVE_YP=1 -DWORDS_BIGENDIAN=1 -DTIME_WITH_SYS_TIME=1 -DRETSIGTYPE=void -DHAVE_STRFTIME=1 -DHAVE_VPRINTF=1 -DHAVE_DOPRNT=1 -DHAVE_GETTIMEOFDAY=1 -DHAVE_MKTIME=1 -DHAVE_SELECT=1 -DHAVE_STRDUP=1 -DHAVE_STRERROR=1 -DHAVE_STRSTR=1 -DHAVE_STRTOL=1 -DHAVE_UNAME=1 -DHAVE_LIBNSL=1 -DHAVE_YP_MATCH=1 -DHAVE_LIBSOCKET=1 -I. -I. -g -O2 -Wall -MT hpt.o -MD -MP -MF ".deps/hpt.Tpo" -c -o hpt.o hpt.c;
then mv -f ".deps/hpt.Tpo" ".deps/hpt.Po"; else rm -f ".deps/hpt.Tpo"; exit 1; fi
if gcc -DPACKAGE_NAME="rtptools" -DPACKAGE_TARNAME="rtptools" -DPACKAGE_VERSION="1.22" -DPACKAGE_STRING="rtptools\ 1.22" -DPACKAGE_BUGREPORT="" -DPACKAGE="rtptools" -DVERSION="1.22" -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_SEARCH_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_UNISTD_H=1 -DHAVE_STDINT_H=1 -DHAVE_YP=1 -DWORDS_BIGENDIAN=1 -DTIME_WITH_SYS_TIME=1 -DRETSIGTYPE=void -DHAVE_STRFTIME=1 -DHAVE_VPRINTF=1 -DHAVE_DOPRNT=1 -DHAVE_GETTIMEOFDAY=1 -DHAVE_MKTIME=1 -DHAVE_SELECT=1 -DHAVE_STRDUP=1 -DHAVE_STRERROR=1 -DHAVE_STRSTR=1 -DHAVE_STRTOL=1 -DHAVE_UNAME=1 -DHAVE_LIBNSL=1 -DHAVE_YP_MATCH=1 -DHAVE_LIBSOCKET=1 -I. -I. -g -O2 -Wall -MT multimer.o -MD -MP -MF ".deps/multimer.Tpo" -c -o multimer.o multimer.c;
then mv -f ".deps/multimer.Tpo" ".deps/multimer.Po"; else rm -f ".deps/multimer.Tpo"; exit 1; fi
if gcc -DPACKAGE_NAME="rtptools" -DPACKAGE_TARNAME="rtptools" -DPACKAGE_VERSION="1.22" -DPACKAGE_STRING="rtptools\ 1.22" -DPACKAGE_BUGREPORT="" -DPACKAGE="rtptools" -DVERSION="1.22" -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_SEARCH_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_UNISTD_H=1 -DHAVE_STDINT_H=1 -DHAVE_YP=1 -DWORDS_BIGENDIAN=1 -DTIME_WITH_SYS_TIME=1 -DRETSIGTYPE=void -DHAVE_STRFTIME=1 -DHAVE_VPRINTF=1 -DHAVE_DOPRNT=1 -DHAVE_GETTIMEOFDAY=1 -DHAVE_MKTIME=1 -DHAVE_SELECT=1 -DHAVE_STRDUP=1 -DHAVE_STRERROR=1 -DHAVE_STRSTR=1 -DHAVE_STRTOL=1 -DHAVE_UNAME=1 -DHAVE_LIBNSL=1 -DHAVE_YP_MATCH=1 -DHAVE_LIBSOCKET=1 -I. -I. -g -O2 -Wall -MT notify.o -MD -MP -MF ".deps/notify.Tpo" -c -o notify.o notify.c;
then mv -f ".deps/notify.Tpo" ".deps/notify.Po"; else rm -f ".deps/notify.Tpo"; exit 1; fi
if gcc -DPACKAGE_NAME="rtptools" -DPACKAGE_TARNAME="rtptools" -DPACKAGE_VERSION="1.22" -DPACKAGE_STRING="rtptools\ 1.22" -DPACKAGE_BUGREPORT="" -DPACKAGE="rtptools" -DVERSION="1.22" -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_SEARCH_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_UNISTD_H=1 -DHAVE_STDINT_H=1 -DHAVE_YP=1 -DWORDS_BIGENDIAN=1 -DTIME_WITH_SYS_TIME=1 -DRETSIGTYPE=void -DHAVE_STRFTIME=1 -DHAVE_VPRINTF=1 -DHAVE_DOPRNT=1 -DHAVE_GETTIMEOFDAY=1 -DHAVE_MKTIME=1 -DHAVE_SELECT=1 -DHAVE_STRDUP=1 -DHAVE_STRERROR=1 -DHAVE_STRSTR=1 -DHAVE_STRTOL=1 -DHAVE_UNAME=1 -DHAVE_LIBNSL=1 -DHAVE_YP_MATCH=1 -DHAVE_LIBSOCKET=1 -I. -I. -g -O2 -Wall -MT rd.o -MD -MP -MF ".deps/rd.Tpo" -c -o rd.o rd.c;
then mv -f ".deps/rd.Tpo" ".deps/rd.Po"; else rm -f ".deps/rd.Tpo"; exit 1; fi
if gcc -DPACKAGE_NAME="rtptools" -DPACKAGE_TARNAME="rtptools" -DPACKAGE_VERSION="1.22" -DPACKAGE_STRING="rtptools\ 1.22" -DPACKAGE_BUGREPORT="" -DPACKAGE="rtptools" -DVERSION="1.22" -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_SEARCH_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_UNISTD_H=1 -DHAVE_STDINT_H=1 -DHAVE_YP=1 -DWORDS_BIGENDIAN=1 -DTIME_WITH_SYS_TIME=1 -DRETSIGTYPE=void -DHAVE_STRFTIME=1 -DHAVE_VPRINTF=1 -DHAVE_DOPRNT=1 -DHAVE_GETTIMEOFDAY=1 -DHAVE_MKTIME=1 -DHAVE_SELECT=1 -DHAVE_STRDUP=1 -DHAVE_STRERROR=1 -DHAVE_STRSTR=1 -DHAVE_STRTOL=1 -DHAVE_UNAME=1 -DHAVE_LIBNSL=1 -DHAVE_YP_MATCH=1 -DHAVE_LIBSOCKET=1 -I. -I. -g -O2 -Wall -MT rtpdump.o -MD -MP -MF ".deps/rtpdump.Tpo" -c -o rtpdump.o rtpdump.c;
then mv -f ".deps/rtpdump.Tpo" ".deps/rtpdump.Po"; else rm -f ".deps/rtpdump.Tpo"; exit 1; fi
rtpdump.c: In function ‘parse_data’:
rtpdump.c:290:7: warning: format ‘%lx’ expects argument of type ‘long unsigned int’, but argument 4 has type ‘uint32_t’ [-Wformat=]
fprintf(out, "csrc[%d]=0x%0lx ", i, r->csrc[i]);
^
rtpdump.c: In function ‘main’:
rtpdump.c:845:24: warning: pointer targets in passing argument 6 of ‘recvfrom’ differ in signedness [-Wpointer-sign]
0, (struct sockaddr *)&sin, &alen);
^
In file included from rtpdump.c:32:0:
/usr/include/sys/socket.h:522:16: note: expected ‘Psocklen_t’ but argument is of type ‘int *’
extern ssize_t recvfrom(int, void *_RESTRICT_KYWD, size_t, int,
^
gcc -g -O2 -Wall -o rtpdump host2ip.o hpt.o multimer.o notify.o rd.o rtpdump.o -lsocket -lnsl
if gcc -DPACKAGE_NAME="rtptools" -DPACKAGE_TARNAME="rtptools" -DPACKAGE_VERSION="1.22" -DPACKAGE_STRING="rtptools\ 1.22" -DPACKAGE_BUGREPORT="" -DPACKAGE="rtptools" -DVERSION="1.22" -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_SEARCH_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_UNISTD_H=1 -DHAVE_STDINT_H=1 -DHAVE_YP=1 -DWORDS_BIGENDIAN=1 -DTIME_WITH_SYS_TIME=1 -DRETSIGTYPE=void -DHAVE_STRFTIME=1 -DHAVE_VPRINTF=1 -DHAVE_DOPRNT=1 -DHAVE_GETTIMEOFDAY=1 -DHAVE_MKTIME=1 -DHAVE_SELECT=1 -DHAVE_STRDUP=1 -DHAVE_STRERROR=1 -DHAVE_STRSTR=1 -DHAVE_STRTOL=1 -DHAVE_UNAME=1 -DHAVE_LIBNSL=1 -DHAVE_YP_MATCH=1 -DHAVE_LIBSOCKET=1 -I. -I. -g -O2 -Wall -MT rtpplay.o -MD -MP -MF ".deps/rtpplay.Tpo" -c -o rtpplay.o rtpplay.c;
then mv -f ".deps/rtpplay.Tpo" ".deps/rtpplay.Po"; else rm -f ".deps/rtpplay.Tpo"; exit 1; fi
rtpplay.c: In function ‘play_handler’:
rtpplay.c:155:12: warning: variable ‘m’ set but not used [-Wunused-but-set-variable]
uint8_t m = 0;
^
rtpplay.c:154:12: warning: variable ‘seq’ set but not used [-Wunused-but-set-variable]
uint16_t seq = 0;
^
rtpplay.c: In function ‘main’:
rtpplay.c:354:35: warning: pointer targets in passing argument 3 of ‘hpt’ differ in signedness [-Wpointer-sign]
if (hpt(argv[optind], (struct sockaddr *)&sin, &ttl) < 0) {
^
rtpplay.c:310:14: note: expected ‘unsigned char *’ but argument is of type ‘char *’
extern int hpt(char *h, struct sockaddr *sa, unsigned char *ttl);
^
gcc -g -O2 -Wall -o rtpplay host2ip.o hpt.o multimer.o notify.o rd.o rtpplay.o -lsocket -lnsl
if gcc -DPACKAGE_NAME="rtptools" -DPACKAGE_TARNAME="rtptools" -DPACKAGE_VERSION="1.22" -DPACKAGE_STRING="rtptools\ 1.22" -DPACKAGE_BUGREPORT="" -DPACKAGE="rtptools" -DVERSION="1.22" -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_SEARCH_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_UNISTD_H=1 -DHAVE_STDINT_H=1 -DHAVE_YP=1 -DWORDS_BIGENDIAN=1 -DTIME_WITH_SYS_TIME=1 -DRETSIGTYPE=void -DHAVE_STRFTIME=1 -DHAVE_VPRINTF=1 -DHAVE_DOPRNT=1 -DHAVE_GETTIMEOFDAY=1 -DHAVE_MKTIME=1 -DHAVE_SELECT=1 -DHAVE_STRDUP=1 -DHAVE_STRERROR=1 -DHAVE_STRSTR=1 -DHAVE_STRTOL=1 -DHAVE_UNAME=1 -DHAVE_LIBNSL=1 -DHAVE_YP_MATCH=1 -DHAVE_LIBSOCKET=1 -I. -I. -g -O2 -Wall -MT rtpsend.o -MD -MP -MF ".deps/rtpsend.Tpo" -c -o rtpsend.o rtpsend.c;
then mv -f ".deps/rtpsend.Tpo" ".deps/rtpsend.Po"; else rm -f ".deps/rtpsend.Tpo"; exit 1; fi
rtpsend.c: In function ‘rtp’:
rtpsend.c:716:11: warning: variable ‘dummy’ set but not used [-Wunused-but-set-variable]
int dummy;
^
rtpsend.c:658:7: warning: variable ‘pad’ set but not used [-Wunused-but-set-variable]
int pad = 0;
^
rtpsend.c: In function ‘main’:
rtpsend.c:918:35: warning: pointer targets in passing argument 3 of ‘hpt’ differ in signedness [-Wpointer-sign]
if (hpt(argv[optind], (struct sockaddr *)&sin, &ttl) < 0) {
^
rtpsend.c:877:14: note: expected ‘unsigned char *’ but argument is of type ‘char *’
extern int hpt(char *h, struct sockaddr *sa, unsigned char *ttl);
^
gcc -g -O2 -Wall -o rtpsend host2ip.o hpt.o multimer.o notify.o rtpsend.o -lsocket -lnsl
if gcc -DPACKAGE_NAME="rtptools" -DPACKAGE_TARNAME="rtptools" -DPACKAGE_VERSION="1.22" -DPACKAGE_STRING="rtptools\ 1.22" -DPACKAGE_BUGREPORT="" -DPACKAGE="rtptools" -DVERSION="1.22" -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_SEARCH_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_UNISTD_H=1 -DHAVE_STDINT_H=1 -DHAVE_YP=1 -DWORDS_BIGENDIAN=1 -DTIME_WITH_SYS_TIME=1 -DRETSIGTYPE=void -DHAVE_STRFTIME=1 -DHAVE_VPRINTF=1 -DHAVE_DOPRNT=1 -DHAVE_GETTIMEOFDAY=1 -DHAVE_MKTIME=1 -DHAVE_SELECT=1 -DHAVE_STRDUP=1 -DHAVE_STRERROR=1 -DHAVE_STRSTR=1 -DHAVE_STRTOL=1 -DHAVE_UNAME=1 -DHAVE_LIBNSL=1 -DHAVE_YP_MATCH=1 -DHAVE_LIBSOCKET=1 -I. -I. -g -O2 -Wall -MT rtptrans.o -MD -MP -MF ".deps/rtptrans.Tpo" -c -o rtptrans.o rtptrans.c;
then mv -f ".deps/rtptrans.Tpo" ".deps/rtptrans.Po"; else rm -f ".deps/rtptrans.Tpo"; exit 1; fi
rtptrans.c: In function ‘socket_handler’:
rtptrans.c:203:17: warning: pointer targets in passing argument 6 of ‘recvfrom’ differ in signedness [-Wpointer-sign]
(struct sockaddr *)&sin_from, &addr_len);
^
In file included from rtptrans.c:33:0:
/usr/include/sys/socket.h:522:16: note: expected ‘Psocklen_t’ but argument is of type ‘int *’
extern ssize_t recvfrom(int, void *_RESTRICT_KYWD, size_t, int,
^
rtptrans.c:314:14: error: ‘struct msghdr’ has no member named ‘msg_control’
msg.msg_control = 0;
^
rtptrans.c:315:14: error: ‘struct msghdr’ has no member named ‘msg_controllen’
msg.msg_controllen = 0;
^
rtptrans.c:327:23: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
else if (((struct CtrlMsgHdr )packet)->type == 1) / vat ID messages */{
^
*** Error code 1
make: Fatal error: Command failed for target `rtptrans.o'

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.