Index: 3.2-sys-diffs =================================================================== RCS file: /devel/CVS/IP-Filter/OpenBSD-3/Attic/3.2-sys-diffs,v retrieving revision 1.1.2.3 retrieving revision 1.1.2.4 diff -c -r1.1.2.3 -r1.1.2.4 *** 3.2-sys-diffs 2002/12/02 13:58:51 1.1.2.3 --- 3.2-sys-diffs 2002/12/10 22:45:43 1.1.2.4 *************** *** 628,633 **** --- 628,671 ---- if (mc == NULL) continue; *************** + *** 2220,2226 **** + * We don't need to do loop detection, the + * bridge will do that for us. + */ + ! #if NFP > 0 + switch (af) { + #ifdef INET + case AF_INET: + --- 2224,2236 ---- + * We don't need to do loop detection, the + * bridge will do that for us. + */ + ! #if defined(IPFILTER) || defined(IPFILTER_LKM) + ! if (dir == BRIDGE_OUT && fr_checkp && + ! ((*fr_checkp)(ip, hlen, &encif[0].sc_if, + ! dir, &m) || !m)) + ! return 1; + ! #endif + ! #if NPF > 0 + switch (af) { + #ifdef INET + case AF_INET: + *************** + *** 2244,2249 **** + --- 2254,2265 ---- + if (m == NULL) + return (1); + #endif /* NPF */ + + #if defined(IPFILTER) || defined(IPFILTER_LKM) + + if (dir == BRIDGE_IN && fr_checkp && + + ((*fr_checkp)(ip, hlen, &encif[0].sc_if, + + dir, &m) || !m)) + + return 1; + + #endif + #ifdef INET + if (af == AF_INET) { + ip = mtod(m, struct ip *); + *************** *** 2262,2268 **** } #endif /* IPSEC */ *************** *** 636,642 **** /* * Filter IP packets by peeking into the ethernet frame. This violates * the ISO model, but allows us to act as a IP filter at the data link ! --- 2266,2272 ---- } #endif /* IPSEC */ --- 674,680 ---- /* * Filter IP packets by peeking into the ethernet frame. This violates * the ISO model, but allows us to act as a IP filter at the data link ! --- 2278,2284 ---- } #endif /* IPSEC */ *************** *** 645,662 **** * Filter IP packets by peeking into the ethernet frame. This violates * the ISO model, but allows us to act as a IP filter at the data link *************** ! *** 2377,2382 **** ! --- 2381,2390 ---- m->m_pkthdr.rcvif = ifp; ! if (pf_test(dir, ifp, &m) != PF_PASS) goto dropit; + #if defined(IPFILTER) || defined(IPFILTER_LKM) ! + if (fr_checkp && (*fr_checkp)(ip, hlen, ifp, dir, &m)) ! + goto dropit; + #endif ! if (m == NULL) goto dropit; #endif /* NPF */ *************** *** 2460,2466 **** m_freem(m); --- 683,752 ---- * Filter IP packets by peeking into the ethernet frame. This violates * the ISO model, but allows us to act as a IP filter at the data link *************** ! *** 2372,2377 **** ! --- 2388,2401 ---- ! return (NULL); ! #endif /* IPSEC */ ! ! + #if defined(IPFILTER) || defined(IPFILTER_LKM) ! + if (dir == BRIDGE_OUT) { ! + if (fr_checkp && (*fr_checkp)(ip, hlen, ifp, dir, &m)) ! + goto dropit; ! + if (m == NULL) ! + goto dropit; ! + } ! + #endif ! #if NPF > 0 ! /* Finally, we get to filter the packet! */ m->m_pkthdr.rcvif = ifp; ! *************** ! *** 2380,2385 **** ! --- 2404,2417 ---- ! if (m == NULL) goto dropit; + #endif /* NPF */ + #if defined(IPFILTER) || defined(IPFILTER_LKM) ! + if (dir == BRIDGE_IN) { ! + if (fr_checkp && (*fr_checkp)(ip, hlen, ifp, dir, &m)) ! + goto dropit; ! + if (m == NULL) ! + goto dropit; ! + } + #endif ! ! /* Rebuild the IP header */ ! if (m->m_len < hlen && ((m = m_pullup(m, hlen)) == NULL)) ! *************** ! *** 2423,2434 **** ! --- 2455,2482 ---- ! return (NULL); ! #endif /* IPSEC */ ! ! + #if defined(IPFILTER) || defined(IPFILTER_LKM) ! + if (dir == BRIDGE_OUT) { ! + if (fr_checkp && (*fr_checkp)(ip, hlen, ifp, dir, &m)) ! + goto dropit; ! + if (m == NULL) ! + return (NULL); ! + } ! + #endif ! #if NPF > 0 ! if (pf_test6(dir, ifp, &m) != PF_PASS) goto dropit; + if (m == NULL) + return (NULL); #endif /* NPF */ + + #if defined(IPFILTER) || defined(IPFILTER_LKM) + + if (dir == BRIDGE_IN) { + + if (fr_checkp && (*fr_checkp)(ip, hlen, ifp, dir, &m)) + + goto dropit; + + if (m == NULL) + + return (NULL); + + } + + #endif + + break; + } *************** *** 2460,2466 **** m_freem(m); *************** *** 666,672 **** void bridge_fragment(sc, ifp, eh, m) ! --- 2468,2474 ---- m_freem(m); return (NULL); } --- 756,762 ---- void bridge_fragment(sc, ifp, eh, m) ! --- 2508,2514 ---- m_freem(m); return (NULL); }