1/* $Id: testipfrdr.c,v 1.3 2007/10/01 16:21:23 nanard Exp $ */ 2 3#include <stdio.h> 4#include <stdlib.h> 5#include <syslog.h> 6#include <netinet/in.h> 7#include <sys/types.h> 8#include "ipfrdr.h" 9 10/* test program for ipfrdr.c */ 11 12int runtime_flags = 0; 13 14void 15list_eports_tcp(void) 16{ 17 unsigned short * port_list; 18 unsigned int number = 0; 19 unsigned int i; 20 port_list = get_portmappings_in_range(0, 65535, IPPROTO_TCP, &number); 21 printf("%u ports redirected (TCP) :", number); 22 for(i = 0; i < number; i++) 23 { 24 printf(" %hu", port_list[i]); 25 } 26 printf("\n"); 27 free(port_list); 28 port_list = get_portmappings_in_range(0, 65535, IPPROTO_UDP, &number); 29 printf("%u ports redirected (UDP) :", number); 30 for(i = 0; i < number; i++) 31 { 32 printf(" %hu", port_list[i]); 33 } 34 printf("\n"); 35 free(port_list); 36} 37 38int 39main(int argc, char * * argv) 40{ 41 char c; 42 43 openlog("testipfrdrd", LOG_CONS|LOG_PERROR, LOG_USER); 44 if(init_redirect() < 0) 45 { 46 fprintf(stderr, "init_redirect() failed\n"); 47 return 1; 48 } 49 50 printf("List rdr ports :\n"); 51 list_eports_tcp(); 52 53 printf("Add redirection !\n"); 54 add_redirect_rule2("xennet0", "*", 12345, "192.168.1.100", 54321, IPPROTO_UDP, 55 "redirection description", 0); 56 add_redirect_rule2("xennet0", "8.8.8.8", 12345, "192.168.1.100", 54321, IPPROTO_TCP, 57 "redirection description", 0); 58 59 printf("Check redirect rules with \"ipnat -l\" then press any key.\n"); 60 c = getchar(); 61 62 printf("List rdr ports :\n"); 63 list_eports_tcp(); 64 65 printf("Delete redirection !\n"); 66 delete_redirect_rule("xennet0", 12345, IPPROTO_UDP); 67 delete_redirect_rule("xennet0", 12345, IPPROTO_TCP); 68 69 printf("List rdr ports :\n"); 70 list_eports_tcp(); 71 72 return 0; 73} 74 75