Sourcecode Fortschritt
-
Version 0.0.1.153 - Rev. 730 (einige rev. bewusst übersprungen wegen commit-fehler)
Nun klappt die antwort auf arp-requests spezifisch und korrekt!
Bitte stellt eure spezifische IP-Adresse statisch in dem neuen Header myOwnData.h ein, bei mir z.B:
#ifndef MYOWNDATA_H #define MYOWNDATA_H #define My_IP 0xC0A80A61 // 192.168.10.97 #endif
-
version 0.0.1.154 - Rev: 731
dhcp.c/.h
- Grundlegende Idee hinzugefügt.upd.c/.h
- erweitert
-
checksum für ipv4, also auch ping:
// Compute Internet Checksum for "count" bytes beginning at location "addr". uint32_t checksumIPv4(uint32_t count, uintptr_t addr) { register uint32_t sum = 0; while( count > 1 ) // This is the inner loop { sum += *(uint16_t)addr++; count -= 2; } if (count > 0) // Add left-over byte, if any { sum += *(uint8_t*)addr; } while (sum>>16) // Fold 32-bit sum to 16 bits { sum = (sum & 0xFFFF) + (sum >> 16); } return (~sum); }
-
version 0.0.1.155 - Rev: 732
icmp.c/.h
- hinzugefügtInformationen zum ICMP-Protokoll
http://tools.ietf.org/html/rfc1071 <--- internet checksum
http://de.wikipedia.org/wiki/Internet_Control_Message_Protocol <--- icmp Protocol
-
Version 0.0.1.156:
- task.c: cli/sti-Änderungen gesichtet, Fehler behoben und wieder reingenommen
- Aufgeräumt
- Projektfile aktualisiert
-
version 0.0.1.157 - Rev: 734
icmp.c/.h
- ICMPAnswerPing(...), mit Statischen werten hinzugefügt und experimentiert, bisher ohne Erfolg.
-
version 0.0.1.157 - Rev: 735
icmp.c/.h
- ICMPAnswerPing(...), erweitert und getestet. Noch kein Erfolg.
-
Version 0.0.1.158:
- Umstellung der IRQ/ISR-Nummern auf enum begonnen
- Scheduler unterstützt nun waitForIRQ - Wait-Funktionen damit vorerst komplett
- getch auf waitForIRQ umgestellt - Genauso Ressourcensparend, aber performanter (kein hlt das andere tasks ausbremst)
- switch_context führt abhängig von der Anzahl der laufenden tasks hlt aus
-
Version 0.0.1.158 ist fehlerhaft (memory leak), und icmp.c/.h noch ziemlich unbrauchbar.
http://codepad.org/0YDxC2n1 <-- Workaround von MrX
-
version 0.0.1.159 - Rev: 737
keyboard.c/.h
- Workaround von MrX implementiert (getch)ipTcpStack.c/.h
- switch konstrukt für die Protokolle in IPheader hinzugefügt
-
- arp reply ohne adresse! (das war schon besser)
- icmp reply funktioniert nicht! (kommt in wireshark nicht an)
-
version 0.0.1.160 – Revision 738
IP/ICMP
- Header korrigiert
- Checksummenfunktion korrigiert
- ICMP-Ping-Reply-Funktion korrigiert
=> Wireshark zeigt korrekte Antwort anPS: Dass ping bei mir keine Antwort anzeigt, mag an meiner Netzwerkkonfiguration liegen (da bei Wireshark von MAC über IP bis hin zu Checksumme alles zu stimmen scheint).
-
Version 0.0.1.161 – Revision 739
ICMP: Datenteil
- ICMP-Pings enthalten einen Datenteil, den man zurückschicken sollte – was ab jetzt auch getan wird.
-
http://img192.imageshack.us/img192/3690/pinght.png <--- erfolgsmeldung von Ideenlos. Gratulation!
-
"Ideenlos" war schneller als ich, der es nur mit hrPing und 56 byte Daten schaffte:
hrping 192.168.10.97 -S -t -l 56
http://www.henkessoft.de/OS_Dev/Bilder/0_0_1_161_PingReply.PNG
Statistics for 192.168.10.97:
Packets: sent=227, rcvd=153, error=0, lost=74 (32% loss) in 106.126180 sec
RTTs of replies in ms: min/avg/max/dev: 67.929 / 12788.809 / 33029.268 / 8959.212<Tobiking>Das hrPing schickt Latein?
-
Version 0.0.1.162 – Rev: 740
etwas aufgeräumt im Netzwerk-Bereich
Leider ist RXBUFTAIL ab und zu verschoben!
-
Version 0.0.1.163 – Revision 741
rtl8139
- wenn man die Empfangsdaten aus dem entsprechenden Puffer
herauskopiert, werden anscheinend mehr Pakete korrekt empfangen.
-
Das war entscheidend! (findet sich auch im programming guide)
Nun läuft request und reply in wireshark sauber abwechselnd:
http://www.henkessoft.de/OS_Dev/Bilder/0_0_1_163_PingRequestReply.PNGBeim PING-Absender-Programm kommt trotz dieses Ablaufes dennoch nur noch "timeout" an.
-
Folgendes ist mir noch aufgefallen: http://www.henkessoft.de/OS_Dev/Bilder/0_0_1_163_PingRequestReply_badChecksum.PNG
Bad checksum im IP-header und im ICMP!
bitte damit vergleichen:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-254893-and-postdays-is-0-and-postorder-is-asc-and-start-is-777.html
-
version 0.0.1.163 - Rev: 741
TCP header hinzugefügt tcp.c/h
icmpDebug, tcpDebug für eine besser veranschaulischung der jeweiligen Packete.