MCPcopy Create free account
hub / github.com/F-Stack/f-stack / in_cksum_skip

Function in_cksum_skip

freebsd/arm/arm/in_cksum.c:105–145  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

103}
104
105u_short
106in_cksum_skip(struct mbuf *m, int len, int skip)
107{
108 u_int64_t sum = 0;
109 int mlen = 0;
110 int clen = 0;
111 caddr_t addr;
112 union q_util q_util;
113 union l_util l_util;
114
115 len -= skip;
116 for (; skip && m; m = m->m_next) {
117 if (m->m_len > skip) {
118 mlen = m->m_len - skip;
119 addr = mtod(m, caddr_t) + skip;
120 goto skip_start;
121 } else {
122 skip -= m->m_len;
123 }
124 }
125
126 for (; m && len; m = m->m_next) {
127 if (m->m_len == 0)
128 continue;
129 mlen = m->m_len;
130 addr = mtod(m, caddr_t);
131skip_start:
132 if (len < mlen)
133 mlen = len;
134
135 if ((clen ^ (int) addr) & 1)
136 sum += _do_cksum(addr, mlen) << 8;
137 else
138 sum += _do_cksum(addr, mlen);
139
140 clen += mlen;
141 len -= mlen;
142 }
143 REDUCE16;
144 return (~sum & 0xffff);
145}
146
147u_int in_cksum_hdr(const struct ip *ip)
148{

Callers 10

in4_cksumFunction · 0.50
nat64_icmp_reflectFunction · 0.50
nat64_icmp_translateFunction · 0.50
in_delayed_cksumFunction · 0.50
siftr_chkpktFunction · 0.50
in6_delayed_cksumFunction · 0.50
gre_inputFunction · 0.50
gre_transmitFunction · 0.50
checksum_ipv4Function · 0.50
checksum_ipv6Function · 0.50

Calls 1

_do_cksumFunction · 0.85

Tested by

no test coverage detected