Following on from my original response, which was just a link to an existing example. Here are some answers which are a bit Kamailio-centric: On Mon, Feb 2, 2015 at 8:55 AM, Avi Marcus <avi@avimarcus.net> wrote:
1) I have inbound calls via various carriers. Some only support an IP endpoint (so DNS won't work) and some don't support 302 redirects, so I can't use a stateless FS endpoint either, so I need a sip proxy.
Do you want avoid using FS as a back to hack user agent?
2) I need a SIP proxy that will route calls to various FreeSWITCH endpoints. (Preferably, it should route registration too (or manage registration list itself?))
Kamailio is a SIP registrar, so you can implement registration with it alone. But it can forward the REGISTER to FS if that suits you better.
3) I need the ability to pull freeswitch nodes out of the routing (waiting for them to drain is fine, I don't need failover of live calls) to perform maintenance, and then add them back to the routing.
You could potentially use the dispatcher module in Kamailio for this. The dispatcher does have a reload command that you can invoke actively, or you could leave it up to dispatcher to detect that an FS node has been taken offline. It depends on the specific semantics you want to support.
4) I should be able to have this proxy on a floating IP that I can move this too, without downtime, for maintenance work.
Depending on your OS, you could use a CARP device for your SIP listen IP - this might allow you to take a node offline.