Wireshark 4.7.0
The Wireshark network protocol analyzer
Loading...
Searching...
No Matches
Classes | Macros | Functions
in_cksum.h File Reference
#include "ws_symbol_export.h"

Go to the source code of this file.

Classes

struct  vec_t
 

Macros

#define SET_CKSUM_VEC_PTR(vecelem, data, length)
 
#define SET_CKSUM_VEC_TVB(vecelem, tvb, offset, length)
 

Functions

WS_DLL_PUBLIC uint16_t ip_checksum (const uint8_t *ptr, int len)
 Calculate the IP checksum for a given buffer.
 
WS_DLL_PUBLIC uint16_t ip_checksum_tvb (tvbuff_t *tvb, int offset, int len)
 Calculate the IP checksum for a given TVB.
 
WS_DLL_PUBLIC int in_cksum_ret_partial (const vec_t *vec, int veclen, uint16_t *partial)
 Calculates a partial checksum for a vector of data.
 
WS_DLL_PUBLIC int in_cksum (const vec_t *vec, int veclen)
 Calculate the IP checksum for a given vector of data.
 
WS_DLL_PUBLIC uint16_t in_cksum_shouldbe (uint16_t sum, uint16_t computed_sum)
 Calculate the expected checksum value based on the computed checksum and the checksum field value.
 

Detailed Description

Declaration of Internet checksum routine.

Copyright (c) 1988, 1992, 1993 The Regents of the University of California. All rights reserved.

SPDX-License-Identifier: BSD-3-Clause

Macro Definition Documentation

◆ SET_CKSUM_VEC_PTR

#define SET_CKSUM_VEC_PTR (   vecelem,
  data,
  length 
)
Value:
G_STMT_START { \
vecelem.ptr = (data); \
vecelem.len = (length); \
} G_STMT_END

◆ SET_CKSUM_VEC_TVB

#define SET_CKSUM_VEC_TVB (   vecelem,
  tvb,
  offset,
  length 
)
Value:
G_STMT_START { \
vecelem.len = (length); \
vecelem.ptr = tvb_get_ptr((tvb), (offset), vecelem.len); \
} G_STMT_END
const uint8_t * tvb_get_ptr(tvbuff_t *tvb, const unsigned offset, const unsigned length)
Returns a raw pointer to tvbuff data. Use with extreme caution.
Definition tvbuff.c:1129

Function Documentation

◆ in_cksum()

WS_DLL_PUBLIC int in_cksum ( const vec_t vec,
int  veclen 
)

Calculate the IP checksum for a given vector of data.

This function computes the IP checksum for a given vector of data.

Parameters
vecPointer to the vector containing the data to be checksummed.
veclenNumber of elements in the vector.
Returns
The calculated IP checksum.

◆ in_cksum_ret_partial()

WS_DLL_PUBLIC int in_cksum_ret_partial ( const vec_t vec,
int  veclen,
uint16_t *  partial 
)

Calculates a partial checksum for a vector of data.

This function computes a partial checksum for a given vector of data, storing the intermediate result in the provided partial pointer if it is not null.

Parameters
vecPointer to the vector containing the data to be checksummed.
veclenNumber of elements in the vector.
partialPointer to store the partial checksum result, can be null.
Returns
The final checksum value.

◆ in_cksum_shouldbe()

WS_DLL_PUBLIC uint16_t in_cksum_shouldbe ( uint16_t  sum,
uint16_t  computed_sum 
)

Calculate the expected checksum value based on the computed checksum and the checksum field value.

This function computes the expected checksum value that should be present in the checksum field of a packet, given the computed checksum of the packet's data and the value of the checksum field itself.

Parameters
sumThe value of the checksum field from the packet header.
computed_sumThe computed checksum of the packet's data (excluding the checksum field).
Returns
The expected checksum value that should be in the packet's header for it to be considered valid.

◆ ip_checksum()

WS_DLL_PUBLIC uint16_t ip_checksum ( const uint8_t *  ptr,
int  len 
)

Calculate the IP checksum for a given buffer.

Parameters
ptrPointer to the data buffer.
lenLength of the data buffer.
Returns
uint16_t The calculated IP checksum.

◆ ip_checksum_tvb()

WS_DLL_PUBLIC uint16_t ip_checksum_tvb ( tvbuff_t tvb,
int  offset,
int  len 
)

Calculate the IP checksum for a given TVB.

Parameters
tvbThe TVB containing the data to be checksummed.
offsetThe starting offset within the TVB.
lenThe length of the data to be checksummed.
Returns
The calculated IP checksum.