Deleted Added
full compact
fil.c (172776) fil.c (173181)
1/* $FreeBSD: head/sys/contrib/ipfilter/netinet/fil.c 172776 2007-10-18 21:52:14Z darrenr $ */
1/* $FreeBSD: head/sys/contrib/ipfilter/netinet/fil.c 173181 2007-10-30 15:23:27Z darrenr $ */
2
3/*
4 * Copyright (C) 1993-2003 by Darren Reed.
5 *
6 * See the IPFILTER.LICENCE file for details on licencing.
7 */
8#if defined(KERNEL) || defined(_KERNEL)
9# undef KERNEL

--- 140 unchanged lines hidden (view full) ---

150#endif
151#include "netinet/ipl.h"
152/* END OF INCLUDES */
153
154#include <machine/in_cksum.h>
155
156#if !defined(lint)
157static const char sccsid[] = "@(#)fil.c 1.36 6/5/96 (C) 1993-2000 Darren Reed";
2
3/*
4 * Copyright (C) 1993-2003 by Darren Reed.
5 *
6 * See the IPFILTER.LICENCE file for details on licencing.
7 */
8#if defined(KERNEL) || defined(_KERNEL)
9# undef KERNEL

--- 140 unchanged lines hidden (view full) ---

150#endif
151#include "netinet/ipl.h"
152/* END OF INCLUDES */
153
154#include <machine/in_cksum.h>
155
156#if !defined(lint)
157static const char sccsid[] = "@(#)fil.c 1.36 6/5/96 (C) 1993-2000 Darren Reed";
158static const char rcsid[] = "@(#)$FreeBSD: head/sys/contrib/ipfilter/netinet/fil.c 172776 2007-10-18 21:52:14Z darrenr $";
158static const char rcsid[] = "@(#)$FreeBSD: head/sys/contrib/ipfilter/netinet/fil.c 173181 2007-10-30 15:23:27Z darrenr $";
159/* static const char rcsid[] = "@(#)$Id: fil.c,v 2.243.2.125 2007/10/10 09:27:20 darrenr Exp $"; */
160#endif
161
162#ifndef _KERNEL
163# include "ipf.h"
164# include "ipt.h"
165# include "bpf-ipf.h"
166extern int opts;

--- 2342 unchanged lines hidden (view full) ---

2509 */
2510 if (((ip6_t *)ip)->ip6_plen == 0) {
2511 pass = FR_BLOCK|FR_NOMATCH;
2512 goto finished;
2513 }
2514 } else
2515#endif
2516 {
159/* static const char rcsid[] = "@(#)$Id: fil.c,v 2.243.2.125 2007/10/10 09:27:20 darrenr Exp $"; */
160#endif
161
162#ifndef _KERNEL
163# include "ipf.h"
164# include "ipt.h"
165# include "bpf-ipf.h"
166extern int opts;

--- 2342 unchanged lines hidden (view full) ---

2509 */
2510 if (((ip6_t *)ip)->ip6_plen == 0) {
2511 pass = FR_BLOCK|FR_NOMATCH;
2512 goto finished;
2513 }
2514 } else
2515#endif
2516 {
2517#if (defined(OpenBSD) && OpenBSD >= 200311) && defined(_KERNEL)
2517#if (defined(OpenBSD) && (OpenBSD >= 200311)) && defined(_KERNEL)
2518 ip->ip_len = ntohs(ip->ip_len);
2519 ip->ip_off = ntohs(ip->ip_off);
2520#endif
2521 }
2522
2523 if (fr_makefrip(hlen, ip, fin) == -1) {
2524 pass = FR_BLOCK|FR_NOMATCH;
2525 goto finished;

--- 246 unchanged lines hidden (view full) ---

2772 }
2773#endif
2774 }
2775
2776 SPL_X(s);
2777 RWLOCK_EXIT(&ipf_global);
2778
2779#ifdef _KERNEL
2518 ip->ip_len = ntohs(ip->ip_len);
2519 ip->ip_off = ntohs(ip->ip_off);
2520#endif
2521 }
2522
2523 if (fr_makefrip(hlen, ip, fin) == -1) {
2524 pass = FR_BLOCK|FR_NOMATCH;
2525 goto finished;

--- 246 unchanged lines hidden (view full) ---

2772 }
2773#endif
2774 }
2775
2776 SPL_X(s);
2777 RWLOCK_EXIT(&ipf_global);
2778
2779#ifdef _KERNEL
2780# if defined(OpenBSD) && OpenBSD >= 200311
2780# if (defined(OpenBSD) && (OpenBSD >= 200311))
2781 if (FR_ISPASS(pass) && (v == 4)) {
2782 ip = fin->fin_ip;
2783 ip->ip_len = ntohs(ip->ip_len);
2784 ip->ip_off = ntohs(ip->ip_off);
2785 }
2786# endif
2787 return (FR_ISPASS(pass)) ? 0 : fin->fin_error;
2788#else /* _KERNEL */

