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