Lines Matching refs:pIpHdr

42  * @param   pIpHdr      Pointer to the IPv4 header to checksum, network endian (big).
45 RTDECL(uint16_t) RTNetIPv4HdrChecksum(PCRTNETIPV4 pIpHdr)
47 uint16_t const *paw = (uint16_t const *)pIpHdr;
59 if (pIpHdr->ip_hl > 20 / 4)
62 switch (pIpHdr->ip_hl)
92 * @param pIpHdr Pointer to the IPv4 header to validate. Network endian (big).
93 * @param cbHdrMax The max header size, or the max size of what pIpHdr points
96 * to be mapped following pIpHdr.
99 RTDECL(bool) RTNetIPv4IsHdrValid(PCRTNETIPV4 pIpHdr, size_t cbHdrMax, size_t cbPktMax, bool fChecksum)
107 if (RT_UNLIKELY(pIpHdr->ip_hl * 4 < RTNETIPV4_MIN_LEN))
109 if (RT_UNLIKELY((size_t)pIpHdr->ip_hl * 4 > cbHdrMax))
111 Assert((size_t)pIpHdr->ip_hl * 4 > cbPktMax); /* You'll hit this if you mapped/copy too little of the header! */
114 if (RT_UNLIKELY(pIpHdr->ip_v != 4))
116 if (RT_UNLIKELY(RT_BE2H_U16(pIpHdr->ip_len) > cbPktMax))
124 uint16_t u16Sum = RTNetIPv4HdrChecksum(pIpHdr);
125 if (RT_UNLIKELY(pIpHdr->ip_sum != u16Sum))
137 * @param pIpHdr The IP header (network endian (big)).
139 DECLINLINE(uint32_t) rtNetIPv4PseudoChecksum(PCRTNETIPV4 pIpHdr)
141 uint16_t cbPayload = RT_BE2H_U16(pIpHdr->ip_len) - pIpHdr->ip_hl * 4;
142 uint32_t u32Sum = pIpHdr->ip_src.au16[0]
143 + pIpHdr->ip_src.au16[1]
144 + pIpHdr->ip_dst.au16[0]
145 + pIpHdr->ip_dst.au16[1]
147 + pIpHdr->ip_p
149 + ((uint32_t)pIpHdr->ip_p << 8)
160 * @param pIpHdr The IP header (network endian (big)).
162 RTDECL(uint32_t) RTNetIPv4PseudoChecksum(PCRTNETIPV4 pIpHdr)
164 return rtNetIPv4PseudoChecksum(pIpHdr);
414 * @param pIpHdr Pointer to the IPv4 header, in network endian (big).
420 RTDECL(uint16_t) RTNetIPv4UDPChecksum(PCRTNETIPV4 pIpHdr, PCRTNETUDP pUdpHdr, void const *pvData)
423 uint32_t u32Sum = rtNetIPv4PseudoChecksum(pIpHdr);
436 * @param pIpHdr Pointer to the IPv4 header, in network endian (big).
441 DECLINLINE(bool) rtNetIPv4IsUDPSizeValid(PCRTNETIPV4 pIpHdr, PCRTNETUDP pUdpHdr, size_t cbPktMax)
452 if (RT_UNLIKELY(cb > (size_t)(RT_BE2H_U16(pIpHdr->ip_len) - pIpHdr->ip_hl * 4)))
462 * @param pIpHdr Pointer to the IPv4 header, in network endian (big).
467 RTDECL(bool) RTNetIPv4IsUDPSizeValid(PCRTNETIPV4 pIpHdr, PCRTNETUDP pUdpHdr, size_t cbPktMax)
469 return rtNetIPv4IsUDPSizeValid(pIpHdr, pUdpHdr, cbPktMax);
478 * @param pIpHdr Pointer to the IPv4 header, in network endian (big).
486 RTDECL(bool) RTNetIPv4IsUDPValid(PCRTNETIPV4 pIpHdr, PCRTNETUDP pUdpHdr, void const *pvData, size_t cbPktMax, bool fChecksum)
488 if (RT_UNLIKELY(!rtNetIPv4IsUDPSizeValid(pIpHdr, pUdpHdr, cbPktMax)))
492 uint16_t u16Sum = RTNetIPv4UDPChecksum(pIpHdr, pUdpHdr, pvData);
506 * @param pIpHdr Pointer to the IPv4 header, in network endian (big).
513 RTDECL(uint16_t) RTNetIPv4TCPChecksum(PCRTNETIPV4 pIpHdr, PCRTNETTCP pTcpHdr, void const *pvData)
517 uint32_t u32Sum = rtNetIPv4PseudoChecksum(pIpHdr);
520 cbData = RT_BE2H_U16(pIpHdr->ip_len) - pIpHdr->ip_hl * 4 - pTcpHdr->th_off * 4;
556 * @param pIpHdr Pointer to the IPv4 header, in network endian (big).
562 DECLINLINE(bool) rtNetIPv4IsTCPSizeValid(PCRTNETIPV4 pIpHdr, PCRTNETTCP pTcpHdr, size_t cbHdrMax, size_t cbPktMax)
577 cbTcp = RT_BE2H_U16(pIpHdr->ip_len) - pIpHdr->ip_hl * 4;
588 * @param pIpHdr Pointer to the IPv4 header, in network endian (big).
594 RTDECL(bool) RTNetIPv4IsTCPSizeValid(PCRTNETIPV4 pIpHdr, PCRTNETTCP pTcpHdr, size_t cbHdrMax, size_t cbPktMax)
596 return rtNetIPv4IsTCPSizeValid(pIpHdr, pTcpHdr, cbHdrMax, cbPktMax);
605 * @param pIpHdr Pointer to the IPv4 header, in network endian (big).
616 RTDECL(bool) RTNetIPv4IsTCPValid(PCRTNETIPV4 pIpHdr, PCRTNETTCP pTcpHdr, size_t cbHdrMax, void const *pvData, size_t cbPktMax,
619 if (RT_UNLIKELY(!rtNetIPv4IsTCPSizeValid(pIpHdr, pTcpHdr, cbHdrMax, cbPktMax)))
623 uint16_t u16Sum = RTNetIPv4TCPChecksum(pIpHdr, pTcpHdr, pvData);