version 1.1.1.1, 2012/02/21 23:16:02
|
version 1.1.1.3, 2013/07/22 00:32:35
|
Line 1
|
Line 1
|
/* $Id$ */ |
/* $Id$ */ |
/* MiniUPnP project |
/* MiniUPnP project |
* http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/ |
* http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/ |
* (c) 2006-2010 Thomas Bernard | * (c) 2006-2012 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 <stdlib.h> |
#include <sys/types.h> |
#include <sys/types.h> |
#include <netinet/in.h> |
#include <netinet/in.h> |
#include <syslog.h> |
#include <syslog.h> |
Line 15
|
Line 16
|
/*int logpackets = 1;*/ |
/*int logpackets = 1;*/ |
int runtime_flags = 0; |
int runtime_flags = 0; |
const char * tag = 0; |
const char * tag = 0; |
|
const char * anchor_name = "miniupnpd"; |
|
|
void |
void |
list_rules(void); |
list_rules(void); |
|
|
void |
void |
|
list_eports_tcp(void) |
|
{ |
|
unsigned short * port_list; |
|
unsigned int number = 0; |
|
unsigned int i; |
|
port_list = get_portmappings_in_range(0, 65535, IPPROTO_TCP, &number); |
|
printf("%u ports redirected (TCP) :", number); |
|
for(i = 0; i < number; i++) |
|
{ |
|
printf(" %hu", port_list[i]); |
|
} |
|
printf("\n"); |
|
free(port_list); |
|
} |
|
|
|
void |
test_index(void) |
test_index(void) |
{ |
{ |
char ifname[16/*IFNAMSIZ*/]; |
char ifname[16/*IFNAMSIZ*/]; |
char iaddr[32]; |
char iaddr[32]; |
char desc[64]; |
char desc[64]; |
|
char rhost[32]; |
unsigned short iport = 0; |
unsigned short iport = 0; |
unsigned short eport = 0; |
unsigned short eport = 0; |
int proto = 0; |
int proto = 0; |
|
unsigned int timestamp; |
ifname[0] = '\0'; |
ifname[0] = '\0'; |
iaddr[0] = '\0'; |
iaddr[0] = '\0'; |
|
rhost[0] = '\0'; |
if(get_redirect_rule_by_index(0, ifname, &eport, iaddr, sizeof(iaddr), |
if(get_redirect_rule_by_index(0, ifname, &eport, iaddr, sizeof(iaddr), |
&iport, &proto, desc, sizeof(desc), |
&iport, &proto, desc, sizeof(desc), |
0, 0) < 0) | rhost, sizeof(rhost), |
| ×tamp, 0, 0) < 0) |
{ |
{ |
printf("get.._by_index : no rule\n"); |
printf("get.._by_index : no rule\n"); |
} |
} |
Line 49 main(int arc, char * * argv)
|
Line 71 main(int arc, char * * argv)
|
{ |
{ |
char buf[32]; |
char buf[32]; |
char desc[64]; |
char desc[64]; |
|
char rhost[64]; |
|
/*char rhost[32];*/ |
unsigned short iport; |
unsigned short iport; |
|
unsigned int timestamp; |
u_int64_t packets = 0; |
u_int64_t packets = 0; |
u_int64_t bytes = 0; |
u_int64_t bytes = 0; |
|
|
Line 59 main(int arc, char * * argv)
|
Line 84 main(int arc, char * * argv)
|
fprintf(stderr, "init_redirect() failed\n"); |
fprintf(stderr, "init_redirect() failed\n"); |
return 1; |
return 1; |
} |
} |
//add_redirect_rule("ep0", 12123, "192.168.1.23", 1234); | #if 0 |
//add_redirect_rule2("ep0", 12155, "192.168.1.155", 1255, IPPROTO_TCP); | add_redirect_rule("ep0", 12123, "192.168.1.23", 1234); |
//add_redirect_rule2("ep0", 12123, "192.168.1.125", 1234, | add_redirect_rule2("ep0", 12155, "192.168.1.155", 1255, IPPROTO_TCP); |
// IPPROTO_UDP, "test description"); | #endif |
//add_redirect_rule2("em0", 12123, "127.1.2.3", 1234, | add_redirect_rule2("ep0", "8.8.8.8", 12123, "192.168.1.125", 1234, |
// IPPROTO_TCP, "test description tcp"); | IPPROTO_UDP, "test description", 0); |
| #if 0 |
| add_redirect_rule2("em0", 12123, "127.1.2.3", 1234, |
| IPPROTO_TCP, "test description tcp"); |
| #endif |
|
|
list_rules(); |
list_rules(); |
|
list_eports_tcp(); |
|
|
|
|
if(get_redirect_rule("xl1", 4662, IPPROTO_TCP, |
if(get_redirect_rule("xl1", 4662, IPPROTO_TCP, |
buf, 32, &iport, desc, sizeof(desc), | buf, sizeof(buf), &iport, desc, sizeof(desc), |
| rhost, sizeof(rhost), |
| ×tamp, |
&packets, &bytes) < 0) |
&packets, &bytes) < 0) |
printf("get_redirect_rule() failed\n"); |
printf("get_redirect_rule() failed\n"); |
else |
else |
Line 77 main(int arc, char * * argv)
|
Line 110 main(int arc, char * * argv)
|
printf("\n%s:%d '%s' packets=%llu bytes=%llu\n", buf, (int)iport, desc, |
printf("\n%s:%d '%s' packets=%llu bytes=%llu\n", buf, (int)iport, desc, |
packets, bytes); |
packets, bytes); |
} |
} |
#if 0 | |
if(delete_redirect_rule("ep0", 12123, IPPROTO_UDP) < 0) |
if(delete_redirect_rule("ep0", 12123, IPPROTO_UDP) < 0) |
printf("delete_redirect_rule() failed\n"); |
printf("delete_redirect_rule() failed\n"); |
else |
else |
Line 87 main(int arc, char * * argv)
|
Line 120 main(int arc, char * * argv)
|
printf("delete_redirect_rule() failed\n"); |
printf("delete_redirect_rule() failed\n"); |
else |
else |
printf("delete_redirect_rule() succeded\n"); |
printf("delete_redirect_rule() succeded\n"); |
#endif |
|
//test_index(); |
|
|
|
//clear_redirect_rules(); | #if 0 |
//list_rules(); | test_index(); |
| |
| clear_redirect_rules(); |
| list_rules(); |
| #endif |
|
|
return 0; |
return 0; |
} |
} |