Move ipf_pcksum6() to its rightful place, in ip_fil_freebsd.c. This

FreeBSD-only function should live in the O/S specific source file.

This essentially reverts r349929 Now that ipftest and ipfreplay are
disabled in FreeBSD 11-stable.

MFC after:	3 days
This commit is contained in:
Cy Schubert 2019-11-27 20:08:42 +00:00
parent c21bae587d
commit 9b7459d396
3 changed files with 49 additions and 45 deletions

View File

@ -179,10 +179,6 @@ static int ipf_updateipid __P((fr_info_t *));
static int ipf_settimeout __P((struct ipf_main_softc_s *,
struct ipftuneable *,
ipftuneval_t *));
#ifdef USE_INET6
static u_int ipf_pcksum6 __P((fr_info_t *, ip6_t *,
u_int32_t, u_int32_t));
#endif
#if !defined(_KERNEL) || SOLARIS
static int ppsratecheck(struct timeval *, int *, int);
#endif
@ -10278,45 +10274,4 @@ ipf_inet6_mask_del(bits, mask, mtab)
mtab->imt6_max--;
ASSERT(mtab->imt6_max >= 0);
}
static u_int
ipf_pcksum6(fin, ip6, off, len)
fr_info_t *fin;
ip6_t *ip6;
u_int32_t off;
u_int32_t len;
{
#ifdef _KERNEL
struct mbuf *m;
m = fin->fin_m;
if (m->m_len < sizeof(struct ip6_hdr)) {
return 0xffff;
}
return(in6_cksum(m, ip6->ip6_nxt, off, len));
#else
u_short *sp;
u_int sum;
sp = (u_short *)&ip6->ip6_src;
sum = *sp++; /* ip6_src */
sum += *sp++;
sum += *sp++;
sum += *sp++;
sum += *sp++;
sum += *sp++;
sum += *sp++;
sum += *sp++;
sum += *sp++; /* ip6_dst */
sum += *sp++;
sum += *sp++;
sum += *sp++;
sum += *sp++;
sum += *sp++;
sum += *sp++;
sum += *sp++;
return(ipf_pcksum(fin, off, sum));
#endif
}
#endif

View File

@ -1839,6 +1839,10 @@ extern int ipf_matchicmpqueryreply __P((int, icmpinfo_t *,
struct icmp *, int));
extern u_32_t ipf_newisn __P((fr_info_t *));
extern u_int ipf_pcksum __P((fr_info_t *, int, u_int));
#ifdef USE_INET6
extern u_int ipf_pcksum6 __P((fr_info_t *, ip6_t *,
u_int32_t, u_int32_t));
#endif
extern void ipf_rule_expire __P((ipf_main_softc_t *));
extern int ipf_scanlist __P((fr_info_t *, u_32_t));
extern frentry_t *ipf_srcgrpmap __P((fr_info_t *, u_32_t *));

View File

@ -1453,3 +1453,48 @@ ipf_pcksum(fin, hlen, sum)
sum2 = ~sum & 0xffff;
return sum2;
}
#ifdef USE_INET6
u_int
ipf_pcksum6(fin, ip6, off, len)
fr_info_t *fin;
ip6_t *ip6;
u_int32_t off;
u_int32_t len;
{
#ifdef _KERNEL
struct mbuf *m;
int sum;
m = fin->fin_m;
if (m->m_len < sizeof(struct ip6_hdr)) {
return 0xffff;
}
sum = in6_cksum(m, ip6->ip6_nxt, off, len);
return(sum);
#else
u_short *sp;
u_int sum;
sp = (u_short *)&ip6->ip6_src;
sum = *sp++; /* ip6_src */
sum += *sp++;
sum += *sp++;
sum += *sp++;
sum += *sp++;
sum += *sp++;
sum += *sp++;
sum += *sp++;
sum += *sp++; /* ip6_dst */
sum += *sp++;
sum += *sp++;
sum += *sp++;
sum += *sp++;
sum += *sp++;
sum += *sp++;
sum += *sp++;
return(ipf_pcksum(fin, off, sum));
#endif
}
#endif