[Devel] [rtpproxy] port range configurable through CLI
Jeremie Le Hen
jeremie at le-hen.org
Thu Oct 12 15:33:37 CEST 2006
Hi,
(I first tried to contact Maxim Sobolev directly, but he didn't replied).
I dare to post this here because I have not been able to locate where
RTPProxy is currently developped. Please, feel free to point me out
the correct mailing-list to post this if this is not the correct place
(note that SER website at berlios.de seems really idle though).
I have made a small patch that adds a new option -P to RTPProxy,
allowing to configure the port range use by rtpproxy from command-line.
You might want to review the checks I've made in the 'P' option character
handling. (The patch is attached.)
I've also submitted this patch to the tracker:
http://sourceforge.net/tracker/index.php?func=detail&aid=1575919&group_id=139143&atid=743022
Apart from this, I would like to update the usage() function to make it
more verbose ; this would relieve a bit of the pain caused by the lack of
documentation.
I've succeded to understand most of the available options, but I must
admit I have not been able to understand -r and -s options. I would be
glad if you could give me a small explanation of these two options.
ISTR there is a document describing rtpproxy's options more thoroughly
around the web, but I wasn't able to find it. If you know a pointer to
it, please send it to me as well.
Thank you for your work.
Best regards,
--
Jeremie Le Hen
< jeremie at le-hen dot org >< ttz at chchile dot org >
-------------- next part --------------
Only in rtpproxy: .main.c.swp
Only in rtpproxy: .rtp_server.c.swp
Only in rtpproxy: .rtpp_record.c.swp
Only in rtpproxy: Makefile
Only in rtpproxy: config.h
Only in rtpproxy: config.log
Only in rtpproxy: config.status
diff -urp rtpproxy.orig/main.c rtpproxy/main.c
--- rtpproxy.orig/main.c Wed Jul 5 02:14:19 2006
+++ rtpproxy/main.c Fri Sep 29 11:57:32 2006
@@ -48,6 +48,7 @@
#include <poll.h>
#include <sched.h>
#include <stdio.h>
+#include <stdint.h>
#include <stdlib.h>
#include <signal.h>
#include <string.h>
@@ -101,6 +102,8 @@ static struct sockaddr *bindaddr[2]; /*
static rtpp_log_t glog;
static int tos = TOS;
+static int port_min = PORT_MIN;
+static int port_max = PORT_MAX;
static int lastport[2] = {PORT_MIN - 1, PORT_MIN - 1};
static const char *rdir = NULL;
static const char *sdir = NULL;
@@ -755,7 +758,7 @@ handle_command(int controlfd)
if (spa->fds[i] == -1) {
j = ishostseq(bindaddr[0], spa->laddr[i]) ? 0 : 1;
- if (create_listener(spa->laddr[i], PORT_MIN, PORT_MAX,
+ if (create_listener(spa->laddr[i], port_min, port_max,
lastport[j], &lport, fds) == -1) {
rtpp_log_write(RTPP_LOG_ERR, spa->log, "can't create listener");
ecode = 7;
@@ -826,7 +829,7 @@ handle_command(int controlfd)
call_id, from_tag, weak ? "weak" : "strong");
j = ishostseq(bindaddr[0], lia[0]) ? 0 : 1;
- if (create_listener(bindaddr[j], PORT_MIN, PORT_MAX,
+ if (create_listener(bindaddr[j], port_min, port_max,
lastport[j], &lport, fds) == -1) {
rtpp_log_write(RTPP_LOG_ERR, glog, "can't create listener");
ecode = 10;
@@ -1026,7 +1029,7 @@ main(int argc, char **argv)
dmode = 0;
- while ((ch = getopt(argc, argv, "vf2Rl:6:s:S:t:r:p:T:L:")) != -1)
+ while ((ch = getopt(argc, argv, "vf2Rl:6:s:S:t:r:p:P:T:L:")) != -1)
switch (ch) {
case 'f':
nodaemon = 1;
@@ -1097,6 +1100,26 @@ main(int argc, char **argv)
case 'p':
pid_file = optarg;
+ break;
+
+ case 'P':
+ errno = 0;
+ port_min = (int)strtoul(optarg, &cp, 10);
+ if (errno != 0)
+ err(1, "%s", optarg);
+ if (*cp != ':' || *cp != '-')
+ errx(1, "%s: Bad port range", optarg);
+ cp++;
+ port_max = (int)strtoul(cp, &cp, 10);
+ if (errno != 0)
+ err(1, "%s", optarg);
+ if (*cp != '\0')
+ errx(1, "%s: Bad port range", optarg);
+ if (port_max - port_min < 4)
+ errx(1, "%s: Port range too small", optarg);
+ if (port_min < 1 || port_max > 65535)
+ errx(1, "%s: Invalid ports", optarg);
+ lastport[0] = lastport[1] = port_min - 1;
break;
case 'T':
Only in rtpproxy: main.o
Only in rtpproxy: rtp_server.o
Only in rtpproxy: rtpp_record.o
Only in rtpproxy: rtpp_util.o
Only in rtpproxy: rtpproxy
Only in rtpproxy: stamp-h1
More information about the Devel
mailing list