Forum: Projekte & Code Mit arp und ping IP-Adresse aendern (AVR Software vo U.Radig)


von Mehmet K. (mkmk)


Lesenswert?

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 )

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.