public ProxyCandidate addRelayAgent(String id, String creator, String hostA, int portA,
            String hostB, int portB)
    {
        RelaySession session = new RelaySession(id, creator, ipAddress, hostA, portA, hostB, portB, minPort, maxPort);
        sessions.put(id, session);
        session.addKeepAlive(idleTime);
        session.addLifeTime(lifetime);
        session.addAgentListener(this);
        return session;
    }
Add a new Dynamic Session to the mediaproxy for defined IPs and ports.
The IP and port pairs can change depending of the Senders IP and port.
Which means that the IP and port values of the points can dynamic change after the Channel is opened.
When the agent receives a packet from Point A, the channel set the point A IP and port according to
the received packet sender IP and port.
Every packet received from Point B will be relayed to the new Point A IP and port.
When the agent receives a packet from Point B, the channel set the point B IP and port according to
the received packet sender IP and port.
Every packet received from Point A will be relayed to the new Point B IP and port.
Create a dynamic channel between two IPs. ( Dynamic Point A - Dynamic Point B )

@param id      id of the candidate returned (Could be a Jingle session ID)
@param creator the agent creator name or description
@param hostA   the hostname or IP of the point A of the Channel
@param portA   the port number point A of the Channel
@param hostB   the hostname or IP of the point B of the Channel
@param portB   the port number point B of the Channel
@return the added ProxyCandidate
xmppserver/src/main/java/org/jivesoftware/openfire/mediaproxy/MediaProxy.java