是否存在可用于在POSIX程序中计算TCP段校验和的预先存在的函数或代码

我正在写一个小POSIX程序,我需要计算TCP段的校验和,我想使用现有的函数,以避免自己写一个。

像(伪代码)的东西:

char *data = .... u16_integer = computeChecksum(data); 

我在网上搜索但我找不到正确的答案,有什么建议吗?

在这里,它或多或少直接来自RFC:

 uint16_t ip_calc_csum(int len, uint16_t * ptr) { int sum = 0; unsigned short answer = 0; unsigned short *w = ptr; int nleft = len; while (nleft > 1) { sum += *w++; nleft -= 2; } sum = (sum >> 16) + (sum & 0xFFFF); sum += (sum >> 16); answer = ~sum; return (answer); }