libipt_unclean.c revision 8caee8b9e34fed4562fcff553197c161fc9d9979
1e6869a8f59d779ff4d5a0984c86d80db7078496Marc Boucher/* Shared library add-on to iptables for unclean. */
2e6869a8f59d779ff4d5a0984c86d80db7078496Marc Boucher#include <stdio.h>
3e6869a8f59d779ff4d5a0984c86d80db7078496Marc Boucher#include <stdlib.h>
4e6869a8f59d779ff4d5a0984c86d80db7078496Marc Boucher#include <getopt.h>
5e6869a8f59d779ff4d5a0984c86d80db7078496Marc Boucher#include <iptables.h>
6e6869a8f59d779ff4d5a0984c86d80db7078496Marc Boucher
7e6869a8f59d779ff4d5a0984c86d80db7078496Marc Boucher/* Function which prints out usage message. */
8e6869a8f59d779ff4d5a0984c86d80db7078496Marc Boucherstatic void
9e6869a8f59d779ff4d5a0984c86d80db7078496Marc Boucherhelp(void)
10e6869a8f59d779ff4d5a0984c86d80db7078496Marc Boucher{
11e6869a8f59d779ff4d5a0984c86d80db7078496Marc Boucher	printf(
12e6869a8f59d779ff4d5a0984c86d80db7078496Marc Boucher"unclean v%s takes no options\n"
1380fe35d6339b53a12ddaec41885613e4e37ed031Harald Welte"\n", IPTABLES_VERSION);
14e6869a8f59d779ff4d5a0984c86d80db7078496Marc Boucher}
15e6869a8f59d779ff4d5a0984c86d80db7078496Marc Boucher
16e6869a8f59d779ff4d5a0984c86d80db7078496Marc Boucherstatic struct option opts[] = {
17e6869a8f59d779ff4d5a0984c86d80db7078496Marc Boucher	{0}
18e6869a8f59d779ff4d5a0984c86d80db7078496Marc Boucher};
19e6869a8f59d779ff4d5a0984c86d80db7078496Marc Boucher
20e6869a8f59d779ff4d5a0984c86d80db7078496Marc Boucher/* Initialize the match. */
21e6869a8f59d779ff4d5a0984c86d80db7078496Marc Boucherstatic void
22e6869a8f59d779ff4d5a0984c86d80db7078496Marc Boucherinit(struct ipt_entry_match *m, unsigned int *nfcache)
23e6869a8f59d779ff4d5a0984c86d80db7078496Marc Boucher{
24e6869a8f59d779ff4d5a0984c86d80db7078496Marc Boucher	/* Can't cache this. */
25e6869a8f59d779ff4d5a0984c86d80db7078496Marc Boucher	*nfcache |= NFC_UNKNOWN;
26e6869a8f59d779ff4d5a0984c86d80db7078496Marc Boucher}
27e6869a8f59d779ff4d5a0984c86d80db7078496Marc Boucher
28e6869a8f59d779ff4d5a0984c86d80db7078496Marc Boucher/* Function which parses command options; returns true if it
29e6869a8f59d779ff4d5a0984c86d80db7078496Marc Boucher   ate an option */
30e6869a8f59d779ff4d5a0984c86d80db7078496Marc Boucherstatic int
31e6869a8f59d779ff4d5a0984c86d80db7078496Marc Boucherparse(int c, char **argv, int invert, unsigned int *flags,
32e6869a8f59d779ff4d5a0984c86d80db7078496Marc Boucher      const struct ipt_entry *entry,
33e6869a8f59d779ff4d5a0984c86d80db7078496Marc Boucher      unsigned int *nfcache,
34e6869a8f59d779ff4d5a0984c86d80db7078496Marc Boucher      struct ipt_entry_match **match)
35e6869a8f59d779ff4d5a0984c86d80db7078496Marc Boucher{
36e6869a8f59d779ff4d5a0984c86d80db7078496Marc Boucher	return 0;
37e6869a8f59d779ff4d5a0984c86d80db7078496Marc Boucher}
38e6869a8f59d779ff4d5a0984c86d80db7078496Marc Boucher
39e6869a8f59d779ff4d5a0984c86d80db7078496Marc Boucher/* Final check; must have specified --mac. */
40e6869a8f59d779ff4d5a0984c86d80db7078496Marc Boucherstatic void final_check(unsigned int flags)
41e6869a8f59d779ff4d5a0984c86d80db7078496Marc Boucher{
42e6869a8f59d779ff4d5a0984c86d80db7078496Marc Boucher}
43e6869a8f59d779ff4d5a0984c86d80db7078496Marc Boucher
443efb6ead2e51fe1eca55bcb2b06afb4dc4b8cb7cHarald Weltestatic
458caee8b9e34fed4562fcff553197c161fc9d9979Pablo Neirastruct iptables_match unclean = {
468caee8b9e34fed4562fcff553197c161fc9d9979Pablo Neira	.next		= NULL,
478caee8b9e34fed4562fcff553197c161fc9d9979Pablo Neira	.name		= "unclean",
488caee8b9e34fed4562fcff553197c161fc9d9979Pablo Neira	.version	= IPTABLES_VERSION,
498caee8b9e34fed4562fcff553197c161fc9d9979Pablo Neira	.size		= IPT_ALIGN(0),
508caee8b9e34fed4562fcff553197c161fc9d9979Pablo Neira	.userspacesize	= IPT_ALIGN(0),
518caee8b9e34fed4562fcff553197c161fc9d9979Pablo Neira	.help		= &help,
528caee8b9e34fed4562fcff553197c161fc9d9979Pablo Neira	.init		= &init,
538caee8b9e34fed4562fcff553197c161fc9d9979Pablo Neira	.parse		= &parse,
548caee8b9e34fed4562fcff553197c161fc9d9979Pablo Neira	.final_check	= &final_check,
558caee8b9e34fed4562fcff553197c161fc9d9979Pablo Neira	.print		= NULL,
568caee8b9e34fed4562fcff553197c161fc9d9979Pablo Neira	.save		= NULL,
578caee8b9e34fed4562fcff553197c161fc9d9979Pablo Neira	.extra_opts	= opts
58e6869a8f59d779ff4d5a0984c86d80db7078496Marc Boucher};
59e6869a8f59d779ff4d5a0984c86d80db7078496Marc Boucher
60e6869a8f59d779ff4d5a0984c86d80db7078496Marc Bouchervoid _init(void)
61e6869a8f59d779ff4d5a0984c86d80db7078496Marc Boucher{
62e6869a8f59d779ff4d5a0984c86d80db7078496Marc Boucher	register_match(&unclean);
63e6869a8f59d779ff4d5a0984c86d80db7078496Marc Boucher}
64