rolliwitsch Geschrieben 17. April 2008 Geschrieben 17. April 2008 hi, siehe Thema. Gibt es dafür schon fertige Libraries in c? Viele Grüße! Zitieren
flashpixx Geschrieben 17. April 2008 Geschrieben 17. April 2008 Hallo, mir sind leider noch keine fertigen Libs untergekommen. Aber Du hast doch so etwas sehr schnell implementiert, es sind doch bloß ein paar Bitverknüpfungen pro Okttet und ein paar Shifts. Phil Zitieren
rolliwitsch Geschrieben 18. April 2008 Autor Geschrieben 18. April 2008 mir sind leider noch keine fertigen Libs untergekommen. Aber Du hast doch so etwas sehr schnell implementiert, es sind doch bloß ein paar Bitverknüpfungen pro Okttet und ein paar Shifts. Ok, in der Tat hab ich schon angefangen, eine kleine Lib zu schreiben. Falls Interesse, kann ich das ja mal hier veröffentlichen, untenstehend schon mal eine Auswahl der bisherigen Funktionen. Viele Grüße! /* Struktur für ein Netz */ struct netx{ unsigned long ipaddr; // IP-Adresse numerisch int masklen; // 0..30 unsigned long netmask; // Netzmaske numerisch unsigned long netaddr; // Netzadresse numerisch unsigned long bcaddr; // Broadcastadresse numerisch char netmasks[20]; // Netzmaske als String like 255.0.0.0 char ipaddrs[20]; // IP-Adresse als String like 172.31.11.12 char netaddrs[20]; // Netzadresse als String like 0.0.0.0 char bcaddrs[20]; // Broadcastadresse als String like 255.255.255.255 char defaultclass[20]; // Default Class A, B, C, D, E }; /*************************************************************************/ /* Funktionen dieser Library */ // splittet nach "." und "/" // nice to use for 172.31.32.0/24 void split(int * ar, char buffer[]); // rechnet ip (4 Oktetten einzeln übergeben) nach numerisch // und gibt ipnum zurück int ip_to_num(int a, int b, int c, int d); // rechnet aus numerischer IP die 4 Oktetten zurück // legt die 4 Oktetten auf eine Array, was per Pointer übergeben wurde void num_to_okt(int * ar, unsigned long ipnum); // legt den IP-String auf das übergebene Array void ipdots(char * ips, unsigned long ipnum); // ermittelt die Default Class aus der ersten Oktette // 0 class A 0-127 // 10 class B 128-191 // 110 class C 192-223 // 111 class D 224-239 // 1111 class E ab 240 void default_class(char buffer[], int okt); // ip-Adresse validieren int valip(int a, int b, int c, int d); // ein IP-String wie 255.255.255.255/30 darf nicht länger als 18 sein int valips(char buffer[]); // maskenlänge zu einer uint 32 bit Zahl umrechnen // masklen 0..30 !!! // gibt -1 zurück, wenn Maskenlänge nicht passt, z.B. wenn die Bits // nicht aufeinanderfolgend sind int masklen_to_num(int masklen); // numerische Maske (32 unsigned int) nach Maskenl. 0..32 umrechnen int num_to_masklen(unsigned long n); // gibt die Netzadresse numerisch zurück (ipnum, maskenum) int get_netaddr(unsigned long ipnum, unsigned long masknum); // gibt die Broadcastadresse numerisch zurück (ipnum, maskenum) int get_bcaddr(unsigned long ipnum, unsigned long masknum); // Funktion belebt das struct net mit Werten // Übergabe der Oktetten einer beliebigen IP-Adresse // Übergabe der Maskenlänge 0..30 void fillnet(struct netx *, int o1, int o2, int o3, int o4, int mlen); Zitieren
rolliwitsch Geschrieben 21. April 2008 Autor Geschrieben 21. April 2008 Jow, und wo ich so gerne Artikel schreibe, ich habe fertig: Berechnungen von IP-Adressen und Subnetzen mit c meinen Artikel über meine Library. Als kleine Gegenleistung für die 255.255.255.255 Community, bei denen ich schon so manchen Kniff gelernt habe. Viele Grüße, Rolf PS: Kritiken lese ich gerne!!!!! Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.