Irgendwann hatte ich mal meine Netzwerk-Klimmzüge mit der Software von
Ulrich Radig begonnen.
Und bei kleineren Sachen blieb ich auch meist dabei; wobei ich dies und
jenes mal geaendert und hinzugefügt hatte.
Letzthin musste ich irgendeine Möglichkeit finden, die IP-Adresse zu
aendern, wobei mir nur die Netzwerkverbindung selbst zur Verfügung
stand.
Mit zusaetzlichen 2 Zeilen geht das auch.
Da meine Software stark vom Orginal abweicht, kann ich diese 2
geposteten Zeilen, die ich dem Orginal hinzugefügt habe, nicht testen.
Sollte aber schon i.O. sein.
1 | /*----------------------------------------------------------------
|
2 | Copyright: Radig Ulrich mailto: mail@ulrichradig.de
|
3 | Author: Radig Ulrich
|
4 | Remarks:
|
5 | known Problems: none
|
6 | Version: 24.10.2007
|
7 | Description: Ethernet Stack
|
8 |
|
9 | ------------------------------------------------------------------------*/
|
10 |
|
11 | //---------------------------------------------------------------------
|
12 | //Check Packet and call Stack for TCP or UDP
|
13 | void check_packet (void)
|
14 | {
|
15 | // gekürzt
|
16 |
|
17 | if(ethernet->EnetPacketType == HTONS(0x0806) ) //ARP
|
18 | {
|
19 | arp_reply(); // check arp packet request/reply
|
20 | }
|
21 | else
|
22 | {
|
23 | if( ethernet->EnetPacketType == HTONS(0x0800) ) // if IP
|
24 | {
|
25 | if( ip->IP_Destaddr == *((unsigned long*)&myip[0]) ) // if my IP address
|
26 | {
|
27 | // gekürzt
|
28 | }
|
29 | else if (ip->IP_Destaddr == (unsigned long)0xffffffff || ip->IP_Destaddr == *((unsigned long*)&broadcast_ip[0]) ) // if broadcast
|
30 | {
|
31 | if( ip->IP_Proto == PROT_UDP ) udp_socket_process();
|
32 | }
|
33 |
|
34 | // ---------> append start
|
35 | else if (memcmp(ethernet->EnetPacketDest, mymac), 6)== 0)
|
36 | {
|
37 | *(uint32_t*)myip = ip->IP_Destaddr)
|
38 | // Save myip into EEprom
|
39 | }
|
40 | // ---------> append end
|
41 | }
|
42 | }
|
43 | }
|
Dann von der Konsole diese Befehle absetzen
arp -d * (sollte nicht notwendig sein; nur für den Fall aller Faelle)
arp -s neue-ip-adresse mac-address
ping neue-ip-adresse (nach ein paar Fehlversuchen sollte es zur Antwort
kommen)
arp -d * (auf jeden Fall!! Sonst überschreibt ein Ping mit der alten
IP-Adresse die soeben abespeicherte neue IP-Adresse )