libxt_TRACE.c revision 1a31b4251a71e5cd3845860405ecbe156c5f13c7
11a31b4251a71e5cd3845860405ecbe156c5f13c7Yasuyuki KOZAKAI/* Shared library add-on to iptables to add TRACE target support. */
21a31b4251a71e5cd3845860405ecbe156c5f13c7Yasuyuki KOZAKAI#include <stdio.h>
31a31b4251a71e5cd3845860405ecbe156c5f13c7Yasuyuki KOZAKAI#include <string.h>
41a31b4251a71e5cd3845860405ecbe156c5f13c7Yasuyuki KOZAKAI#include <stdlib.h>
51a31b4251a71e5cd3845860405ecbe156c5f13c7Yasuyuki KOZAKAI#include <getopt.h>
61a31b4251a71e5cd3845860405ecbe156c5f13c7Yasuyuki KOZAKAI
71a31b4251a71e5cd3845860405ecbe156c5f13c7Yasuyuki KOZAKAI#include <xtables.h>
81a31b4251a71e5cd3845860405ecbe156c5f13c7Yasuyuki KOZAKAI#include <linux/netfilter/x_tables.h>
91a31b4251a71e5cd3845860405ecbe156c5f13c7Yasuyuki KOZAKAI
101a31b4251a71e5cd3845860405ecbe156c5f13c7Yasuyuki KOZAKAI/* Function which prints out usage message. */
111a31b4251a71e5cd3845860405ecbe156c5f13c7Yasuyuki KOZAKAIstatic void
121a31b4251a71e5cd3845860405ecbe156c5f13c7Yasuyuki KOZAKAIhelp(void)
131a31b4251a71e5cd3845860405ecbe156c5f13c7Yasuyuki KOZAKAI{
141a31b4251a71e5cd3845860405ecbe156c5f13c7Yasuyuki KOZAKAI	printf(
151a31b4251a71e5cd3845860405ecbe156c5f13c7Yasuyuki KOZAKAI"TRACE target v%s takes no options\n",
161a31b4251a71e5cd3845860405ecbe156c5f13c7Yasuyuki KOZAKAIIPTABLES_VERSION);
171a31b4251a71e5cd3845860405ecbe156c5f13c7Yasuyuki KOZAKAI}
181a31b4251a71e5cd3845860405ecbe156c5f13c7Yasuyuki KOZAKAI
191a31b4251a71e5cd3845860405ecbe156c5f13c7Yasuyuki KOZAKAI/* Initialize the target. */
201a31b4251a71e5cd3845860405ecbe156c5f13c7Yasuyuki KOZAKAIstatic void
211a31b4251a71e5cd3845860405ecbe156c5f13c7Yasuyuki KOZAKAIinit(struct xt_entry_target *t, unsigned int *nfcache)
221a31b4251a71e5cd3845860405ecbe156c5f13c7Yasuyuki KOZAKAI{
231a31b4251a71e5cd3845860405ecbe156c5f13c7Yasuyuki KOZAKAI}
241a31b4251a71e5cd3845860405ecbe156c5f13c7Yasuyuki KOZAKAI
251a31b4251a71e5cd3845860405ecbe156c5f13c7Yasuyuki KOZAKAI/* Function which parses command options; returns true if it
261a31b4251a71e5cd3845860405ecbe156c5f13c7Yasuyuki KOZAKAI   ate an option */
271a31b4251a71e5cd3845860405ecbe156c5f13c7Yasuyuki KOZAKAIstatic int
281a31b4251a71e5cd3845860405ecbe156c5f13c7Yasuyuki KOZAKAIparse(int c, char **argv, int invert, unsigned int *flags,
291a31b4251a71e5cd3845860405ecbe156c5f13c7Yasuyuki KOZAKAI      const void *entry,
301a31b4251a71e5cd3845860405ecbe156c5f13c7Yasuyuki KOZAKAI      struct xt_entry_target **target)
311a31b4251a71e5cd3845860405ecbe156c5f13c7Yasuyuki KOZAKAI{
321a31b4251a71e5cd3845860405ecbe156c5f13c7Yasuyuki KOZAKAI	return 0;
331a31b4251a71e5cd3845860405ecbe156c5f13c7Yasuyuki KOZAKAI}
341a31b4251a71e5cd3845860405ecbe156c5f13c7Yasuyuki KOZAKAI
351a31b4251a71e5cd3845860405ecbe156c5f13c7Yasuyuki KOZAKAIstatic void
361a31b4251a71e5cd3845860405ecbe156c5f13c7Yasuyuki KOZAKAIfinal_check(unsigned int flags)
371a31b4251a71e5cd3845860405ecbe156c5f13c7Yasuyuki KOZAKAI{
381a31b4251a71e5cd3845860405ecbe156c5f13c7Yasuyuki KOZAKAI}
391a31b4251a71e5cd3845860405ecbe156c5f13c7Yasuyuki KOZAKAI
401a31b4251a71e5cd3845860405ecbe156c5f13c7Yasuyuki KOZAKAIstatic struct xtables_target trace = {
411a31b4251a71e5cd3845860405ecbe156c5f13c7Yasuyuki KOZAKAI	.family		= AF_INET,
421a31b4251a71e5cd3845860405ecbe156c5f13c7Yasuyuki KOZAKAI	.name		= "TRACE",
431a31b4251a71e5cd3845860405ecbe156c5f13c7Yasuyuki KOZAKAI	.version	= IPTABLES_VERSION,
441a31b4251a71e5cd3845860405ecbe156c5f13c7Yasuyuki KOZAKAI	.size		= XT_ALIGN(0),
451a31b4251a71e5cd3845860405ecbe156c5f13c7Yasuyuki KOZAKAI	.userspacesize	= XT_ALIGN(0),
461a31b4251a71e5cd3845860405ecbe156c5f13c7Yasuyuki KOZAKAI	.help		= &help,
471a31b4251a71e5cd3845860405ecbe156c5f13c7Yasuyuki KOZAKAI	.init		= &init,
481a31b4251a71e5cd3845860405ecbe156c5f13c7Yasuyuki KOZAKAI	.parse		= &parse,
491a31b4251a71e5cd3845860405ecbe156c5f13c7Yasuyuki KOZAKAI	.final_check	= &final_check,
501a31b4251a71e5cd3845860405ecbe156c5f13c7Yasuyuki KOZAKAI	.print		= NULL, /* print */
511a31b4251a71e5cd3845860405ecbe156c5f13c7Yasuyuki KOZAKAI	.save		= NULL, /* save */
521a31b4251a71e5cd3845860405ecbe156c5f13c7Yasuyuki KOZAKAI};
531a31b4251a71e5cd3845860405ecbe156c5f13c7Yasuyuki KOZAKAI
541a31b4251a71e5cd3845860405ecbe156c5f13c7Yasuyuki KOZAKAIstatic struct xtables_target trace6 = {
551a31b4251a71e5cd3845860405ecbe156c5f13c7Yasuyuki KOZAKAI	.family		= AF_INET6,
561a31b4251a71e5cd3845860405ecbe156c5f13c7Yasuyuki KOZAKAI	.name		= "TRACE",
571a31b4251a71e5cd3845860405ecbe156c5f13c7Yasuyuki KOZAKAI	.version	= IPTABLES_VERSION,
581a31b4251a71e5cd3845860405ecbe156c5f13c7Yasuyuki KOZAKAI	.size		= XT_ALIGN(0),
591a31b4251a71e5cd3845860405ecbe156c5f13c7Yasuyuki KOZAKAI	.userspacesize	= XT_ALIGN(0),
601a31b4251a71e5cd3845860405ecbe156c5f13c7Yasuyuki KOZAKAI	.help		= &help,
611a31b4251a71e5cd3845860405ecbe156c5f13c7Yasuyuki KOZAKAI	.init		= &init,
621a31b4251a71e5cd3845860405ecbe156c5f13c7Yasuyuki KOZAKAI	.parse		= &parse,
631a31b4251a71e5cd3845860405ecbe156c5f13c7Yasuyuki KOZAKAI	.final_check	= &final_check,
641a31b4251a71e5cd3845860405ecbe156c5f13c7Yasuyuki KOZAKAI	.print		= NULL, /* print */
651a31b4251a71e5cd3845860405ecbe156c5f13c7Yasuyuki KOZAKAI	.save		= NULL, /* save */
661a31b4251a71e5cd3845860405ecbe156c5f13c7Yasuyuki KOZAKAI};
671a31b4251a71e5cd3845860405ecbe156c5f13c7Yasuyuki KOZAKAI
681a31b4251a71e5cd3845860405ecbe156c5f13c7Yasuyuki KOZAKAIvoid _init(void)
691a31b4251a71e5cd3845860405ecbe156c5f13c7Yasuyuki KOZAKAI{
701a31b4251a71e5cd3845860405ecbe156c5f13c7Yasuyuki KOZAKAI	xtables_register_target(&trace);
711a31b4251a71e5cd3845860405ecbe156c5f13c7Yasuyuki KOZAKAI	xtables_register_target(&trace6);
721a31b4251a71e5cd3845860405ecbe156c5f13c7Yasuyuki KOZAKAI}
73