ip_fil_freebsd.c (161356) | ip_fil_freebsd.c (163027) |
---|---|
1/* $FreeBSD: head/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c 161356 2006-08-16 12:06:35Z guido $ */ | 1/* $FreeBSD: head/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c 163027 2006-10-05 09:48:25Z oleg $ */ |
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(lint) 9static const char sccsid[] = "@(#)ip_fil.c 2.41 6/5/96 (C) 1993-2000 Darren Reed"; --- 466 unchanged lines hidden (view full) --- 476 return EIO; 477 if (cmd != SIOCIPFGETNEXT && cmd != SIOCIPFGET && 478 cmd != SIOCIPFSET && cmd != SIOCFRENB && 479 cmd != SIOCGETFS && cmd != SIOCGETFF) 480 return EIO; 481 } 482 483 SPL_NET(s); | 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(lint) 9static const char sccsid[] = "@(#)ip_fil.c 2.41 6/5/96 (C) 1993-2000 Darren Reed"; --- 466 unchanged lines hidden (view full) --- 476 return EIO; 477 if (cmd != SIOCIPFGETNEXT && cmd != SIOCIPFGET && 478 cmd != SIOCIPFSET && cmd != SIOCFRENB && 479 cmd != SIOCGETFS && cmd != SIOCGETFF) 480 return EIO; 481 } 482 483 SPL_NET(s); |
484 READ_ENTER(&ipf_global); | 484 if (fr_running > 0) 485 READ_ENTER(&ipf_global); |
485 486 error = fr_ioctlswitch(unit, data, cmd, mode); 487 if (error != -1) { 488 RWLOCK_EXIT(&ipf_global); 489 SPL_X(s); 490 return error; 491 } 492 error = 0; --- 16 unchanged lines hidden (view full) --- 509 error = 0; 510 else 511 error = iplattach(); 512 if (error == 0) 513 fr_running = 1; 514 else 515 (void) ipldetach(); 516 } else { | 486 487 error = fr_ioctlswitch(unit, data, cmd, mode); 488 if (error != -1) { 489 RWLOCK_EXIT(&ipf_global); 490 SPL_X(s); 491 return error; 492 } 493 error = 0; --- 16 unchanged lines hidden (view full) --- 510 error = 0; 511 else 512 error = iplattach(); 513 if (error == 0) 514 fr_running = 1; 515 else 516 (void) ipldetach(); 517 } else { |
517 error = ipldetach(); | 518 if (fr_running <= 0) 519 error = 0; 520 else 521 error = ipldetach(); |
518 if (error == 0) 519 fr_running = -1; 520 } 521 } 522 break; 523 case SIOCIPFSET : 524 if (!(mode & FWRITE)) { 525 error = EPERM; --- 96 unchanged lines hidden (view full) --- 622 frsync(NULL); 623 } 624 break; 625 default : 626 error = EINVAL; 627 break; 628 } 629 | 522 if (error == 0) 523 fr_running = -1; 524 } 525 } 526 break; 527 case SIOCIPFSET : 528 if (!(mode & FWRITE)) { 529 error = EPERM; --- 96 unchanged lines hidden (view full) --- 626 frsync(NULL); 627 } 628 break; 629 default : 630 error = EINVAL; 631 break; 632 } 633 |
630 RWLOCK_EXIT(&ipf_global); | 634 if (fr_running > 0) 635 if (mtx_owned(&(&ipf_global)->ipf_lk)) 636 RWLOCK_EXIT(&ipf_global); |
631 SPL_X(s); 632 633 return error; 634} 635 636 637#if 0 638void fr_forgetifp(ifp) --- 1100 unchanged lines hidden --- | 637 SPL_X(s); 638 639 return error; 640} 641 642 643#if 0 644void fr_forgetifp(ifp) --- 1100 unchanged lines hidden --- |