Home | History | Annotate | Download | only in extensions
      1 /* Shared library add-on to ip6tables to add EUI64 address checking support. */
      2 #include <stdio.h>
      3 #include <netdb.h>
      4 #include <string.h>
      5 #include <stdlib.h>
      6 #include <getopt.h>
      7 #if defined(__GLIBC__) && __GLIBC__ == 2
      8 #include <net/ethernet.h>
      9 #else
     10 #include <linux/if_ether.h>
     11 #endif
     12 #include <ip6tables.h>
     13 
     14 /* Function which prints out usage message. */
     15 static void
     16 help(void)
     17 {
     18 	printf(
     19 "eui64 v%s options:\n"
     20 " This module hasn't got any option\n"
     21 " This module checks for EUI64 IPv6 addresses\n"
     22 "\n", IPTABLES_VERSION);
     23 }
     24 
     25 static struct option opts[] = {
     26 	{0}
     27 };
     28 
     29 /* Function which parses command options; returns true if it
     30    ate an option */
     31 static int
     32 parse(int c, char **argv, int invert, unsigned int *flags,
     33       const struct ip6t_entry *entry,
     34       unsigned int *nfcache,
     35       struct ip6t_entry_match **match)
     36 {
     37 	return 0;
     38 }
     39 
     40 /* Final check */
     41 static void final_check(unsigned int flags)
     42 {
     43 }
     44 
     45 /* Prints out the matchinfo. */
     46 static void
     47 print(const struct ip6t_ip6 *ip,
     48       const struct ip6t_entry_match *match,
     49       int numeric)
     50 {
     51 	printf("eui64 ");
     52 }
     53 
     54 /* Saves the union ip6t_matchinfo in parsable form to stdout. */
     55 static void save(const struct ip6t_ip6 *ip, const struct ip6t_entry_match *match)
     56 {
     57 
     58 }
     59 
     60 static struct ip6tables_match eui64 = {
     61 	.name 		= "eui64",
     62 	.version	= IPTABLES_VERSION,
     63 	.size		= IP6T_ALIGN(sizeof(int)),
     64 	.userspacesize	= IP6T_ALIGN(sizeof(int)),
     65 	.help		= &help,
     66 	.parse		= &parse,
     67 	.final_check	= &final_check,
     68 	.print		= &print,
     69 	.save		= &save,
     70 	.extra_opts	= opts,
     71 };
     72 
     73 void _init(void)
     74 {
     75 	register_match6(&eui64);
     76 }
     77