version 1.1, 2012/02/21 23:16:02
|
version 1.1.1.2, 2012/05/29 12:55:57
|
Line 1
|
Line 1
|
|
/* $Id$ */ |
/* |
/* |
* MiniUPnP project |
* MiniUPnP project |
* http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/ |
* http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/ |
* (c) 2009 Jardel Weyrich | * (c) 2009-2011 Jardel Weyrich, Thomas Bernard |
* This software is subject to the conditions detailed |
* This software is subject to the conditions detailed |
* in the LICENCE file provided within the distribution |
* in the LICENCE file provided within the distribution |
*/ |
*/ |
|
|
#include <stdio.h> |
#include <stdio.h> |
#include <syslog.h> |
#include <syslog.h> |
|
#include <time.h> |
#include <netinet/in.h> |
#include <netinet/in.h> |
#include "ipfwrdr.h" |
#include "ipfwrdr.h" |
|
|
// test program for ipfwrdr.c |
// test program for ipfwrdr.c |
|
static const char * ifname = "lo0"; |
|
|
|
static void |
|
list_port_mappings(void) |
|
{ |
|
int i; |
|
unsigned short eport; |
|
char iaddr[16]; |
|
unsigned short iport; |
|
int proto; |
|
char desc[64]; |
|
char rhost[32]; |
|
unsigned int timestamp; |
|
u_int64_t packets, bytes; |
|
|
|
printf("== Port Mapping List ==\n"); |
|
for(i = 0;; i++) { |
|
iaddr[0] = '\0'; |
|
desc[0] = '\0'; |
|
eport = iport = 0; |
|
timestamp = 0; |
|
packets = bytes = 0; |
|
proto = -1; |
|
if(get_redirect_rule_by_index(i, 0/*ifname*/, &eport, iaddr, sizeof(iaddr), |
|
&iport, &proto, desc, sizeof(desc), |
|
rhost, sizeof(rhost), |
|
×tamp, &packets, &bytes) < 0) |
|
break; |
|
printf("%2d - %5hu=>%15s:%5hu %d '%s' '%s' %u %" PRIu64 " %" PRIu64 "\n", |
|
i, eport, iaddr, iport, proto, desc, rhost, timestamp, |
|
packets, bytes); |
|
} |
|
printf("== %d Port Mapping%s ==\n", i, (i > 1)?"s":""); |
|
} |
|
|
int main(int argc, char * * argv) { |
int main(int argc, char * * argv) { |
|
unsigned int timestamp; |
|
char desc[64]; |
|
char addr[16]; |
|
char rhost[40]; |
|
unsigned short iport = 0; |
|
const char * in_rhost = "8.8.8.8"; |
|
|
|
desc[0] = '\0'; |
|
addr[0] = '\0'; |
openlog("testipfwrdrd", LOG_CONS | LOG_PERROR, LOG_USER); |
openlog("testipfwrdrd", LOG_CONS | LOG_PERROR, LOG_USER); |
init_redirect(); | if(init_redirect() < 0) { |
delete_redirect_rule("lo", 2222, IPPROTO_TCP); | fprintf(stderr, "init_redirect() failed.\n"); |
add_redirect_rule2("lo", 2222, "10.1.1.16", 4444, IPPROTO_TCP, "miniupnpd"); | return 1; |
get_redirect_rule("lo", 2222, IPPROTO_TCP, NULL, 0, NULL, NULL, 0, NULL, NULL); | } |
| list_port_mappings(); |
| delete_redirect_rule(ifname, 2222, IPPROTO_TCP); |
| delete_redirect_rule(ifname, 2223, IPPROTO_TCP); |
| add_redirect_rule2(ifname, "", 2223, |
| "10.1.1.17", 4445, IPPROTO_TCP, |
| "test miniupnpd", time(NULL) + 60); |
| add_redirect_rule2(ifname, in_rhost, 2222, |
| "10.1.1.16", 4444, IPPROTO_TCP, |
| "test miniupnpd", time(NULL) + 60); |
| get_redirect_rule(ifname, 2222, IPPROTO_TCP, addr, sizeof(addr), &iport, |
| desc, sizeof(desc), rhost, sizeof(rhost), |
| ×tamp, NULL, NULL); |
| printf("'%s' %s:%hu '%s' %u\n", rhost, addr, iport, desc, timestamp); |
| list_port_mappings(); |
| delete_redirect_rule(ifname, 2222, IPPROTO_TCP); |
| delete_redirect_rule(ifname, 2223, IPPROTO_TCP); |
| list_port_mappings(); |
shutdown_redirect(); |
shutdown_redirect(); |
return 0; |
return 0; |
} |
} |