siproxd/TODO
Thomas Ries e67b823457 - Integrated a patch from Chris Ross:
* have siproxd compile on Solaris and BSD/OS (more to come)
  * ./configure option --with-libosip-prefix
  * properly handle getopt_long()/getopt()
- First attempt of iptables support. Routines to add/remove
  DNAT entries must still be done.
2003-11-19 19:36:30 +00:00

55 lines
1.9 KiB
Plaintext

TODOs, in random order:
=======================
- siproxd daemonized: looks like clashes between threads
- lost 200 ACK immediately before RTP starts...
- TERM handler
- /var/run PID file
- check via loop and private IP addresses
can comment be used to store a unique ID in there?
- multiple inbound interfaces - do I need to be aware of inbound at all?
- Documentation (yeah, yeah...)
- general security issues
- security tests for received SIP messages (function securitycheck)
- automagically create a proper config file during install
- get_ip_by_host: reduce DNS timeouts (seems to be a more complex problem...)
- via loop detection: send 482 error code
- support Record-Route header
- feature: don't bind to 0.0.0.0 address, but only to inbound/outbound IF's
(defined by IFNAME)
- support IPTABLES for RTP proxying
- rtpproxy_masq:
RACE CONDITIONS! A slot may be timed out, even if the actual
masquerading tunnel is still active. A following new
INVITE then tries to use the believed free port -> Buh
- Can we poll (/proc/something) to figure out if the tunnel
is still active before deleting? This would require knowledge
of the text layout in /proc/xxx.
- are there some other possibilities (netfilter/libiptc)?
- introduce some kind of connection STATE to the proxy table.
Timeout based discarding only is active for non-established.
An INVITE would set the STATE to CONNECTING, the following
ACK to CONNECTED. A CONNECTED entry can only be deleted by
a BYE or CANCEL.
- NETFILTER: during startup (RTP initialization) siproxd should
clean left over entries that are within the RTP proxy port range
- NETFILTER masquerading:
it looks like it is not possible to create an entry in the
ip_conntrack table from an userspace application. How do we proceed?
We just might insert/delete DNAT entries in the PREROUTE NAT table.
This the means that we must implement a connection state into the
proxy table.