Use Normalized subnet for dhcp 32/52832/1
authorElisha Oren <elisha.oren@hpe.com>
Tue, 21 Feb 2017 12:09:12 +0000 (14:09 +0200)
committerElisha Oren <elisha.oren@hpe.com>
Sun, 5 Mar 2017 12:23:56 +0000 (14:23 +0200)
(i.e. 1.2.3.0/24 instead of 1.2.3.4/24)

Change-Id: I695b9a261bd201c71553e10494f5998acea8873e
Signed-off-by: Elisha Oren <elisha.oren@hpe.com>
dlux/cpeui/cpeui-module/src/main/resources/cpeui/dialogs/DHCP.tpl.html
dlux/cpeui/cpeui-module/src/main/resources/cpeui/services/utils.js
dlux/cpeui/cpeui-module/src/main/resources/cpeui/tenant.controller.js

index ae596bdb7a7175fec022c83729ca44efbc5c0a91..8b3e1958d3fd32f0b132ba0efb613d5c3dca06ba 100644 (file)
                     </div>
                 </form>
                        <md-input-container class="complexSelect md-block right" style="margin-top:0">
-                         <md-select md-container-class="complexSelect" ng-attr-disabled="{{getAvailableNetwork().length ? undefined : 'disabled' }}" name="networks" ng-model="selectedNetworks" md-selected-text="'Enable Networks'" multiple> <!-- md-on-close="updateEnabled()"> -->
+                         <md-select md-container-class="complexSelect" ng-attr-disabled="{{getAvailableNetwork().length ? undefined : 'disabled' }}" name="networks" ng-model="selectedNetworks" md-selected-text="'Enable Networks'" multiple>
                              <md-checkbox style="margin: 11px" ng-checked="isAllSelected()" md-indeterminate="isPartialSelected()" ng-click="selectAll()"> Select All</md-checkbox>
                              <div class="complexSelectOptions">
-                                 <md-option ng-repeat="u in getAvailableNetwork()" ng-value="u">{{u.mefUni['ip-address']}}</md-option>
+                                 <md-option ng-repeat="u in getAvailableNetwork()" ng-value="u">{{u.cidr}}</md-option>
                              </div>
                              <md-button class="btn btn-info" ng-click="updateEnabled()" style="background-color: orange;width: 90%;">Apply </md-button>
                          </md-select>
index 5b3cd503eea71b93b1c8325fb80b56870b6aef7e..ac6f1afdebd5746c33c4f9309cea3a0ec56dee06 100644 (file)
@@ -16,28 +16,31 @@ define([ 'app/cpeui/cpeui.module' ], function(cpeui) {
           return Math.floor(Math.random() * Math.pow(2, 31));
       };
       
+      function intToIp(intVal) {
+          var byte1 = ( intVal >>> 24 );
+          var byte2 = ( intVal >>> 16 ) & 255;
+          var byte3 = ( intVal >>>  8 ) & 255;
+          var byte4 = intVal & 255;
+          return ( byte1 + '.' + byte2 + '.' + byte3 + '.' + byte4 );
+      }
       
       svc.getSubnetEdges = function(subnet) {
           var ip = subnet.split('/')[0];
           var mask = subnet.split('/')[1];
+          if (mask > 30) {
+              return {min:ip,
+                      max:ip,
+                      cidr:subnet}
+          }
           var ipParts = ip.split('.');
           var ipValue = Number(ipParts[0]) * Math.pow(2,24) + Number(ipParts[1]) * Math.pow(2,16) + Number(ipParts[2]) * Math.pow(2,8) + Number(ipParts[3]);
-          var minIP = (ipValue & (~(Math.pow(2,32-mask)-1))) + 1;
-          var byte1 = ( minIP >>> 24 );
-          var byte2 = ( minIP >>> 16 ) & 255;
-          var byte3 = ( minIP >>>  8 ) & 255;
-          var byte4 = minIP & 255;
-          minIP =  ( byte1 + '.' + byte2 + '.' + byte3 + '.' + byte4 );
-          
-          var maxIP = (ipValue | ((Math.pow(2,32-mask)-1))) -1;
-          byte1 = ( maxIP >>> 24 );
-          byte2 = ( maxIP >>> 16 ) & 255;
-          byte3 = ( maxIP >>>  8 ) & 255;
-          byte4 = maxIP & 255;
-          maxIP =  ( byte1 + '.' + byte2 + '.' + byte3 + '.' + byte4 );
-          
-          return [minIP, maxIP];
+          var minIP = intToIp((ipValue & (~(Math.pow(2,32-mask)-1))) + 1);
+          var maxIP = intToIp((ipValue | ((Math.pow(2,32-mask)-1))) -1);
+          var cidr = intToIp(ipValue & (~(Math.pow(2,32-mask)-1)))+"/"+mask;
           
+          return {min:minIP,
+                  max:maxIP,
+                  cidr:cidr};
       }
       
       return svc;
index 4cc72a5f07b4502f24b9d699406a5ca5498eb537..2bc74bc559e3be16ec42eac20b1b690beba3598d 100644 (file)
@@ -390,10 +390,8 @@ define([ 'app/cpeui/cpeui.module' ], function(cpeui) {
         };
         
         $scope.updateEnabled = function() {
-            $scope.selectedNetworks.forEach(function(u){
-                if (u.mefUni) {
-                    $scope.addDhcp(u.mefUni['ip-address']);
-                }
+            $scope.selectedNetworks.forEach(function(subnet){
+                $scope.addDhcp(subnet);
             });
             $scope.selectedNetworks = [];
             $('md-backdrop').click();// close md-select dropdown
@@ -437,15 +435,14 @@ define([ 'app/cpeui/cpeui.module' ], function(cpeui) {
 
         $scope.getAvailableNetwork = function(){
             if ($scope.dhcps !== undefined) {
-                return $scope.params.ipvcUnis.filter(x => (x.mefUni && $scope.dhcps[x.mefUni['ip-address']] == undefined));
+                return $scope.params.ipvcUnis.filter(x => ($scope.dhcps[x.cidr] == undefined));
             } else {
                 return $scope.params.ipvcUnis;
             }
         }
 
         $scope.addDhcp = function(subnet) {
-            var edges = CpeUiUtils.getSubnetEdges(subnet);
-            CpeuiSvc.addDhcp($scope.vrfid, subnet, edges[0] ,edges[1],function(){
+            CpeuiSvc.addDhcp($scope.vrfid, subnet.cidr, subnet.min ,subnet.max,function(){
                 // TODO find a way to getDhcp only once, after the last add
                 $scope.updateDhcpData();
             });
@@ -505,10 +502,7 @@ define([ 'app/cpeui/cpeui.module' ], function(cpeui) {
         CpeuiSvc.getServicesVrfId(ipvc['svc-id'],function(vrfId){
             params = {ipvc:ipvc,ipvcUnis:[],vrfId:vrfId};
             if (ipvc.ipvc.unis && ipvc.ipvc.unis.uni) {
-                params.ipvcUnis = angular.copy(ipvc.ipvc.unis.uni);
-                params.ipvcUnis.forEach(function(u){
-                    u.mefUni = $scope.getMefInterfaceIpvc(u['uni-id'],u['ip-uni-id']);
-                });
+                params.ipvcUnis = ipvc.ipvc.unis.uni.map(u => CpeUiUtils.getSubnetEdges($scope.getMefInterfaceIpvc(u['uni-id'],u['ip-uni-id'])['ip-address']));
             }
             new CpeuiDialogs.Dialog('DHCP', params, function() {
                 $scope.updateEvcView();