Controllo e manipolazione indirizzi IP, IP calc

Ciao a tutti,
per un mio progetto avevo iniziato a scrivere delle funzioni per il controllo degli indirizzi ip, in pratica prevedevo la possibilità di cambiare l’ip da interfaccia, anche con configurazione statica (odio gli IP scolpiti nel codice), allora ho dovuto introdurre delle funzioni di coerenza, per non perdere l’arduino nell’orizzonte degli eventi, in rete con le mie ricerche avevo trovato non molte informazioni e molto frammentate, così mi sono preso la briga di scrivermele da me, alla fine ne sono venute fuori un bel po’ e una bella base per fare anche una calcolatrice ip.

Ho cercato di scriverle il più leggere e veloci possibili in base alle mie (scarse) conoscenze per non appesantire troppo il codice, le ho testate abbastanza e non ho incontrato errori, ammetto che però fare test intensivi è troppo laborioso.

Non è una vera libreria, più che altro un file.h da includere nei progetti con dentro le funzioni, tra queste ne ho scritte per ricavare un ip da una stringa c-style, verificare che una subnet sia valida, verificare che un ip sia valido e che due indirizzi ip appartengano alla stessa subnet (es: verificare che ip e gateway siano congrui).

Se possono esservi utili in qualche modo provate a testarle, volevo condividerle per rendere disponibile un set di strumenti per lavorare sugli indirizzi IP, se possibile anche un vostro parere o migliorie che si possono fare.

Ciao!

ip_function.h (9.9 KB)

Una interessante collezione di funzioni, grazie!

Una domanda: ma perché avevi bisogno di cambiare IP, il DHCP non andava bene?

Grazie Docdoc,
certo che il dhcp va bene, anzi per la maggior parte dei casi lo preferisco, ma ci sono casi in cui magari non è disponibile come su reti particolari/speciali (es: DMZ), oppure in uno scenario di rete complessa devi definire ip statici per la comunicazione, infine in altri scenari nonostante si possa risolvere con reservation dei lease sui server dhcp gli amministratori della rete non vogliono riempire la configurazione di reservation o sbattersi troppo, quindi si opta per l’ip statico…

Il progetto che sto portando avanti prevede che ci possano essere uno svariato numero di device nella rete che comunicano tra loro e l’ip statico manuale è un’opzione non trascurabile, in questo caso poter definire la configurazione ip fuori dal codice sorgente è un must e visto che magari non sarò io stesso la persona che potrebbe fare la configurazione il controllo di coerenza dei dati inseriti è dovuto!

Tieni presente che ho un background di + di 15 anni da sistemista e ho trovato spesso situazioni critiche con indirizzi scolpiti nel sorgente, nelle fasi di migrazione avrei voluto fucilare seduta stante e senza processo e senza appello tutti i programmatori che usavano quella pratica :smiling_imp:
una volta ho trovato da un cliente 5 device (apparati industriali commerciali e venduti) con mac address “DEAD BEEF FEED” che mi facevano “flappare” la rete… tanto per dirne una anche se non c’entra con gli indirizzi ip.

Quindi alla fine aggiungere un piccolo set di funzioni di controllo mi sembra una cosa giusta, sopratutto se queste poi pesano poco :slight_smile: