c9bff7ba93
More to come in the next days.
89 lines
2.0 KiB
Plaintext
89 lines
2.0 KiB
Plaintext
*** /sys/netinet/ip_input.c.orig Thu Oct 24 22:27:27 1996
|
|
--- /sys/netinet/ip_input.c Tue Feb 18 21:18:19 1997
|
|
***************
|
|
*** 93,98 ****
|
|
--- 93,102 ----
|
|
int ipqmaxlen = IFQ_MAXLEN;
|
|
struct in_ifaddr *in_ifaddr; /* first inet address */
|
|
struct ifqueue ipintrq;
|
|
+ #if defined(IPFILTER_LKM) || defined(IPFILTER)
|
|
+ int fr_check __P((struct ip *, int, struct ifnet *, int, struct mbuf **));
|
|
+ int (*fr_checkp) __P((struct ip *, int, struct ifnet *, int, struct mbuf **));
|
|
+ #endif
|
|
|
|
struct ipstat ipstat;
|
|
struct ipq ipq;
|
|
***************
|
|
*** 219,226 ****
|
|
}
|
|
ip = mtod(m, struct ip *);
|
|
}
|
|
! ip->ip_sum = in_cksum(m, hlen);
|
|
! if (ip->ip_sum) {
|
|
ipstat.ips_badsum++;
|
|
goto bad;
|
|
}
|
|
--- 223,229 ----
|
|
}
|
|
ip = mtod(m, struct ip *);
|
|
}
|
|
! if (in_cksum(m, hlen)) {
|
|
ipstat.ips_badsum++;
|
|
goto bad;
|
|
}
|
|
***************
|
|
*** 267,272 ****
|
|
--- 270,288 ----
|
|
goto next;
|
|
}
|
|
|
|
+ #if defined(IPFILTER) || defined(IPFILTER_LKM)
|
|
+ /*
|
|
+ * Check if we want to allow this packet to be processed.
|
|
+ * Consider it to be bad if not.
|
|
+ */
|
|
+ if (fr_checkp) {
|
|
+ struct mbuf *m1 = m;
|
|
+
|
|
+ if ((*fr_checkp)(ip, hlen, m->m_pkthdr.rcvif, 0, &m1) || !m1)
|
|
+ goto next;
|
|
+ ip = mtod(m = m1, struct ip *);
|
|
+ }
|
|
+ #endif
|
|
/*
|
|
* Process options and, if not destined for us,
|
|
* ship it on. ip_dooptions returns 1 when an
|
|
***************
|
|
*** 527,532 ****
|
|
--- 533,540 ----
|
|
* if they are completely covered, dequeue them.
|
|
*/
|
|
while (q != (struct ipasfrag *)fp && ip->ip_off + ip->ip_len > q->ip_off) {
|
|
+ struct mbuf *m0;
|
|
+
|
|
i = (ip->ip_off + ip->ip_len) - q->ip_off;
|
|
if (i < q->ip_len) {
|
|
q->ip_len -= i;
|
|
***************
|
|
*** 526,534 ****
|
|
m_adj(dtom(q), i);
|
|
break;
|
|
}
|
|
q = q->ipf_next;
|
|
- m_freem(dtom(q->ipf_prev));
|
|
ip_deq(q->ipf_prev);
|
|
}
|
|
|
|
insert:
|
|
--- 542,551 ----
|
|
m_adj(dtom(q), i);
|
|
break;
|
|
}
|
|
+ m0 = dtom(q);
|
|
q = q->ipf_next;
|
|
ip_deq(q->ipf_prev);
|
|
+ m_freem(m0);
|
|
}
|
|
|
|
insert:
|