abbrechen
Suchergebnisse werden angezeigt für 
Stattdessen suchen nach 
Meintest du 
1

Frage

2

Antwort

3

Lösung

Bug in Static DHCP Funktion der Vodafone Station, mit Fix-Anleitung für eure Entwickler
ikaros88
Smart-Analyzer
Smart-Analyzer

Leider lassen sich bei der Vodafone Station (Firmware AR01.02.037.03.09_092819_711.SIP.10) keine Geräte in die Static DHCP Liste eintragen wenn man mehr als 6 Geräte im LAN hat.

Warum ausgerechnet nur wenn man mehr als 6 Geräte hat?

Weil eure Programmierer den genialen Fehler gemacht haben und innerhalb einer For-Schleife die von i=0 bis i=[anzahl] läuft eine verschachtelte For-Schleife verwenden die von i=0 bis i=6 läuft. Da beide Variablen den gleichen Bezeichner haben überschreibt die innere Schleife bei jedem Durchlauf die Iterationsvariable i, wodurch die äußere Schleife nie beendet werden kann und die Administrationsoberfläche des Routers nach einiger Zeit abstürzt.

Bitte fixen. Den Code findet ihr in der Klasse "VM", Funktion "addRow", Zeile 78. Iterationsvariable i dort umbenennen.

22 Antworten 22
Manu
Ex-Moderator:in
Ex-Moderator:in

Hallo Philipp211,

 

unsere Geräte haben eine andere Softwareversion, als die hier im Beitrag genannten. Wir haben die 01.02.037.08. Also doch mal bei UM nachfragen...

 

Viele Grüße, Manu

 

Bewertet hilfreiche Beiträge mit Likes und Sternen!

Die Kernfunktionen der Firmware werden vermutlich direkt von Arris kommen oder? Allerdings bin ich mir bei der UI, welche in diesem Fall ja den Fehler verursacht, nicht sicher, ob diese nicht doch von Vodafone direkt implementiert werden 😉 Der Unitymedia Support kann auf jeden Fall genau gar nichts tun.

 

Auf jeden Fall kann man das Problem umgehen indem man mit den Debug Tools des Browsers die Javascript ausführung pausiert bevor man auf den Button drückt. Danach durchsteppen bis man in der function AddRow, Zeile 78 ankommt. Dann dort die Iterationsvariable der inneren Schleife umbenennen und ohne neuladen der Seite das Skript durch Drücken des Buttons neu starten.

 

Voll gut, dass der Bug immer noch existiert. Sehr vielsagend.

Wenn dein Anliegen geklärt ist, den Beitrag als gelöst markieren das er geschlossen werden kann. 

Danke für den Workaround, ist besser als immer alle Geräte ausschalten. Für mich jetzt vollkommen in Ordnung, für die meisten aber immer noch ein no go. Vor allem hast du ja schon gebau beschrieben was zu tun ist und trotzdem kommt das hier nicht bei den Entwicklern an...

@MasterScorpion warum sollte man hier schliessen?  das Problem ist nicht gelöst und der Workaround für Laien auch nicht unbedingt praktikabel. 

@ikaros88Danke für den Workaround. Nur leider kann ich damit nichts anfangen.

Kannst du bitte, auch wenn es nicht Deine Aufgabe ist, eine Step by Step Anleitung machen wie genau das mit dem Debuggen gehen soll?

 

Vielen Dank

Dann für alle die nicht so firm sind, eine einfachere Lösung:
Kopiert den unten stehenden code. Wenn ihr auf der Seite seid, auf der ihr statische DHCP IP Adressen pflegen könnt, dann drückt ihr F12 auf der Tastatur um die Entwicklertools für chrome zu öffnen. Dann geht ihr auf den Reiter/Tab Console und fügt den code ein. Dann drückt ihr enter, was die fehlerhafte Funktion überschreibt. Daraufhin könnt ihr ohne Probleme Geräte zur Liste hinzufügen.

