Obliczenie adresu rozgloszeniowego na podstawie IP

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?

0

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

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?

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