www.usr.com/support/gpl/USR9113_release1.0.tar.gz
[bcm963xx.git] / userapps / broadcom / cfm / html / qoscls.html
index da7eb67..622777b 100755 (executable)
@@ -4,11 +4,11 @@
 -->
 <html>
 <head>
-       <title>Quality of Service</title>
+       <title>Add Network Traffic Class</title>
 
-       <link href="usr_main.css" rel="stylesheet" type="text/css">
-       <link href="usr_menus.css" rel="stylesheet" type="text/css"><script src="usr_menus.js" type="text/javascript"></script><script src="usr_menus_build.js" type="text/javascript"></script>
-       <script src="usr_common.js" type="text/javascript"></script>
+       <link href="usr_layout.css" type="text/css" rel="stylesheet" /><script src="usr_layout.js" type="text/javascript"></script>
+       <link href="usr_menus_dropdown.css" rel="stylesheet" type="text/css"><script src="usr_menus_dropdown.js" type="text/javascript"></script><script src="usr_menus_build.js" type="text/javascript"></script>
+       <link href="usr_device.css" type="text/css" rel="stylesheet" /><script src="usr_device.js" type="text/javascript"></script><link href="usr_91xx.css" type="text/css" rel="stylesheet" /><script src="usr_91xx.js" type="text/javascript"></script><script src="usr_resources.js" type="text/javascript"></script>
        <script src="portName.js" type="text/javascript"></script>
 
    <meta HTTP-EQUIV='Pragma' CONTENT='no-cache'>
    <script type="text/javascript">
 <!-- hide
 
