diff --git a/miniupnpc/Changelog.txt b/miniupnpc/Changelog.txt index 3ccef7a..0ab9b1f 100644 --- a/miniupnpc/Changelog.txt +++ b/miniupnpc/Changelog.txt @@ -1,6 +1,9 @@ -$Id: Changelog.txt,v 1.177 2012/08/29 07:51:29 nanard Exp $ +$Id: Changelog.txt,v 1.178 2012/08/30 10:37:18 nanard Exp $ miniUPnP client Changelog. +2012/08/30: + Added -e option to upnpc program (set description for port mappings) + 2012/08/29: Python 3 support (thanks to Christopher Foo) diff --git a/miniupnpc/upnpc.c b/miniupnpc/upnpc.c index fb70eb9..96ce30b 100644 --- a/miniupnpc/upnpc.c +++ b/miniupnpc/upnpc.c @@ -1,4 +1,4 @@ -/* $Id: upnpc.c,v 1.97 2012/06/23 23:16:00 nanard Exp $ */ +/* $Id: upnpc.c,v 1.98 2012/08/30 10:37:18 nanard Exp $ */ /* Project : miniupnp * Author : Thomas Bernard * Copyright (c) 2005-2012 Thomas Bernard @@ -228,7 +228,8 @@ static void SetRedirectAndTest(struct UPNPUrls * urls, const char * iport, const char * eport, const char * proto, - const char * leaseDuration) + const char * leaseDuration, + const char * description) { char externalIPAddress[40]; char intClient[40]; @@ -257,7 +258,8 @@ static void SetRedirectAndTest(struct UPNPUrls * urls, printf("GetExternalIPAddress failed.\n"); r = UPNP_AddPortMapping(urls->controlURL, data->first.servicetype, - eport, iport, iaddr, 0, proto, 0, leaseDuration); + eport, iport, iaddr, description, + proto, 0, leaseDuration); if(r!=UPNPCOMMAND_SUCCESS) printf("AddPortMapping(%s, %s, %s) failed with code %d (%s)\n", eport, iport, iaddr, r, strupnperror(r)); @@ -487,6 +489,7 @@ int main(int argc, char ** argv) int retcode = 0; int error = 0; int ipv6 = 0; + const char * description = 0; #ifdef _WIN32 WSADATA wsaData; @@ -513,6 +516,8 @@ int main(int argc, char ** argv) minissdpdpath = argv[++i]; else if(argv[i][1] == '6') ipv6 = 1; + else if(argv[i][1] == 'e') + description = argv[++i]; else { command = argv[i][1]; @@ -551,6 +556,7 @@ int main(int argc, char ** argv) fprintf(stderr, " \t%s [options] -P\n\t\tGet Presentation url\n", argv[0]); fprintf(stderr, "\nprotocol is UDP or TCP\n"); fprintf(stderr, "Options:\n"); + fprintf(stderr, " -e description : set description for port mapping.\n"); fprintf(stderr, " -6 : use ip v6 instead of ip v4.\n"); fprintf(stderr, " -u url : bypass discovery process by providing the XML root description url.\n"); fprintf(stderr, " -m address/interface : provide ip address (ip v4) or interface name (ip v4 or v6) to use for sending SSDP multicast packets.\n"); @@ -622,7 +628,8 @@ int main(int argc, char ** argv) SetRedirectAndTest(&urls, &data, commandargv[0], commandargv[1], commandargv[2], commandargv[3], - (commandargc > 4)?commandargv[4]:"0"); + (commandargc > 4)?commandargv[4]:"0", + description); break; case 'd': for(i=0; i