IPv4 Subnetze <= /25 bug



  • Hallo,

    In i-doit 0.9.9-8 ist es nicht möglich beliebige Subnets welche kleiner als /25 sind anzulegen.
    Das letzte Oktet wird dabei immer auf 0 gesetzt.
    z.B. wenn man 192.168.0.128/25 anlegen will wird die Netz IP immer auf 192.168.0.0 gesetzt.

    Der Fehler befindet sich in der validate_net_ip Javascript Funktion. Die Absicht des Autors warum das letzte Oktet in diesen Fällen auf 0 gesetzt wird verstehe ich nicht wirklich.

    Folgender Patch sollte das Problem lösen:

    
    --- a/src/themes/default/smarty/templates/content/bottom/content/cats__net.tpl
    +++ b/src/themes/default/smarty/templates/content/bottom/content/cats__net.tpl
    @@ -98,22 +98,8 @@ window.calcNetmask = function(cidr) {
     }
    
     window.validate_net_ip = function(){
    -
    -       var net_ident = 'C__CATS__NET__NET_V4';
    -       var from_ident = 'C__CATS__NET__ADDRESS_RANGE_FROM_V4';
    -
            for(var i = 0; i < 4; i++){
    -               if(i < 3){
    -                       if($(net_ident+'['+i+']').value != $(from_ident+'['+i+']').value){
    -                               $(net_ident+'['+i+']').value = $(from_ident+'['+i+']').value;
    -                       }
    -               } else{
    -                       if($(net_ident+'['+i+']').value != ($(from_ident+'['+i+']').value-1)){
    -                               $(net_ident+'['+i+']').value = ($(from_ident+'['+i+']').value-1);
    -                       } else{
    -                               $(net_ident+'['+i+']').value = 0;
    -                       }
    -               }
    +               $('C__CATS__NET__NET_V4['+i+']').value &= $('C__CATS__NET__MASK_V4['+i+']').value;
            }
     }
    

    Die ganzen Logik die ich nicht nachvollziehen kann wird ersetzt durch eine ziemlich simple:
    NET_IP = IP & NET_MASK


 


Datenschutz / Privacy Policy