-setPageTitle("<%ejGetWlJS(wlInterface)%>");
+var glbDisplayPhysicalPort = false;
+
+/*if (document.getElementById) onload = function () {
+   var i, a;
+   for(i=0; (a = document.getElementsByTagName('tr')[i]); i++) {
+      if ((/SrcMacAddr/i.test(a.id)) ||
+          (/SrcMacMask/i.test(a.id)) ||
+          (/DstMacAddr/i.test(a.id)) ||
+          (/DstMacMask/i.test(a.id)) ||
+          (/DscpMark/i.test(a.id)))
+               {
+         a.style.display = "none";
+      }
+      else
+         a.style.display = "";
+   }
+}
+*/
+function diffServCfgCb (cb) {
+   var i, a;
+   if (cb.checked == true) {
+      for(i=0; (a = document.getElementsByTagName('tr')[i]); i++) {
+         if ((/IpPre/i.test(a.id)) ||
+             (/IpTos/i.test(a.id)))
+               {
+                a.style.display = "none";
+         }
+         if ((/SrcMacAddr/i.test(a.id)) ||
+             (/SrcMacMask/i.test(a.id)) ||
+             (/DstMacAddr/i.test(a.id)) ||
+             (/DstMacMask/i.test(a.id)) ||
+             (/DscpMark/i.test(a.id)))
+       {
+               a.style.display = "";
+         }
+      }
+   } else {
+      for(i=0; (a = document.getElementsByTagName('tr')[i]); i++) {
+         if ((/SrcMacAddr/i.test(a.id)) ||
+             (/SrcMacMask/i.test(a.id)) ||
+             (/DstMacAddr/i.test(a.id)) ||
+             (/DstMacMask/i.test(a.id)) ||
+             (/DscpMark/i.test(a.id)))
+         {
+                a.style.display = "none";
+         }
+         else
+                a.style.display = "";
+      }
+   }
+}
 
 function btnApply() {
    var loc = 'qoscls.cmd?action=add';
@@ -87,6 +137,26 @@ function btnApply() {
                        return;
                }
 
+               if ( srcmacaddr.value != "" && isValidMacAddress(srcmacaddr.value) == false ) {
+                       alert('Source MAC address "' + srcmacaddr.value + '" is invalid MAC address.');
+                       return;
+               }
+               
+               if ( srcmacaddr.value == "" && srcmacmask.value != "" ) {
+                       alert('Cannot have source MAC mask without source MAC address.');
+                       return;
+               }
+               
+               if ( dstmacaddr.value != "" && isValidMacAddress(dstmacaddr.value) == false ) {
+                       alert('Destination MAC address "' + dstmacaddr.value + '" is invalid MAC address.');
+                       return;
+               }
+               
+               if ( dstmacaddr.value == "" && dstmacmask.value != "" ) {
+                       alert('Cannot have destination MAC mask without destination MAC address.');
+                       return;
+               }
+
                if ( (srcport.value != "" || dstport.value != "") &&
                        (protocol.selectedIndex > 2) )
                {
@@ -142,6 +212,32 @@ function btnApply() {
          loc += '&vlan8021p=' + val;
       }
 
+      // Check if the DiffServ configuration is enabled
+      if (enblDiffServCb.checked == false) {
+         // IP precedence bits
+         idx = precedence.selectedIndex;
+         val = precedence.options[idx].value;
+         loc += '&precedence=' + val;
+
+         // IP type of service bits
+         idx = tos.selectedIndex;
+         val = tos.options[idx].value;
+         loc += '&tos=' + val;
+      } else {
+         idx = dscp.selectedIndex;
+         if ( idx > 0 ) {
+            loc += '&dscpMark=' + dscp.options[idx].value;
+         }
+      }
+
+      // physical lan port ifc name
+     if (glbDisplayPhysicalPort)
+        loc += '&lanIfcName=' + lanIfcName.options[lanIfcName.selectedIndex].value;
+      // protocol
+      idx = protocol.selectedIndex;
+      val = protocol.options[idx].value;
+      loc += '&protocol=' + val;
+
       // source address
       if ( srcaddr.value != "" )
          loc += '&srcAddr=' + srcaddr.value;
@@ -166,13 +262,43 @@ function btnApply() {
       if ( dstport.value != "" )
          loc += '&dstPort=' + dstport.value;
 
-          // WAN 802.1p priority
+      // DiffServ configuration
+      if ( enblDiffServCb.checked == true ) {
+         loc += '&diffServCfg=' + 3;
+      } else {
+         loc += '&diffServCfg=' + 0;
+      }
+
+      // source MAC address
+      if ( srcmacaddr.value != "" )
+         loc += '&srcMacAddr=' + srcmacaddr.value;
+
+      // destination MAC address
+      if ( dstmacaddr.value != "" )
+         loc += '&dstMacAddr=' + dstmacaddr.value;
+
+      // source MAC mask
+      if ( srcmacmask.value != "" )
+         loc += '&srcMacMask=' + srcmacmask.value;
+
+      // destination MAC mask
+      if ( dstmacmask.value != "" )
+         loc += '&dstMacMask=' + dstmacmask.value;
+
+      // Check if DiffServ configuration is enabled
+      //if (enblDiffServCb.checked == false) {
+      // VLAN 802.1p priority
+      idx = vlan8021p.selectedIndex;
+      val = vlan8021p.options[idx].value;
+      loc += '&vlan8021p=' + val;
+
+           // WAN 802.1p priority
       idx = wanVlan8021p.selectedIndex;
       val = wanVlan8021p.options[idx].value;
-      loc += '&wanVlan8021p=' + val;      
+      loc += '&wanVlan8021p=' + val;
+      //}
    }
-
-   var code = 'location = "' + loc + '"';
+   var code = 'location="' + loc + '"';
    eval(code);
 }
 
@@ -214,56 +340,90 @@ function manageTrafficOptions()
                <input type='text' size="20" name="txtclsname" id="txtclsname"></p>
 
        <h4>Class Priority, IP Precedence, and Type of Service</h4>
-       <p>If a non-zero value is selected for <b>IP Precedence</b> or
-       a value other than "Normal" for <b>IP Type of Service</b>,
+       <p>
+               <input type="checkbox" name="enblDiffServCb" id="enblDiffServCb" onClick="diffServCfgCb(this)">
+               <label for="enblDiffServCb">Enable differentiated service configuration</label>
+       </p>
+       <p>If a non-zero value is selected for <b>IP precedence</b> or
+       a value other than "Normal" for <b>IP type of service</b>,
        the corresponding TOS byte in the IP header of the upstream packet will be
        overwritten by the selected value.</p>
-   <table border="0">
-      <tr>
+       <p><b>Note:</b> If <b>Differentiated service configuration</b> checkbox is selected,
+       you will only need to assign <b>ATM transmit priority</b>. <b>IP Precedence</b> will not
+       be used for classification. IP TOS byte will be used for DSCP mark.</p>
+<table id="qosCls" border="0">
+      <tr id="tblItmAtmPrio">
          <td><label>ATM transmit priority:</label></td>
          <td><select name='priority' id='priority'>
-               <option value="1">Low</option>
-               <option value="2">Medium</option>
-               <option value="3">High</option>
+                               <option value="1">Low</option>
+                               <option value="2">Medium</option>
+                               <option value="3">High</option>
             </select></td>
       </tr>
-      <tr>
+      <tr id="tblItmDscpMark" style="display: none">
+         <td><label>Differentiated services code point (DSCP):</label></td>
+         <td><select name="dscp" id="dscp">
+                               <option value="0" selected>None</option>
+                               <option value="0">default(000000)</option>
+                               <option value="56">AF13(001110)</option>
+                               <option value="48">AF12(001010)</option>
+                               <option value="40">AF11(001001)</option>
+                               <option value="32">CS1(001000)</option>
+                               <option value="88">AF23(010110)</option>
+                               <option value="80">AF22(010010)</option>
+                               <option value="72">AF21(010001)</option>
+                               <option value="64">CS2(010000)</option>
+                               <option value="120">AF33(011110)</option>
+                               <option value="112">AF32(011010)</option>
+                               <option value="104">AF31(011001)</option>
+                               <option value="96">CS3(011000)</option>
+                               <option value="152">AF43(100110)</option>
+                               <option value="144">AF42(100010)</option>
+                               <option value="136">AF41(100001)</option>
+                               <option value="128">CS4(100000)</option>
+                               <option value="184">EF(101110)</option>
+                               <option value="160">CS5(101000)</option>
+                               <option value="192">CS6(110000)</option>
+                               <option value="224">CS7(111000)</option>
+            </select></td>
+      </tr>
+      <tr id="tblItmIpPre">
          <td><label>IP precedence:</label></td>
          <td><select name='precedence' id='precedence'>
-               <option value="-1" selected>(None)</option>
-               <option value="0">0</option>
-               <option value="1">1</option>
-               <option value="2">2</option>
-               <option value="3">3</option>
-               <option value="4">4</option>
-               <option value="5">5</option>
-               <option value="6">6</option>
-               <option value="7">7</option>
+                               <option value="-1" selected>None</option>
+                               <option value="0">0</option>
+                               <option value="1">1</option>
+                               <option value="2">2</option>
+                               <option value="3">3</option>
+                               <option value="4">4</option>
+                               <option value="5">5</option>
+                               <option value="6">6</option>
+                               <option value="7">7</option>
             </select></td>
       </tr>
-      <tr>
+      <tr id="tblItmIpTos">
          <td><label>IP type of service:</label></td>
          <td><select name='tos' id='tos'>
-               <option value="-1" selected>(None)</option>
-               <option value="0">Normal service</option>
-               <option value="2">Minimize cost</option>
-               <option value="4">Maximize reliability</option>
-               <option value="8">Maximize throughput</option>
-               <option value="16">Minimize delay</option>
+                               <option value="-1" selected>None</option>
+                               <option value="0">Normal service</option>
+                               <option value="2">Minimize cost</option>
+                               <option value="4">Maximize reliability</option>
+                               <option value="8">Maximize throughput</option>
+                               <option value="16">Minimize delay</option>
             </select></td>
       </tr>
-      <tr>
+      <tr id="tblItmDot1p">
             <td><label>802.1p (if 802.1q is enabled on WAN):</label></td>
             <td><select name="wanVlan8021p" id="wanVlan8021p">
-                           <option value="-1" selected>(None)</option>
-                          <option value="0">0</option>
-                          <option value="1">1</option>
-                          <option value="2">2</option>
-                          <option value="3">3</option>
-                          <option value="4">4</option>
-                          <option value="5">5</option>
-                          <option value="6">6</option>
-                          <option value="7">7</option>
+                               <option value="-1" selected>None</option>
+                               <option value="0">0</option>
+                               <option value="1">1</option>
+                               <option value="2">2</option>
+                               <option value="3">3</option>
+                               <option value="4">4</option>
+                               <option value="5">5</option>
+                               <option value="6">6</option>
+                               <option value="7">7</option>
                    </select></td>
        </tr>
        </table>
@@ -280,7 +440,7 @@ function manageTrafficOptions()
       <tr> 
          <td><label>Physical LAN port:</label></td>
          <td><select name="lanIfcName" id="lanIfcName">
-             <option value="" selected>(None)</option>
+             <option value="" selected>None</option>
 <script type="text/javascript">
 <!-- hide
 {
@@ -292,6 +452,7 @@ function manageTrafficOptions()
    interfaceInfo = '<%ejGetOther(bridgeInterfaceInfo, all)%>';
    var interfaces = interfaceInfo.split('|');
    interfaces.sort();
+   glbDisplayPhysicalPort = true;
    for ( i = 0; i < interfaces.length; i++ ) {
       dispName = getUNameByLName(brdId + '|' + interfaces[i]);
       if (dispName.indexOf('nas_') != -1)
@@ -329,6 +490,14 @@ function manageTrafficOptions()
          <td><label for="srcmask">Subnet mask:</label></td>
          <td><input type='text' size="20" name="srcmask" id="srcmask"></td>
       </tr>
+         <tr id="tblItmSrcMacAddr" style="display: none">
+            <td><label>Source MAC address:</label></td>
+            <td><input type="text" size="20" name="srcmacaddr" id="srcmacaddr" maxlength="17"></td>
+         </tr>
+         <tr id="tblItmSrcMacMask" style="display: none">
+            <td><label>Source MAC mask:</label></td>
+            <td><input type="text" size="20" name="srcmacmask" id="srcmacmask" maxlength="17"></td>
+         </tr>
 
       <tr><th align="left" colspan="2">Destination</th></tr>
       <tr>
@@ -343,6 +512,14 @@ function manageTrafficOptions()
          <td><label for="dstmask">Subnet mask:</label></td>
          <td><input type='text' size="20" name="dstmask" id="dstmask"></td>
       </tr>
+      <tr id="tblItmDstMacAddr" style="display: none">
+            <td><label>Destination MAC address:</label></td>
+            <td><input type="text" size="20" name="dstmacaddr" id="dstmacaddr" maxlength="17"></td>
+         </tr>
+         <tr id="tblItmDstMacMask" style="display: none">
+            <td><label>Destination MAC mask:</label></td>
+            <td><input type="text" size="20" name="dstmacmask" id="dstmacmask" maxlength="17"></td>
+         </tr>
    </table>
 
        <p id="id8021p"><label>802.1p priority:</label>
@@ -367,3 +544,4 @@ function manageTrafficOptions()
 
 </body>
 </html>
+