### Description
In my use case exists 1. pool of front-end proxies (all share some IPv4 address via AWS network load-balancer); 2. pool of backend registrars.
I must: 1. send keepalive messages to endpoints when used INVITE, REGISTRAR, SUBSCRIBE methods via all possible transports (UDP/TSP/TLS/WS/WSS/SCTP) (like nat_keepalive function of nat_traversal module). Internally store record for this SIP URI with flag `ka_dynamic` and `Record-Route` headers from `180, 183, 200` responses as `Route`; 2. send keepalive messages on predefined SIP URI (like ka_add_destination of keepalive module). Internally store record for this SIP URI with flag `ka_static` and manually defined `Route` value; 3. when keepalive for cases above is failed, then added record into arrays: a. ka_invite_failed; b. ka_registrar_failed; c. ka_supscribe_failed; d. ka_invite_succcess; e. ka_registrar_success; f. ka_supscribe_success; 4. need to trigger `even route` function with initialized `xavp` params of a. of SIP URI endpoints; b. relevant array ID; c. dynamic or static flag of SIP URI record; d. `Record-Route` of SIP URI record; 5.If we have arrays for multiple arrays, then the `event router` function called multiple times. 6. the time period for `event route` calls must be configurable via module settings; 7. when executed `event route` I want to have abbility a. send a new registration message to the registrar node using saved `Route` header when OPTION is successful for the statically defined SIP URI; a. send registration expiration message to the registrar node from received `200` response; b. send the clear subscription message to the node from received `200` response;
#### Actual observed behavior In current implementation `OPTIONS` keepalive messages send from different modules 1. usrloc; 2. keepalive; 3. nat_traversal; 4. nathelper
All the above have limitations like: 1. no TCP/TLS/WS/WSS transport support (nat_traversal, nathelper); 2. no ability to define call `event-route` on failed (success) OPTIONS message (think all modules do not have such feature); 3. no ability to check response code before enabling keepalive (nat_traversal); 4. no ability to notify backend REGISTRAR/SUBSCRIPTION server (think all modules do not have such feature) about failed keepalive messages;
#### What is expected
From my of view required:
1. some refactor of keepalive feature; 2. merge code from different modules into one and make other modules dependent; 3. implement the ability to notify backend REGISTRAR/SUBSCRIPTION servers of failed keepalive messages; 4. implement the ability to emulate registration when OPTION message success to SIP URI. Required on SBC to emulate customer PBX registration.