xref: /freebsd/share/examples/ipfilter/mlfk_rule.c (revision c03c5b1c)
1 /*	$FreeBSD$	*/
2 
3 /*
4  * Copyright (C) 2012 by Darren Reed.
5  *
6  * See the IPFILTER.LICENCE file for details on licencing.
7  *
8  * $Id$
9  */
10 
11 
12 #include <sys/param.h>
13 #include <sys/systm.h>
14 #include <sys/kernel.h>
15 #include <sys/module.h>
16 #include <sys/conf.h>
17 #include <sys/socket.h>
18 #include <sys/sysctl.h>
19 #include <net/if.h>
20 #include <netinet/in_systm.h>
21 #include <netinet/in.h>
22 
23 #include <netinet/ipl.h>
24 #include <netinet/ip_compat.h>
25 #include <netinet/ip_fil.h>
26 #include <netinet/ip_state.h>
27 #include <netinet/ip_nat.h>
28 #include <netinet/ip_auth.h>
29 #include <netinet/ip_frag.h>
30 
31 #include "ip_rules.h"
32 
33 extern ipf_main_softc_t ipfmain;
34 
35 static int
36 ipfrule_modevent(module_t mod, int type, void *unused)
37 {
38 	int error = 0;
39 
40 	switch (type)
41 	{
42 	case MOD_LOAD :
43 		error = ipfrule_add();
44 		if (!error)
45 			ipfmain.ipf_refcnt++;
46 		break;
47 	case MOD_UNLOAD :
48 		error = ipfrule_remove();
49 		if (!error)
50 			ipfmain.ipf_refcnt--;
51 		break;
52 	default:
53 		error = EINVAL;
54 		break;
55 	}
56 	return(error);
57 }
58 
59 static moduledata_t ipfrulemod = {
60 	"ipfrule",
61 	ipfrule_modevent,
62         0
63 };
64 DECLARE_MODULE(ipfrule, ipfrulemod, SI_SUB_PROTO_DOMAIN, SI_ORDER_ANY);
65 #ifdef	MODULE_DEPEND
66 MODULE_DEPEND(ipfrule, ipfilter, 1, 1, 1);
67 #endif
68 #ifdef	MODULE_VERSION
69 MODULE_VERSION(ipfrule, 1);
70 #endif
71