Connection Manager: Null Proxy

Null Proxy

 

In CM_ProxyEntries CSP, a proxy entry has a “Type” characteristic:

· 0 for null proxies

· 1 for HTTP proxies

· 2 for WAP proxies

· 4 for SOCKS4 proxies

· 5 for SOCKS5 proxies

Notice Type 0 is for Null Proxy. What is a Null Proxy? A Null Proxy basically identifies two networks—the srcID and destID--that are essentially the same. For example, on a PPC phone emulator, you can see the following proxy entry:

 

<characteristic type="HTTP-{ADB0B001-10B5-3F39-27C6-9742E785FCD4}">

<parm name="SrcId" value="{ADB0B001-10B5-3F39-27C6-9742E785FCD4}"/>

<parm name="DestId" value="{436EF144-B4FB-4863-A041-8F905A62C572}"/>

<parm name="Proxy" value=""/>

<parm name="Override" value=""/>

<parm name="Enable" value="1"/>

<parm name="Type" value="0"/>

<parm name="Username" value=""/>

<parm name="Password" value=""/>

<parm name="ExtraInfo" value=""/>

</characteristic>

 

This is a Null Proxy, who specifies a ‘hidden link’ between “My ISP” ( {ADB0B001-10B5-3F39-27C6-9742E785FCD4}) and the “Internet” GUID. This is to say everything to “My ISP” is destined to “Internet”. This is the default Null Proxy on PPC Phone.

 

Another entry:

 

<characteristic type="null-corp-{18AD9FBD-F716-ACB6-FD8A-1965DB95B814}">

<parm name="SrcId" value="{18AD9FBD-F716-ACB6-FD8A-1965DB95B814}"/>

<parm name="DestId" value="{A1182988-0D73-439E-87AD-2A5B369F808B}"/>

<parm name="Proxy" value=""/>

<parm name="Override" value=""/>

<parm name="Enable" value="1"/>

<parm name="Type" value="0"/>

<parm name="Username" value=""/>

<parm name="Password" value=""/>

<parm name="ExtraInfo" value=""/>

</characteristic>

 

This is a Null Proxy between “My Work Network” and the “Work” network.

 

On PPC Phone, a user will not see “Internet” and “Work” meta networks. Instead, UI will show “My ISP” and “My Work Network”. By default, Internally, Null Proxies are created to link “My ISP” to “Internet” and “My Work Network” to “Work”. PPC Phone UI allows user to configure which network (could be one of the two, or a new one created by the user or OEM) is going to connect to the Internet and which is to work (How confusing is that!). Once user changes the setting, the default Null Proxies will be updated automatically to link that selected network to either “Internet” or “Work”. All these settings are actually used to establish relationships between *networks* that can be those provisioned by default or by OEM.

 

For example, OEM can add a new network called “TMOBILE Network”, and Null-Proxy it to “Internet”. Then, OEM can add a GPRS connection that connects to “TMOBILE Network”. Thus, when an app is asking Connection Manager for a connection to “Internet”, this path—using GPRS to TMOBILE then to “Internet”—will be considered against other options such as WiFi or PPP, if any. There is a similar example in OEM doc “Add a Null Proxy connection example”.

 

On Smartphone, there is no “My ISP” or “My Work Network”. A user can directly specify *connections* that destine to “Internet” or “Work”.

Comments

  • Anonymous
    January 01, 2008
    PingBack from http://movies.247blogging.info/?p=3576

  • Anonymous
    April 15, 2008
    Pei, this rocks! Thanks for the focus on the Connection Manager.  This is some information that I really needed, I'm still digesting :-) DD

  • Anonymous
    November 18, 2008
    From my understanding, CM is try to offer a connection orientied routing based on url mapping ("/./", etc), thus it bypasses the network based routing such as the ip routing table. So if I want to route packets which target a specific network (say, 10.0.0.0/255.0.0.0) to a specific NIC/connection (say, WIFI), how can I do that? Thanks