function addRow(index) {
    var i;
    var MAC, IP;
    var tt = $("#TemplateRow").clone();
    var indexVal = $('.LanStaticDHCPTable').find('[idx]').length;
    tt.attr('idx', indexVal);
    var SelDeviceName = $("#AddDevicesSelect option:selected").val();
    var MacAddrToAdd = $('#LANpopUpAddDevice .extra_mac_address1').val() + ":" + $('#LANpopUpAddDevice .extra_mac_address2').val() + ":" + $('#LANpopUpAddDevice .extra_mac_address3').val() + ":" + $('#LANpopUpAddDevice .extra_mac_address4').val() + ":" + $('#LANpopUpAddDevice .extra_mac_address5').val() + ":" + $('#LANpopUpAddDevice .extra_mac_address6').val();
    var IPAddrToAdd = $('#LANpopUpAddDevice .extra_ip_address1').val() + "." + $('#LANpopUpAddDevice .extra_ip_address2').val() + "." + $('#LANpopUpAddDevice .extra_ip_address3').val() + "." + $('#LANpopUpAddDevice .extra_ip_address4').val();

    for (i = 0; i < getdata['StaticNHostTable'].length; i++) {
        if (index != null) {
            if (index == i) {
                tt.find('span.inner-dropbox').text(getdata['StaticNHostTable'][i]['HostName']);
                MAC = (getdata['StaticNHostTable'][i]['MAC']).split(":");
                IP = (getdata['StaticNHostTable'][i]['IP']).split(".");
                for (j = 0; j < 6; j++) {
                    tt.find('.extra_mac_address' + (j + 1)).text(MAC[j]);
                }
                for (k = 0; k < 4; k++) {
                    tt.find('.extra_ip_address' + (k + 1)).text(IP[k]);
                }
            }
        } else {
            tt.find('.inner-dropbox').text(SelDeviceName);
            MAC = MacAddrToAdd.split(":");
            IP = IPAddrToAdd.split(".");
            for (k = 0; k < 6; k++) {
                tt.find('.extra_mac_address' + (k + 1)).text(MAC[k]);
            }
            for (j = 0; j < 4; j++) {
                tt.find('.extra_ip_address' + (j + 1)).text(IP[j]);
            }
        }
    }
    tt.show();
    tt.removeClass('template-row');
    tt.addClass('tableRow');
    tt.removeAttr('id');
    tt.find('.chosen-container').hide();
    tt.insertBefore("#addRow");
    RowNum++;
    var MACad = MacAddrToAdd.split(":");
    var IPad = IPAddrToAdd.split(".");

    for (i = 1; i <= 6; i++) {
        tt.find('.extra_mac_address' + i).attr("id", "staticdhcpmac" + RowNum + i);
    }
    for (i = 1; i <= 4; i++) {
        tt.find('.extra_ip_address' + i).attr("id", "staticdhcpip" + RowNum + i);
    }

    $(".chosen-results").css("white-space", "nowrap");
    $(".chosen-container").click(function() {
        var liObj = $(this).closest('tr').find('li');
        for (i = 0; i <= getdata['StaticNHostTable'].length; i++) {
            liObj.bind("mouseenter", function() {
                $("#content").on("mousemove", mouseMove);
                $("#deviceNameTip").html($(this).text());
                $("#deviceNameTip").css("display", "block");
            });
            liObj.bind("mouseleave", function() {
                $("#deviceNameTip").css("display", "none");
            });
            liObj.bind("click", function() {
                $("#deviceNameTip").css("display", "none");
            });
            liObj = liObj.next();
        }
    });
    BindEditButton(tt);
    BindDeleteButton(tt);
    $('.noEntryTD').hide();
}

Wenn ihr das öfter benötigt, könnt ihr die Funktion auch unter Sources -> Snippets abspeichern, damit ihr bei bedarf nur noch die Entwicklertools öffnen müsst und die funktion mit rechtsklick -> Run überschreiben könnt.

Ich denke das ist eine bessere Lösung als auf einen Fix von Vodafone zu warten der ja anscheinend schon ewig auf sich warten lässt.

@Philipp211  Vielen Dank. Für deine Arbeit.

So ein Support würde ich mir von Vodafone wünschen.

Kurz zur Info:

Vodafone programmiert nichts an der Firmware ihrer Router, die sie an die Kunden ausgeben. Das machen alles die Hersteller der Router. Selbst die Vodafone-Benutzeroberfläche wird von denen programmiert im Rahmen der Originalfirmware, die sie dann entsprechend auf Vodafone anpassen.

Vom Arris TG3442DE gibt es übrigens auch eine freie Version (den „Arris TG3442“, also ohne das „DE“ hintendran), dort ist diese Originalfirmware von Arris drauf. Meines Wissens sind dort auch die gleichen Fehler enthalten wie auf der Vodafone-Version... Fixen muss das Problem also letztlich Arris.

Wenn Vodafone eine kleine Hinterhof Firma wäre, würde ich es ja noch verstehen das sie nicht in der Lage (Position) ist, Arris klar zu machen das auf den Geräte die Vodafone an ihre Kunden gibt (aufzwingt), eine Bugfrei Firmware zu veröffentlichen.