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