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=3576Anonymous
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 :-) DDAnonymous
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