</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>
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;
};
$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
$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();
});
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();