miniupnpd 1.9 (20160113)
[tomato.git] / release / src / router / miniupnpd / Changelog.txt
blobf6d76048a98461e1c34bea7b58dedc1a9ca80e46
1 $Id: Changelog.txt,v 1.415 2015/12/16 10:21:48 nanard Exp $
3 2015/12/16:
4   improve syslog message for incoming HTTP requests
6 2015/12/13:
7   --disable-pppconn to disable WanPPPConnection
8   more fixes in DeviceProtection service
10 2015/12/12:
11   add commandline option to genconfig.sh to set UPnP (UDA) version
12   advertise correct service and device versions when IGDv2 is enabled
13   fix action arguments for DeviceProtection service
14   fix event subscription renewal (include SID in response)
16 2015/11/16:
17   Fix bsd/getroute.c get_src_for_route_to() when args are NULL
19 2015/11/02:
20   use LOG_INFO instead of LOG_ERR for PCP PEER and MAP success
22 2015/10/30:
23   fix : properly call find_ipv6_addr() with the 1st LAN interface
24   use name server from query in SOAP responses (continued)
26 2015/10/24:
27   move SSDP_PACKET_MAX_LEN definition to config.h. also set default to 1024.
29 2015/09/22:
30   cleanup UPNP_VERSION macro / add UPNP_VERSION_MAJOR, UPNP_VERSION_MINOR
31   Dont use packed structs anymore to read/write PCP messages
33 2015/09/15:
34   use name server from query in SOAP responses
36 2015/08/25:
37   better bind socket to right interface(s),
38     using struct ip_mreqn, SO_BINDTODEVICE
40 2015/04/30:
41   Adding linux/nftables support
43 2015/04/26:
44   Remove dependency to libnfnetlink
45   fix typos in miniupnpd.conf
47 2015/03/09:
48   fix get_portmappings_in_range() for linux/netfilter
50 2015/03/07:
51   don't die when IPv6 is enabled and interface has no IPv4 address
53 2015/02/10:
54   IP wildcard for AddPinhole() is empty string
56 2014/12/10:
57   Checking Host: HTTP request header to prevent DNS rebinding attack
58   configurable BOOTID.UPNP.ORG SSDP header
59   use time for BOOTID.UPNP.ORG value
61 2014/12/09:
62   fix upnp_add_inboundpinhole() : check inet_pton() return
63   fix upnp_redirect() : check inet_aton() return
64   fix potential memory corruption in upnpsoap.c/GetListOfPortMappings()
65   fix buffer overrun in ParseHttpHeaders() if Content-Length doesn't contain any digit !
66   check if BuildHeader_upnphttp() failed to allocate memory
67     Credits goes to Stephen Röttger of the Google Security Team for identifying
68     the vulnerabilities
70 2014/12/04:
71   check "sysctl -n net.ipv6.bindv6only" for linux
73 2014/11/28:
74   fixes ExecuteSoapAction if SoapAction value is not enclosed into
75     double quotes
77 2014/11/07:
78   sockaddr_to_string() includes scope in IPv6 addresses
80 VERSION 1.9 : released on 2014/10/27
82 2014/10/23:
83   Properly implements NAT-PMP mapping removal according to RCF6886
85 2014/10/22:
86   Discard NAT-PMP packets coming from the WAN
87   Send SSDP announces to IPv6 link-local, site-local
88     and global multicast addresses
90 2014/10/21:
91   small modifications to compile with exotic C libraries
93 2014/10/14:
94   add comments in miniupnpd.conf regarding security
96 2014/09/25:
97   DeletePortMapping now checks for client IP in Securemode
99 2014/06/xx:
100   Various fixes :
101     e->ipv6.flags |= IP6T_F_PROTO; (netfilter)
102     fix natpmp.c byte order conversion 
103     add small delay before SSDP response to prevent flooding
105 2014/05/22:
106   Add ipv6_bind_address (option "ipv6_listening_ip")
107   disable IPv6 when socket(PF_INTET6, ...) errors with EAFNOSUPPORT
108   Add IPV6 multicast membership only on selected "LAN" interfaces
110 2014/05/20:
111   be more strict when parsing LAN addresses / interface names
113 2014/05/19:
114   set source address for IPV6 packets sendto_schedule2() etc.
116 2014/05/15:
117   Fix deletePortMappingRange()
119 2014/04/21:
120   Fix PCP when request contain 0 IPv4 external address
121   Remove pointer casting in natpmp.c
123 2014/04/15:
124   rewrite iptables_*.sh scripts
126 2014/04/12:
127   Add FreeBSD support for CHECK_PORTINUSE
128   Add PCP support for CHECK_PORTINUSE
130 2014/04/09:
131   Add HTTPS support and skeleton of DeviceProtection implementation
133 2014/03/24:
134   start work to enable IPv6 PCP operations
136 2014/03/14:
137   reject renewal of subscribtion that already timeouted
138   Support for multiple URL in Callback: header (SUBSCRIBE)
140 2014/03/13:
141   fix getifaddr_in6() (used for PCP)
142   implement permissions with PCP Map
143   fix upnp_event_notify_connect() when ENABLE_IPV6 is set
145 2014/03/10:
146   Enable PCP by default.
147   Work in IPv6 on system where PF_INET6 are restricted to IPv6 only
148   change ipv6_enabled/ipv6fc_inbound_pinhole_allowed/ipv6fc_firewall_enabled
149     global vars to flags in runtime_flags
151 2014/03/09:
152   IPv6 support in testgetifaddr
154 2014/03/07:
155   NAT-PMP search an allowed eport instead of returning an error
156     if the original eport is not allowed.
158 2014/03/06:
159   Fix add_filter_rule2() for pf.
161 2014/02/28:
162   log message when shutting down
163   natpmp : avoid hang when all external ports in use
165 2014/02/25:
166   add implementation of scheduled sendto (asyncsendto) in order
167   to retry failed sendto() calls or schedule sending of packets
169 2014/02/24:
170   Defaulting to SSDP_RESPOND_SAME_VERSION
172 2014/02/11:
173   Fix PCP Map renewal
175 2014/02/06:
176   possibility to disable ipv6 at runtime
178 2014/02/03:
179   PCP : Add support for ANNOUNCE requests
180   minixml now handle XML comments
182 2013/12/16:
183   Attempt to compile with OS X/pf
185 2013/12/13:
186   Make all manufacturer info configurable thanks to Leo Moll
187   Merge PCP support (see https://github.com/miniupnp/miniupnp)
189 2013/06/13:
190   Have 3 UUID for the 3 devices (IGD, WAN Device, WAN Connection Device)
192 2013/06/06:
193   update upnpreplyparse to allow larger values (128 chars instead of 64)
195 2013/06/05:
196   check Service ID in SetDefaultConnectionService method
197   Don't advertise WANPPPConnection in UPNP_STRICT mode
199 2013/05/29:
200   Remove namespace from variable name elements in Events "propertyset"
201     to comply with UPNP DeviceArchitecture v1.1.
203 2013/05/20:
204   Adding support for IP Filter version 5.x
206 2013/05/16:
207   refuses non integer <NewPortMappingIndex> values
209 2013/05/14:
210   Update upnpreplyparse to take into account "empty" elements
212 2013/05/03:
213   Use pkg-config under linux to find libiptc. Thanks to Olivier Langlois
215 2013/04/29:
216   Add warning message when using IPv4 address for listening_ip with IPv6 enabled
218 2013/04/27:
219   Uses ifr_addr if ifr_netmask is not defined in struct ifreq
221 2013/04/26:
222   Correctly handle truncated snprintf() in SSDP code
224 2013/04/24:
225   to avoid build race conditions, genconfig.sh now uses a temporary file
227 2013/04/20:
228   use scope in get_lan_for_peer() for IPv6 addresses
230 2013/03/23:
231   autodetect LAN interface netmask instead of defaulting to /24
233 2013/02/11:
234   Use $(DESTDIR) in Makefile.linux.
235   see https://github.com/miniupnp/miniupnp/issues/26
237 2013/02/07:
238   Add DATE: header in SSDP packets
239   Fix SSDP packets sent with uuid as ST: header to conform to UDA
240   ignore SSDP packets missing the MX: header in UPNP_STRICT mode
241   Added Ext: header to HTTP responses to conform to UDA
242   Refactored SendSSDPNotifies() and SendSSDPGoodbye() and add
243     missing ssdp:alive and ssdp:byebye with NT uuid value.
245 VERSION 1.8 : released on 2013/02/06
247 2013/02/06:
248   Check source address of incomining HTTP connections and SSDP
249     packets in order to filter out WAN SSDP and HTTP trafic.
250   Implement get_src_for_route_to() for *BSD
251   fix 2 potential memory leaks in GetListOfPortMappings()
253 2013/01/29:
254   upnphttp.c: Fix and comment the findendheaders() function
255   upnphttp.c: remove strchr() call in ParseHttpHeaders()
256     add comments to explain how buffer is checked before calls
257     to ParseHttpHeaders()
259 2013/01/27:
260   upnphttp.c: ParseHttpHeaders() now checks atoi() return
262 2012/12/11:
263   More return value check for malloc() and realloc()
265 2012/10/23:
266   minor modifications to linux/getroute.c and testgetroute.c
268 2012/10/04:
269   updated DEFAULTCONNECTIONSERVICE_MAGICALVALUE for IGDv2
270   increased default buffer size for HTTP response
271   More argument check for SOAP actions in UPNP_STRICT mode
272   Better error checking after connect() in upnpevent
274 2012/10/03:
275   Fix atoi() on null pointer in upnpsoap.c
276   properly set service/device version in SSDP messages
277   fix newSubscriber() for IP6FirewallControl and DeviceProtection services
278   Enforce compliance for SUBSCRIBE messages (UPNP_STRICT mode)
279   Enforce compliance for UNSUBSCRIBE messages (UPNP_STRICT mode)
280   Ignore "-Wmissing-field-initializers" in upnpdescgen.c
281   check size of h->res_buf before building HTTP response
282   ENABLE_HTTP_DATE : add a Date: header to all HTTP responses
284 2012/09/27:
285   Fixes with DISABLE_CONFIG_FILE
286   and UPNP_STRICT
287   UPC must be a 12 decimal digit code
288   SetDefaultConnectionService() checks its argumnents in UPNP_STRICT mode
289   Support for Accept-Language/Content-Language HTTP headers
290   Content-Type is now text/xml; charset="utf-8" to conform with UDA v1.1
291   Support Expect: 100-continue for POST HTTP requests
292   Manage services/devices versions in minissdp.c
293   Rename all include guards to not clash with C99.
294    (7.1.3 Reserved identifiers)
296 2012/09/20:
297   Cleaning code in ipfw (Jardel Weyrich)
299 2012/09/18:
300   Fixing a bug in clean_pinhole_list() under linux/netfilter
302 2012/09/15:
303   Adding an informational message at startup
305 2012/08/24:
306   Moved man page to section 8. miniupnpd.1 => miniupnpd.8
307   Added install of miniupnpd.8 man page in Makefile.linux
309 2012/08/10:
310   improved SubmitServicesToMiniSSDPD() function fiability
312 2012/07/17:
313   Add -A command line option to add permission rules
315 2012/07/14:
316   Add -z command line option to change friendly name (thanks to Shawn Fisher)
318 2012/07/10:
319   Detect port in use - patch by David Kerr
321 2012/06/29:
322   added DISABLE_CONFIG_FILE in options.h to disable miniupnpd.conf parsing
323   Add command line parsing for clean_ruleset_interval option
325 2012/06/28:
326   Only activate -L option for PF and IPF
327   -a option takes two arguments with MULTIPLE_EXTERNAL_IP defined
329 2012/06/23:
330   in UPNP_STRICT mode, the literal IPv6 address in "location:" of SSDP
331   messages is the source address used to send the message
333 2012/06/08:
334   Disable -ansi CFLAGS in Makefile.linux because recent iptables headers
335   make use of typeof keyword which is a GCC extension.
337 2012/05/31:
338   Improvements in autodetecting firewall under (Free)BSD
340 2012/05/28:
341   Cleanup HTTP request handling. Answer 405 when relevant
343 VERSION 1.7 : released the 2012/05/28
345 2012/05/28:
346   clean linux/ifacewatcher.c
347   set natpmp socket non blocking
349 2012/05/24:
350   More solaris fixes
352 2012/05/21:
353   Clean signal handling
355 2012/05/08:
356   Clean expired IPv6 pinholes correctly. and also with linux/netfilter.
358 2012/05/07:
359   Finalizing netfilter version of get_pinhole_info()
361 2012/05/01:
362   Move IPv6FirewallControl related code from upnpredirect.c to upnppinhole.c
363   Add netfilter implementation for
364     delete_pinhole()/update_pinhole()/get_pinhole_info()
366 2012/04/30:
367   Clean up settings of CFLAGS in Makefile's
368   Remove Warnings caused by signed/unsigned integer comparaisons
369   Also fix a couple of integer/pointer comparaisons.
370   Add UNUSED(arg) macro to remove unused argument warning.
371   Fix error handling in upnpevents.c (was causing segfault on Solaris !)
373 2012/04/26:
374   Started to implement add_pinhole() for netfilter (linux)
376 2012/04/25:
377   Fixed a bug in upnphttp that happened when POST is received in several
378   recv() calls and realloc() is called so the buffer used is moved.
380 2012/04/23:
381   Implement CheckPinholeWorking GetPinholePackets. WANIPv6FirewallControl
382   UpdatePinhole still to be done. And also netfilter/ipf/ipfw versions
384 2012/04/20:
385   Enough WANIPv6FirewallControl is implemented on pf so that AddPinhole() and
386     DeletePinhole() works !
388 2012/04/19:
389   First working experiment of IPv6 "pinhole" with pf
391 2012/04/15:
392   More C++ => ANSI C comments to compile with -ansi option
393   Add command line arguments to genconfig.sh config script.
395 2012/04/12:
396   Set TTL on SSDP Notify sockets (IPv4). TTL is set to 2 (recommendation from
397     UPnP Device Architecture v1.1)
399 2012/04/06:
400   Implementing IPv6 support :
401     Send SSDP NOTIFY ssdp:alive and ssdp:goodbye messages in IPv6.
402   Use UPnP/1.1 in SERVER: string as required in UPnP Device architecture 1.1.
403   Allow LAN interface to be given as interface names, instead of interface
404     IP addresses. It will allow IPv6 operations.
405   fix linux/getifstats.c when bitrate is unknown
407 2012/03/31:
408   Only remove pidfile if one was written in the first place.
410 2012/03/19:
411   Fix ipfilter support (thanks dhowland https://github.com/dhowland)
413 2012/03/14:
414   Changes to miniupnpd.init.d.script by Shawn Landden
416 2012/03/05:
417   fixed reload_from_lease_file().
419 2012/02/15:
420   Change parselanaddr() function to allow 192.168.1.1/255.255.255.0 in
421     configuration file.
422   Change read_permission_line() to allow 192.168.1.1/255.255.255.0 in
423     permission line (in configuration file).
425 2012/02/12:
426   More syntax checks in upnppermissions.c
428 2012/02/11:
429   Fix ipfw/Mac OS X specific source files to compile ok with -ansi flag
431 2012/02/09:
432   Make HTTP listen socket non blocking (so accept() can't block)
433   Make SSDP receive sockets non blocking
434   use sockaddr_to_string() in SendSSDPAnnonce2 to handle IPv6 addresses
436 2012/02/06:
437   Make HTTP (SOAP) sockets non blocking.
439 2012/02/05:
440   Compile ok with -ansi flag.
441   Save a few bytes in options.c using a string repository, instead of a fixed size
442     buffer for each option value.
444 2012/02/04:
445   Added friendly_name= option to config file
447 2012/02/03:
448   Anchor name (PF) is now configurable through the config file with anchor=
449   Added test of presence of /lib/libip4tc.so and /lib/libip6tc.so files in
450     Makefile.linux in order to add -lip4tc and -lip6tc to LIBS accordingly.
452 2012/02/01:
453   always handle EAGAIN, EWOULDBLOCK and EINTR after recv()/recvfrom() calls
455 2012/01/20:
456   Always #include <netinet/in.h> before #include <arpa/inet.h> (for OpenBSD)
457   .onrdomain field was added in pf with OpenBSD 5.0. Add PFRULE_HAS_ONRDOMAIN
459 2012/01/02:
460   Fixing netfilter/iptables_*.sh scripts for new ifconfig output format.
461   getifaddr.c: added additional checks on structure returned by getifaddrs()
462   Fixing Mac OS X makefile for installation
464 2011/11/18:
465   avoid infinite loop in SendResp_upnphttp() in case of error
466   Replaced SendResp_upnphttp() + CloseSocket_upnphttp() by
467     SendRespAndClose_upnphttp()
468   Tomato specifics in genconfig.sh
470 2011/07/30:
471   netfilter : Added a tiny_nf_nat.h file to compile with iptables
472     installed headers.
473     include xtables.h instead of iptables.h
475 VERSION 1.6 : released the 2011/07/25
477 2011/07/25:
478   Update doc for version 1.6
480 2011/07/15:
481   Fixing code with MULTIPLE_EXTERNAL_IP defined.
483 2011/06/27:
484   IPv6 support for UPnP events.
485   Security checks in UPnP events.
487 2011/06/22:
488   Remote host for GetListOfPortMappings
489   Remote host support for ipfw (tested on Mac OS X)
491 2011/06/20:
492   support for iptables-1.4.11.1
494 2011/06/18:
495   Remote host support for pf version
497 2011/06/04:
498   Supporting RemoteHost (mandatory in IGD v2)
500 2011/06/03:
501   Enabling events by default
503 2011/06/01:
504   Fixing Timeout missing in SUBSCRIBE renewal responses
505   (thanks to Pranesh Kulkarni)
506   Added comments about changes between IGD v1 and IGD v2
508 2011/05/28:
509   Description and leaseduration kept in ipfw version of the code.
510   Fixing ipfw code after testing under Mac OS X 10.6.7 (darwin 10.7.0)
512 2011/05/27:
513   Finishing and testing LeaseDuration support under OpenBSD.
514   Changing NAT-PMP port mapping lifetime support to match
515   lease duration support.
516   NAT-PMP address change announce broadcasted to both port
517   5350 and 5351 to be compatible with client following the
518   version of NAT PMP specification from 2008 or earlier.
519   writepidfile() Overwrite file if already existing
521 2011/05/26:
522   fix in linux/getifstats.c.
523   See http://miniupnp.tuxfamily.org/forum/viewtopic.php?p=2212
524   Implementation of LeaseDuration support.
526 2011/05/23:
527   added get_wan_connection_status_str()
529 2011/05/20:
530   adding ifacewatcher thanks to Alexey Osipov
531   GET /DP.xml is now available. The description has to be completed.
533 2011/05/19:
534   Add getconnstatus.c/.h. Dont always have ConnectionStatus to "Connected"
535   Events for WANIPv6FirewallControll
537 2011/05/16:
538   patches for gentoo linux.
539   generation of the DeviceProtection service description.
541 2011/05/15:
542   Making the SSDP receiving socket work in IPv6 !
544 2011/05/14:
545   Support for HTTP in both IPv6 and IPv4.
546   IPv6 for SSDP receiving socket.
548 2011/05/13:
549   add new options in genconfig.sh (IGD_V2, ENABLE_DP_SERVICE)
550   add global vars ipv6fc_firewall_enabled and ipv6fc_inbound_pinhole_allowed
551   have MACROS for magical values in upnpdescgen.c, add eventing vars for WanIPv6FirewallControl.
552   applied 0001-Cosmetic-changes.patch(see http://miniupnp.tuxfamily.org/forum/viewtopic.php?t=764)
553   applied 0002-Remove-lan-addresses-limit-by-changing-storage-type-.patch
554   replaced some of the urn:schemas-upnp-org:device:* literal strings by macros.
555   adding some support for IP v6. #define ENABLE_IPV6
556   added -fno-strict-aliasing to compile options.
558 2011/05/09:
559   updating upnp descriptions for IGDv2
561 2011/05/07:
562   Adding WANIPv6FirewallContro to upnp description
564 2011/04/30:
565   adding a UPNP_STRICT config macro. Use it now for checking RemoteHost.
566   ENABLE_6FC_SERVICE : add the implementations of WANIPv6FirewallControl actions
568 2011/04/11:
569   preparing getifaddr() for IP v6
570   preparing SSDP stuff for IP v6. Trying to conform to UDA v1.1
572 2011/03/09:
573   Some modifications thanks to Daniel Dickinson to improve OpenWRT
574   build.
575   Fixed some warnings.
577 2011/03/03:
578   Added code to generate devices/services descriptions for IGD v2
579   (to be continued)
581 2011/03/02:
582   improved netfilter/delete_redirect_and_filter_rules() in order
583   to remove the right filter rule, even if it has another index than
584   the nat rule.
586 2011/03/01:
587   clean up an fixes to make netfilter/testiptcrdr compile
589 2011/02/21:
590   Make "Makefile" work under Mac OS X with bsdmake.
591   added get_portmappings_in_range() in ipfwrdr.c
593 2011/02/07:
594   added get_portmappings_in_range() / upnp_get_portmappings_in_range()
596 2011/02/06:
597   Implementation of GetListOfPortMappings
599 2011/01/27:
600   Reverting "fixes" done in linux/iptables code the 2010/09/27.
601   see http://miniupnp.tuxfamily.org/forum/viewtopic.php?t=741
603 2011/01/04:
604   added MINIUPNPD_VERSION in config.h. Taken from VERSION file.
606 VERSION 1.5 : released the 2011/01/01
608 2011/01/01:
609   Started to implement some of the new methods from WANIPConnection v2
611 2010/09/27:
612   Some fixes in the linux/iptables code when
613   miniupnpd_nat_chain <> miniupnpd_forward_chain
615 2010/09/21:
616   Patch to support nfqueue thanks to Colin McFarlane
618 2010/08/07:
619   Update Mac OS X / ipfw stuff from Jardel Weyrich
620   Fix in Makefile.linux for x86_64
622 2010/05/06:
623   Bugfix un CleanNATPMPRules() : see http://miniupnp.tuxfamily.org/forum/viewtopic.php?t=640
625 2010/03/14:
626   Fixing natpmp sockets.
628 2010/03/08:
629   Fix Makefile.linux to compile properly under Mandriva/rh/Fedora with
630     Iptables >= 1.4.3
631   Workaround for bad uptime when started with a bad time set.
633 2010/03/07:
634   Tried to make a OpenBSD version 4.7 compatible code... still some
635   issues.
637 2010/03/06:
638   updates to testobsdrdr
640 2010/03/03:
641   -lip4tc in Makefile.linux.
643 2010/02/15:
644   some more error handling in set_startup_time()
645   silencing some warnings
647 2010/01/14:
648   Open Several sockets for NAT-PMP to make sure the source address
649   of NAT-PMP replies is right.
650   see http://miniupnp.tuxfamily.org/forum/viewtopic.php?t=609
652 2009/12/31:
653   miniupnpdctl now output command line arguments.
654   added a -h option to get help. improved help.
656 2009/12/22:
657   using PRIu64 format to printf u_int64_t
658   Fixing calls to get_redirect_rule_by_index() : ifname should be initialized.
659   Add header lines to miniupnpdctl output
661 2009/11/06:
662   implementing sending of ip address change notification when receiving
663     the signal SIGUSR1
665 VERSION 1.4 : released the 2009/10/30
667 2009/10/10:
668   Integrate IPfilter patch from Roy Marples.
669   Fix Netfilter code for old netfilter :
670     see http://miniupnp.tuxfamily.org/forum/viewtopic.php?t=584
671   trim the description string in reload_from_lease_file()
673 2009/09/21:
674   Fixing unclosed raw sockets bug with netfilter code.
676 2009/09/04:
677   Fixes in ipf code thanks to Roy Marples
678   Enable DragonFly BSD Support thanks to Roy Marples.
679   Allow packager to define default location of config file via CFLAGS
680   Respect $DESTDIR when installing
682 2009/08/20:
683   Adding some support for MacOS X and IPFW
684   SO_REUSEADDR in minissdp.c for SSDP listening socket
686 2009/06/05:
687   unlink lease file in reload_from_lease_file()
689 2009/05/16:
690   Fixed a buffer overflow in ProcessSSDPRequest()
692 2009/05/11:
693   improving genconfig.sh for NetBSD : detecting use of pf or ipf
695 VERSION 1.3 :
696 2009/04/17:
697   working support for iptables >= 1.4.3
699 2009/04/13:
700   work to support iptables-1.4.3 and up
702 2009/04/10:
703   fix in upnpevents_removeSubscriber()
705 2009/02/14:
706   added reload_from_lease_file()
708 2009/02/13:
709   Changes in upnpdescgen.c to allow to remove empty elements
710   strcasecmp instead of strcmp on path comparaisons to allow
711   bugged clients to work
713 2009/01/29:
714   Some minor changes to Makefile
715   improving Makefile.linux in order to build with iptables not properly
716   installed on the system.
718 2009/01/23:
719   Fixing upnpevents thanks to Justin Maggard
721 2008/10/15:
722   getifstats() return -1 when supplied with bad arguments
724 2008/10/11:
725   Fixed NAT-PMP response when IP not allocated to external interface
727 2008/10/09:
728   adding testgetifaddr
729   Reporting Unconnected status when the "external interface" has
730   no IP address assigned. Also added some comments
732 VERSION 1.2 :
734 2008/10/07:
735   updating docs
737 2008/10/06:
738   MiniUPnPd is now able to use MiniSSDPd to manage SSDP M-SEARCH answering
740 2008/10/03:
741   You can now let miniupnpd choose itself the HTTP port used.
743 2008/10/01:
744   Improvements in genconfig.sh for detecting ipf or pf (under FreeBSD)
745   and improve debian/ubuntu stuff.
746   custom chain name patch from :
747     http://miniupnp.tuxfamily.org/forum/viewtopic.php?t=493
749 2008/08/24:
750   added USE_IFNAME_IN_RULES macro that can be disabled in order to
751   remove interface name from rules.
753 2008/07/10:
754   Fixed compilation without ENABLE_L3F_SERVICE
756 2008/04/27:
757   correct UNSUBSCRIBE processing
759 2008/04/25(bis):
760   changed iptables_removeall.sh and iptables_init.sh in order
761   to remove IP from the rules
763 VERSION 1.1 :
765 2008/04/25:
766   Eventing is allmost completly implemented
768 2008/04/24:
769   Correct event handling ?
771 2008/04/08:
772   enabling tag in PF rules. quick can be set off.
774 2008/03/13:
775   implementing event notify
777 2008/03/11:
778   fixing a command line parsing error
780 2008/03/09:
781   optimisations in upnpsoap.c
783 2008/03/08:
784   optimizing upnpsoap.c for size
786 2008/03/06:
787   Worked on the Eventing : generating XML event notifications
788     Send initial notification after subscribe
789   Improved pretty print of testupnpdescgen
790   Reduced Memory usage of upnpdescgen
791   fixed a small bug in the description
793 2008/03/03:
794   Fixed miniupnpd.c for compiling without natpmp support
795   fixed presentationURL not there with L3F
796   fixing lease file creation/modification
798 2008/02/25:
799   Rewrite of Send501() and Send404()
800   More work on events
801   genconfig.sh autodetects pf/ipf
803 2008/02/24:
804   Started to implement UPnP Events. do NOT use it at the moment !
806 2008/02/21:
807   Added support for the Layer3Forwarding Service
808   added init_redirect() and shutdown_redirect() functions
810 2008/02/20:
811   Removed Ext: HTTP header when useless
812   enabled the dummy service by default to please windows XP !
814 2008/02/07:
815   upnp_enable patch by Nikos Mavrogiannopoulos.
816   lease_file patch by Nikos Mavrogiannopoulos.
818 2008/01/29:
819   some changes to Makefile.openwrt
820   use daemon() - daemonize() is still available for systems lacking daemon()
822 VERSION 1.0 :
823 2008/01/27:
824   moved lan_addr to upnpglobalvars.h/.c
825   Adding experimental multiple external IP support.
827 2008/01/22:
828   removed dummy service from description to improve compatibility
829   with emule client
830   Add "secure mode". put runtime flags in the same variable
832 2008/01/14:
833   Fixed a bug in options.c for the parsing of empty lines.
835 2008/01/03:
836   Fixed CleanExpiredNATPMP()
838 2008/01/02:
839   Adding a queue parameter for setting ALTQ in pf
841 2007/12/27:
842   improving some stuff with the PF_ENABLE_FILTER_RULE.
844 2007/12/22:
845   Adding a runtime option to enable/disable NAT-PMP
847 2007/12/20:
848   Added a cache in linux getifstats(). Please enable by editing config.h
850 2007/12/14:
851   Updating an existing NAT-PMP mapping now works
853 2007/12/13:
854   NAT-PMP code now remove expired mappings
855   TCP/UDP where swapped in NAT-PMP code
857 2007/12/04:
858   Adding details to the error message for sendto(udp_notify)
860 2007/11/27:
861   pf code doesn't generate filter rules by default anymore. The
862   #ifdef PF_ENABLE_FILTER_RULES must be uncommented in config.h.
864 2007/11/02:
865   moved some of the prototypes common to all firewalls to commonrdr.h
866   Added functionalities to NAT-PMP
868 2007/11/01:
869   Debugged NAT-PMP code
871 2007/10/28:
872   Cleaning and improving NAT-PMP code
874 2007/10/25:
875   improved the NAT-PMP experimental support
876   updated README and INSTALL files
878 2007/10/24:
879   Adding support for NAT-PMP (from apple !)
881 2007/10/11:
882   Checking the commandline for errors.
884 2007/10/08:
885   Improved the BSD/Solaris Makefile
886   Merging last code from Darren Reed. Solaris/IPF should work now !
887   added a man page.
889 2007/10/07:
890   Adding Darren Reed code for ipf.
892 2007/10/06:
893   Adding SunOS support thanks to Darren Reed.
894   Reorganizing os/firewall dependent code thanks to Darren Reed.
896 2007/09/27:
897   linux make install support PREFIX variable
899 2007/09/25:
900   reorganizing LAN sockets/address to improve multi LAN support.
901   SSDP announces are sent to all configured networks.
902   SSDP responses are "customized" by subnetwork.
904 2007/09/24:
905   prototype code to remove unused rules
906   miniupnpdctl now display current rules
907   synchronised add_filter_rule2() prototype between pf and netfilter code.
909 2007/09/19:
910   Correctly filling the Cache-control header in SSDP packets
912 2007/08/28:
913   update PFRULE_INOUT_COUNTS detection for FreeBSD
915 2007/08/27:
916   update version in genconfig.sh
917   do not error when a duplicate redirection is requested.
919 2007/07/16:
920   really fixed the compilation bug with linux>=2.6.22
922 2007/07/04:
923   fixed an error in options.c that prevented to use packet_log option
925 2007/07/03:
926   improved genconfig.sh
927   fixed a compilation bug with linux>=2.6.22
929 2007/06/22:
930   added PFRULE_INOUT_COUNTS macro to enable separate in/out packet and
931   bytes counts in pf for OpenBSD >= 3.8
933 2007/06/15:
934   removed a possible racecondition in writepidfile()
936 2007/06/12:
937   improved genconfig.sh : no more "echo -e", use lsb_release when available
939 2007/06/11:
940   get_redirect_rule*() functions now return some statistics about
941   rule usage (bytes and packets)
943 2007/06/07:
944   Fixed the get_redirect_desc() in the linux/netfilter code
946 2007/06/05:
947   Clean up init code in miniupnpd.c
948   Added a syslog message in SoapError()
950 2007/06/04:
951   Now store redirection descriptions in the linux/netfilter code
953 2007/05/21:
954   Answers to SSDP M-SEARCH requests with ST: ssdp:all
955   added make install to Makefile.linux
957 2007/05/10:
958   Fixed a bug int the DeletePortMapping linux/netfilter implementation
959   It was allways the 1st rule that was deleted.
961 2007/04/26:
962   Fixed config.h.openwrt
964 2007/04/16:
965   added something in the INSTALL file about the FreeBSD send(udp_notify)
966   problem fix (allowing 239.0.0.0/8 explicitely in pf.conf)
968 2007/03/30:
969   added setsockopt(s, SOL_SOCKET, SO_BROADCAST ...) for broadcasting
970   socket
972 2007/03/17:
973   Fixed filter rule under linux : it was using wrong port !
974   thanks to Wesley W. Terpstra
976 2007/03/01:
977   Moved some of the SSDP code from miniupnpd.c to minissdp.c
979 2007/02/28:
980   creating miniupnpdctl
982 2007/02/26:
983   use LOG_MINIUPNPD macro for openlog()
984   simplify miniupndShutdown()
986 2007/02/09:
987   improved genconfig.h
988   Added stuff to change the pf rule "rdr" to "rdr pass"
990 2007/02/07:
991   Corrected Bytes per seconds to bits per second.
992   Ryan cleaned up comments and typos.
993   Ryan cleaned up daemonize stuff.
994   Ryan added possibility to configure model number and serial number
996 2007/01/30:
997   ryan improved the robustness of most UPnP Soap methods
998   I added a target in the Makefiles to properly generate an uuid using
999   command line tools.
1000   Improved configuration file parsing.
1002 2007/01/29:
1003   Adding uuid option in miniupnpd.conf
1005 2007/01/27:
1006   Added upnppermissions stuff : adding some security to UPnP !
1007   fixed XML description thanks to Ryan Wagoner
1008   improved QueryStateVariable thanks to Ryan Wagoner
1010 2007/01/22:
1011   use getifaddr() for each GetExtenalIPAddress() Call.
1012   We can change the ip during execution without pb
1014 2007/01/17:
1015   Lots of code cleanup
1017 2007/01/12:
1018   Fixed a nasty bug in the linux/netfilter version of get_filter_rule()
1020 2007/01/11:
1021   Improved the handling of the miniupnpd.conf file.
1022   added -f option to choose which config file to read.
1024 2007/01/10:
1025   Fixed potential bugs with ClearNameValueList()
1027 2007/01/08:
1028   All by Ryan Wagoner :
1029   - coding style and comments cleanup
1030   - using now option file miniupnpd.conf
1032 2007/01/03:
1033   changed "xx active incoming HTTP connections" msg
1035 2007/01/02:
1036   Patch from Ryan Wagoner :
1037   - no need to open sockets if we can't set the error handlers
1038   - format the usage so it fits nicely on a standard size terminal
1039   - fix up log_err message so they have the same format and you know what
1040     they are related to
1041   - use same "white space" style throughout
1042   - on shutdown no need to continue if opening socket or setsockopt fails
1044 2006/12/14:
1045   reduce amount of log lines (keeping the same information)
1047 2006/12/07:
1048   Fixed Makefiles
1049   fixed typos in logs
1050   version 1.0-RC1 released
1052 2006/12/02:
1053   moved strings from upnpdescgen.c to upnpdescstrings.h for
1054   easier modification
1055   Server: HTTP header now comes from a #define
1056   added a compilation-time generated config.h
1058 2006/11/30:
1059   minixml updated. should have no impact
1060   Added support for presentationURL with -w switch
1061   implemented getifstats() for linux. Added testgetifstats program
1062   improved error handling in getifstats() BSD
1064 2006/11/26:
1065   no need to have miniupnpc sources to compile miniupnpd.
1066   Makefile.openwrt updated
1067   Closing sockets on exit thanks to Ryan Wagoner
1069 2006/11/23:
1070   now handling signal SIGINT
1071   setting HTTP socket with REUSEADDR thanks to Ryan Wagoner
1072   daemon now tested on a Linksys WRT54G device running OpenWRT !
1074 2006/11/21:
1075   disabling rtableid in pf code.
1077 2006/11/22:
1078   Also responds on M-SEARCH with the uuid
1080 2006/11/20:
1081   gaining some space in upnpsoap.c
1083 2006/11/19:
1084   Cleaning up code to comply with ANSI C89
1086 2006/11/17:
1087   Linux version now deleting both nat and accept rules
1088   implemented -U option under Linux
1090 2006/11/16:
1091   implemented delete_redirect_rule() for linux
1092   returning error 714 in DeletePortMapping() when needed
1094 2006/11/12:
1095   The linux/netfilter version should now WORK !
1096   fix in the writepidfile() function. open with a mode !
1098 2006/11/10:
1099   fixing the XML description generation for big endian machines
1100   working on the linux/netfilter port
1102 2006/11/09:
1103   improved a lot the handling of HTTP error cases
1105 2006/11/08:
1106   Tried to make the Makefile compatible with both BSDmake
1107   and GNUmake. It was hard because of $^ and $<
1109 2006/11/07:
1110   Makefile compatible with BSD make
1111   make install target.
1112   getifstats.c compatible with both OpenBSD and FreeBSD.
1114 2006/11/06:
1115   added getifstats.c for openBSD. May not work under FreeBSD ?
1116   now reports bytes/packets sent/received
1117   reporting bitrates
1118   possibility to report system uptime
1120 2006/10/29:
1121   added a -L option to enable loggin (is off by default now).
1123 2006/10/28:
1124   Patch by Ryan Wagoner to correct the XML description (was NewUpTime
1125   instead of NewUptime) and implement uptime.
1126   Trying to fix the memory leak. Added some comments
1127   added a -d option for debugging purpose
1128   Tnaks to valgrind (under linux!) I removed a small memory access error.
1130 2006/10/27:
1131   Thanks to a patch sent by Michael van Tellingen, miniupnpd is
1132   now ignoring NOTIFY packets sent by other devices and is
1133   writing is own pid to /var/run/miniupnpd.pid
1135 2006/10/23:
1136   Allways set sendEvents="no" in XML description (was causing
1137   pb with winXP as SUBSCRIBE is not implemented)
1139 2006/10/22:
1140   added translation from hostname to IP in the AddPortMapping() method
1141   Thanks to Ryan Wagoner.
1143 2006/10/18:
1144   Added an INSTALL file
1146 2006/10/13:
1147   Added the possibility to change the notify interval
1149 2006/09/29:
1150   Improved compliance of the XML Descriptions
1151   pretty print for testupnpdescgen
1153 2006/09/25:
1154   improved the Error 404 response.
1155   Better serviceType and serviceId for dummy service...
1157 2006/09/24:
1158   updating the XML description generator
1160 2006/09/18:
1161   Thanks to Rick Richard, support for SSDP "alive" and "byebye" notifications
1162   was added. The -u options was also added. The SSDP response are now
1163   improved.
1164   The -o option is now working (to force a specific external IP address).
1165   The Soap Methods errors are correctly responded (401 Invalid Action)
1167 2006/09/09:
1168   Added code to handle filter rules. Thanks to Seth Mos (pfsense.com)
1169   storing the descriptions in the label of the rule
1171 2006/09/02:
1172   improved the generation of the XML descriptions.
1173   I still need to add allowed values to variables.
1175 2006/07/29:
1176   filtering SSDP requests and responding with same ST: field
1178 2006/07/25:
1179   Added a dummy description for the WANDevice
1181 2006/07/20:
1182   Command line arguments processing
1183   Added possibility to listen internally on several interfaces