Obliczenie adresu rozgloszeniowego na podstawie IP

Odpowiedz Nowy wątek
2013-06-17 14:05
Noax
0
 uint32_t ipToBroadcast(uint32_t ip, uint32_t mask) {
    uint32_t broadcast = (ip & mask);
    uint8_t *lastByte = (uint8_t *)&broadcast + 3; // tutaj
    *lastByte = ~*lastByte; 

    return broadcast;
}

Witam, analizuje sobie pewien kod i nie jestem pewny co oznacza zapis: (uint8_t *)broadcast +3, dlaczego tam jest +3?

Pozostało 580 znaków

2013-06-17 14:29
0

Skoro to jest lastbyte, tzn. ze ostatni bajt.
Adres IPv4 ma 4 bajty, czyli ostatni bajt jest 3 bajtem.

Pozostało 580 znaków

2013-06-17 15:02
0

Cała ta funkcja to jest wielkie WTF.
Bez wiedzy jaka jest maska podsieci, nie można wiedzieć jaki jest adres rozgłoszeniowy.
Funkcja zakłada że maska jest stała 255.255.255.0.
A co jeśli w danej sieci się okaże inaczej?

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0