--- 4230 unchanged lines hidden (view full) ---

7019 error = EPERM;
7020 else {
7021 error = BCOPYIN(data, &tmp, sizeof(tmp));
7022 if (error != 0) {
7023 error = EFAULT;
7024 break;
7025 }
7026
2781 if (FR_ISPASS(pass) && (v == 4)) {
2782 ip = fin->fin_ip;
2783 ip->ip_len = ntohs(ip->ip_len);
2784 ip->ip_off = ntohs(ip->ip_off);
2785 }
2786# endif
2787 return (FR_ISPASS(pass)) ? 0 : fin->fin_error;
2788#else /* _KERNEL */

--- 4230 unchanged lines hidden (view full) ---

7019 error = EPERM;
7020 else {
7021 error = BCOPYIN(data, &tmp, sizeof(tmp));
7022 if (error != 0) {
7023 error = EFAULT;
7024 break;
7025 }
7026
7027 RWLOCK_EXIT(&ipf_global);
7028 WRITE_ENTER(&ipf_global);
7029 if (tmp) {
7030 if (fr_running > 0)
7031 error = 0;
7032 else
7033 error = ipfattach();
7034 if (error == 0)
7035 fr_running = 1;
7036 else
7037 (void) ipfdetach();
7038 } else {
7039 error = ipfdetach();
7040 if (error == 0)
7041 fr_running = -1;
7042 }
7027 WRITE_ENTER(&ipf_global);
7028 if (tmp) {
7029 if (fr_running > 0)
7030 error = 0;
7031 else
7032 error = ipfattach();
7033 if (error == 0)
7034 fr_running = 1;
7035 else
7036 (void) ipfdetach();
7037 } else {
7038 error = ipfdetach();
7039 if (error == 0)
7040 fr_running = -1;
7041 }
7042 RWLOCK_EXIT(&ipf_global);
7043 }
7044 break;
7045
7046 case SIOCIPFSET :
7047 if (!(mode & FWRITE)) {
7048 error = EPERM;
7049 break;
7050 }

--- 125 unchanged lines hidden (view full) ---

7176 }
7177 break;
7178#endif /* IPFILTER_LOG */
7179
7180 case SIOCFRSYN :
7181 if (!(mode & FWRITE))
7182 error = EPERM;
7183 else {
7043 }
7044 break;
7045
7046 case SIOCIPFSET :
7047 if (!(mode & FWRITE)) {
7048 error = EPERM;
7049 break;
7050 }

--- 125 unchanged lines hidden (view full) ---

7176 }
7177 break;
7178#endif /* IPFILTER_LOG */
7179
7180 case SIOCFRSYN :
7181 if (!(mode & FWRITE))
7182 error = EPERM;
7183 else {
7184 RWLOCK_EXIT(&ipf_global);
7185 WRITE_ENTER(&ipf_global);
7186#ifdef MENTAT
7187 error = ipfsync();
7188#else
7189 frsync(NULL);
7190 error = 0;
7191#endif
7184 WRITE_ENTER(&ipf_global);
7185#ifdef MENTAT
7186 error = ipfsync();
7187#else
7188 frsync(NULL);
7189 error = 0;
7190#endif
7191 RWLOCK_EXIT(&ipf_global);
7192
7193 }
7194 break;
7195
7196 case SIOCGFRST :
7197 error = fr_outobj((void *)data, fr_fragstats(),
7198 IPFOBJ_FRAGSTAT);
7199 break;

--- 159 unchanged lines hidden ---
7192
7193 }
7194 break;
7195
7196 case SIOCGFRST :
7197 error = fr_outobj((void *)data, fr_fragstats(),
7198 IPFOBJ_FRAGSTAT);
7199 break;

--- 159 unchanged lines hidden ---