Zum Inhalt springen

Berechnen von Netzen und Subnetzen (IP)


Empfohlene Beiträge

Geschrieben

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);


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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...