<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-5758970642763704665</atom:id><lastBuildDate>Mon, 28 Nov 2011 01:16:12 +0000</lastBuildDate><category>t1</category><category>xml</category><category>CiscoIPPhoneError</category><category>e1</category><category>e61i</category><category>asymmetric</category><category>cable</category><category>private vlan</category><category>pl/sql</category><category>leap</category><category>sip</category><category>bcp</category><category>tcl</category><category>normalization</category><category>xmlhttpclass</category><category>mobility</category><category>sql server</category><category>ace</category><category>dual mode</category><category>batch</category><category>c#</category><category>codes</category><category>pvlan</category><category>cisco</category><category>ibm</category><category>welcome</category><category>nokia</category><category>configuration</category><category>bri</category><category>wireless</category><category>switch mode</category><category>e65</category><category>errors</category><category>script</category><category>server</category><category>firmware</category><category>.net</category><category>network</category><category>unified presence server</category><category>mac address</category><category>crossover</category><category>osql</category><category>httpwebrequest</category><category>isdn</category><category>asn</category><category>backup</category><category>acs</category><title>snippets101</title><description /><link>http://snippets101.blogspot.com/</link><managingEditor>noreply@blogger.com (Alberto)</managingEditor><generator>Blogger</generator><openSearch:totalResults>22</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/snippets101" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="snippets101" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5758970642763704665.post-5487246593773137582</guid><pubDate>Mon, 21 Sep 2009 07:21:00 +0000</pubDate><atom:updated>2009-09-21T12:58:56.552-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">crossover</category><category domain="http://www.blogger.com/atom/ns#">bri</category><category domain="http://www.blogger.com/atom/ns#">cable</category><category domain="http://www.blogger.com/atom/ns#">t1</category><category domain="http://www.blogger.com/atom/ns#">isdn</category><category domain="http://www.blogger.com/atom/ns#">e1</category><title>Back-To-Back cables for T1/E1/BRI/E&amp;M</title><description>&lt;span style="font-family: Arial; font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;This is a simple reference to make back-to-back connections. Very useful in lab scenarios with voice gateways emulating the PSTN.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;Thanks to Aashish for this :&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial; font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;&lt;span style="border-collapse: collapse; font-family: arial, sans-serif;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial; font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;&lt;span style="border-collapse: collapse; font-family: arial, sans-serif;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial; font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;&lt;span style="border-collapse: collapse; font-family: arial, sans-serif;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Arial; font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;&lt;span style="border-collapse: collapse; font-family: arial, sans-serif;"&gt;&lt;div&gt;&lt;span style="font-family: 'Lucida Console'; font-size: 10pt;"&gt;T1/E1 crossover (for PRI and CAS back-to-back connection):&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: 'Lucida Console'; font-size: 10pt;"&gt;RJ-45 ----- RJ-45&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 1&amp;nbsp; -----&amp;nbsp; 4&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 2&amp;nbsp; -----&amp;nbsp; 5&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 4&amp;nbsp; -----&amp;nbsp; 1&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 5&amp;nbsp; -----&amp;nbsp; 2&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: 'Lucida Console'; font-size: 10pt;"&gt;RJ-45 ----- DB-15&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 1&amp;nbsp; -----&amp;nbsp;&amp;nbsp; 1&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 2&amp;nbsp; -----&amp;nbsp;&amp;nbsp; 9&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 4&amp;nbsp; -----&amp;nbsp;&amp;nbsp; 3&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 5&amp;nbsp; -----&amp;nbsp; 11&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: 'Lucida Console'; font-size: 10pt;"&gt;DB-15 ----- DB-15&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 1&amp;nbsp; -----&amp;nbsp;&amp;nbsp; 3&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 3&amp;nbsp; -----&amp;nbsp;&amp;nbsp; 1&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 9&amp;nbsp; -----&amp;nbsp; 11&lt;br /&gt;
&amp;nbsp; 11&amp;nbsp; -----&amp;nbsp;&amp;nbsp; 9&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: 'Lucida Console'; font-size: 10pt;"&gt;&lt;br /&gt;
ISDN BRI crossover (for BRI back-to-back connection):&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: 'Lucida Console'; font-size: 10pt;"&gt;RJ-45 ----- RJ-45&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 3&amp;nbsp; -----&amp;nbsp; 4&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 4&amp;nbsp; -----&amp;nbsp; 3&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 5&amp;nbsp; -----&amp;nbsp; 6&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 6&amp;nbsp; -----&amp;nbsp; 5&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: 'Lucida Console'; font-size: 10pt;"&gt;&lt;br /&gt;
Analog E&amp;amp;M (for analog E&amp;amp;M back-to-back connection):&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: 'Lucida Console'; font-size: 10pt;"&gt;RJ-45, 2-wire audio&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 1&amp;nbsp; -----&amp;nbsp; 8&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 2&amp;nbsp; -----&amp;nbsp; 7&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 4&amp;nbsp; -----&amp;nbsp; 5&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 5&amp;nbsp; -----&amp;nbsp; 4&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 7&amp;nbsp; -----&amp;nbsp; 2&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 8&amp;nbsp; -----&amp;nbsp; 1&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
RJ-45, 4-wire audio&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 1&amp;nbsp; -----&amp;nbsp; 8&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 2&amp;nbsp; -----&amp;nbsp; 7&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 3&amp;nbsp; -----&amp;nbsp; 5&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 4&amp;nbsp; -----&amp;nbsp; 6&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 5&amp;nbsp; -----&amp;nbsp; 3&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 6&amp;nbsp; -----&amp;nbsp; 4&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 7&amp;nbsp; -----&amp;nbsp; 2&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 8&amp;nbsp; ------ 1&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: 'Lucida Console'; font-size: 10pt;"&gt;&lt;br /&gt;
Analog FXS/FXO back-to-back connection:&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: 'Lucida Console'; font-size: 10pt;"&gt;RJ-11 ----- RJ-11&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 2&amp;nbsp; -----&amp;nbsp;&amp;nbsp; 3&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 3&amp;nbsp; -----&amp;nbsp;&amp;nbsp; 2&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: 'Lucida Console'; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; RJ-11 connector&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ===============&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _____&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /&amp;nbsp;&amp;nbsp;&amp;nbsp; /|&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /4321/ |&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /____/&amp;nbsp; |&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ||||||&amp;nbsp; /&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; | /&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |_--_|/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \_\&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: 'Lucida Console'; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; RJ-45 connector&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ===============&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _________&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /|&lt;br /&gt;
&amp;nbsp;&amp;nbsp; /87654321/ |&lt;br /&gt;
&amp;nbsp; /________/&amp;nbsp; |&lt;br /&gt;
&amp;nbsp; ||||||||||&amp;nbsp; /&lt;br /&gt;
&amp;nbsp; |&amp;nbsp;&amp;nbsp; __&amp;nbsp;&amp;nbsp; | /&lt;br /&gt;
&amp;nbsp; |__|&amp;nbsp; |__|/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \_\&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: 'Lucida Console'; font-size: 10pt;"&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; DB-15 male connector&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ====================&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Arial; font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;&lt;span style="border-collapse: collapse; font-family: arial, sans-serif;"&gt;&lt;span style="font-family: 'Lucida Console'; font-size: 10pt;"&gt;pin 1 _______________ pin 8&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /. . . . . . . .\&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \ . . . . . . . /&lt;br /&gt;
pin 9 \_____________/ pin 15&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5758970642763704665-5487246593773137582?l=snippets101.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://snippets101.blogspot.com/2009/09/back-to-back-cables-for-t1e1brie.html</link><author>noreply@blogger.com (Alberto)</author><thr:total>33</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5758970642763704665.post-6494841853644572798</guid><pubDate>Thu, 21 Aug 2008 10:37:00 +0000</pubDate><atom:updated>2008-08-21T08:30:01.109-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">osql</category><category domain="http://www.blogger.com/atom/ns#">sql server</category><category domain="http://www.blogger.com/atom/ns#">batch</category><category domain="http://www.blogger.com/atom/ns#">backup</category><category domain="http://www.blogger.com/atom/ns#">bcp</category><title>Backup data with bcp</title><description>What I wanted was not to have more of two months of data online in my table. In order to do accomplish this task I decided to use Ms SQL Server's Bulk Copy Program (bcp).&lt;br /&gt;&lt;br /&gt;Here's the MSDN page on bcp usage :&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms162802.aspx"&gt;http://msdn.microsoft.com/en-us/library/ms162802.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Then, using osql (&lt;a href="http://msdn.microsoft.com/en-us/library/ms162806.aspx"&gt;MSDN&lt;/a&gt;) I'll clean up the table of the rows backupped.&lt;br /&gt;&lt;br /&gt;In my table there's a field named dtRow which contains the timestamp as UTC.&lt;br /&gt;&lt;br /&gt;I wrote this little batch :&lt;br /&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;@echo off&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;:CHECK_ARGUMENTS&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;if "%1"=="" goto PRINT_USAGE&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;if "%1"=="-?" goto PRINT_USAGE&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;:CHECK_ARG_DIRECTION&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;if "%1"=="in" goto RESTORE_AREA&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;if "%1"=="out" goto BACKUP_AREA&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;goto PRINT_USAGE&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;:BACKUP_AREA&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;:CHECK_ARG_DAYS&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;if %2==-d goto CHECK_ARG_DAYS_2 &lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;if not %1==-d goto PRINT_USAGE&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;:CHECK_ARG_DAYS_2&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;if not "%3"=="" goto CHECK_ARG_PATH&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;goto PRINT_USAGE&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;:CHECK_ARG_PATH&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;if not "%4"=="" goto CHECK_BCP&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;goto PRINT_USAGE&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;:CHECK_BCP&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;echo Looking for BCP....&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;IF EXIST %PROGRAMFILES%\Microsoft SQL Server\80\Tools\Binn\bcp.exe GOTO CHECK_BCP_OK ELSE GOTO CHECK_BCP_KO&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;:CHECK_BCP_OK&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;echo BCP exists.&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;goto CHECK_OSQL&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;:CHECK_BCP_KO&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;echo BCP does not exist!!.&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;goto EXITPROGRAM&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;:CHECK_OSQL&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;echo Looking for OSQL....&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;IF EXIST %PROGRAMFILES%\Microsoft SQL Server\80\Tools\Binn\osql.exe goto CHECK_OSQL_OK ELSE GOTO CHECK_OSQL_KO&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;:CHECK_OSQL_OK&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;echo OSQL exists.&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;goto BACKUP_DATA&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;:CHECK_OSQL_KO&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;echo OSQL does not exist!!.&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;goto EXITPROGRAM&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;:BACKUP_DATA&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;ECHO BACKUP DATA....&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;SET query="SELECT * FROM MyDB.dbo.MyTable WHERE dtRow &amp;gt; ((SELECT TOP 1 dtRow FROM MyDB.dbo.MyTable  ORDER BY dtRow DESC) - 86400*%3)"&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;"%PROGRAMFILES%\Microsoft SQL Server\80\Tools\Binn\bcp.exe"  %query% queryout %4 -N -U sa -P sa -S.\SQL2000 &lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;IF not %ERRORLEVEL%==0 goto ERROR_BACKUP&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;:DELETE_DATA&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;ECHO.&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;ECHO DELETING SAVED ROWS&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;SET query="DELETE FROM MyDB.dbo.MyTable WHERE dtRow &amp;gt; ((SELECT TOP 1 dtRow FROM MyDB.dbo.MyTable  ORDER BY dtRow DESC) - 86400*%3)"&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;"%PROGRAMFILES%\Microsoft SQL Server\80\Tools\Binn\osql.exe" -S.\SQL2000 -U sa -P sa -d MyDB -Q %query% &lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;ECHO Done.&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;goto EXITPROGRAM&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;:RESTORE_AREA&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;echo RESTORING DATA....&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;"%PROGRAMFILES%\Microsoft SQL Server\80\Tools\Binn\bcp.exe" MyDB.dbo.MyTable in %4 -N -U sa -P sa -S.\SQL2000&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;ECHO Done.&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;goto EXITPROGRAM&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;:PRINT_USAGE&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;ECHO Simple Backup Utility &lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;ECHO Usage : obu {in | out} -d days path &lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;ECHO  days : Number of days to backup &lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;ECHO         starting from the last record.&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;ECHO  path : Path of the backup file.&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;:ERROR_BACKUP&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;echo Error during backup phase. Aborting...&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;goto EXITPROGRAM&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;:EXITPROGRAM&lt;/span&gt;&lt;/div&gt;&lt;div  style=";font-family:&amp;quot;;"&gt;&lt;span style="font-size:x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5758970642763704665-6494841853644572798?l=snippets101.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://snippets101.blogspot.com/2007/12/backup-data-with-bcp.html</link><author>noreply@blogger.com (Alberto)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5758970642763704665.post-8272015740943679746</guid><pubDate>Thu, 21 Aug 2008 08:24:00 +0000</pubDate><atom:updated>2008-08-21T03:58:14.768-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">cisco</category><category domain="http://www.blogger.com/atom/ns#">sip</category><category domain="http://www.blogger.com/atom/ns#">nokia</category><category domain="http://www.blogger.com/atom/ns#">configuration</category><category domain="http://www.blogger.com/atom/ns#">dual mode</category><title>Cisco and Nokia Dual Mode Part IV : SIP</title><description>Now time's to try the embedded SIP client on the Nokia devices.&lt;br /&gt;
&lt;br /&gt;
As for reference I started with the Cisco manual (quite clear) :&lt;br /&gt;
&lt;a href="http://www.cisco.com/en/US/partner/docs/voice_ip_comm/cucm/admin/6_0_1/ccmcfg/b09sip3p.html"&gt;http://www.cisco.com/en/US/partner/docs/voice_ip_comm/cucm/admin/6_0_1/ccmcfg/b09sip3p.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
then I continued sniffing with &lt;a href="http://www.wireshark.org/"&gt;wireshark &lt;/a&gt;the SIP registration (which failed), and at last I found the last useful clues on the &lt;a href="http://forum.cisco.com/eforum/servlet/NetProf?page=netprof&amp;amp;forum=Unified%20Communications%20and%20Video&amp;amp;topic=IP%20Telephony&amp;amp;topicID=.ee6c829&amp;amp;CommCmd=MB%3Fcmd%3Dpass_through%26location%3Doutline%40%5E1%40%40.1ddedac9/11#selected_message"&gt;Cisco NetPro Forum&lt;/a&gt; (thanks Ron!)&lt;br /&gt;
&lt;br /&gt;
I decided to try with the Third Party Basic SIP device, however procedure for the Advanced&amp;nbsp; SIP device is almost the same.&lt;br /&gt;
&lt;br /&gt;
So at last here's&amp;nbsp; the working configuration :&lt;br /&gt;
&lt;br /&gt;
First configure the CUCM : &lt;br /&gt;
&lt;br /&gt;
Get to System-&amp;gt;Security Profile-&amp;gt;Phone Security Profile and copy the &lt;i&gt;Third-party SIP Device Basic - Standard SIP Non-Secure Profile&lt;/i&gt; and rename it (I used Third-party SIP Device Basic - LAB SIP Non-Secure Profile) and check the &lt;i&gt;Enable Digest Authentication&lt;/i&gt; option. Leave unchanged the other settings.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_Tdhn-HYCK18/SK1Jdz1_yBI/AAAAAAAAAls/HImVLU0mx6E/s1600-h/SIP-SecurityProfile.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_Tdhn-HYCK18/SK1Jdz1_yBI/AAAAAAAAAls/swIewmiipJg/s320-R/SIP-SecurityProfile.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Add the device as a Third-party SIP Device (Basic), set the phone's mac address (here's how to get it) and be sure to set this settings :&lt;br /&gt;
Device Security Profile to the security profile yuo've created previously&lt;br /&gt;
Digest User to your End User&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_Tdhn-HYCK18/SK1Jk-R5CQI/AAAAAAAAAl0/A3EJj8Ft5ew/s1600-h/SIP-device.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_Tdhn-HYCK18/SK1Jk-R5CQI/AAAAAAAAAl0/IlzzCt_1NN0/s320-R/SIP-device.png" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&amp;nbsp;&lt;a href="http://4.bp.blogspot.com/_Tdhn-HYCK18/SK1JoVWXgbI/AAAAAAAAAl8/BzmqoSr6-ek/s1600-h/SIP-device-2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_Tdhn-HYCK18/SK1JoVWXgbI/AAAAAAAAAl8/Sx1lNtGOC2s/s320-R/SIP-device-2.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Define the DN for your device.&lt;br /&gt;
&lt;br /&gt;
In the End User configuration set the digest credentials (an alphanumeric password) and make the device association with the SIP phone.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_Tdhn-HYCK18/SK1JtqAQg3I/AAAAAAAAAmE/3UTnueLoi8c/s1600-h/SIP-enduser.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_Tdhn-HYCK18/SK1JtqAQg3I/AAAAAAAAAmE/zxJ1S6ZURZg/s320-R/SIP-enduser.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Then it's time to configure the Nokia phone :&lt;br /&gt;
&lt;br /&gt;
First get to Tools-&amp;gt;Settings-&amp;gt;SIP settings and create a new SIP profile :&lt;br /&gt;
Profile name :SIP&lt;br /&gt;
Service profile : IETF&lt;br /&gt;
Default access-point :&amp;lt;your access point&amp;gt;&lt;br /&gt;
Public username : sip:&amp;lt;dn&amp;gt;@&amp;gt;&amp;lt;cucm ip&amp;gt;&lt;br /&gt;
Use compression : No&lt;br /&gt;
Registration : Always on&lt;br /&gt;
Use security : No&lt;br /&gt;
&lt;br /&gt;
Proxy server&lt;br /&gt;
Proxy server address : sip:&amp;lt;cucm ip&amp;gt;&lt;br /&gt;
Realm : ccmsipline&lt;br /&gt;
Username : &amp;lt;End user userid&amp;gt;&lt;br /&gt;
Password : &amp;lt;Digest credentials&amp;gt;&lt;br /&gt;
Allow Loose routing : Yes&lt;br /&gt;
Transport type : UDP&lt;br /&gt;
Port : 5060&lt;br /&gt;
&lt;br /&gt;
Registrar server&lt;br /&gt;
Registrar serv. addr. : sip:&amp;lt;cucm ip&amp;gt;&lt;br /&gt;
Realm : ccmsipline&lt;br /&gt;
Username : &amp;lt;End user userid&amp;gt;&lt;br /&gt;
Password : &amp;lt;Digest credentials&amp;gt;&lt;br /&gt;
Transport type : UDP&lt;br /&gt;
Port : 5060&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Then get to Tools-&amp;gt;Settings-&amp;gt;Internet tel. settings and create a new SIP profile :&lt;br /&gt;
Name : Cisco SIP&lt;br /&gt;
SIP profile : SIP&lt;br /&gt;
&lt;br /&gt;
Et voilà, if WLAN configuration is correct, you should see the phone register immediately.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5758970642763704665-8272015740943679746?l=snippets101.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://snippets101.blogspot.com/2008/08/cisco-and-nokia-dual-mode-part-iv-sip.html</link><author>noreply@blogger.com (Alberto)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_Tdhn-HYCK18/SK1Jdz1_yBI/AAAAAAAAAls/swIewmiipJg/s72-Rc/SIP-SecurityProfile.png" height="72" width="72" /><thr:total>5</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5758970642763704665.post-1310115492674741435</guid><pubDate>Tue, 19 Aug 2008 08:30:00 +0000</pubDate><atom:updated>2008-08-19T04:24:30.516-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">cisco</category><category domain="http://www.blogger.com/atom/ns#">nokia</category><category domain="http://www.blogger.com/atom/ns#">configuration</category><category domain="http://www.blogger.com/atom/ns#">dual mode</category><category domain="http://www.blogger.com/atom/ns#">mobility</category><title>Cisco and Nokia Dual Mode Part III : Mobility my way</title><description>After having configured the networking part of the problem &lt;a href="http://snippets101.blogspot.com/2008/01/cisco-and-nokia-dual-mode-for-dummies.html"&gt;here &lt;/a&gt;and then refined roaming &lt;a href="http://snippets101.blogspot.com/2008/08/cisco-and-nokia-dual-mode-part-ii-cckm.html"&gt;here&lt;/a&gt;, time's to expose the Communications Manager side.&lt;br /&gt;&lt;br /&gt;Targets were simple :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;People who have a dual-mode phone should always be reachable via IP if in WLAN coverage, regardless the caller dialed the office number or the mobile number.&lt;/li&gt;&lt;li&gt;People who have a dual-mode phone should not be always reachable regardless the number dialed, but only if called on the cellular number, no automatic call diverting from the office number to the mobile number.&lt;/li&gt;&lt;li&gt;The configuration should be as simple as possible and possibly cheap in terms of DLU&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;We decided not to implement the entire Cisco Mobility suite, but a subset of functions so saving DLUs and having the funtionality we needed.&lt;br /&gt;&lt;br /&gt;Extension Mobility is enabled on all the IP Phones and users. Each desk phone  has a dummy (not valid on the PSTN) line in a partition called Logout, from which can call only other desk phones, logged in users and emergency (there's a transformation pattern to make it exit on the PSTN).&lt;br /&gt;&lt;br /&gt;Each user has a device profile with his personal line in a partition called Login (where all the logged in lines are).&lt;br /&gt;&lt;br /&gt;Each dual-mode nokia mobile has two lines : the first shared with the device profile, the second belonging to a partition called Dual-Mode, unreacheable by anyone except from a particular CSS used by translation patterns.&lt;br /&gt;&lt;br /&gt;This way behavior is :&lt;br /&gt;&lt;i&gt;People dialing the user's line while he is logged off from the desk phone and not under WLAN coverage (away) &lt;/i&gt;get fast busy or is redirected to VoiceMail.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;People dialing the user's line while he is logged off from the desk phone but he is under WLAN coverage &lt;/i&gt;succeed in connecting since the line is active on the mobile through the Nokia IntelliSync Call Connect for Cisco.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;People dialing the user's line while he is logged in and under WLAN coverage&lt;/i&gt; makes both the phones ring (shared line). Two notes on this : while in conversation on the mobile you can put the call on hold and then resume it from the desk phone (useful if you answer while away and the you reach your office), if you answer from the desk phone while both ringing, on the mobile you'll find a fake missed call.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;People dialing the user's mobile number while he is under WLAN coverage&lt;/i&gt; will have their call translated to the "hidden" line on the mobile so using VoIP.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;People dialing the user's mobile number while he is not under WLAN coverage&lt;/i&gt; will have their call translated to the "hidden" line on the mobile which have a call forward unregistered entry to the real mobile number.&lt;br /&gt;&lt;br /&gt;Here's how this is configurated :&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Partitions : &lt;/b&gt;&lt;br /&gt;Logout : All the devices with no device profile logged in.&lt;br /&gt;Login : All the lines of the device profiles&lt;br /&gt;DualMode : All the "hidden" second lines on the nokia mobiles.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Desk Phone :&lt;/b&gt;&lt;br /&gt;1000 in Logout partition.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Device Profile :&lt;/b&gt;&lt;br /&gt;2000 in Login partition.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Mobile Phone :&lt;/b&gt;&lt;br /&gt;2000 in Login partition.&lt;br /&gt;&lt;br /&gt;7000 in DualMode partition.&lt;br /&gt;Call Forward Unregistered on #3331234567 (mobile number)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Translation Pattern :&lt;/b&gt;&lt;br /&gt;03331234567 becomes 7000&lt;br /&gt;&lt;i&gt;&lt;span style="font-size:x-small;"&gt;This one makes people looking for you on the mobile being translated on VoIP. &lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Route Pattern :&lt;/b&gt;&lt;br /&gt;#.[3]! -&amp;gt; PreDot discard and prepend 0.&lt;br /&gt;&lt;span style="font-size:x-small;"&gt;&lt;i&gt;If you are not under WLAN coverage, the CFU to  #3331234567 is routed to your real mobile. This is necessary because redirecting on the real number (03331234567) would meake the call enter a loop (the above mentioned translation pattern...)&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Here's some self-explaining slides :&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_Tdhn-HYCK18/SKqschZRitI/AAAAAAAAAlM/oXKcaquLskA/s1600-h/dualmode-configuration.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img src="http://4.bp.blogspot.com/_Tdhn-HYCK18/SKqschZRitI/AAAAAAAAAlM/_ho-ZEjwlhA/s320-R/dualmode-configuration.png" border="0" /&gt;&lt;/a&gt;&lt;a href="http://2.bp.blogspot.com/_Tdhn-HYCK18/SKqsfELNEOI/AAAAAAAAAlU/E1gTsb1X0Us/s1600-h/dualmode-office.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img src="http://2.bp.blogspot.com/_Tdhn-HYCK18/SKqsfELNEOI/AAAAAAAAAlU/2UUycpdafO8/s320-R/dualmode-office.png" border="0" /&gt;&lt;/a&gt;&lt;a href="http://1.bp.blogspot.com/_Tdhn-HYCK18/SKqshJ0o07I/AAAAAAAAAlc/1sNUg3Csrvo/s1600-h/dualmode-insidewlan.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img src="http://1.bp.blogspot.com/_Tdhn-HYCK18/SKqshJ0o07I/AAAAAAAAAlc/Bg4P9vm3Qto/s320-R/dualmode-insidewlan.png" border="0" /&gt;&lt;/a&gt;&lt;a href="http://1.bp.blogspot.com/_Tdhn-HYCK18/SKqsj5Q50rI/AAAAAAAAAlk/aTUbudN4C9k/s1600-h/dualmode-outsidewlan.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img src="http://1.bp.blogspot.com/_Tdhn-HYCK18/SKqsj5Q50rI/AAAAAAAAAlk/0WTjdg2KjFI/s320-R/dualmode-outsidewlan.png" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5758970642763704665-1310115492674741435?l=snippets101.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://snippets101.blogspot.com/2008/08/cisco-and-nokia-dual-mode-part-iii.html</link><author>noreply@blogger.com (Alberto)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_Tdhn-HYCK18/SKqschZRitI/AAAAAAAAAlM/_ho-ZEjwlhA/s72-Rc/dualmode-configuration.png" height="72" width="72" /><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5758970642763704665.post-3687126938146454400</guid><pubDate>Mon, 18 Aug 2008 08:39:00 +0000</pubDate><atom:updated>2008-08-19T04:25:46.469-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">cisco</category><category domain="http://www.blogger.com/atom/ns#">acs</category><category domain="http://www.blogger.com/atom/ns#">nokia</category><category domain="http://www.blogger.com/atom/ns#">leap</category><category domain="http://www.blogger.com/atom/ns#">configuration</category><category domain="http://www.blogger.com/atom/ns#">dual mode</category><title>Cisco and Nokia Dual-Mode Part II : CCKM</title><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_Tdhn-HYCK18/SKqesn-V-LI/AAAAAAAAAlE/hRtLL-5s75I/s1600-h/dual-mode.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img src="http://4.bp.blogspot.com/_Tdhn-HYCK18/SKqesn-V-LI/AAAAAAAAAlE/ejh0ziyPhLs/s320-R/dual-mode.png" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;After having made everything work with EAP-MSCHAPv2 (check out &lt;a href="http://snippets101.blogspot.com/2008/01/cisco-and-nokia-dual-mode-for-dummies.html"&gt;chapter one&lt;/a&gt;) I started the fine tuning session, thus finding some roaming issues.&lt;br /&gt;&lt;br /&gt;In the Nokia IntelliSync Call Connect Datasheet (&lt;a href="http://europe.nokia.com/NOKIA_BUSINESS_26/Europe/Products/Mobile_Software/Cisco_CallManager/NICC_Cisco_Tech_DataSheet_EMEA.pdf"&gt;here&lt;/a&gt;) it is clear that the E-series are CCXv3 compatible.&lt;br /&gt;&lt;br /&gt;On the Cisco side, &lt;a href="http://www.cisco.com/web/partners/pr46/pr147/program_additional_information_new_release_features.html"&gt;this document&lt;/a&gt; says that CCKM with EAP-PEAP (MSCHAP) authentication is supported only with CCXv4 compatible devices.&lt;br /&gt;&lt;br /&gt;Finally, the authentication provided by MS IAS on our infrastructure do not support LEAP (alternative to PEAP) so we need to move to a Cisco RADIUS authenticator i.e. ACS (at least in this phase, later we'll use the Cisco ACS 4 as a proxy vs. domain authentication).&lt;br /&gt;&lt;a href="http://www.cisco.com/en/US/products/hw/wireless/ps4570/products_configuration_example09186a00801bd035.shtml"&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Ok, we have to move from EAP-PEAP (MSCHAPv2) to EAP-LEAP protocol authenticating on Cisco ACS.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.cisco.com/en/US/products/hw/wireless/ps4570/products_configuration_example09186a00801bd035.shtml"&gt;Here&lt;/a&gt;'s the cisco doc on configuring the Cisco ACS for LEAP.&lt;br /&gt;&lt;br /&gt;Once configured, we'll have to change both WLC and Phone's configuration.&lt;br /&gt;&lt;br /&gt;The Wireless LAN Controller (from WCS):&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_Tdhn-HYCK18/SKqSweqSEkI/AAAAAAAAAkc/Ll-3jMtckTY/s1600-h/wcs-leap.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img src="http://4.bp.blogspot.com/_Tdhn-HYCK18/SKqSweqSEkI/AAAAAAAAAkc/cEpg8ZUCsIg/s320-R/wcs-leap.gif" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_Tdhn-HYCK18/SKqSx360gnI/AAAAAAAAAkk/eok7dVvw25w/s1600-h/wcs-leap-2.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img src="http://4.bp.blogspot.com/_Tdhn-HYCK18/SKqSx360gnI/AAAAAAAAAkk/wp7VWkKxgDw/s320-R/wcs-leap-2.gif" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_Tdhn-HYCK18/SKqSy9k2abI/AAAAAAAAAks/GH68Bpy6DEs/s1600-h/wcs-leap-3.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img src="http://2.bp.blogspot.com/_Tdhn-HYCK18/SKqSy9k2abI/AAAAAAAAAks/BC4osQ3Bsa8/s320-R/wcs-leap-3.gif" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_Tdhn-HYCK18/SKqS1Hgv_TI/AAAAAAAAAk0/VUYV7Jknt8Q/s1600-h/wcs-leap-4.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img src="http://4.bp.blogspot.com/_Tdhn-HYCK18/SKqS1Hgv_TI/AAAAAAAAAk0/XnMWqHOCZfY/s320-R/wcs-leap-4.gif" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_Tdhn-HYCK18/SKqS27mo7dI/AAAAAAAAAk8/ukxSU1VpkHs/s1600-h/wcs-leap-5.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img src="http://4.bp.blogspot.com/_Tdhn-HYCK18/SKqS27mo7dI/AAAAAAAAAk8/gpPwNsCSLK4/s320-R/wcs-leap-5.gif" border="0" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;  &lt;/div&gt;&lt;i&gt;Note on the last tab that DHCP Addr. Assignment Required should UNchecked otherwise you could ask for a new IP at each roaming session.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;The Nokia Phone :&lt;br /&gt;&lt;br /&gt;-Connection name : VoWLAN&lt;br /&gt;-Databearer : Wireless WAN&lt;br /&gt;-WLAN netw. name: TEST-ACS&lt;br /&gt;-Network status: Hidden&lt;br /&gt;-WLAN netw. mode: Infrastructure&lt;br /&gt;-WLAN security mode: 802.1x (NOT WPA/WPA2)&lt;br /&gt;-WLAN security settings :&lt;br /&gt;--WPA mode: EAP&lt;br /&gt;--EAP plug-in settings:&lt;br /&gt;---EAP-LEAP (select only this, put in the higher position and disable all the others) :&lt;br /&gt;&lt;br /&gt;---EAP-LEAP Configuration :&lt;br /&gt;----User name: [Your radius user name]&lt;br /&gt;----Prompt password: No&lt;br /&gt;----Password: [Your radius password]&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now set this connection in the SCCP Profile and the registration to Always On (in &lt;a href="http://snippets101.blogspot.com/2008/01/cisco-and-nokia-dual-mode-for-dummies.html"&gt;chapter one &lt;/a&gt;you can find more info and links on this).&lt;br /&gt;&lt;br /&gt;How can I see if CCKM is active ? Obviously user experience is useful, i.e., fast roaming is easily noticeable when speaking and walking togheter. However sometimes you could experience some holes in conversation without knowing if you have misconfigured CCKM or the WLAN coverage is not excellent, or both.&lt;br /&gt;&lt;br /&gt;Debugging a client on the WLC will give you immediate evidence on this.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.cisco.com/en/US/products/hw/wireless/ps430/products_tech_note09186a008091b08b.shtml"&gt;This Cisco doc&lt;/a&gt; is very useful to understand the entire process, however simply checking for a simple word in the debug output is simpler :&lt;br /&gt;&lt;br /&gt;On the WLC issue the command "debug client [mac address of the Nokia device]" (&lt;a href="http://snippets101.blogspot.com/2008/04/nokia-e-series-codesntricks.html"&gt;here&lt;/a&gt;'s how to see the nokia device's WLAN mac address).&lt;br /&gt;&lt;br /&gt;Now start a conversation (ip obviously) with the nokia device and start walking so forcing a roaming. Each roaming makes the debug session display a huge amount of information about authentication, dot1x, etc (debugging...).&lt;br /&gt;If CCKM is well configured, you should see in the roaming session output&lt;br /&gt;&lt;br /&gt;&lt;span style=";font-family:&amp;quot;;" &gt;CCKM: Mobile is using CCKM&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;and NOT see&lt;br /&gt;&lt;br /&gt;&lt;span style=";font-family:&amp;quot;;" &gt;Received EAPOL-key in REKEYNEGOTIATING state&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If you normally experience correct fast roaming (CCKM) sessions and only sometimes you find key renegotiation (together with worse user experience) then you should check WLAN coverage in that areas, however CCKM should be well configured.&lt;br /&gt;&lt;br /&gt;Hope this helps.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5758970642763704665-3687126938146454400?l=snippets101.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://snippets101.blogspot.com/2008/08/cisco-and-nokia-dual-mode-part-ii-cckm.html</link><author>noreply@blogger.com (Alberto)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_Tdhn-HYCK18/SKqesn-V-LI/AAAAAAAAAlE/ejh0ziyPhLs/s72-Rc/dual-mode.png" height="72" width="72" /><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5758970642763704665.post-5049393422340681835</guid><pubDate>Wed, 13 Aug 2008 11:44:00 +0000</pubDate><atom:updated>2008-08-13T07:20:24.589-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">cisco</category><category domain="http://www.blogger.com/atom/ns#">configuration</category><category domain="http://www.blogger.com/atom/ns#">ace</category><category domain="http://www.blogger.com/atom/ns#">pvlan</category><category domain="http://www.blogger.com/atom/ns#">private vlan</category><category domain="http://www.blogger.com/atom/ns#">switch mode</category><title>Cisco ACE and Private VLANs in Switch Mode</title><description>&lt;div style="text-align: justify;"&gt;This one comes from the esigence to create a housing zone with a shared load balancer. The idea is to keep things as simple as possible providing isolation and all advanced load balancing feature.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;So there will be only one vlan for one-armed servers and isolation will be provided by Private VLANs. However, being the ACE shared across the pvlans I had to add access lists to control traffic from one pvlan through another's vip.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Another element of simplicity in this design is the ACE module in switch-mode, this way providing a unique default gateway for all the servers (loadbalanced and not). &lt;/div&gt;&lt;br /&gt;
The network diagram :&lt;br /&gt;
&lt;div class="separator" style="text-align: center; clear: both;"&gt;&lt;/div&gt;&lt;div class="separator" style="text-align: center; clear: both;"&gt;&lt;a href="http://1.bp.blogspot.com/_Tdhn-HYCK18/SKLqGxxNlqI/AAAAAAAAAkU/EMMlJddEJlU/s1600-h/PVLAN-Switch-Mode.gif" imageanchor="1" style="border: 0pt none ; background-color: transparent; margin-left: 1em; margin-right: 1em;"&gt;&lt;img src="http://1.bp.blogspot.com/_Tdhn-HYCK18/SKLqGxxNlqI/AAAAAAAAAkU/w6naIidA0CQ/s320-R/PVLAN-Switch-Mode.gif" style="border: 0pt none ;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
The ACE configuration :&lt;br /&gt;
&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;font size="2"&gt;&lt;br /&gt;
&lt;/font&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;font size="2"&gt;switch-mode&lt;/font&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;font size="2"&gt;&lt;br /&gt;
&lt;/font&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;font size="2"&gt;rserver host SERVER-10.1&lt;/font&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;font size="2"&gt;ip address 10.0.10.1&lt;/font&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;font size="2"&gt;inservice&lt;/font&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;font size="2"&gt;rserver host SERVER-10.2&lt;/font&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;font size="2"&gt;ip address 10.0.10.2&lt;/font&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;font size="2"&gt;inservice&lt;/font&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;font size="2"&gt;&lt;br /&gt;
&lt;/font&gt;&lt;/div&gt;&lt;font size="2"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;serverfarm host LAB-A_20.1:80&lt;/span&gt;&lt;/font&gt;&lt;br /&gt;
&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;font size="2"&gt;rserver SERVER-10.1 80&lt;/font&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;font size="2"&gt;inservice&lt;/font&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;font size="2"&gt;rserver SERVER-10.2 80&lt;/font&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;font size="2"&gt;inservice&lt;/font&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;font size="2"&gt;&lt;br /&gt;
&lt;/font&gt;&lt;/div&gt;&lt;font size="2"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;serverfarm host LAB-B_21.1:80&lt;/span&gt;&lt;/font&gt;&lt;br /&gt;
&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;font size="2"&gt;rserver SERVER-10.3 80&lt;/font&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;font size="2"&gt;inservice&lt;/font&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;font size="2"&gt;rserver SERVER-10.4 80&lt;/font&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;font size="2"&gt;inservice&lt;/font&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;font size="2"&gt;&lt;br /&gt;
&lt;/font&gt;&lt;br /&gt;
&lt;font size="2"&gt;class-map match-any L4-SNAT&lt;br /&gt;
2 match source-address 1.0.10.0 255.255.255.0&lt;/font&gt;&lt;br /&gt;
&lt;font size="2"&gt;&lt;br /&gt;
&lt;/font&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;font size="2"&gt;class-map match-all L4-LAB-A_20.1:80&lt;/font&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;font size="2"&gt;2 match virtual-address 10.0.20.1 tcp eq www&lt;/font&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;font size="2"&gt;&lt;br /&gt;
&lt;/font&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;font size="2"&gt;class-map match-all L4-LAB-B_21.1:80&lt;/font&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;font size="2"&gt;2 match virtual-address 10.0.21.1 tcp eq www&lt;/font&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;font size="2"&gt;policy-map type loadbalance first-match L7-LAB-A_20.1:80&lt;/font&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;font size="2"&gt;class class-default&lt;/font&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;font size="2"&gt;serverfarm LAB-A_20.1:80&lt;/font&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;font size="2"&gt;policy-map type loadbalance first-match L7-LAB-B_21.1:80&lt;/font&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;font size="2"&gt;class class-default&lt;/font&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;font size="2"&gt;serverfarm LAB-B_21.1:80&lt;/font&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;font size="2"&gt;policy-map multi-match L4-POLICYMAPMULTI&lt;/font&gt;&lt;br /&gt;
&lt;font size="2"&gt;class L4-SNAT&lt;br /&gt;
nat dynamic 10 vlan 100 &lt;br /&gt;
&lt;/font&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;font size="2"&gt;class L4-LAB-A_20.1:80&lt;/font&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;font size="2"&gt;loadbalance vip inservice&lt;/font&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;font size="2"&gt;loadbalance policy L7-LAB-A_20.1:80&lt;/font&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;font size="2"&gt;loadbalance vip icmp-reply active&lt;/font&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;font size="2"&gt;class L4-LAB-B_21.1:80&lt;/font&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;font size="2"&gt;loadbalance vip inservice&lt;/font&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;font size="2"&gt;loadbalance policy L7-LAB-B_21.1:80&lt;/font&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;font size="2"&gt;loadbalance vip icmp-reply active&lt;/font&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;font size="2"&gt;&lt;br /&gt;
&lt;/font&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;font size="2"&gt;service-policy input L4-POLICYMAPMULTI&lt;/font&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;font size="2"&gt;&lt;br /&gt;
&lt;/font&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;font size="2"&gt;&lt;br /&gt;
&lt;/font&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;font size="2"&gt;interface vlan 100&lt;/font&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;font size="2"&gt;description SERVERSIDE&lt;/font&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;font size="2"&gt;ip address 1.1.1.200 255.255.255.0&lt;/font&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;font size="2"&gt;no normalization&lt;/font&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;font size="2"&gt;no icmp-guard&lt;/font&gt;&lt;br /&gt;
&lt;font size="2"&gt;nat-pool 10 10.0.100.1 &lt;/font&gt;&lt;font size="2"&gt;10.0.100.15&lt;/font&gt;&lt;font size="2"&gt; netmask 255.255.255.224 pat &lt;br /&gt;
&lt;/font&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;font size="2"&gt;no shutdown&lt;/font&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;font size="2"&gt;interface vlan 150&lt;/font&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;font size="2"&gt;description FIREWALLSIDE&lt;/font&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;font size="2"&gt;ip address 1.0.0.2 255.255.255.0&lt;/font&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;font size="2"&gt;no normalization&lt;/font&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;font size="2"&gt;no icmp-guard&lt;/font&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;font size="2"&gt;no shutdown&lt;/font&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;font size="2"&gt;&lt;br /&gt;
&lt;/font&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;font size="2"&gt;ip route 0.0.0.0 0.0.0.0 1.0.0.1&lt;/font&gt;&lt;/div&gt;&lt;br /&gt;
The router's configuration :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify; font-family: Arial,Helvetica,sans-serif;"&gt;&lt;font size="2"&gt;svclc module 11 vlan-group 100&lt;/font&gt;&lt;/div&gt;&lt;div style="text-align: justify; font-family: Arial,Helvetica,sans-serif;"&gt;&lt;font size="2"&gt;svclc vlan-group 100&amp;nbsp; 10,20,100,150&lt;/font&gt;&lt;/div&gt;&lt;div style="text-align: justify; font-family: Arial,Helvetica,sans-serif;"&gt;&lt;font size="2"&gt;&lt;br /&gt;
&lt;/font&gt;&lt;/div&gt;&lt;div style="text-align: justify; font-family: Arial,Helvetica,sans-serif;"&gt;&lt;font size="2"&gt;vlan 10&lt;br /&gt;
&amp;nbsp; private-vlan community&lt;br /&gt;
&lt;br /&gt;
vlan 20&lt;br /&gt;
&amp;nbsp; private-vlan community&lt;br /&gt;
&lt;br /&gt;
vlan 100&lt;br /&gt;
&amp;nbsp; name SERVERSIDE&lt;/font&gt;&lt;/div&gt;&lt;div style="text-align: justify; font-family: Arial,Helvetica,sans-serif;"&gt;&lt;font size="2"&gt;&amp;nbsp; private-vlan primary&lt;br /&gt;
&amp;nbsp; private-vlan association 10,20&lt;br /&gt;
&lt;br /&gt;
vlan 150&lt;br /&gt;
&amp;nbsp;name P2P-C65-ACE&lt;/font&gt;&lt;/div&gt;&lt;div style="text-align: justify; font-family: Arial,Helvetica,sans-serif;"&gt;&lt;font size="2"&gt;&lt;br /&gt;
&lt;/font&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;font size="2"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;interface Vlan100&lt;/span&gt;&lt;br style="font-family: Arial,Helvetica,sans-serif;" /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;ip vrf forwarding LAB&lt;/span&gt;&lt;br style="font-family: Arial,Helvetica,sans-serif;" /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp; private-vlan mapping 10,20&lt;/span&gt;&lt;br style="font-family: Arial,Helvetica,sans-serif;" /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br style="font-family: Arial,Helvetica,sans-serif;" /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;interface Vlan150&lt;/span&gt;&lt;br style="font-family: Arial,Helvetica,sans-serif;" /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;ip vrf forwarding LAB&lt;/span&gt;&lt;br style="font-family: Arial,Helvetica,sans-serif;" /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;ip address 10.0.0.1 255.255.255.240&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;As usual, on the ACE there's a nat pool to permit server to server load balancing, further information &lt;a href="http://snippets101.blogspot.com/2007/06/dual-armed-server-to-server-load.html"&gt;here&lt;/a&gt; and &lt;a href="http://snippets101.blogspot.com/2007/12/source-nat-on-cisco-ace.html"&gt;here&lt;/a&gt;.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;"Horizontal" connections across the VLAN's broadcast are prevented by the private vlans' mechanism. However, a server belonging to the PVLAN A can connect to a VIP belonging (logically, as VIPs on the ACE are not PVLAN aware) to PVLAN B.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Being the ACE the default gateway, default behavior must be permit ip any any. Using access-lists and object-groups I created a matrix of negations between real servers on each pvlan versus all the VIPs of the other PVLANs :&lt;/div&gt;&lt;br /&gt;
&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;font size="2"&gt;object-group network GROUPA&lt;/font&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;font size="2"&gt;host 10.0.10.1&lt;/font&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;font size="2"&gt;host 10.0.10.2&lt;br /&gt;
&lt;/font&gt; &lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;font size="2"&gt;object-group network GROUPB&lt;/font&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;font size="2"&gt;host 10.0.10.3&lt;/font&gt;&lt;/div&gt;&lt;font size="2"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;host 10.0.10.4&lt;/span&gt;&lt;/font&gt;&lt;br /&gt;
&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;font size="2"&gt;object-group network VIPSGROUPA&lt;/font&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;font size="2"&gt;host 10.0.20.1&lt;/font&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;font size="2"&gt;object-group network VIPSGROUPB&lt;/font&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;font size="2"&gt;host 10.0.20.2&lt;/font&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;font size="2"&gt;&lt;br /&gt;
&lt;/font&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;font size="2"&gt;access-list ACL01 line 7 extended deny ip object-group GROUPA object-group VIPSGROUPB &lt;/font&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;font size="2"&gt;access-list ACL01 line 11 extended deny ip object-group GROUPA object-group VIPSGROUPB &lt;/font&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;font size="2"&gt;access-list ACL01 line 15 extended permit ip any any&lt;/font&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;font size="2"&gt;access-group input ACL01 &lt;br /&gt;
&lt;/font&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Again, many thanks to &lt;a href="http://www.linkedin.com/pub/5/291/603"&gt;Daniele &lt;/a&gt;and &lt;a href="http://www.linkedin.com/pub/6/175/b97"&gt;Marco &lt;/a&gt;&amp;nbsp; for support on the lab.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5758970642763704665-5049393422340681835?l=snippets101.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://snippets101.blogspot.com/2008/08/cisco-ace-and-private-vlans-in-switch.html</link><author>noreply@blogger.com (Alberto)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_Tdhn-HYCK18/SKLqGxxNlqI/AAAAAAAAAkU/w6naIidA0CQ/s72-Rc/PVLAN-Switch-Mode.gif" height="72" width="72" /><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5758970642763704665.post-4840677850507593967</guid><pubDate>Tue, 12 Aug 2008 10:42:00 +0000</pubDate><atom:updated>2008-08-13T03:50:06.068-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">server</category><category domain="http://www.blogger.com/atom/ns#">cisco</category><category domain="http://www.blogger.com/atom/ns#">asn</category><category domain="http://www.blogger.com/atom/ns#">configuration</category><category domain="http://www.blogger.com/atom/ns#">ace</category><category domain="http://www.blogger.com/atom/ns#">normalization</category><category domain="http://www.blogger.com/atom/ns#">asymmetric</category><title>Asymmetric Server Normalization on Cisco ACE</title><description>Summertime, I've some time to spend in the lab to try some new scenarios, optimization or try something read on the release notes.&lt;br /&gt;This scenario is mostly a proof of concept as in our DataCenter many applications use server to server load balancing and it requires a too messy configuration to make it work with ASN.&lt;br /&gt;From the &lt;a href="http://www.cisco.com/en/US/docs/interfaces_modules/services_modules/ace/v3.00_A2/configuration/slb/guide/rsfarms.html"&gt;Cisco doc&lt;/a&gt; :&lt;br /&gt;&lt;span class="content"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span class="content"&gt;&lt;span style="font-weight: bold;"&gt;Asymmetric Server Normalization&lt;/span&gt; (ASN) allows the ACE to load balance an initial request from the client to a real server; however, the server directly responds to the client bypassing the ACE. This behavior allows the acceleration of server to client communications and is transparent to the client. When the ACE operates in ASN, it does not perform any network translation when receiving packets destined to the VIP address. Traffic from the client hits the VIP address and the ACE uses the address as the destination address but rewrites the destination MAC address to the address of the real server. &lt;/span&gt;&lt;/blockquote&gt;So the match is speed vs. capabilities.&lt;br /&gt;Since the ACE do not control the entire flow (it sees only the packets vs. the VIP) most of the advanced load balancing features aren't usable.&lt;br /&gt;However, in some cases, where speed is the most important thing and the application flow is quite simple it could be a good choice.&lt;br /&gt;Here's my implementation :&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Tdhn-HYCK18/SKGWUzrw0gI/AAAAAAAAAjk/2wR4mjAOn3g/s1600-h/ASN-simple.gif"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; cursor: pointer;" src="http://3.bp.blogspot.com/_Tdhn-HYCK18/SKGWUzrw0gI/AAAAAAAAAjk/2wR4mjAOn3g/s320/ASN-simple.gif" alt="" id="BLOGGER_PHOTO_ID_5233629526196539906" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;On the ACE :&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;access-list ACL01 line 8 extended permit ip any any&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);font-family:arial;" &gt;! The probe should check for the health status of the loopback interface &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);font-family:arial;" &gt;! on the real server.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;probe icmp ICMP&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;ip address 10.0.20.1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;interval 5&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;rserver host SERVER-10.1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;ip address 10.0.10.1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;inservice&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;rserver host SERVER-10.2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;ip address 10.0.10.2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;inservice&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);font-family:arial;" &gt;! The transparent command prevents the ACE to make a destination NAT,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);font-family:arial;" &gt;! sending the packet as is to the real server.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;serverfarm host LAB_20.1:80&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;transparent&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;probe ICMP&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;rserver SERVER-10.1 80&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;inservice&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;rserver SERVER-10.2 80&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;inservice&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;class-map match-all L4-LAB_20.1:80&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;2 match virtual-address 10.0.20.1 tcp eq www&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;policy-map type loadbalance first-match L7-LAB_20.1:80&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;class class-default&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;serverfarm LAB_20.1:80&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;policy-map multi-match L4-POLICYMAPMULTI&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;class L4-LAB_20.1:80&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;loadbalance vip inservice&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;loadbalance policy L7-LAB_20.1:80&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;loadbalance vip icmp-reply active&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;service-policy input L4-POLICYMAPMULTI&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;access-group input ACL01&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);font-family:arial;" &gt;!The ACE is used as a bare load balancer, diasbling normalization (to make ASN work),&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);font-family:arial;" &gt;! and icmp-guard.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;interface vlan 100&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;description SERVERSIDE&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;ip address 1.1.1.199 255.255.255.0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;no normalization&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;no icmp-guard&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;no shutdown&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;interface vlan 150&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;description FIREWALLSIDE&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;ip address 1.0.0.2 255.255.255.0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;no normalization&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;no icmp-guard&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;no shutdown&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;ip route 0.0.0.0 0.0.0.0 1.0.0.1&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;On the router :&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:arial;"&gt;ip route vrf LAB 10.0.20.0 255.255.255.0 10.0.0.2&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This way everything works fine. Now it's time to make server to server load balancing work in this scenario.&lt;br /&gt;What I wanted to work is a load balanced server that calls for its VIP being load balanced on itself or on another real server in the same area. Note that &lt;a href="http://snippets101.blogspot.com/2007/12/source-nat-on-cisco-ace.html"&gt;this scenario&lt;/a&gt; is different since here real server's are one-armed.&lt;br /&gt;&lt;br /&gt;The choice to have a point-to-point vlan between the router and the ACE comes with the esigence to control traffic for some feature I needed described further. For simple ASN scenarios the ACE could easily have only one arm on the real servers' vlan (100).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Here's some observations I made :&lt;br /&gt;1) Without any further configuration, server to server loadbalancing doesn't work as there's a loopback interface on the server with the VIP configured on it, you'll never get out of it.&lt;br /&gt;2) You will need both source NAT and destination NAT to make it work.&lt;br /&gt;3) You will have to make the ACE see all of the flow to make the NAT work.&lt;br /&gt;4) You can't use ASN for server to server load balancing&lt;br /&gt;&lt;br /&gt;I will not enumerate all of the tries I made to make it work (from which come the observations), here's my solution : double NAT (source and destination) on the router (6513 in this case) so that the ACE treats the connection as a normal external client request.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Tdhn-HYCK18/SKGjH99ysRI/AAAAAAAAAjs/7hxVMUyC8q8/s1600-h/ASN-ServerToServer.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_Tdhn-HYCK18/SKGjH99ysRI/AAAAAAAAAjs/7hxVMUyC8q8/s320/ASN-ServerToServer.gif" alt="" id="BLOGGER_PHOTO_ID_5233643599269376274" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Here's the router's configuration :&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:arial;"&gt;interface Vlan100&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt; ip vrf forwarding LAB&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt; ip address 10.0.10.200 255.255.255.0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt; ip nat outside&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;interface Vlan150&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt; ip vrf forwarding LAB&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt; ip address 10.0.0.1 255.255.255.0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt; ip nat inside&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;ip nat inside source static 10.0.20.1 4.4.4.1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;ip nat outside source static 10.0.10.1 6.6.6.1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;ip route vrf LAB 10.0.20.0 255.255.255.0 10.0.0.2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;ip route vrf LAB 4.4.4.0 255.255.255.0 10.0.0.2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;ip route vrf LAB 6.6.6.1 255.255.255.255 10.0.10.199&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The last route is a little tricky : as returning packets come from an outside zone to an inside one, packets need to be first routed and the natted. So you'll have to put a "fake" route versus an inside endpoint to make the packet then match the nat rule.&lt;br /&gt;&lt;br /&gt;On the real servers you have a route to make all NATted request return by the ACE and not by the default gateway (router). These requests are easily identified by the source address (6.6.6.1).&lt;br /&gt;&lt;br /&gt;Note that ASN and server to server load balancing with double NAT (source and destination)  can be implemented both on the same box.&lt;br /&gt;&lt;br /&gt;Thanks to &lt;a href="http://www.linkedin.com/pub/5/291/603"&gt;Daniele &lt;/a&gt;and &lt;a href="http://www.linkedin.com/pub/6/175/b97"&gt;Marco &lt;/a&gt;for helping me in the lab.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5758970642763704665-4840677850507593967?l=snippets101.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://snippets101.blogspot.com/2008/08/asymmetric-server-normalization-on.html</link><author>noreply@blogger.com (Alberto)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_Tdhn-HYCK18/SKGWUzrw0gI/AAAAAAAAAjk/2wR4mjAOn3g/s72-c/ASN-simple.gif" height="72" width="72" /><thr:total>9</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5758970642763704665.post-1238331043233314269</guid><pubDate>Fri, 18 Apr 2008 09:22:00 +0000</pubDate><atom:updated>2009-02-18T09:11:22.891-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">mac address</category><category domain="http://www.blogger.com/atom/ns#">firmware</category><category domain="http://www.blogger.com/atom/ns#">nokia</category><category domain="http://www.blogger.com/atom/ns#">e65</category><category domain="http://www.blogger.com/atom/ns#">dual mode</category><category domain="http://www.blogger.com/atom/ns#">e61i</category><category domain="http://www.blogger.com/atom/ns#">codes</category><title>Nokia E series codes'n'tricks</title><description>Here's some codes and tricks I've found useful while deploying a Cisco WLC - Nokia Dual Mode architecture.&lt;br /&gt;
&lt;br /&gt;
These apply to th e series phones.&lt;br /&gt;
&lt;br /&gt;
To see the phone's &lt;span style="font-weight: bold;"&gt;WLAN mac-address&lt;/span&gt; :&lt;br /&gt;
Check behind the battery, or&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;*#62209526#&lt;/span&gt; (mnemonic trick : it is like writing "*#mac wlan#" with T9) will display it.&lt;br /&gt;
&lt;br /&gt;
To reset to factory defaults, get to Tools-&amp;gt;Settings-&amp;gt;Phone-&amp;gt;General-&amp;gt;Orig. phone settings&lt;br /&gt;
The &lt;span style="font-weight: bold;"&gt;default unlock code&lt;/span&gt; is &lt;span style="font-weight: bold;"&gt;12345&lt;/span&gt;.&lt;br /&gt;
&lt;br /&gt;
There is also a code to reset the ROM and the factory defaults, without deleting data files : &lt;span style="font-weight: bold;"&gt;*#7780#&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Then there's the &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Deep Reset&lt;/span&gt; code : &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;*#7370#&lt;/span&gt;&lt;br /&gt;
This one resets factory settings, deletes every data file and uninstall everything. This reset asks for the unlock code too.&lt;br /&gt;
&lt;br /&gt;
To read the phone's &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;IMEI &lt;/span&gt;: &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;*#06#&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
To check the &lt;span style="font-weight: bold;"&gt;phone's firmware version&lt;/span&gt; the code is &lt;span style="font-weight: bold;"&gt;*#0000#&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Then determine if &lt;span style="font-weight: bold;"&gt;firmware version is up to date&lt;/span&gt; :&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;a href="http://europe.nokia.com/A4577224" style="font-weight: bold;"&gt;http://europe.nokia.com/A4577224&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5758970642763704665-1238331043233314269?l=snippets101.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://snippets101.blogspot.com/2008/04/nokia-e-series-codesntricks.html</link><author>noreply@blogger.com (Alberto)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5758970642763704665.post-2733495502718053857</guid><pubDate>Tue, 08 Apr 2008 08:54:00 +0000</pubDate><atom:updated>2008-04-18T09:14:43.960-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">cisco</category><category domain="http://www.blogger.com/atom/ns#">httpwebrequest</category><category domain="http://www.blogger.com/atom/ns#">xmlhttpclass</category><category domain="http://www.blogger.com/atom/ns#">xml</category><category domain="http://www.blogger.com/atom/ns#">c#</category><category domain="http://www.blogger.com/atom/ns#">CiscoIPPhoneError</category><title>Push XML to my Cisco IP Phone in .NET</title><description>Or "the Expect-100 story", or the "CiscoIPPhoneError 6 quest"...&lt;br /&gt;&lt;br /&gt;I was trying to do a simple thing, i.e., push XML to my Cisco IP Phone, in order to make it display a message and/or display a sound.&lt;br /&gt;Theory is simple : POST an XML message to the IP Phone's /CGI/Execute by means of a simple HTTP connection.&lt;br /&gt;I decided to use the C# &lt;span style="color: rgb(51, 51, 255);"&gt;HttpWebRequest &lt;/span&gt;object, thinking it's exactly what I needed.&lt;br /&gt;&lt;br /&gt;Note : this is a story of a good workaround, not of the solution, I'm still workin' on it, stay tuned.&lt;br /&gt;&lt;br /&gt;What I wanted was to post this to my IP Phone :&lt;br /&gt;"&lt;span style="color: rgb(255, 0, 0);"&gt;XML=&amp;lt;ciscoipphoneexecute&amp;gt;&amp;lt;executeitem priority="0" url="Play:chime.raw"&amp;gt;&amp;lt;executeitem priority="0" url="http://10.10.10.10:8080/textmessage.xml"&amp;gt;&amp;lt;/executeitem&amp;gt;&lt;/span&gt;"&lt;br /&gt;&lt;br /&gt;that means : play chime.raw and display the xml returned by a GET from the phone on http://10.10.10.10:8080/textmessage.xml&lt;br /&gt;&lt;br /&gt;Here's my simple HttpWebRequest code (NOT working...)&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);font-size:85%;" &gt;string &lt;/span&gt;&lt;span style="font-size:85%;"&gt;sXML = "&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:85%;" &gt;XML=&amp;lt;ciscoipphoneexecute&amp;gt;&amp;lt;executeitem priority="0" url="Play:chime.raw"&amp;gt;&amp;lt;executeitem priority="0" url="http://10.10.10.10:8080/textmessage.xml"&amp;gt;&amp;lt;/executeitem&amp;gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;"&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);font-size:85%;" &gt;HttpWebRequest &lt;/span&gt;&lt;span style="font-size:85%;"&gt;webRequest = (&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);font-size:85%;" &gt;HttpWebRequest&lt;/span&gt;&lt;span style="font-size:85%;"&gt;)&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);font-size:85%;" &gt;HttpWebRequest&lt;/span&gt;&lt;span style="font-size:85%;"&gt;.Create("&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:85%;" &gt;http://10.1.1.1/CGI/Execute&lt;/span&gt;&lt;span style="font-size:85%;"&gt;");&lt;br /&gt;webRequest.Method = "POST";&lt;br /&gt;webRequest.Credentials = &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);font-size:85%;" &gt;new &lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);font-size:85%;" &gt;NetworkCredential&lt;/span&gt;&lt;span style="font-size:85%;"&gt;("&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:85%;" &gt;test&lt;/span&gt;&lt;span style="font-size:85%;"&gt;", "&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:85%;" &gt;test&lt;/span&gt;&lt;span style="font-size:85%;"&gt;");&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);font-size:85%;" &gt;byte&lt;/span&gt;&lt;span style="font-size:85%;"&gt;[] bArr = Encoding.UTF8.GetBytes(sXML);&lt;br /&gt;webRequest.ContentType = "&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:85%;" &gt;application/x-www-form-urlencoded&lt;/span&gt;&lt;span style="font-size:85%;"&gt;";&lt;br /&gt;webRequest.ContentLength = bArr.Length;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);font-size:85%;" &gt;Stream &lt;/span&gt;&lt;span style="font-size:85%;"&gt;dataStream = webRequest.GetRequestStream();&lt;br /&gt;dataStream.Write(byteArray, 0, byteArray.Length);&lt;br /&gt;dataStream.Close();&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);font-size:85%;" &gt;HttpWebResponse &lt;/span&gt;&lt;span style="font-size:85%;"&gt;response = (&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);font-size:85%;" &gt;HttpWebResponse&lt;/span&gt;&lt;span style="font-size:85%;"&gt;)webRequest.GetResponse();&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;All I obtained was always a very annoying&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&amp;lt;CiscoIPPhoneError Number="6" /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I found nothing on this error, as Cisco docs say :&lt;br /&gt;&lt;blockquote&gt;&lt;h2&gt;CiscoIPPhoneError&lt;/h2&gt; &lt;p&gt; The following list gives possible CiscoIPPhoneError codes:&lt;/p&gt; &lt;ul&gt;&lt;li&gt;Error 1 = Error parsing CiscoIPPhoneExecute object&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Error 2 = Error framing CiscoIPPhoneResponse object&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Error 3 = Internal file error&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Error 4 = Authentication error&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;So I started sniffing the POST from my dev box to the phone observing some strange traffic before sending the POST message.&lt;br /&gt;The reason is .NET implementation of the HTTP request, that add an Expect 100-Continue header on the very first packet, and then send the real POST after receiving the 100-Continue from the server (the IP Phone in this case).&lt;br /&gt;&lt;br /&gt;You can find a more exhaustive explanation on this &lt;a href="http://haacked.com/archive/2004/05/15/http-web-request-expect-100-continue.aspx"&gt;here&lt;/a&gt;.&lt;br /&gt;Note that implementing the solution indicated (set the System.Net.ServicePointManager.Expect100Continue to false) worked not on my code, I'm still workin' on it.&lt;br /&gt;&lt;br /&gt;My solution, or workaround if you wish, was to use a simpler object, the MSXML2.XMLHTTPClass class.&lt;br /&gt;&lt;br /&gt;Here's the working code :&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);font-size:85%;" &gt;string &lt;/span&gt;&lt;span style="font-size:85%;"&gt;sXML = "&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:85%;" &gt;XML=&amp;lt;ciscoipphoneexecute&amp;gt;&amp;lt;executeitem priority="0" url="Play:chime.raw"&amp;gt;&amp;lt;executeitem priority="0" url="http://10.10.10.10:8080/textmessage.xml"&amp;gt;&amp;lt;/executeitem&amp;gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;"&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);font-size:85%;" &gt;byte&lt;/span&gt;&lt;span style="font-size:85%;"&gt;[] bb = System.Text.&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);font-size:85%;" &gt;ASCIIEncoding&lt;/span&gt;&lt;span style="font-size:85%;"&gt;.UTF8.GetBytes("test" + ":" + "test");&lt;br /&gt;MSXML2.&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);font-size:85%;" &gt;XMLHTTPClass &lt;/span&gt;&lt;span style="font-size:85%;"&gt;xmlhttp = new MSXML2.&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);font-size:85%;" &gt;XMLHTTPClass&lt;/span&gt;&lt;span style="font-size:85%;"&gt;();&lt;br /&gt;&lt;br /&gt;xmlhttp.open("&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:85%;" &gt;POST&lt;/span&gt;&lt;span style="font-size:85%;"&gt;", "&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:85%;" &gt;http://10.1.1.1/CGI/Execute&lt;/span&gt;&lt;span style="font-size:85%;"&gt;", &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);font-size:85%;" &gt;true&lt;/span&gt;&lt;span style="font-size:85%;"&gt;, "", "");&lt;br /&gt;xmlhttp.setRequestHeader("&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:85%;" &gt;Authorization&lt;/span&gt;&lt;span style="font-size:85%;"&gt;", "&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:85%;" &gt;Basic &lt;/span&gt;&lt;span style="font-size:85%;"&gt;" + &lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);font-size:85%;" &gt;Convert&lt;/span&gt;&lt;span style="font-size:85%;"&gt;.ToBase64String(bb));&lt;br /&gt;xmlhttp.setRequestHeader("&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:85%;" &gt;Connection&lt;/span&gt;&lt;span style="font-size:85%;"&gt;", "&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:85%;" &gt;close&lt;/span&gt;&lt;span style="font-size:85%;"&gt;");&lt;br /&gt;xmlhttp.setRequestHeader("&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:85%;" &gt;Content-type&lt;/span&gt;&lt;span style="font-size:85%;"&gt;", "&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:85%;" &gt;application/x-www-form-urlencoded&lt;/span&gt;&lt;span style="font-size:85%;"&gt;");&lt;br /&gt;xmlhttp.send(sXML);&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5758970642763704665-2733495502718053857?l=snippets101.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://snippets101.blogspot.com/2008/04/push-xml-to-my-cisco-ip-phone-in-net.html</link><author>noreply@blogger.com (Alberto)</author><thr:total>15</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5758970642763704665.post-3597417713646304577</guid><pubDate>Thu, 07 Feb 2008 16:43:00 +0000</pubDate><atom:updated>2008-08-19T01:42:21.884-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">cisco</category><category domain="http://www.blogger.com/atom/ns#">configuration</category><category domain="http://www.blogger.com/atom/ns#">unified presence server</category><category domain="http://www.blogger.com/atom/ns#">ibm</category><category domain="http://www.blogger.com/atom/ns#">errors</category><title>Cisco Unified Presence Server on my IBM server</title><description>Time to install my Presence Server to test interaction with Microsoft...&lt;br /&gt;&lt;br /&gt;No Cisco MCS this time, so I obtained from Cisco the list of compatible servers :&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoPlainText"&gt;&lt;a href="http://www.cisco.com/en/US/prod/collateral/voicesw/ps6790/ps5748/ps378/product_solution_overview0900aecd80091615.html"&gt;click me&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;Unified Presence Server 6.0(2) has the same requisites of the CUCM 6.0.&lt;br /&gt;&lt;br /&gt;However I tried to use a different processor (more powerful), having the install script to state the the hardware is incompatible.&lt;br /&gt;&lt;br /&gt;No workaround till now, however, I found the hardware check log, useful to see what went wrong :&lt;br /&gt;&lt;br /&gt;Once the install srcript fails, DO NOT press the "Cancel install" button.&lt;br /&gt;Press ALT+CTRL+F2 to switch console.&lt;br /&gt;At the prompt :&lt;br /&gt;"cd /var/state/xkb/"&lt;br /&gt;then&lt;br /&gt;"cat hw_validation_err"&lt;br /&gt;Here's what I found :&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;The hardware you are using is not supported for this software&lt;br /&gt;&lt;br /&gt;Hardware-check results:&lt;br /&gt;&lt;table border="0" cellpadding="0" cellspacing="0"&gt;&lt;br /&gt;&lt;tr &gt;&lt;br /&gt;&lt;td&gt;HW type [Vendor/Product]&lt;/td&gt;&lt;td&gt;OK&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr style="font-family: courier new;"&gt;&lt;br /&gt;&lt;td&gt;Number of CPUs (1)&lt;/td&gt;&lt;td&gt;OK&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr style="font-family: courier new;"&gt;&lt;br /&gt;&lt;td&gt;Clock Speed  (3600 MHz)&lt;/td&gt;&lt;td&gt;NOT SUPPORTED&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr style="font-family: courier new;"&gt;&lt;br /&gt;&lt;td&gt;Memory size (2048 Mb)&lt;/td&gt;&lt;td&gt;OK&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/table&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5758970642763704665-3597417713646304577?l=snippets101.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://snippets101.blogspot.com/2008/02/cisco-unified-presence-server-on-my-ibm.html</link><author>noreply@blogger.com (Alberto)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5758970642763704665.post-8995917499112381625</guid><pubDate>Wed, 30 Jan 2008 16:43:00 +0000</pubDate><atom:updated>2008-08-20T08:28:56.873-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">cisco</category><category domain="http://www.blogger.com/atom/ns#">nokia</category><category domain="http://www.blogger.com/atom/ns#">network</category><category domain="http://www.blogger.com/atom/ns#">e65</category><category domain="http://www.blogger.com/atom/ns#">configuration</category><category domain="http://www.blogger.com/atom/ns#">wireless</category><title>Cisco and Nokia Dual-Mode for Dummies</title><description>&lt;a href="http://bp2.blogger.com/_Tdhn-HYCK18/R6NavGsFG3I/AAAAAAAAAhs/EdE0MMZ6Dxw/s1600-h/dual-mode.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5162069363192568690" src="http://bp2.blogger.com/_Tdhn-HYCK18/R6NavGsFG3I/AAAAAAAAAhs/EdE0MMZ6Dxw/s320/dual-mode.png" style="cursor: pointer; display: block; margin: 0px auto 10px; text-align: center;" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
Finally I succeeded in configuring my dual-mode &lt;a href="http://www.nokiausa.com/link?cid=PLAIN_TEXT_655364"&gt;Nokia e65&lt;/a&gt; as a &lt;a href="http://www.cisco.com/en/US/solutions/collateral/ns340/ns394/ns348/ns772/networking_solution_solution_overview0900aecd806f64f0.pdf"&gt;SCCP client&lt;/a&gt; for our Cisco Unified Communication Manager 6.&lt;br /&gt;
&lt;br /&gt;
As it wasn't simple at all to set up the Nokia to use the Cisco's recommended WLAN security configuration I publish here the result of two days of tweaking on both Cisco WLC and my Nokia e65.&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
Cisco says (&lt;a href="http://www.cisco.com/application/pdf/en/us/guest/netsol/ns656/c649/ccmigration_09186a0080923473.pdf"&gt;link here&lt;/a&gt;) :&lt;br /&gt;
&lt;blockquote&gt;The optimal configuration for the controller configuration for the WLAN supporting Cisco Unified Wireless IP Phone 7921s is for the WPA security protocol with TKIP encryption and IEEE 802.1X with CCKM key management.&lt;/blockquote&gt;So, here's how my WLC looks like (seen from WCS) :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://bp3.blogger.com/_Tdhn-HYCK18/R6IT9msFG0I/AAAAAAAAAhU/HGT_TpdOm_0/s1600-h/general.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5161710071998389058" src="http://bp3.blogger.com/_Tdhn-HYCK18/R6IT9msFG0I/AAAAAAAAAhU/HGT_TpdOm_0/s320/general.png" style="cursor: pointer; display: block; margin: 0px auto 10px; text-align: center;" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://bp3.blogger.com/_Tdhn-HYCK18/R6IUFmsFG1I/AAAAAAAAAhc/EV6TaPjIZXg/s1600-h/layer2.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5161710209437342546" src="http://bp3.blogger.com/_Tdhn-HYCK18/R6IUFmsFG1I/AAAAAAAAAhc/EV6TaPjIZXg/s320/layer2.png" style="cursor: pointer; display: block; margin: 0px auto 10px; text-align: center;" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://bp0.blogger.com/_Tdhn-HYCK18/R6IUO2sFG2I/AAAAAAAAAhk/XjFQuB-ncVA/s1600-h/aaa.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5161710368351132514" src="http://bp0.blogger.com/_Tdhn-HYCK18/R6IUO2sFG2I/AAAAAAAAAhk/XjFQuB-ncVA/s320/aaa.png" style="cursor: pointer; display: block; margin: 0px auto 10px; text-align: center;" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;&lt;span style="font-style: italic;"&gt;Note : I've seen on some document  from Nokia that broadcasted SSIDs work better  on  e-series devices than hidden ones.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
Now the Nokia side of the problem. Just remember two things :&lt;br /&gt;
&lt;br /&gt;
1) Not everything it's in the e65 menu means exactly what you think it should mean.&lt;br /&gt;
2) &lt;span style="font-style: italic;"&gt;Disable every protocol, setting or cipher algorithm you do not use!&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;First of all you should have your corporate root Certificate installed in your phone. I got it from my Outlook Web Access, navigating from the phone, using my GPRS access obviously.&lt;/div&gt;&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;Remind to have an Internet access (via GPRS or via another WLAN access), you'll need it to activate your free license for Intellisync unless you have the definitive license at your very first activation (not my case).&lt;/div&gt;&lt;br /&gt;
Now get in the Tools-&amp;gt;Connection-&amp;gt;Access points-&amp;gt;Options-&amp;gt;New access point.&lt;br /&gt;
Here's my working configuration&lt;br /&gt;
&lt;br /&gt;
-Connection name : VoWLAN&lt;br /&gt;
-Databearer : Wireless WAN&lt;br /&gt;
-WLAN netw. name: [Your SSID here]&lt;br /&gt;
-Network status: Public&lt;br /&gt;
-WLAN netw. mode: Infrastructure&lt;br /&gt;
-WLAN security mode: 802.1x (NOT WPA/WPA2)&lt;br /&gt;
-WLAN security settings :&lt;br /&gt;
--WPA mode: EAP&lt;br /&gt;
--EAP plug-in settings:&lt;br /&gt;
---EAP-PEAP (select only this, put in the higher position and disable all the others) :&lt;br /&gt;
&lt;br /&gt;
---General:&lt;br /&gt;
----User certificate: not defined&lt;br /&gt;
----CA certificate: [Your Corporate Certificate here]&lt;br /&gt;
----User name in use: User-configured&lt;br /&gt;
----User name: [Your user name]&lt;br /&gt;
----Realm in use: User-configured&lt;br /&gt;
----Realm: [balnk]&lt;br /&gt;
----Allow PEAPv0 : Yes&lt;br /&gt;
----Allow PEAPv1 : Yes&lt;br /&gt;
----Allow PEAPv2 : No&lt;br /&gt;
&lt;br /&gt;
---EAP:&lt;br /&gt;
----EAP-MSCHAPv2  (select only this, put in the higher position and disable all the others) :&lt;br /&gt;
-----User name: [Realm]\[Your user name]&lt;br /&gt;
-----Prompt password: No&lt;br /&gt;
-----Password: [Your password]&lt;br /&gt;
&lt;br /&gt;
---Cipher:&lt;br /&gt;
----RSA,3DES,SHA [enabled]&lt;br /&gt;
----DHE-RSA,3DES,SHA [enabled]&lt;br /&gt;
----DHE-DDS,3DES,SHA [enabled]&lt;br /&gt;
----[disable alle the others]&lt;br /&gt;
&lt;br /&gt;
et voilà, now your WLAN connection is ok.&lt;br /&gt;
&lt;br /&gt;
Next steps are simpler, and all illustrated on the &lt;a href="http://www.businesssoftware.nokia.com/nokia_intellisync_call_connect_for_cisco_downloads.php"&gt;Nokia businness website&lt;/a&gt; i.e. :&lt;br /&gt;
&lt;br /&gt;
Install the &lt;a href="http://www.businesssoftware.nokia.com/nokia_intellisync_call_connect_for_cisco/files/cmterm_nokia_s60_001_sccp.cop.zip"&gt;Cisco option package (COP) file for Nokia Intellisync Call Connect for Cisco clients&lt;/a&gt; in your Communications Manager.&lt;br /&gt;
&lt;br /&gt;
Install the &lt;a href="http://www.businesssoftware.nokia.com/nokia_intellisync_call_connect_for_cisco/files/Nokia_ICC_Cisco_1.55%284%29.SIS"&gt;Nokia Intellisync Call Connect for Cisco clients&lt;/a&gt; in your Nokia e65.&lt;br /&gt;
&lt;br /&gt;
Activate (via Internet) or install your license.&lt;br /&gt;
&lt;br /&gt;
Configure the SCCP Profile for using your brand new WLAN connection. (&lt;a href="http://www.businesssoftware.nokia.com/nokia_intellisync_call_connect_for_cisco/files/UserGuide_ICC_Cisco_1_1_US.pdf"&gt;instructions here&lt;/a&gt;)&lt;br /&gt;
&lt;br /&gt;
Configure the Internet Telephony Profile to use the SCCP profile. (&lt;a href="http://www.businesssoftware.nokia.com/nokia_intellisync_call_connect_for_cisco/files/UserGuide_ICC_Cisco_1_1_US.pdf"&gt;instructions here&lt;/a&gt;)&lt;br /&gt;
&lt;br /&gt;
The End.&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;&lt;b&gt;08-20-2008 Update &lt;/b&gt;&lt;/i&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;&lt;a href="http://snippets101.blogspot.com/2008/08/cisco-and-nokia-dual-mode-part-ii-cckm.html"&gt;Here&lt;/a&gt;'s a follow up to implement CCKM support.&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5758970642763704665-8995917499112381625?l=snippets101.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://snippets101.blogspot.com/2008/01/cisco-and-nokia-dual-mode-for-dummies.html</link><author>noreply@blogger.com (Alberto)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://bp2.blogger.com/_Tdhn-HYCK18/R6NavGsFG3I/AAAAAAAAAhs/EdE0MMZ6Dxw/s72-c/dual-mode.png" height="72" width="72" /><thr:total>3</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5758970642763704665.post-5406738801464505529</guid><pubDate>Wed, 12 Dec 2007 10:16:00 +0000</pubDate><atom:updated>2008-01-28T03:59:15.862-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">cisco</category><category domain="http://www.blogger.com/atom/ns#">network</category><category domain="http://www.blogger.com/atom/ns#">configuration</category><category domain="http://www.blogger.com/atom/ns#">ace</category><title>Source NAT on Cisco ACE</title><description>I've already described the scenario for this issue &lt;a href="http://snippets101.blogspot.com/2007/06/dual-armed-server-to-server-load.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;My first approach on Source NAT for this scenario was a little too CSS-minded, so wasting vip addresses and not considering some new features on the ACE.&lt;br /&gt;&lt;br /&gt;For each serverfarm which had to be reached from the same subnet I created two vips, one for everybody, one for SNATted connections from the same subnet.&lt;br /&gt;&lt;br /&gt;Now I changed approach, SNATting everything coming from the INTERNAL subnet, no matter which vip is looking for. This way I have not to use different vips depending on source address.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_Tdhn-HYCK18/Rm2md2--v0I/AAAAAAAAAOA/VZ3U54XzxZM/s1600-h/responseSNAT.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_Tdhn-HYCK18/Rm2md2--v0I/AAAAAAAAAOA/VZ3U54XzxZM/s320/responseSNAT.gif" alt="" id="BLOGGER_PHOTO_ID_5074895387022507842" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;span style="font-weight: bold;"&gt;class-map match-all L4-MAP-SNAT-INTERNAL&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2 match source address 10.0.11.0 255.255.255.0&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;class-map match-all  L4-MAP-YELLOW-SERVERFARM_20.2:80&lt;br /&gt;2 match virtual-address 10.0.20.2 tcp eq www&lt;strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;policy-map type  loadbalance first-match L7-&lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;FARM_20.2:80&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;  class class-default&lt;br /&gt;serverfarm &lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;YELLOW&lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style="font-family: Arial; font-size: 85%;"&gt;-SERVERFARM_20.2:80&lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:arial;"&gt;policy-map multi-match L4-POLICYMAPMULTI-LOADBALANCE&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:85%;" class="250061418-05062007" &gt;&lt;span style="font-family:Arial;"&gt;class &lt;/span&gt;&lt;span style="font-family:Arial;"&gt;L4-MAP&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;span style="font-weight: bold;"&gt;-SNAT-INTERNAL&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;    nat dynamic 100 vlan 101&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;class &lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;L4-MAP-&lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;FARM_20.1:21&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;        loadbalance vip inservice&lt;br /&gt;loadbalance  policy &lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;L7-&lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;FARM_20.2:80&lt;br /&gt;loadbalance vip icmp-reply active&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;service-policy input &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:arial;"&gt;L4-POLICYMAPMULTI-LOADBALANCE&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;interface vlan 101&lt;br /&gt;description SERVERSIDE&lt;br /&gt;ip address 10.0.10.199 255.255.255.0&lt;br /&gt;nat-pool 100 10.0.21.100 10.0.21.115 netmask 255.255.255.0 pat&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;no shutdown&lt;br /&gt;&lt;br /&gt;interface vlan 151&lt;br /&gt;description FIREWALLSIDE&lt;br /&gt;ip address 10.0.0.2 255.255.255.240&lt;br /&gt;no shutdown&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In this scenario each connection coming from any server on the 10.0.11.x subnet is subnetted. Then, going down on the multimatch policy, it reaches the vip class which loadbalance on the real servers.&lt;br /&gt;Note that the L4-MAP-SNAT-INTERNAL must be the first class defined in the policy for have things work well.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5758970642763704665-5406738801464505529?l=snippets101.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://snippets101.blogspot.com/2007/12/source-nat-on-cisco-ace.html</link><author>noreply@blogger.com (Alberto)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://bp0.blogger.com/_Tdhn-HYCK18/Rm2md2--v0I/AAAAAAAAAOA/VZ3U54XzxZM/s72-c/responseSNAT.gif" height="72" width="72" /><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5758970642763704665.post-3405435812445897878</guid><pubDate>Tue, 11 Sep 2007 18:02:00 +0000</pubDate><atom:updated>2007-09-13T04:46:03.932-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">cisco</category><category domain="http://www.blogger.com/atom/ns#">configuration</category><category domain="http://www.blogger.com/atom/ns#">tcl</category><category domain="http://www.blogger.com/atom/ns#">script</category><title>Tcl tcp check script</title><description>Here's my script I use for TCP port checking on Cisco ACE.&lt;br /&gt;&lt;br /&gt;The probe is simple :&lt;br /&gt;&lt;br /&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;probe scripted 8080-TCP-SCRIPT&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;port 8080&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;script tcp_check.tcl&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;and here's the script :&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 153, 153);"&gt;#Procedures&lt;/span&gt; &lt;span style="color: rgb(51, 51, 255);"&gt;&lt;br /&gt;proc &lt;/span&gt;opensocket {ip port}&lt;br /&gt;{&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;set &lt;/span&gt;sock [&lt;span style="color: rgb(51, 51, 255);"&gt;socket &lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;$ip $port&lt;/span&gt;]&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;}&lt;/span&gt;  &lt;span style="color: rgb(51, 153, 153);font-family:courier new;" &gt;&lt;br /&gt;&lt;br /&gt;# Get the IP address of the real server from a predefined global array&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;&lt;br /&gt;set &lt;/span&gt;ip &lt;span style="color: rgb(0, 153, 0);"&gt;$scriptprobe_env&lt;/span&gt;(realIP)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 153, 153);font-family:courier new;" &gt;# Get port from command line arguments (may be different from real service's one)&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;&lt;br /&gt;if &lt;/span&gt;{&lt;span style="color: rgb(0, 153, 0);"&gt;$argc&lt;/span&gt; &lt;&gt; &lt;span style="font-family:courier new;"&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;1&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;{ &lt;/span&gt;set &lt;/span&gt;port &lt;span style="color: rgb(0, 153, 0);"&gt;$scriptprobe_env&lt;/span&gt;(realPort)&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;}&lt;/span&gt; &lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;&lt;br /&gt;else&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;{&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;span style="color: rgb(51, 51, 255);"&gt; set &lt;/span&gt;port [lindex &lt;span style="color: rgb(0, 153, 0);"&gt;$argv&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;0&lt;/span&gt;]&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;}&lt;br /&gt;&lt;/span&gt; &lt;span style="color: rgb(51, 153, 153);font-family:courier new;" &gt;&lt;br /&gt;# Open a socket to the server. This creates a TCP connection to the&lt;/span&gt; &lt;span style="color: rgb(51, 153, 153);font-family:courier new;" &gt;# real server&lt;/span&gt;  &lt;span style="font-family:courier new;"&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;&lt;br /&gt;set &lt;/span&gt;EXIT_MSG "&lt;span style="color: rgb(153, 153, 153);"&gt;opening socket...&lt;/span&gt;"&lt;br /&gt;&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;&lt;br /&gt;if &lt;/span&gt;{ [catch { opensocket &lt;span style="color: rgb(0, 153, 0);"&gt;$ip $port&lt;/span&gt; } sock]  }&lt;br /&gt;{&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;set &lt;/span&gt;EXIT_MSG "&lt;span style="color: rgb(153, 153, 153);"&gt;$ip:$port ERR : $sock&lt;/span&gt;"&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;   &lt;span style="color: rgb(51, 51, 255);"&gt;set &lt;/span&gt;expCode1 "&lt;span style="color: rgb(153, 153, 153);"&gt;timeout&lt;/span&gt;"&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;set &lt;/span&gt;expCode2 "&lt;span style="color: rgb(153, 153, 153);"&gt;connection timed out&lt;/span&gt;"&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;set &lt;/span&gt;expCode3 "&lt;span style="color: rgb(153, 153, 153);"&gt;connection refused&lt;/span&gt;"&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;set &lt;/span&gt;expCode4 "&lt;span style="color: rgb(153, 153, 153);"&gt;Unknown host&lt;/span&gt;"&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;set &lt;/span&gt;expCode5 "&lt;span style="color: rgb(153, 153, 153);"&gt;o route to host&lt;/span&gt;"&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;set &lt;/span&gt;expCode6 "&lt;span style="color: rgb(153, 153, 153);"&gt;nable to connect&lt;/span&gt;"&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;set &lt;/span&gt;expCode7 "&lt;span style="color: rgb(153, 153, 153);"&gt;host is unreachable&lt;/span&gt;"&lt;br /&gt;&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;if &lt;/span&gt;{ [ regexp &lt;span style="color: rgb(0, 153, 0);"&gt;$expCode1&lt;/span&gt; &lt;span style="color: rgb(0, 153, 0);"&gt;$sock&lt;/span&gt; ] }&lt;br /&gt;{&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;       &lt;span style="color: rgb(51, 51, 255);"&gt;set &lt;/span&gt;EXIT_MSG  "&lt;span style="color: rgb(153, 153, 153);"&gt;probe fail. $ip:$port ERR : &lt;$expCode1&gt;&lt;/span&gt;"&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;exit &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;30002&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; &lt;/span&gt;}&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  &lt;span style="color: rgb(51, 51, 255);"&gt;if &lt;/span&gt;{ [ regexp &lt;span style="color: rgb(0, 153, 0);"&gt;$expCode2&lt;/span&gt; &lt;span style="color: rgb(0, 153, 0);"&gt;$sock&lt;/span&gt; ] }&lt;br /&gt;{&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;       &lt;span style="color: rgb(51, 51, 255);"&gt;set &lt;/span&gt;EXIT_MSG  "&lt;span style="color: rgb(153, 153, 153);"&gt;probe fail. $ip:$port ERR : &lt;$expCode2&gt;&lt;/span&gt;"&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;  &lt;span style="color: rgb(51, 51, 255);"&gt;exit &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;30002&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; &lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;  &lt;/span&gt;}&lt;br /&gt;&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;if &lt;/span&gt;{ [ regexp &lt;span style="color: rgb(0, 153, 0);"&gt;$expCode3&lt;/span&gt; &lt;span style="color: rgb(0, 153, 0);"&gt;$sock&lt;/span&gt; ] }&lt;br /&gt;{&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;       &lt;span style="color: rgb(51, 51, 255);"&gt;set &lt;/span&gt;EXIT_MSG  "&lt;span style="color: rgb(153, 153, 153);"&gt;probe fail. $ip:$port ERR : &lt;$expCode3&gt;&lt;/span&gt;"&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;  &lt;span style="color: rgb(51, 51, 255);"&gt;exit &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;30002&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; &lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;  &lt;/span&gt;}&lt;br /&gt;&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;  if&lt;/span&gt; { [ regexp &lt;span style="color: rgb(0, 153, 0);"&gt;$expCode4&lt;/span&gt; &lt;span style="color: rgb(0, 153, 0);"&gt;$sock&lt;/span&gt; ] }&lt;br /&gt;{&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;       &lt;span style="color: rgb(51, 51, 255);"&gt;set &lt;/span&gt;EXIT_MSG  "&lt;span style="color: rgb(153, 153, 153);"&gt;probe fail. $ip:$port ERR : &lt;$expCode4&gt;&lt;/span&gt;"&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;  &lt;span style="color: rgb(51, 51, 255);"&gt;exit &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;30002&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; &lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;  &lt;/span&gt;}&lt;br /&gt;&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;if &lt;/span&gt;{ [ regexp &lt;span style="color: rgb(0, 153, 0);"&gt;$expCode5&lt;/span&gt; &lt;span style="color: rgb(0, 153, 0);"&gt;$sock&lt;/span&gt; ] }&lt;br /&gt;{&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;       &lt;span style="color: rgb(51, 51, 255);"&gt;set &lt;/span&gt;EXIT_MSG  "&lt;span style="color: rgb(153, 153, 153);"&gt;probe fail. $ip:$port ERR : &lt;$expCode5&gt;&lt;/span&gt;"&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;  &lt;span style="color: rgb(51, 51, 255);"&gt;exit &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;30002&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; &lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;  &lt;/span&gt;}&lt;br /&gt;&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;if &lt;/span&gt;{ [ regexp &lt;span style="color: rgb(0, 153, 0);"&gt;$expCode6&lt;/span&gt; &lt;span style="color: rgb(0, 153, 0);"&gt;$sock&lt;/span&gt; ] }&lt;br /&gt;{&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;       &lt;span style="color: rgb(51, 51, 255);"&gt;set &lt;/span&gt;EXIT_MSG  "&lt;span style="color: rgb(153, 153, 153);"&gt;probe fail. $ip:$port ERR : &lt;$expCode6&gt;&lt;/span&gt;"&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;  &lt;span style="color: rgb(51, 51, 255);"&gt;exit &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;30002&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; &lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;  &lt;/span&gt;}&lt;br /&gt;&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;if &lt;/span&gt;{ [ regexp &lt;span style="color: rgb(0, 153, 0);"&gt;$expCode7&lt;/span&gt; &lt;span style="color: rgb(0, 153, 0);"&gt;$sock&lt;/span&gt; ] }&lt;br /&gt;{&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;       &lt;span style="color: rgb(51, 51, 255);"&gt;set &lt;/span&gt;EXIT_MSG  "&lt;span style="color: rgb(153, 153, 153);"&gt;probe fail. $ip:$port ERR : &lt;$expCode7&gt;&lt;/span&gt;"&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;  &lt;span style="color: rgb(51, 51, 255);"&gt;exit &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;30002&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; &lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;  &lt;/span&gt;}&lt;br /&gt;&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;} &lt;span style="color: rgb(51, 51, 255);"&gt;else &lt;/span&gt;{&lt;br /&gt;&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;set &lt;/span&gt;EXIT_MSG "&lt;span style="color: rgb(153, 153, 153);"&gt;probe success&lt;/span&gt;"&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;close &lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;$sock&lt;/span&gt;&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;exit &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;30001&lt;/span&gt;&lt;br /&gt;&lt;/span&gt; &lt;span face="courier new"&gt;&lt;br /&gt;}&lt;/span&gt; &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5758970642763704665-3405435812445897878?l=snippets101.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://snippets101.blogspot.com/2007/09/tcl-tcp-check-script.html</link><author>noreply@blogger.com (Alberto)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5758970642763704665.post-7172530953608255255</guid><pubDate>Thu, 09 Aug 2007 11:26:00 +0000</pubDate><atom:updated>2007-08-09T08:36:30.053-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">network</category><category domain="http://www.blogger.com/atom/ns#">.net</category><category domain="http://www.blogger.com/atom/ns#">c#</category><title>C# IP utilities : Decimal to binary notation</title><description>&lt;span style="font-family:arial;"&gt;public &lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);font-family:arial;" &gt;string &lt;/span&gt;&lt;span style="font-family:arial;"&gt;IPdec2binary(&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);font-family:arial;" &gt;string &lt;/span&gt;&lt;span style="font-family:arial;"&gt;ip)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;      {&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;         &lt;span style="color: rgb(51, 51, 255);font-family:arial;" &gt;string &lt;/span&gt;&lt;span style="font-family:arial;"&gt;ret = &lt;/span&gt;&lt;span style="color: rgb(204, 0, 0);font-family:arial;" &gt;""&lt;/span&gt;&lt;span style="font-family:arial;"&gt;;&lt;/span&gt;&lt;br /&gt;         &lt;span style="color: rgb(51, 51, 255);font-family:arial;" &gt;try&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;          {&lt;/span&gt;&lt;br /&gt;             &lt;span style="color: rgb(51, 51, 255);font-family:arial;" &gt;string&lt;/span&gt;&lt;span style="font-family:arial;"&gt;[] theIP = ip.Split('.');&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;             &lt;span style="color: rgb(51, 51, 255);font-family:arial;" &gt;long &lt;/span&gt;&lt;span style="font-family:arial;"&gt;na = &lt;/span&gt;&lt;span style="color: rgb(0, 204, 204);font-family:arial;" &gt;Convert&lt;/span&gt;&lt;span style="font-family:arial;"&gt;.ToInt64(theIP[0]);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;             &lt;span style="color: rgb(51, 51, 255);font-family:arial;" &gt;long &lt;/span&gt;&lt;span style="font-family:arial;"&gt;nb = &lt;/span&gt;&lt;span style="color: rgb(0, 204, 204);font-family:arial;" &gt;Convert&lt;/span&gt;&lt;span style="font-family:arial;"&gt;.ToInt64(theIP[1]);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;             &lt;span style="color: rgb(51, 51, 255);font-family:arial;" &gt;long &lt;/span&gt;&lt;span style="font-family:arial;"&gt;nc = &lt;/span&gt;&lt;span style="color: rgb(0, 204, 204);font-family:arial;" &gt;Convert&lt;/span&gt;&lt;span style="font-family:arial;"&gt;.ToInt64(theIP[2]);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;             &lt;span style="color: rgb(51, 51, 255);font-family:arial;" &gt;long &lt;/span&gt;&lt;span style="font-family:arial;"&gt;nd = &lt;/span&gt;&lt;span style="color: rgb(0, 204, 204);font-family:arial;" &gt;Convert&lt;/span&gt;&lt;span style="font-family:arial;"&gt;.ToInt64(theIP[3]);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;             &lt;span style="color: rgb(51, 51, 255);font-family:arial;" &gt;string &lt;/span&gt;&lt;span style="font-family:arial;"&gt;sa = &lt;/span&gt;&lt;span style="color: rgb(0, 204, 204);font-family:arial;" &gt;Convert&lt;/span&gt;&lt;span style="font-family:arial;"&gt;.ToString(na, 2);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;             &lt;span style="color: rgb(51, 51, 255);font-family:arial;" &gt;string &lt;/span&gt;&lt;span style="font-family:arial;"&gt;sb = &lt;/span&gt;&lt;span style="color: rgb(0, 204, 204);font-family:arial;" &gt;Convert&lt;/span&gt;&lt;span style="font-family:arial;"&gt;.ToString(nb, 2);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;             &lt;span style="color: rgb(51, 51, 255);font-family:arial;" &gt;string &lt;/span&gt;&lt;span style="font-family:arial;"&gt;sc = &lt;/span&gt;&lt;span style="color: rgb(0, 204, 204);font-family:arial;" &gt;Convert&lt;/span&gt;&lt;span style="font-family:arial;"&gt;.ToString(nc, 2);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;             &lt;span style="color: rgb(51, 51, 255);font-family:arial;" &gt;string &lt;/span&gt;&lt;span style="font-family:arial;"&gt;sd = &lt;/span&gt;&lt;span style="color: rgb(0, 204, 204);font-family:arial;" &gt;Convert&lt;/span&gt;&lt;span style="font-family:arial;"&gt;.ToString(nd, 2);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;             &lt;span style="color: rgb(51, 51, 255);font-family:arial;" &gt;long &lt;/span&gt;&lt;span style="font-family:arial;"&gt;a = &lt;/span&gt;&lt;span style="color: rgb(0, 204, 204);font-family:arial;" &gt;Convert&lt;/span&gt;&lt;span style="font-family:arial;"&gt;.ToInt64(sa);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;             &lt;span style="color: rgb(51, 51, 255);font-family:arial;" &gt;long &lt;/span&gt;&lt;span style="font-family:arial;"&gt;b = &lt;/span&gt;&lt;span style="color: rgb(0, 204, 204);font-family:arial;" &gt;Convert&lt;/span&gt;&lt;span style="font-family:arial;"&gt;.ToInt64(sb);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;             &lt;span style="color: rgb(51, 51, 255);font-family:arial;" &gt;long &lt;/span&gt;&lt;span style="font-family:arial;"&gt;c = &lt;/span&gt;&lt;span style="color: rgb(0, 204, 204);font-family:arial;" &gt;Convert&lt;/span&gt;&lt;span style="font-family:arial;"&gt;.ToInt64(sc);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;             &lt;span style="color: rgb(51, 51, 255);font-family:arial;" &gt;long &lt;/span&gt;&lt;span style="font-family:arial;"&gt;d = &lt;/span&gt;&lt;span style="color: rgb(0, 204, 204);font-family:arial;" &gt;Convert&lt;/span&gt;&lt;span style="font-family:arial;"&gt;.ToInt64(sd);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;              ret = &lt;/span&gt;&lt;span style="color: rgb(0, 204, 204);font-family:arial;" &gt;Convert&lt;/span&gt;&lt;span style="font-family:arial;"&gt;.ToString("" + a).PadLeft(8, '0') + ".";&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;              ret += &lt;/span&gt;&lt;span style="color: rgb(0, 204, 204);font-family:arial;" &gt;Convert&lt;/span&gt;&lt;span style="font-family:arial;"&gt;.ToString("" + b).PadLeft(8, '0') + ".";&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;              ret += &lt;/span&gt;&lt;span style="color: rgb(0, 204, 204);font-family:arial;" &gt;Convert&lt;/span&gt;&lt;span style="font-family:arial;"&gt;.ToString("" + c).PadLeft(8, '0') + ".";&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;              ret += &lt;/span&gt;&lt;span style="color: rgb(0, 204, 204);font-family:arial;" &gt;Convert&lt;/span&gt;&lt;span style="font-family:arial;"&gt;.ToString("" + d).PadLeft(8, '0');&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;          }&lt;/span&gt;&lt;br /&gt;         &lt;span style="color: rgb(51, 51, 255);font-family:arial;" &gt;catch&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;          {&lt;/span&gt;&lt;br /&gt;             &lt;span style="color: rgb(51, 51, 255);font-family:arial;" &gt;return &lt;/span&gt;&lt;span style="font-family:arial;"&gt;"";&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;          }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;         &lt;span style="color: rgb(51, 51, 255);font-family:arial;" &gt;return &lt;/span&gt;&lt;span style="font-family:arial;"&gt;ret;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;      }&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5758970642763704665-7172530953608255255?l=snippets101.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://snippets101.blogspot.com/2007/08/c-ip-utilities-decimal-to-binary.html</link><author>noreply@blogger.com (Alberto)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5758970642763704665.post-5311677851020267545</guid><pubDate>Wed, 08 Aug 2007 01:12:00 +0000</pubDate><atom:updated>2007-08-07T19:18:02.326-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">network</category><category domain="http://www.blogger.com/atom/ns#">.net</category><category domain="http://www.blogger.com/atom/ns#">c#</category><title>C# IP utilities : Integer to dotted notation</title><description>&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;public &lt;/span&gt;string &lt;/span&gt;IPint2dotted(&lt;span style="color: rgb(51, 51, 255);"&gt;long &lt;/span&gt;ip)&lt;br /&gt;&amp;nbsp;&amp;nbsp;       {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;           &lt;span style="color: rgb(51, 51, 255);"&gt;string &lt;/span&gt;ret = "";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;           &lt;span style="color: rgb(51, 51, 255);"&gt;try&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;           {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;              &lt;span style="color: rgb(51, 51, 255);"&gt;string &lt;/span&gt;hex = ip.ToString(&lt;span style="color: rgb(204, 0, 0);"&gt;"X"&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;               &lt;span style="color: rgb(51, 51, 255);"&gt;if &lt;/span&gt;(hex.Length&gt;=8)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;                  &lt;span style="color: rgb(0, 0, 0);"&gt;hex &lt;/span&gt;= hex.Substring(hex.Length-8);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;               &lt;span style="color: rgb(51, 51, 255);"&gt;else&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;                    hex = hex.PadLeft(8,&lt;span style="color: rgb(204, 0, 0);"&gt;'0'&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;               &lt;span style="color: rgb(51, 51, 255);"&gt;for &lt;/span&gt;(&lt;span style="color: rgb(51, 51, 255);"&gt;int &lt;/span&gt;i=hex.Length;i&gt;0;i-=2)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;               {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;                  ret += &lt;span style="color: rgb(51, 51, 255);"&gt;long&lt;/span&gt;.Parse(&lt;span style="color: rgb(51, 153, 153);"&gt;Convert&lt;/span&gt;.ToString(hex[i-2].ToString() + hex[i-1].ToString()), System.Globalization&lt;span style="color: rgb(51, 153, 153);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.&lt;/span&gt;NumberStyles&lt;span style="color: rgb(0, 0, 0);"&gt;.&lt;/span&gt;&lt;/span&gt;HexNumber).ToString()+&lt;span style="color: rgb(204, 0, 0);"&gt;"."&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;               }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;                &lt;span style="color: rgb(51, 51, 255);"&gt;if &lt;/span&gt;(ret.Length&gt;0)&lt;br /&gt;                   &lt;span style="color: rgb(51, 51, 255);"&gt;return &lt;/span&gt;ret.&lt;span style="color: rgb(51, 51, 255);"&gt;Substring&lt;/span&gt;(0,ret.Length-1);&lt;br /&gt;               &lt;span style="color: rgb(51, 51, 255);"&gt;else&lt;/span&gt;&lt;br /&gt;                   &lt;span style="color: rgb(51, 51, 255);"&gt;return &lt;/span&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;""&lt;/span&gt;;&lt;br /&gt;           }&lt;br /&gt;           &lt;span style="color: rgb(51, 51, 255);"&gt;catch&lt;span style="color: rgb(0, 0, 0);"&gt; (&lt;span style="color: rgb(51, 153, 153);"&gt;Exception &lt;/span&gt;exc)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;           {&lt;br /&gt;               &lt;span style="color: rgb(51, 51, 255);"&gt;return &lt;/span&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;""&lt;/span&gt;;&lt;br /&gt;           }&lt;br /&gt;&lt;br /&gt;       }&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5758970642763704665-5311677851020267545?l=snippets101.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://snippets101.blogspot.com/2007/08/c-ip-utilities-integer-to-dotted.html</link><author>noreply@blogger.com (Alberto)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5758970642763704665.post-9174292782630983969</guid><pubDate>Wed, 08 Aug 2007 00:26:00 +0000</pubDate><atom:updated>2007-08-07T18:00:22.492-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">cisco</category><category domain="http://www.blogger.com/atom/ns#">network</category><category domain="http://www.blogger.com/atom/ns#">configuration</category><title>Cisco ACE redundancy issues</title><description>Once you've configured redundancy on the ACEs, there's an active one, and a stand-by one. Ok, this is simple. However, there are some times configuration synch fails, and here's what I observed.&lt;br /&gt;&lt;br /&gt;Once redundancy is configured this way :&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;ACTIVE ACE&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;ft group 1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;peer 1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;priority 200&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;peer priority 101&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;associate-context CONTEXT1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;inservice&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;STANDBY ACE&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;ft group 1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;peer 1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;priority 101&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;peer priority 200&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;associate-context CONTEXT1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;inservice&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;As usual, the active one has the highest priority. Now I want this redundancy to be HOT, i.e. sessions remain up during a switchover as they are mantained in sync by the peers.&lt;br /&gt;Typing a &lt;span style="font-style: italic;"&gt;show ft group det&lt;/span&gt; on the master ACE you could (as I did) see two types of redundancy :&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Peer State                   : FSM_FT_STATE_STANDBY_HOT&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;or&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Peer State                   : FSM_FT_STATE_STANDBY_COLD&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Cold standby state means that sessions during the switchover will be dropped, and that, for some reason, configuration sync failed, so configurations are not even equal between the two peers, and further changes on the master will not be sent to the slave.&lt;br /&gt;&lt;br /&gt;Typical reasons for configurations' sync to fail are :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;A scripted probe needs its script file on the ACE's disk0:, the standby ACE may not have this file on his disk0:&lt;/li&gt;&lt;li&gt;Interfaces are not configured the same way (missing some interface vlan?)&lt;/li&gt;&lt;li&gt;Svcl groups on the Catalysts hosting the ACE may not pass the same vlans to the two peers.&lt;/li&gt;&lt;/ul&gt;However, if you made one of these mistakes, as I did, you have your standby ACE in COLD standby state, what to do now ?&lt;br /&gt;Even copying manually the configuration on the second ACE, it will never switch by itself in HOT standby state.&lt;br /&gt;&lt;br /&gt;The solution is quite easy :&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Solve all the issues that caused the configuration sync to fail (see above).&lt;/li&gt;&lt;li&gt;On the standby ACE, switch off and then on (rapidly) the ft group of the context :&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;ACE-02/Admin#conf t&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;ACE-02/Admin(config)#ft group 1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;ACE-02/Admin(config-ft-group)#no inservice&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;ACE-02/Admin(config-ft-group)#inservice&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now you will see the standby ACE erase all of its configuration and then start back to copy it from the master ACE. At the end, you should see on the master :&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;FT Group                     : 1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;Configured Status            : in-service&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;Maintenance mode             : MAINT_MODE_OFF&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;My State                     : FSM_FT_STATE_ACTIVE&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;My Config Priority           : 200&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;My Net Priority              : 200&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;My Preempt                   : Enabled&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;Peer State                   : &lt;span style="font-weight: bold;"&gt;FSM_FT_STATE_STANDBY_HOT&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;Peer Config Priority         : 101&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;Peer Net Priority            : 101&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;Peer Preempt                 : Enabled&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;Peer Id                      : 1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;Last State Change time       : Fri Aug  3 06:22:17 2007&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;Running cfg sync enabled     : Enabled&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;Running cfg sync status      : Running configuration sync has completed&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;Startup cfg sync enabled     : Enabled&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;Startup cfg sync status      : Startup configuration sync has completed&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;No. of Contexts              : 1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;Context Name                 : CONTEXT1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;Context Id                   : 2&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Note : During this process configuration is inhibited even on the master ACE.&lt;br /&gt;&lt;br /&gt;PS : Thanks to Francesco for helping me in troubleshooting and summarizing the events of that night.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5758970642763704665-9174292782630983969?l=snippets101.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://snippets101.blogspot.com/2007/08/cisco-ace-redundancy-issues.html</link><author>noreply@blogger.com (Alberto)</author><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5758970642763704665.post-3159126117397293400</guid><pubDate>Tue, 10 Jul 2007 13:12:00 +0000</pubDate><atom:updated>2007-07-12T05:54:12.382-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">cisco</category><category domain="http://www.blogger.com/atom/ns#">network</category><category domain="http://www.blogger.com/atom/ns#">configuration</category><title>Static NAT on Cisco ACE</title><description>This one's simple. Here's how I managed my first NAT to make a load balanced dual armed farm exit through the ACE towards the Internet. I had to make all of the traffic NATted on a single ip in order to make firewalls' life easy.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Scenario :&lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_Tdhn-HYCK18/RpO9z7ZiUJI/AAAAAAAAAPc/VsVrNxzA3pc/s1600-h/staticnat.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_Tdhn-HYCK18/RpO9z7ZiUJI/AAAAAAAAAPc/VsVrNxzA3pc/s320/staticnat.gif" alt="" id="BLOGGER_PHOTO_ID_5085617104047198354" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Then the configuration :&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;rserver host  SERVER-10.1&lt;br /&gt;ip address 10.0.10.1&lt;br /&gt;inservice&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;br /&gt;rserver host  SERVER-10.2&lt;br /&gt;ip address 10.0.10.2&lt;br /&gt;inservice&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;serverfarm host FARM_20.1:80&lt;br /&gt;failaction purge&lt;br /&gt;rserver &lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;SERVER-10.1 21&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;     inservice&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;  rserver &lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;SERVER-10.2 21&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;     inservice&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;class-map match-any L4-MAP-NAT&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2 match source address 10.0.10.1 255.255.255.255&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3 match source address 10.0.10.2 255.255.255.255&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;class-map match-all  L4-MAP-FARM_20.1:21&lt;br /&gt;2 match virtual-address 10.0.20.1 tcp eq www&lt;strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;policy-map type  loadbalance first-match L7-&lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;FARM_20.1:80&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;  class class-default&lt;br /&gt;serverfarm &lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;FARM_20.1:80&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:arial;"&gt;policy-map multi-match L4-POLICYMAPMULTI-LOADBALANCE&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;class &lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;L4-MAP-&lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;FARM_20.1:21&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;    loadbalance vip inservice&lt;br /&gt;loadbalance  policy &lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;L7-&lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;FARM_20.1:80&lt;br /&gt;loadbalance vip icmp-reply active&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;&lt;span style="font-family:arial;"&gt;policy-map multi-match L4-POLICYMAPMULTI-NAT&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:85%;" class="250061418-05062007" &gt;&lt;span style="font-family:Arial;"&gt;class &lt;/span&gt;&lt;span style="font-family:Arial;"&gt;L4-MAP-&lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;span style="font-weight: bold;"&gt;NAT&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;nat static 10.0.21.1 netmask 255.255.255.255 vlan 151&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;br /&gt;service-policy input &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:arial;"&gt;L4-POLICYMAPMULTI-LOADBALANCE&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;interface vlan 101&lt;br /&gt;description SERVERSIDE&lt;br /&gt;ip address 10.0.10.199 255.255.255.0&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;span style="font-weight: bold;"&gt;service-policy input L4-POLICYMAPMULTI-NAT&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;no shutdown&lt;br /&gt;&lt;br /&gt;interface vlan 151&lt;br /&gt;description FIREWALLSIDE&lt;br /&gt;ip address 10.0.0.2 255.255.255.240&lt;br /&gt;no shutdown&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5758970642763704665-3159126117397293400?l=snippets101.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://snippets101.blogspot.com/2007/07/static-nat-on-cisco-ace.html</link><author>noreply@blogger.com (Alberto)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://bp2.blogger.com/_Tdhn-HYCK18/RpO9z7ZiUJI/AAAAAAAAAPc/VsVrNxzA3pc/s72-c/staticnat.gif" height="72" width="72" /><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5758970642763704665.post-6657790711215812115</guid><pubDate>Tue, 19 Jun 2007 11:03:00 +0000</pubDate><atom:updated>2007-06-21T07:15:56.916-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">.net</category><category domain="http://www.blogger.com/atom/ns#">c#</category><title>Sorted Hashtable</title><description>Need an HashTable uh? Tired of that messy foreach statement ? Here's a simple implementation of a Dictionary collection, but sortable.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;&lt;span style="color: rgb(51, 51, 255);"&gt;namespace &lt;/span&gt;snippets101.Collections&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;{&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;    &lt;span style="color: rgb(51, 51, 255);"&gt;public enum &lt;/span&gt;&lt;span style="color: rgb(51, 204, 255);"&gt;sortType&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;    {&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;        NoSort = 1,&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;        Keys = 2,&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;        Values = 3&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;    }&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;    &lt;span style="color: rgb(51, 51, 255);"&gt;public class&lt;/span&gt; &lt;span style="color: rgb(51, 204, 255);"&gt;sHash&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;    {&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;        &lt;span style="color: rgb(51, 51, 255);"&gt;private &lt;/span&gt;&lt;span style="color: rgb(51, 204, 255);"&gt;ArrayList   &lt;/span&gt;_alVals;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;        &lt;span style="color: rgb(51, 51, 255);"&gt;private &lt;/span&gt;&lt;span style="color: rgb(51, 204, 255);"&gt;ArrayList   &lt;/span&gt;_alKeys;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;        &lt;span style="color: rgb(51, 51, 255);"&gt;private &lt;/span&gt;&lt;span style="color: rgb(51, 204, 255);"&gt;sortType    &lt;/span&gt;_sort;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;        &lt;span style="color: rgb(51, 51, 255);"&gt;public &lt;/span&gt;sHash()&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;        {&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;            &lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;            _alKeys     =   new &lt;span style="color: rgb(51, 204, 255);"&gt;ArrayList&lt;/span&gt;();&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;            _alVals     =   new &lt;span style="color: rgb(51, 204, 255);"&gt;ArrayList&lt;/span&gt;();&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;            &lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;           _sort       =   &lt;span style="color: rgb(51, 204, 255);"&gt;sortType&lt;/span&gt;.NoSort;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;            &lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;        }&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;        &lt;span style="color: rgb(51, 51, 255);"&gt;public &lt;/span&gt;&lt;span style="color: rgb(51, 204, 255);"&gt;sortType &lt;/span&gt;SortType&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;        {&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;            &lt;span style="color: rgb(51, 51, 255);"&gt;get &lt;/span&gt;{ &lt;span style="color: rgb(51, 51, 255);"&gt;return &lt;/span&gt;_sort; }&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;            &lt;span style="color: rgb(51, 51, 255);"&gt;set &lt;/span&gt;{ _sort = &lt;span style="color: rgb(51, 51, 255);"&gt;value&lt;/span&gt;; }&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;        &lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;        }&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;        &lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;        &lt;span style="color: rgb(51, 51, 255);"&gt;public void&lt;/span&gt; Sort()&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;        {&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;            &lt;span style="color: rgb(51, 204, 255);"&gt;Array &lt;/span&gt;k = _alKeys.ToArray(&lt;span style="color: rgb(51, 51, 255);"&gt;typeof&lt;/span&gt;(&lt;span style="color: rgb(51, 51, 255);"&gt;object&lt;/span&gt;));&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;            &lt;span style="color: rgb(51, 204, 255);"&gt;Array &lt;/span&gt;v = _alVals.ToArray(&lt;span style="color: rgb(51, 51, 255);"&gt;typeof&lt;/span&gt;(&lt;span style="color: rgb(51, 51, 255);"&gt;object&lt;/span&gt;));&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;            if (_sort == &lt;span style="color: rgb(51, 204, 255);"&gt;sortType&lt;/span&gt;.Keys)&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;                &lt;span style="color: rgb(51, 204, 255);"&gt;Array&lt;/span&gt;.Sort(k, v, &lt;span style="color: rgb(51, 51, 255);"&gt;new &lt;/span&gt;&lt;span style="color: rgb(51, 204, 255);"&gt;sHashComparer&lt;/span&gt;());&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;            if (_sort == &lt;span style="color: rgb(51, 204, 255);"&gt;sortType.&lt;/span&gt;Values)&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;                &lt;span style="color: rgb(51, 204, 255);"&gt;Array&lt;/span&gt;.Sort(v, k, &lt;span style="color: rgb(51, 51, 255);"&gt;new &lt;/span&gt;&lt;span style="color: rgb(51, 204, 255);"&gt;sHashComparer&lt;/span&gt;());&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;            _alKeys = &lt;span style="color: rgb(0, 204, 204);"&gt;ArrayList&lt;/span&gt;.Adapter(k);&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;            _alVals = &lt;span style="color: rgb(51, 204, 255);"&gt;ArrayList&lt;/span&gt;.Adapter(v);&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;        }&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        public void &lt;/span&gt;Add(&lt;span style="color: rgb(51, 51, 255);"&gt;object &lt;/span&gt;key, &lt;span style="color: rgb(51, 51, 255);"&gt;object &lt;/span&gt;value)&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;        {&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;            &lt;span style="color: rgb(51, 51, 255);"&gt;if &lt;/span&gt;(_alKeys.Contains(key))&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;&lt;span style="color: rgb(51, 51, 255);"&gt;                throw new&lt;/span&gt; &lt;span style="color: rgb(51, 204, 255);"&gt;Exception&lt;/span&gt;(&lt;span style="color: rgb(255, 0, 0);"&gt;"Key already present."&lt;/span&gt;);&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;            &lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;            _alKeys.Add(key);&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;            _alVals.Add(value);&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;        }&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        public void&lt;/span&gt; Clear()&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;        {&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;            _alKeys.Clear();&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;            _alVals.Clear();&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;        }&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        public bool&lt;/span&gt; Contains(&lt;span style="color: rgb(51, 51, 255);"&gt;object &lt;/span&gt;key)&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;        {&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;            &lt;span style="color: rgb(51, 51, 255);"&gt;return &lt;/span&gt;_alKeys.Contains(key);&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;        }&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;        &lt;span style="color: rgb(51, 51, 255);"&gt;public &lt;/span&gt;&lt;span style="color: rgb(51, 204, 255);"&gt;IDictionaryEnumerator &lt;/span&gt;GetEnumerator()&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;        {&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;            &lt;span style="color: rgb(51, 51, 255);"&gt;return new &lt;/span&gt;&lt;span style="color: rgb(51, 204, 255);"&gt;sHashDictionaryEnumerator&lt;/span&gt;(_alKeys, _alVals);&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;        }&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        public bool&lt;/span&gt; IsFixedSize&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;        {&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;            &lt;span style="color: rgb(51, 51, 255);"&gt;get &lt;/span&gt;{ &lt;span style="color: rgb(51, 51, 255);"&gt;return false&lt;/span&gt;; }&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;        }&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        public bool&lt;/span&gt; IsReadOnly&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;        {&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;            &lt;span style="color: rgb(51, 51, 255);"&gt;get &lt;/span&gt;{ &lt;span style="color: rgb(51, 51, 255);"&gt;return false&lt;/span&gt;; }&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;        }&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;        &lt;span style="color: rgb(51, 51, 255);"&gt;public &lt;/span&gt;&lt;span style="color: rgb(51, 204, 255);"&gt;ArrayList &lt;/span&gt;Keys&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;        {&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;            &lt;span style="color: rgb(51, 51, 255);"&gt;get &lt;/span&gt;{ &lt;span style="color: rgb(51, 51, 255);"&gt;return &lt;/span&gt;_alKeys; }&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;        }&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;        &lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;        &lt;span style="color: rgb(51, 51, 255);"&gt;public &lt;/span&gt;&lt;span style="color: rgb(51, 204, 255);"&gt;ArrayList &lt;/span&gt;Values&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;        {&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;            &lt;span style="color: rgb(51, 51, 255);"&gt;get &lt;/span&gt;{ &lt;span style="color: rgb(51, 51, 255);"&gt;return &lt;/span&gt;_alVals; }&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;        }&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;        &lt;span style="color: rgb(51, 51, 255);"&gt;public void &lt;/span&gt;Remove(&lt;span style="color: rgb(51, 51, 255);"&gt;object &lt;/span&gt;key)&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;        {&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;            _alVals.RemoveAt(_alKeys.IndexOf(key));&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;            _alKeys.Remove(key);&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;        }&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        public object this&lt;/span&gt;[&lt;span style="color: rgb(51, 51, 255);"&gt;object &lt;/span&gt;key]&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;        {&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;            &lt;span style="color: rgb(51, 51, 255);"&gt;get&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;            {&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;                &lt;span style="color: rgb(51, 51, 255);"&gt;return &lt;/span&gt;_alVals[_alKeys.IndexOf(key)];&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;            }&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;            &lt;span style="color: rgb(51, 51, 255);"&gt;set&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;            {&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;                &lt;span style="color: rgb(51, 51, 255);"&gt;if &lt;/span&gt;(_alKeys.Contains(key))&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;                {&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;                    _alVals[_alKeys.IndexOf(key)] = &lt;span style="color: rgb(51, 51, 255);"&gt;value&lt;/span&gt;;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;                }&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;                &lt;span style="color: rgb(51, 51, 255);"&gt;else&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;                {&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;                    _alKeys.Add(key);&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;                    _alVals.Add(&lt;span style="color: rgb(51, 51, 255);"&gt;value&lt;/span&gt;);&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;                }&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;            }&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;        }&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        public int&lt;/span&gt; Count&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;        {&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;            &lt;span style="color: rgb(51, 51, 255);"&gt;get &lt;/span&gt;{ &lt;span style="color: rgb(51, 51, 255);"&gt;return &lt;/span&gt;_alKeys.Count; }&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;        }&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;                     &lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        private class&lt;/span&gt; &lt;span style="color: rgb(51, 204, 255);"&gt;sHashDictionaryEnumerator &lt;/span&gt;: &lt;span style="color: rgb(51, 204, 255);"&gt;IDictionaryEnumerator&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;        {&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;&lt;span style="color: rgb(51, 204, 255);"&gt;            DictionaryEntry&lt;/span&gt;[] items;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;            &lt;span style="color: rgb(51, 204, 255);"&gt;Int32 &lt;/span&gt;index = -1;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;            &lt;span style="color: rgb(51, 51, 255);"&gt;public &lt;/span&gt;sHashDictionaryEnumerator(&lt;span style="color: rgb(51, 204, 255);"&gt;ArrayList &lt;/span&gt;keys, &lt;span style="color: rgb(51, 204, 255);"&gt;ArrayList &lt;/span&gt;mappings)&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;            {&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;                items = &lt;span style="color: rgb(51, 51, 255);"&gt;new &lt;/span&gt;&lt;span style="color: rgb(51, 204, 255);"&gt;DictionaryEntry&lt;/span&gt;[keys.Count];&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;                &lt;span style="color: rgb(51, 51, 255); font-family: courier new;font-size:100%;" &gt;for &lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family: courier new;"&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255); font-family: courier new;font-size:100%;" &gt;int &lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family: courier new;"&gt;i = 0; i &lt;&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;                {&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;                    items[i] = new DictionaryEntry(keys[i],mappings[i]);&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;                }&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;            }&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;            &lt;span style="color: rgb(51, 51, 255);"&gt;public &lt;/span&gt;Object Current { get { ValidateIndex(); return items[index]; } }&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;            &lt;span style="color: rgb(51, 51, 255);"&gt;public &lt;/span&gt;DictionaryEntry Entry&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;            {&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;                &lt;span style="color: rgb(51, 51, 255);"&gt;get &lt;/span&gt;{ &lt;span style="color: rgb(51, 51, 255);"&gt;return &lt;/span&gt;(DictionaryEntry)Current; }&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;            }&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;            &lt;span style="color: rgb(51, 51, 255);"&gt;public &lt;/span&gt;&lt;span style="color: rgb(51, 204, 255);"&gt;Object &lt;/span&gt;Key { &lt;span style="color: rgb(51, 51, 255);"&gt;get &lt;/span&gt;{ ValidateIndex(); &lt;span style="color: rgb(51, 51, 255);"&gt;return &lt;/span&gt;items[index].Key; } }&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;            &lt;span style="color: rgb(51, 51, 255);"&gt;public &lt;/span&gt;&lt;span style="color: rgb(51, 204, 255);"&gt;Object &lt;/span&gt;Value { &lt;span style="color: rgb(51, 51, 255);"&gt;get &lt;/span&gt;{ ValidateIndex(); &lt;span style="color: rgb(51, 51, 255);"&gt;return &lt;/span&gt;items[index].Value; } }&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;            &lt;span style="color: rgb(51, 51, 255);"&gt;public &lt;/span&gt;&lt;span style="color: rgb(51, 204, 255);"&gt;Boolean &lt;/span&gt;MoveNext()&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;            {&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;                &lt;span style="color: rgb(51, 51, 255);"&gt;if &lt;/span&gt;(index &lt; style="color: rgb(51, 51, 255);"&gt; return true&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family: courier new;"&gt;; }&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;&lt;span style="color: rgb(51, 51, 255);"&gt;                return false&lt;/span&gt;;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;            }&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;&lt;span style="color: rgb(51, 51, 255);"&gt;            private void&lt;/span&gt; ValidateIndex()&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;            {&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;                if (index &lt;&gt;= items.Length)&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;&lt;span style="color: rgb(51, 51, 255);"&gt;                    throw new&lt;/span&gt; &lt;span style="color: rgb(51, 204, 255);"&gt;InvalidOperationException&lt;/span&gt;(&lt;span style="color: rgb(255, 0, 0);"&gt;"Enumerator is before or after the collection."&lt;/span&gt;);&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;            }&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;&lt;span style="color: rgb(51, 51, 255);"&gt;            public void&lt;/span&gt; Reset()&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;            {&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;                index = -1;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;            }&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;        }&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;    &lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        private class&lt;/span&gt; sHashComparer : &lt;span style="color: rgb(51, 204, 255);"&gt;IComparer&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;        {&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;&lt;span style="color: rgb(51, 51, 255);"&gt;            private bool&lt;/span&gt; isNumeric(&lt;span style="color: rgb(51, 204, 255);"&gt;Type &lt;/span&gt;t)&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;            {&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;                &lt;span style="color: rgb(51, 51, 255);"&gt;switch &lt;/span&gt;(t.Name.ToLower())&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;                { &lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;                    &lt;span style="color: rgb(51, 51, 255);"&gt;case &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"int32"&lt;/span&gt;:&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;&lt;span style="color: rgb(51, 51, 255);"&gt;return true&lt;/span&gt;;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;                    &lt;span style="color: rgb(51, 51, 255);"&gt;case &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"single"&lt;/span&gt;:&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;&lt;span style="color: rgb(51, 51, 255);"&gt;return true&lt;/span&gt;;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;                    &lt;span style="color: rgb(51, 51, 255);"&gt;case &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;"double"&lt;/span&gt;:&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;&lt;span style="color: rgb(51, 51, 255);"&gt;return true&lt;/span&gt;;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;                    &lt;span style="color: rgb(51, 51, 255);"&gt;default&lt;/span&gt;:&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;&lt;span style="color: rgb(51, 51, 255);"&gt;return false&lt;/span&gt;;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;                }&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;            }&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;            &lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;&lt;span style="color: rgb(51, 51, 255);"&gt;            public int&lt;/span&gt; Compare(&lt;span style="color: rgb(51, 51, 255);"&gt;object &lt;/span&gt;x, &lt;span style="color: rgb(51, 51, 255);"&gt;object &lt;/span&gt;y)&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;            {&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;               &lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;                &lt;span style="color: rgb(51, 51, 255);"&gt;if &lt;/span&gt;((isNumeric(x.GetType())) &amp;&amp;amp; (isNumeric(y.GetType())))&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;                {&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;                    &lt;span style="color: rgb(51, 51, 255);"&gt;double &lt;/span&gt;d = &lt;span style="color: rgb(51, 204, 255);"&gt;Math&lt;/span&gt;.Truncate(&lt;span style="color: rgb(51, 204, 255);"&gt;Convert&lt;/span&gt;.ToSingle(x) - &lt;span style="color: rgb(51, 204, 255);"&gt;Convert&lt;/span&gt;.ToSingle(y));&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:100%;"  &gt;                    &lt;span style="color: rgb(51, 51, 255);"&gt;if &lt;/span&gt;(d &lt;&gt;&lt;br /&gt;                       &lt;span style="color: rgb(51, 51, 255);"&gt;return &lt;/span&gt;-1;&lt;br /&gt;                   &lt;span style="color: rgb(51, 51, 255);"&gt;if &lt;/span&gt;(d == 0)&lt;br /&gt;                       &lt;span style="color: rgb(51, 51, 255);"&gt;return &lt;/span&gt;0;&lt;br /&gt;                   &lt;span style="color: rgb(51, 51, 255);"&gt;if &lt;/span&gt;(d &gt; 0)&lt;br /&gt;                       &lt;span style="color: rgb(51, 51, 255);"&gt;return &lt;/span&gt;1;&lt;br /&gt;&lt;br /&gt;                   &lt;span style="color: rgb(51, 51, 255);"&gt;return &lt;/span&gt;0;&lt;br /&gt;               }&lt;br /&gt;               &lt;span style="color: rgb(51, 51, 255);"&gt;if &lt;/span&gt;((isNumeric(x.GetType())) &amp;&amp;amp; (!isNumeric(y.GetType())))&lt;br /&gt;                   &lt;span style="color: rgb(51, 51, 255);"&gt;return &lt;/span&gt;-1;&lt;br /&gt;               &lt;span style="color: rgb(51, 51, 255);"&gt;if &lt;/span&gt;((!isNumeric(x.GetType())) &amp;&amp;amp; (isNumeric(y.GetType())))&lt;br /&gt;                   &lt;span style="color: rgb(51, 51, 255);"&gt;return &lt;/span&gt;1;&lt;br /&gt;&lt;br /&gt;               &lt;span style="color: rgb(51, 51, 255);"&gt;return &lt;/span&gt;&lt;span style="color: rgb(51, 204, 255);"&gt;String&lt;/span&gt;.Compare(x.ToString(), y.ToString());&lt;br /&gt;           }&lt;br /&gt;&lt;br /&gt;          &lt;br /&gt;       }&lt;br /&gt;&lt;br /&gt;      &lt;br /&gt;   }&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5758970642763704665-6657790711215812115?l=snippets101.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://snippets101.blogspot.com/2007/06/sorted-hashtable.html</link><author>noreply@blogger.com (Alberto)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5758970642763704665.post-6051766612667112270</guid><pubDate>Mon, 11 Jun 2007 11:22:00 +0000</pubDate><atom:updated>2007-06-12T03:57:38.618-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">cisco</category><category domain="http://www.blogger.com/atom/ns#">network</category><category domain="http://www.blogger.com/atom/ns#">configuration</category><title>Dual armed server to server load balancing con Cisco ACE</title><description>&lt;div style="text-align: justify;"&gt;Let's say you have a large data center, let's say that in this data center you have lots of dual-armed load balanced serverfarms. It could happen that these servers need to call each other's balanced services. Here's how this could be accomplished with very light  configuration on real servers.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Scenario :&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_Tdhn-HYCK18/Rm2kIG--vxI/AAAAAAAAANo/SCYqHMu04t0/s1600-h/scenario1.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_Tdhn-HYCK18/Rm2kIG--vxI/AAAAAAAAANo/SCYqHMu04t0/s320/scenario1.gif" alt="" id="BLOGGER_PHOTO_ID_5074892814337097490" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The BLUE-SERVERFARM real servers needs to query a web service located on the YELLOW-SERVERFARM, on tcp port 2000.&lt;br /&gt;All of the real servers use the "upper" interface (vlan 101) to act as servers, i.e. to answer clients' queries coming from the ACE.&lt;br /&gt;The "internal" interface (vlan 102) is used by the servers when they act as client of someone else's service.&lt;br /&gt;Easy to configure this, matter of routes on the servers. The default gateway is always the ACE, there's a static route on the internal interface for all the ips the server could query acting as a client.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_Tdhn-HYCK18/Rm2kZm--vyI/AAAAAAAAANw/XNO-kMjAjXY/s1600-h/req.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_Tdhn-HYCK18/Rm2kZm--vyI/AAAAAAAAANw/XNO-kMjAjXY/s320/req.gif" alt="" id="BLOGGER_PHOTO_ID_5074893114984808226" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Without configuring Source NAT con the ACE, all connections fail, because of asymmetric response from servers of the YELLOW-SERVERFARM.&lt;br /&gt;When a connection arrives from the ACE, the source ip is the internal interface of the client server. As this ip is on a lan directly connected on the destination server, the response will return over the INTERNAL, not over the same route of the request.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_Tdhn-HYCK18/Rm2k1W--vzI/AAAAAAAAAN4/vJ_cCMKrdB8/s1600-h/response.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_Tdhn-HYCK18/Rm2k1W--vzI/AAAAAAAAAN4/vJ_cCMKrdB8/s320/response.gif" alt="" id="BLOGGER_PHOTO_ID_5074893591726178098" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Solution:&lt;/span&gt;&lt;br /&gt;Source natting this requests on the ACE will cause the destination server not to know as directly connected the source ip, answering on the default gateway (ACE)  and so following the same path of the request.&lt;br /&gt;The simplest way I've found is to reserve a new virtual address only for requests coming from the servers on the same lan, as described above. So clients will continue query the service on the VIP 10.20.0.2 port 2000, while servers on the same lan will query the same service on the same port but on VIP 10.20.0.20, being Source-NATted  with an  IP from  the  SNATPOOL.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_Tdhn-HYCK18/Rm2md2--v0I/AAAAAAAAAOA/VZ3U54XzxZM/s1600-h/responseSNAT.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_Tdhn-HYCK18/Rm2md2--v0I/AAAAAAAAAOA/VZ3U54XzxZM/s320/responseSNAT.gif" alt="" id="BLOGGER_PHOTO_ID_5074895387022507842" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The real server of the YELLOW-SERVERFARM responding to the request, seeing it from a SNATted address will route the response via the default gateway (ACE) which will send back packets on the same path of the request.&lt;br /&gt;&lt;br /&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;probe tcp 2000-TCP&lt;br /&gt;port 2000&lt;br /&gt;interval 10&lt;br /&gt;passdetect interval 5&lt;br /&gt;passdetect count 1&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;probe icmp ICMP&lt;br /&gt;interval 10&lt;br /&gt;passdetect interval 5&lt;br /&gt;passdetect count 1&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;rserver host  SERVER-10.1&lt;br /&gt;ip address 10.0.10.1&lt;br /&gt;inservice&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;br /&gt;rserver host  SERVER-10.2&lt;br /&gt;ip address 10.0.10.2&lt;br /&gt;inservice&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="250061418-05062007"&gt;&lt;/span&gt; &lt;/div&gt; &lt;div&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;rserver host  SERVER-10.3&lt;br /&gt;ip address 10.0.10.3&lt;br /&gt;inservice&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;br /&gt;rserver host  SERVER-10.4&lt;br /&gt;ip address 10.0.10.4&lt;br /&gt;inservice&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;br /&gt;serverfarm host BLUE-SERVERFARM_20.1:80&lt;br /&gt;failaction purge&lt;br /&gt;probe ICMP&lt;br /&gt;rserver &lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;SERVER-10.1 80&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;     inservice&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;  rserver &lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;SERVER-10.2 80&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;     inservice&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;serverfarm host YELLOW-SERVERFARM_20.2:2000&lt;br /&gt;failaction purge&lt;br /&gt;probe 2000-TCP&lt;br /&gt;rserver &lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;SERVER-10.3 2000&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;     inservice&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;  rserver &lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;SERVER-10.4 2000&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;     inservice&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span class="250061418-05062007"&gt;&lt;/span&gt; &lt;/div&gt; &lt;div&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;class-map match-all  L4-MAP-&lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;BLUE-SERVERFARM_20.1:80&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;2 match virtual-address 10.0.20.1 tcp eq www&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span class="250061418-05062007"&gt;&lt;/span&gt; &lt;/div&gt; &lt;div&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;class-map match-all  L4-MAP-YELLOW&lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;-SERVERFARM_20.2:2000&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;2 match virtual-address 10.0.20.2 tcp eq 2000&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;class-map match-all  L4-SNAT-MAP-YELLOW&lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;-SERVERFARM_20.20:2000&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;2 match virtual-address 10.0.20.20 tcp eq 2000&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;policy-map type  loadbalance first-match L7-&lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;BLUE-SERVERFARM_20.1:80&lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;  class class-default&lt;br /&gt;   serverfarm &lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;BLUE-SERVERFARM_20.1:80&lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;br /&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;policy-map type  loadbalance first-match L7-&lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;YELLOW&lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;-SERVERFARM_20.2:2000&lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;  class class-default&lt;br /&gt;   serverfarm &lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;YELLOW&lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;-SERVERFARM_20.2:2000&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="250061418-05062007"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:arial;"&gt;policy-map multi-match L4-POLICYMAPMULTI&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt; &lt;div&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;class &lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;L4-MAP-&lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;BLUE-SERVERFARM_20.1:80&lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;    loadbalance vip inservice&lt;br /&gt;loadbalance  policy &lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;L7-&lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;BLUE-SERVERFARM_20.1:80&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;class &lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;L4-MAP-YELLOW&lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;-SERVERFARM_20.2:2000&lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;    loadbalance vip inservice&lt;br /&gt;loadbalance  policy &lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;L7-YELLOW&lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;-SERVERFARM_20.2:2000&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;class &lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;L4-MAP-YELLOW&lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;-SERVERFARM_20.20:2000&lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;    loadbalance vip inservice&lt;br /&gt;loadbalance  policy &lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;L7-YELLOW&lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;-SERVERFARM_20.2:2000&lt;br /&gt;nat dynamic 1 vlan 101&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;interface vlan 101&lt;br /&gt;description SERVERSIDE&lt;br /&gt;ip address 10.0.10.199 255.255.255.0&lt;br /&gt;nat-pool 1 10.0.21.1 10.0.21.254 netmask 255.255.255.0&lt;br /&gt;no shutdown&lt;br /&gt;interface vlan 151&lt;br /&gt;description FIREWALLSIDE&lt;br /&gt;ip address 10.0.0.2 255.255.255.240&lt;br /&gt;service-policy input L4-POLICYMAPMULTI&lt;br /&gt;no shutdown&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5758970642763704665-6051766612667112270?l=snippets101.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://snippets101.blogspot.com/2007/06/dual-armed-server-to-server-load.html</link><author>noreply@blogger.com (Alberto)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://bp1.blogger.com/_Tdhn-HYCK18/Rm2kIG--vxI/AAAAAAAAANo/SCYqHMu04t0/s72-c/scenario1.gif" height="72" width="72" /><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5758970642763704665.post-3684214781985428551</guid><pubDate>Fri, 08 Jun 2007 14:17:00 +0000</pubDate><atom:updated>2007-06-08T09:07:25.427-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">cisco</category><category domain="http://www.blogger.com/atom/ns#">network</category><category domain="http://www.blogger.com/atom/ns#">configuration</category><title>FTP serverfarm  on Cisco ACE</title><description>This is a mix from Cisco forums and hundreds of trials, being the Cisco ACE Server Load Balancing configuration guide not so clear...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Scenario  :&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_Tdhn-HYCK18/Rml9k2--vvI/AAAAAAAAANY/2pCnIoYAIOk/s1600-h/scenario.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_Tdhn-HYCK18/Rml9k2--vvI/AAAAAAAAANY/2pCnIoYAIOk/s320/scenario.gif" alt="" id="BLOGGER_PHOTO_ID_5073724527398010610" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Active FTP :&lt;/span&gt;&lt;br /&gt;This is the simpler and it's only a matter of ACE configuration :&lt;br /&gt;&lt;div&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;br /&gt;probe tcp 21-TCP&lt;br /&gt;port 21&lt;br /&gt;interval 10&lt;br /&gt;passdetect interval 5&lt;br /&gt;passdetect count 1&lt;br /&gt;&lt;br /&gt;rserver host  SERVER-10.1&lt;br /&gt;ip address 10.0.10.1&lt;br /&gt;inservice&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;br /&gt;rserver host  SERVER-10.2&lt;br /&gt;ip address 10.0.10.2&lt;br /&gt;inservice&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt; &lt;div&gt;&lt;span class="250061418-05062007"&gt;&lt;/span&gt; &lt;/div&gt; &lt;div&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;br /&gt;serverfarm host FTPFARM_20.1:21&lt;br /&gt;failaction purge&lt;br /&gt;probe 21-TCP&lt;br /&gt;rserver &lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;SERVER-10.1 21&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;     inservice&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;  rserver &lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;SERVER-10.2 21&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;     inservice&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt; &lt;div&gt;&lt;span class="250061418-05062007"&gt;&lt;/span&gt; &lt;/div&gt; &lt;div&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;br /&gt;sticky ip-netmask 255.255.255.255 address source &lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;STICKY-&lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;FTPFARM_20.1:21&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;  timeout 20&lt;br /&gt;timeout activeconns&lt;br /&gt;replicate sticky&lt;br /&gt;serverfarm &lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;FTPFARM_20.1:21&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;br /&gt;&lt;br /&gt;class-map match-all  L4-MAP-FTPFARM_20.1:21&lt;br /&gt;2 match virtual-address 10.0.20.1  &lt;strong&gt;any&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span class="250061418-05062007"&gt;&lt;/span&gt; &lt;/div&gt; &lt;div&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;br /&gt;policy-map type  loadbalance first-match L7-&lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;FTPFARM_20.1:21&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;  class class-default&lt;br /&gt;sticky-serverfarm STICKY-&lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;FTPFARM_20.1:21&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span class="250061418-05062007"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:arial;"&gt;policy-map multi-match L4-POLICYMAPMULTI-FTP&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt; &lt;div&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;class &lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;L4-MAP-FTPFARM_20.1:21&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;    loadbalance vip inservice&lt;br /&gt;loadbalance  policy &lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;L7-&lt;/span&gt;&lt;/span&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;FTPFARM_20.1:21&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;  &lt;strong&gt;  inspect  ftp&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;span class="250061418-05062007"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;br /&gt;interface vlan 101&lt;br /&gt;description SERVERSIDE&lt;br /&gt;ip address 10.0.10.199 255.255.255.0&lt;br /&gt;no normalization&lt;br /&gt;no shutdown&lt;br /&gt;interface vlan 151&lt;br /&gt;description FIREWALLSIDE&lt;br /&gt;ip address 10.0.0.2 255.255.255.240&lt;br /&gt;no normalization&lt;br /&gt;service-policy input L4-POLICYMAPMULTI-FTP&lt;br /&gt;no shutdown&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Passive FTP :&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: justify;"&gt;&lt;span&gt;In order to make Passive FTP connection work, with the firewall checking consistency of source and destination addresses, youll need to change the FTP server configuration.&lt;/span&gt;&lt;br /&gt;&lt;span&gt;On the frox server there's a configuration parameter "PASV Reply Address" that should be set to the VIP (10.0.20.1) in order to have the FTP server call back the client (passive mode) with the same address the firewall see for the active client-server communication.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5758970642763704665-3684214781985428551?l=snippets101.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://snippets101.blogspot.com/2007/06/ftp-serverfarm-on-cisco-ace.html</link><author>noreply@blogger.com (Alberto)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://bp0.blogger.com/_Tdhn-HYCK18/Rml9k2--vvI/AAAAAAAAANY/2pCnIoYAIOk/s72-c/scenario.gif" height="72" width="72" /><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5758970642763704665.post-3139971023175668800</guid><pubDate>Fri, 08 Jun 2007 10:49:00 +0000</pubDate><atom:updated>2007-06-08T08:12:07.805-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">network</category><category domain="http://www.blogger.com/atom/ns#">pl/sql</category><title>dotted notation to number</title><description>Writing my ip address management software I needed something to order my ips in sql.The dotted notation wasn't so efficient, so, I needed to convert it in an integer.&lt;br /&gt;Wandering on the Net, and with the CCNA study guide open, here's the result, starting from a script read somewhere...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;CREATE FUNCTION&lt;/span&gt; dbo.IPDottedToNumber( @IPAddress &lt;span style="color: rgb(51, 51, 255);"&gt;varchar(&lt;/span&gt;15))&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    &lt;span style="color: rgb(51, 51, 255);"&gt;RETURNS bigint&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;AS&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;BEGIN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   &lt;span style="color: rgb(51, 51, 255);"&gt; DECLARE    &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        @biOctetA    &lt;span style="color: rgb(0, 0, 153);"&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;bigint&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        @biOctetB   &lt;span style="color: rgb(51, 51, 255);"&gt; bigint&lt;/span&gt;,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        @biOctetC   &lt;span style="color: rgb(51, 51, 255);"&gt; bigint&lt;/span&gt;,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        @biOctetD   &lt;span style="color: rgb(51, 51, 255);"&gt; bigint&lt;/span&gt;,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        @biIP        &lt;span style="color: rgb(51, 51, 255);"&gt;bigint&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;DECLARE &lt;/span&gt;@tbl &lt;span style="color: rgb(51, 51, 255);"&gt;TABLE &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;       (&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   OctetNo     &lt;span style="color: rgb(51, 51, 255);"&gt;smallint&lt;/span&gt;,          &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   Octet       &lt;span style="color: rgb(51, 51, 255);"&gt;bigint&lt;/span&gt;             &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;       )&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 102);font-family:courier new;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;INSERT INTO&lt;/span&gt; @tbl&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    &lt;span style="color: rgb(51, 51, 255);"&gt;SELECT&lt;/span&gt; ElementID, &lt;span style="color: rgb(204, 51, 204);"&gt;CONVERT&lt;/span&gt;(&lt;span style="color: rgb(51, 51, 255);"&gt;bigint&lt;/span&gt;,Element) &lt;span style="color: rgb(51, 51, 255);"&gt;FROM &lt;/span&gt;dbo.Split(@IPAddress, &lt;span style="color: rgb(255, 0, 0);"&gt;'.'&lt;/span&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    &lt;span style="color: rgb(51, 51, 255);"&gt;IF&lt;/span&gt; (&lt;span style="color: rgb(51, 51, 255);"&gt;SELECT &lt;/span&gt;&lt;span style="color: rgb(204, 51, 204);"&gt;COUNT&lt;/span&gt;(*) &lt;span style="color: rgb(51, 51, 255);"&gt;FROM &lt;/span&gt;@tblArray &lt;span style="color: rgb(51, 51, 255);"&gt;WHERE &lt;/span&gt;Octet &lt;span style="color: rgb(153, 153, 153);"&gt;BETWEEN &lt;/span&gt;0 &lt;span style="color: rgb(153, 153, 153);"&gt;AND &lt;/span&gt;255) = 4&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   &lt;span style="color: rgb(51, 51, 255);"&gt; BEGIN&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;        &lt;span style="color: rgb(51, 51, 255);"&gt;SET&lt;/span&gt; @biOctetA = (SELECT (Octet * 256 * 256 * 256) FROM @tblArray &lt;span style="color: rgb(51, 51, 255);"&gt;WHERE &lt;/span&gt;OctetNo = 1)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        &lt;span style="color: rgb(51, 51, 255);"&gt;&lt;br /&gt;SET&lt;/span&gt; @biOctetB = (SELECT (Octet * 256 * 256 ) FROM @tblArray &lt;span style="color: rgb(51, 51, 255);"&gt;WHERE &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;OctetNo     &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;= 2)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        &lt;span style="color: rgb(51, 51, 255);"&gt;&lt;br /&gt;SET&lt;/span&gt; @biOctetC = (SELECT (Octet * 256 ) FROM @tblArray &lt;span style="color: rgb(51, 51, 255);"&gt;WHERE &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;OctetNo     &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;= 3)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        &lt;span style="color: rgb(51, 51, 255);"&gt;&lt;br /&gt;SET&lt;/span&gt; @biOctetD = (SELECT (Octet) &lt;span style="color: rgb(51, 51, 255);"&gt;FROM &lt;/span&gt;@tblArray &lt;span style="color: rgb(51, 51, 255);"&gt;WHERE &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;OctetNo     &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;= 4)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        &lt;span style="color: rgb(51, 51, 255);"&gt;&lt;br /&gt;SET&lt;/span&gt; @biIP = @biOctetA + @biOctetB + @biOctetC + @biOctetD&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    &lt;span style="color: rgb(51, 51, 255);"&gt;&lt;br /&gt;END&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    &lt;span style="color: rgb(51, 51, 255);"&gt;RETURN&lt;/span&gt;(@biIP)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;END&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5758970642763704665-3139971023175668800?l=snippets101.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://snippets101.blogspot.com/2007/06/dotted-notation-to-number.html</link><author>noreply@blogger.com (Alberto)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5758970642763704665.post-1332828470328416481</guid><pubDate>Thu, 07 Jun 2007 21:28:00 +0000</pubDate><atom:updated>2007-06-07T14:38:30.195-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">welcome</category><title>You're welcome</title><description>&lt;div style="text-align: justify;"&gt;As a network engineer and a software developer, I must face technical issues every day, of various complexity. Most of them come from my laziness in reading all of the manual....&lt;br /&gt;&lt;br /&gt;However, since the 80% of this issues found a solution by reading something on a forum, a blog, or some code exchange site, I thought it were high time to pay back the favour to Internet.&lt;br /&gt;&lt;br /&gt;In this blog I'll put all of the solutions I find (by myself or not), code snippets, configurations, strange things that happens to people like me.&lt;br /&gt;&lt;br /&gt;Enjoy.&lt;br /&gt;&lt;br /&gt;PS: I'm sure my english is one of the worst you can find around the 'net, but hey! I'm an italian guy, please be patient, I know much better how to cook...&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5758970642763704665-1332828470328416481?l=snippets101.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://snippets101.blogspot.com/2007/06/youre-welcome.html</link><author>noreply@blogger.com (Alberto)</author><thr:total>0</thr:total></item></channel></rss>

