|
|
| 178 |
return m_goodChecksum; |
178 |
return m_goodChecksum; |
| 179 |
} |
179 |
} |
| 180 |
|
180 |
|
|
|
181 |
uint16_t |
| 182 |
Ipv4Header::Checksum(Buffer::Iterator &i) |
| 183 |
{ |
| 184 |
uint32_t sum = 0; |
| 185 |
|
| 186 |
// doesn't handle ip headers with size != 20 yet |
| 187 |
for (int j = 0; j < 10 ; j++) |
| 188 |
sum += i.ReadU16 (); |
| 189 |
|
| 190 |
while (sum >> 16) |
| 191 |
sum = (sum >> 16) + sum & 0xFFFFU; |
| 192 |
return ~sum; |
| 193 |
} |
| 194 |
|
| 181 |
|
195 |
|
| 182 |
TypeId |
196 |
TypeId |
| 183 |
Ipv4Header::GetTypeId (void) |
197 |
Ipv4Header::GetTypeId (void) |
|
|
| 266 |
|
280 |
|
| 267 |
if (m_calcChecksum) |
281 |
if (m_calcChecksum) |
| 268 |
{ |
282 |
{ |
| 269 |
#if 0 |
283 |
i = start; |
| 270 |
// XXX we need to add Buffer::Iterator::PeekData method |
284 |
uint16_t checksum = Checksum(i); |
| 271 |
uint8_t *data = start.PeekData (); |
|
|
| 272 |
uint16_t checksum = UtilsChecksumCalculate (0, data, GetSize ()); |
| 273 |
checksum = UtilsChecksumComplete (checksum); |
| 274 |
NS_LOG_LOGIC ("checksum=" <<checksum); |
285 |
NS_LOG_LOGIC ("checksum=" <<checksum); |
| 275 |
i = start; |
286 |
i = start; |
| 276 |
i.Next (10); |
287 |
i.Next (10); |
| 277 |
i.WriteU16 (checksum); |
288 |
i.WriteU16 (checksum); |
| 278 |
#endif |
|
|
| 279 |
} |
289 |
} |
| 280 |
} |
290 |
} |
| 281 |
uint32_t |
291 |
uint32_t |
|
|
| 312 |
|
322 |
|
| 313 |
if (m_calcChecksum) |
323 |
if (m_calcChecksum) |
| 314 |
{ |
324 |
{ |
| 315 |
#if 0 |
325 |
i = start; |
| 316 |
uint8_t *data = start.PeekData (); |
326 |
uint16_t checksum = Checksum(i); |
| 317 |
uint16_t localChecksum = UtilsChecksumCalculate (0, data, headerSize); |
327 |
NS_LOG_LOGIC ("checksum=" <<checksum); |
| 318 |
if (localChecksum == 0xffff) |
328 |
|
| 319 |
{ |
329 |
m_goodChecksum = (checksum == 0); |
| 320 |
m_goodChecksum = true; |
|
|
| 321 |
} |
| 322 |
else |
| 323 |
{ |
| 324 |
m_goodChecksum = false; |
| 325 |
} |
| 326 |
#endif |
| 327 |
} |
330 |
} |
| 328 |
return GetSerializedSize (); |
331 |
return GetSerializedSize (); |
| 329 |
} |
332 |
} |