summaryrefslogtreecommitdiff
path: root/OpenBSD-2/2.9-IPv6.diffs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenBSD-2/2.9-IPv6.diffs')
-rw-r--r--OpenBSD-2/2.9-IPv6.diffs86
1 files changed, 86 insertions, 0 deletions
diff --git a/OpenBSD-2/2.9-IPv6.diffs b/OpenBSD-2/2.9-IPv6.diffs
new file mode 100644
index 0000000000000..f04a7a13ff1c3
--- /dev/null
+++ b/OpenBSD-2/2.9-IPv6.diffs
@@ -0,0 +1,86 @@
+*** ip6_input.c.orig Sun Sep 2 12:51:02 2001
+--- ip6_input.c Mon Sep 3 22:25:23 2001
+***************
+*** 130,135 ****
+--- 130,138 ----
+ #ifdef PULLDOWN_TEST
+ static struct mbuf *ip6_pullexthdr __P((struct mbuf *, size_t, int));
+ #endif
++ #if defined(IPFILTER) || defined(IPFILTER_LKM)
++ extern int (*fr_checkp) __P((struct ip *, int, struct ifnet *, int, struct mbuf **));
++ #endif
+
+ /*
+ * IP6 initialization: fill in IP6 protocol switch table.
+***************
+*** 274,279 ****
+--- 277,302 ----
+ in6_ifstat_inc(m->m_pkthdr.rcvif, ifs6_in_hdrerr);
+ goto bad;
+ }
++
++ #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 != NULL) {
++ struct mbuf *m0 = m;
++
++ if ((*fr_checkp)((struct ip *)ip6, sizeof(*ip6),
++ m->m_pkthdr.rcvif, 0, &m0)) {
++ return;
++ }
++ m = m0;
++ if (m == 0) { /* in case of 'fastroute' */
++ return;
++ }
++ ip6 = mtod(m, struct ip6_hdr *);
++ }
++ #endif
+
+ ip6stat.ip6s_nxthist[ip6->ip6_nxt]++;
+
+*** ip6_output.c.orig Sun Sep 2 12:51:21 2001
+--- ip6_output.c Mon Sep 3 22:27:46 2001
+***************
+*** 113,118 ****
+--- 113,122 ----
+ struct mbuf *ip6e_dest2;
+ };
+
++ #if defined(IPFILTER) || defined(IPFILTER_LKM)
++ extern int (*fr_checkp) __P((struct ip *, int, struct ifnet *, int, struct mbuf **));
++ #endif
++
+ static int ip6_pcbopts __P((struct ip6_pktopts **, struct mbuf *,
+ struct socket *));
+ static int ip6_setmoptions __P((int, struct ip6_moptions **, struct mbuf *));
+***************
+*** 910,915 ****
+--- 914,938 ----
+ m->m_pkthdr.rcvif = NULL;
+ }
+
++
++ #if defined(IPFILTER) || defined(IPFILTER_LKM)
++ /*
++ * looks like most checking has been done now...do a filter check
++ */
++ if (fr_checkp != NULL) {
++ struct mbuf *m1 = m;
++ if ((*fr_checkp)((struct ip *)ip6, sizeof(*ip6), ifp, 1, &m1)) {
++ error = EHOSTUNREACH;
++ goto done;
++ }
++ m = m1;
++ if (m1 == 0) { /* in case of 'fastroute' */
++ error = 0;
++ goto done;
++ }
++ ip6 = mtod(m, struct ip6_hdr *);
++ }
++ #endif
+ /*
+ * Send the packet to the outgoing interface.
+ * If necessary, do IPv6 fragmentation before sending.