I found some bugs on creation of outgoing connection.
Openfire can bind incoming connection on single interface (by “network.interface” in openfire.xml).
But, when it creates outgoing connection, network interface is not bind to the deginated interface.
To bind the interface, it is need to bind socket for outgoing connection before connect() is invoked.
for example, in OutgoingServerSession.java:244-253
Socket socket = new Socket();
// get interface address to bind
String interfaceName = JiveGlobals.getXMLProperty(“network.interface”);
SocketAddress bindInterface = null;
bindInterface = new InetSocketAddress(interfaceName, 0);
// bind to interface,
// then connect.