Sourcecode Fortschritt


  • Mod

    0.0.2.53 - Rev: 893

    Noch Fehler beim Eintrag in die ARP, aber keine doppelten Einträge mehr.


  • Mod

    0.0.2.54 - Rev: 894

    Nun korrekter Code bei arp.c für die ARP tables (dank Hinweis von cefour) 🙂

    Hinweis von MrX im IRC:

    <MrX>Der Zeitstempel wird noch aktualisiert, das stimmt.
    <MrX>Wenn sich aber eine bereits bekannte IP mit anderer MAC meldet, wird die MAC in der Tabelle nicht mehr geändert.

    Der Code ist also noch nicht ok. Es kommt leider auch noch zu Doppeleinträgen mit der gleichen IP/MAC Kombination. 🙄


  • Mod

    0.0.2.55 - Rev: 895

    Gratuitous ARP eingebaut beim Installieren der Netzwerkadapter.

    for (int i=0; i<10; i++)
        {
            arp_sendGratitiousRequest(adapter); // show PrettyOS' IP and MAC to the LAN
            sleepMilliSeconds(1000);
        }
    

    Mein Entwicklungsrechner im LAN trägt diese IP/MAC aber nicht ein in seiner ARP Tabelle wegen möglichen ARP spoofings. 😉



  • Version 0.0.2.56:

    - PCNet-Treiber: Besser kommentiert, Verbesserte Ausgaben. Senden funktioniert nun unter Qemu (falsche Konstante war Schuld)
    - Gratious-ARP auskommentiert (funktioniert i.d.R. nicht, weil viele Betriebssysteme solche ARPs ignorieren, um ARP-Spoofing zu vermeiden. Unter Qemu funktionierte ARP dadurch überhaupt nicht mehr)


  • Mod

    version = "0.0.2.57 - Rev: 897"

    tcp.h/tcp.c erkennung / zerlegung überarbeitet
    Ports stimmen, Rest leider noch falsch


  • Mod

    version = "0.0.2.58 - Rev: 898"

    tcp.h und tcp.c weiter verbessert
    6 Flags (nun uint8_t anstelle bool) werden noch nicht richtig angezeigt
    (Tests mit telnet und wireshark)

    Wichtiger Hinweis:
    Mit dem qemu-EHCI (Vers. 0.11.5) klappt der ARP reply nur sporadisch (man kann es mit arp -s 10.0.2.15 00-12-12-12-12-12 statisch eintragen).
    Bei qemu 14.1 klappt der ARP reply auf Anhieb.
    http://qemu-buch.de/d/QEMU_unter_Microsoft_Windows#QEMU_unter_.C3.A4lteren_Microsoft_Windows-Versionen


  • Mod

    version = "0.0.2.59 - Rev: 899"

    TCP Debug nun ok

    http://tools.ietf.org/html/rfc793#page-15 (TCP header)


  • Mod

    version = "0.0.2.60 - Rev: 900"

    Schalter _NETWORK_DATA_ in os.h eingeführt, um die Ausgaben etwas übersichtlicher zu machen. Die einzelnen Bytes - und ihre Bedeutung - kann man besser in wireshark analysieren.



  • Version 0.0.2.61:

    - Verbesserungen am RTL8168-Treiber
    - Verbesserungen an UDP-Funktionsprototypen
    - Kleinigkeiten


  • Mod

    version = "0.0.2.62 - Rev: 902"

    Sende-Funktion in UDP aktualisiert:

    void UDPSend(struct network_adapter* adapter, void* data, uint32_t length);
    

    Noch nicht getestet.



  • Version 0.0.2.63:

    - Großer Netzwerkprotokollumbau


  • Mod

    Dickes Lob an MrX! 👍



  • Version 0.0.2.64:

    - ELF-Loader setzt nun R/W-Privilegien bei der Speicherallokation
    - Konsolen unterstützen nun SCROLL_BEGIN
    - Anpassungen an arp wegen Netzwerkumbau in 0.0.2.63
    - Kleinigkeiten



  • Version 0.0.2.65:

    - Ausgaben des RTL8139-Handlers hinter Makro verborgen
    - Analyse der Netzwerkpakete in Kernel-Idle-Schleife verlegt
    - Erkennung des Adressaten einer Nachricht (MAC, IP) -> TODO: Warum funktioniert das bei ICMP nicht zuverlässig?



  • Version = "0.0.2.66 - Rev: 906";

    Netzwerk Interface überarbeitet
    udpSend eingebaut


  • Mod

    Version = "0.0.2.67 - Rev: 907";

    (von cefour eingespielt)

    PING PONG über router läuft nicht mehr.

    23:39:08.264789 192.168.10.103 192.168.10.97 ICMP Echo (ping) request
    23:39:08.273097 UnexTech_0f:0a:0c Broadcast ARP Gratuitous ARP for 192.168.10.97 (Request)

    "pingender Rechner schickt an den Router, und Router tauscht mac-addresse im Paket gegen seine eigene aus" (cefour)

    Hat bisher nur geklappt, weil wir die MAC-Adresse geliefert haben.


  • Mod

    version = "0.0.2.68 - Rev: 908"

    - Formatierungen
    - Ver./Rev. korrigiert
    - IP 192.168.10.97 (für Hardware-Test)
    - Frequenz auf 250 Hz eingestellt wie bei Linux 2.6.13
    http://de.wikipedia.org/wiki/Linux_(Kernel)#Neuerungen_im_Kernel_2.6

    Routing-Tabelle fehlt noch
    http://de.wikipedia.org/wiki/Routingtabelle

    Beispiel: Aufruf mit netstat -r

    Routingtabelle
    ===========================================================================
    Schnittstellenliste
    0x1 ........................... MS TCP Loopback interface
    0x2 ...00 13 d4 11 27 a5 ...... Intel(R) PRO/1000 PM Network Connection - Paketplaner-Miniport
    ===========================================================================
    ===========================================================================
    Aktive Routen:
         Netzwerkziel    Netzwerkmaske          Gateway   Schnittstelle  Anzahl
              0.0.0.0          0.0.0.0     192.168.10.1  192.168.10.103       20
            127.0.0.0        255.0.0.0        127.0.0.1       127.0.0.1       1
         192.168.10.0    255.255.255.0   192.168.10.103  192.168.10.103       20
       192.168.10.103  255.255.255.255        127.0.0.1       127.0.0.1       20
       192.168.10.255  255.255.255.255   192.168.10.103  192.168.10.103       20
            224.0.0.0        240.0.0.0   192.168.10.103  192.168.10.103       20
      255.255.255.255  255.255.255.255   192.168.10.103  192.168.10.103       1
    Standardgateway:      192.168.10.1
    ===========================================================================
    Ständige Routen:
      Keine
    

    Anzahl = Metrik



  • "0.0.2.69 - Rev: 909"
    Arp Tabelle, finden eines Eintags war Fehlerhaft.
    Wurde durch Integer vergleich anstatt string vergleich behoben



  • Version 0.0.2.70:

    - strncmp durch memcmp ausgetauscht im Netzwerkcode
    - Userlib: Weitere Funktionen implementiert
    - Bugfix: strncmp repariert


  • Mod

    version = "0.0.2.71 - Rev: ..." (nicht committed)

    - UDPSend korrigiert (src- und destPort mit htons gedreht)
    - Funktion ergänzt in network.c: network_adapter_t* network_getAdapter(uint8_t IP[4]);
    - In keyboard.c die Erzeugung eines Netzwerkpakets per Tastendruck strg+n für Experimente ergänzt:

    if(retchar == 'n') // If you want to test something in networking
            {   
                uint8_t sourceIP_address[4] ={192,168,10,97};
                uint8_t   destIP_address[4] ={192,168,10,103};
    
                network_adapter_t* adapter = network_getAdapter(sourceIP_address);
                printf("network adapter: %X\n", adapter); // check
    
                uint16_t srcPort  = 40; // unassigend
                uint16_t destPort = 40;
    
                if (adapter)
                {
                    UDPSend(adapter, "PrettyOS says hello", strlen("PrettyOS says hello"), srcPort, adapter->IP_address, destPort, destIP_address);
                }
                return 0;
            }
    

    Kontrolle mittels wireshark: http://www.henkessoft.de/OS_Dev/Bilder/rev911_UDPsend_TEST.PNG


Anmelden zum Antworten