Move the new ipf_pcksum6() function from ip_fil_freebsd.c to fil.c.
The reason for this is that ipftest(8), which still works on FreeBSD-11, fails to link to it, breaking stable/11 builds. ipftest(8) was broken (segfault) sometime during the FreeBSD-12 cycle. glebius@ suggested we disable building it until I can get around to fixing it. Hence this was not caught in -current. The intention is to fix ipftest(8) as it is used by the netbsd-tests (imported by ngie@ many moons ago) for regression testing. MFC after: immediately
This commit is contained in:
parent
68cb2d36d3
commit
97b8d5fa26
@ -179,6 +179,10 @@ 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
|
||||
@ -10226,4 +10230,55 @@ ipf_inet6_mask_del(bits, mask, mtab)
|
||||
mtab->imt6_max--;
|
||||
ASSERT(mtab->imt6_max >= 0);
|
||||
}
|
||||
|
||||
#ifdef _KERNEL
|
||||
static u_int
|
||||
ipf_pcksum6(fin, ip6, off, len)
|
||||
fr_info_t *fin;
|
||||
ip6_t *ip6;
|
||||
u_int32_t off;
|
||||
u_int32_t len;
|
||||
{
|
||||
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
|
||||
static u_int
|
||||
ipf_pcksum6(fin, ip6, off, len)
|
||||
fr_info_t *fin;
|
||||
ip6_t *ip6;
|
||||
u_int32_t off;
|
||||
u_int32_t len;
|
||||
{
|
||||
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
|
||||
|
@ -1835,10 +1835,6 @@ 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 *));
|
||||
|
@ -1446,56 +1446,3 @@ ipf_pcksum(fin, hlen, sum)
|
||||
sum2 = ~sum & 0xffff;
|
||||
return sum2;
|
||||
}
|
||||
|
||||
#ifdef USE_INET6
|
||||
#ifdef _KERNEL
|
||||
u_int
|
||||
ipf_pcksum6(fin, ip6, off, len)
|
||||
fr_info_t *fin;
|
||||
ip6_t *ip6;
|
||||
u_int32_t off;
|
||||
u_int32_t len;
|
||||
{
|
||||
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_int
|
||||
ipf_pcksum6(fin, ip6, off, len)
|
||||
fr_info_t *fin;
|
||||
ip6_t *ip6;
|
||||
u_int32_t off;
|
||||
u_int32_t len;
|
||||
{
|
||||
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
|
||||
|
Loading…
Reference in New Issue
Block a user