miniupnp/miniupnpd/testportinuse.c

57 lines
1.5 KiB
C

/* $Id $ */
/* MiniUPnP project
* (c) 2014 Thomas Bernard
* http://miniupnp.free.fr/ or http://miniupnp.tuxfamily.org/
* This software is subject to the conditions detailed
* in the LICENCE file provided within the distribution */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <netinet/in.h>
#include <syslog.h>
#include "macros.h"
#include "config.h"
#include "portinuse.h"
#ifdef CHECK_PORTINUSE
#ifdef USE_NETFILTER
const char * miniupnpd_nat_chain = "MINIUPNPD";
const char * miniupnpd_peer_chain = "MINIUPNPD-PCP-PEER";
const char * miniupnpd_forward_chain = "MINIUPNPD";
#endif /* USE_NETFILTER */
#endif /* CHECK_PORTINUSE */
int main(int argc, char * * argv)
{
#ifndef CHECK_PORTINUSE
UNUSED(argc); UNUSED(argv);
printf("CHECK_PORTINUSE is not defined.\n");
#else /* CHECK_PORTINUSE */
int r;
const char * if_name;
unsigned eport;
int proto;
const char * iaddr;
unsigned iport;
if(argc <= 5) {
fprintf(stderr, "usage: %s if_name eport (tcp|udp) iaddr iport\n",
argv[0]);
return 1;
}
openlog("testportinuse", LOG_CONS|LOG_PERROR, LOG_USER);
if_name = argv[1];
eport = (unsigned)atoi(argv[2]);
proto = (0==strcmp(argv[3], "tcp"))?IPPROTO_TCP:IPPROTO_UDP;
iaddr = argv[4];
iport = (unsigned)atoi(argv[5]);
r = port_in_use(if_name, eport, proto, iaddr, iport);
printf("port_in_use(%s, %u, %d, %s, %u) returned %d\n",
if_name, eport, proto, iaddr, iport, r);
closelog();
#endif /* CHECK_PORTINUSE */
return 0;
}