Default LSPs in WM 5.0 [autobind_lsp].

The following description of the autobind_lsp is copiedĀ  from
https://www.intrinsyc.com/whitepapers/RIL\_whitepaper\_MS\_Intrinsyc\_June2004.pdf"

When an application makes a Connection Manager connection request, Connection Manager determines which IP interface the application should use to reach the destination network requested. Connection manager passes this information to the AutoBind LSP. If the application does not explicitly bind its sockets to an interface, then the AutoBind LSP will implicitly bind the sockets to the interface specified by Connection Manager, ensuring that the packets sent over the socket will take the correct route to reach the intended destination.

autobind_LSP effects the following winsock calls:

 def WSPConnect(addr):
    if not alreadyBound() and not isLoopback(addr):
        doHardBindIfRequired()

    let_connect_call_passthrough_to(addr)


def WSPBind(addr):
    if not alreadyBound():
        doHardBindIfRequired()

    let_bind_call_passthrough_to(addr)


def WSPRecvFrom(addr):
    if not alreadyBound():
        doHardBindIfRequired()

    let_recvFrom_call_passthrough_to(addr)

def WSPSendTo(addr):
    if not alreadyBound():
        doHardBindIfRequired()

    let_sendTo_call_passthrough_to(addr)

def doHardBindIfRequired():
    interfaceToBindTo = ConnectionManager::GetInterfaceToBindTo(GetProcessID())
    if (interfaceToBindTo)
        TCPStack::ForceHardBind(interfaceToBindTo)
   alreadyBound = True

[Author: Igor Dvorkin]