Gpt4:

Belirli bir IP sınıfı aralığı kullanarak rastgele IP adresleri oluşturmak için mevcut kodunuzu aşağıdaki gibi değiştirebilirsiniz. Örneğin, A sınıfı (1.0.0.0 - 126.255.255.255), B sınıfı (128.0.0.0 - 191.255.255.255), veya C sınıfı (192.0.0.0 - 223.255.255.255) IP adresleri oluşturmak istiyorsanız, bu aralıkları rastgele IP üretmek için kullanabilirsiniz.
Aşağıdaki örnekte C sınıfı IP adresleri (192.0.0.0 - 223.255.255.255) için rastgele IP adresleri oluşturulmuştur:

#include <stdlib.h>
#include <string.h>
#include <stdint.h>

// IP aralıkları için makrolar
#define CLASS_A_MIN 1
#define CLASS_A_MAX 126
#define CLASS_B_MIN 128
#define CLASS_B_MAX 191
#define CLASS_C_MIN 192
#define CLASS_C_MAX 223

typedef struct {
    uint8_t octet[4];
} IPAddr;

uint16_t crc16_checksum(uint16_t *buf, size_t len);

int main() {
    while(1) {
        IPAddr ip;
        
        // C sınıfı IP adresi oluştur
        ip.octet[0] = (rand() % (CLASS_C_MAX - CLASS_C_MIN + 1)) + CLASS_C_MIN;
        ip.octet[1] = rand() % 256;
        ip.octet[2] = rand() % 256;
        ip.octet[3] = rand() % 256;

        // ip.sourceIP'yi ip.octet ile doldur
        uint8_t buf[sizeof(ip)];
        bzero(buf, sizeof(buf));                   // Clear buffer
        memcpy(buf, &ip, sizeof(ip));              // Copy ip structure over to buffer
        uint16_t ip_checksum = crc16_checksum((uint16_t*)buf, sizeof(ip)); // Perform checksum for ip structure with buffer

        // Örneğin pseudoheader.saddr atama
        // pseudoheader.saddr = *(uint32_t*)ip.octet;

        // Debug amaçlı IP adresini yazdır
        printf("Generated IP: %d.%d.%d.%d\n", ip.octet[0], ip.octet[1], ip.octet[2], ip.octet[3]);

        // Burada gerekli diğer işlemler...
    }

    return 0;
}

// CRC16 checksum hesaplama fonksiyonu örneği
uint16_t crc16_checksum(uint16_t *buf, size_t len) {
    uint16_t crc = 0xFFFF;
    for (size_t i = 0; i < len; i++) {
        crc ^= buf[i];
        for (uint8_t j = 0; j < 8; j++) {
            if (crc & 0x0001) {
                crc = (crc >> 1) ^ 0xA001;
            } else {
                crc = (crc >> 1);
            }
        }
    }
    return crc;
}
Bu kodda, rand() fonksiyonunu kullanarak belirli bir IP sınıf aralığında rastgele IP adresleri oluşturulur. Bu örnekte, C sınıfı IP adresleri üretilir, ancak aynı yöntemi kullanarak diğer IP sınıf aralıkları için de rastgele IP adresleri oluşturabilirsiniz. IP adresi oluşturma işlemi sırasında, her oktet için uygun aralıkta rastgele bir değer üretilir.