Miniupnpd: update from 1.8 (20140422) to 1.9 (20141209)
[tomato.git] / release / src / router / miniupnpd / Changelog.txt
blob8c142c0a8706d97ec27c94fa27779fa316939946
1 $Id: Changelog.txt,v 1.391 2014/12/09 09:48:04 nanard Exp $
3 2014/12/09:
4   fix upnp_add_inboundpinhole() : check inet_pton() return
5   fix upnp_redirect() : check inet_aton() return
6   fix potential memory corruption in upnpsoap.c/GetListOfPortMappings()
7   fix buffer overrun in ParseHttpHeaders() if Content-Length doesn't contain any digit !
8   check if BuildHeader_upnphttp() failed to allocate memory
9     Credits goes to Stephen Röttger of the Google Security Team for identifying
10     the vulnerabilities
12 2014/12/04:
13   check "sysctl -n net.ipv6.bindv6only" for linux
15 2014/11/28:
16   fixes ExecuteSoapAction if SoapAction value is not enclosed into
17     double quotes
19 2014/11/07:
20   sockaddr_to_string() includes scope in IPv6 addresses
22 VERSION 1.9 : released on 2014/10/27
24 2014/10/23:
25   Properly implements NAT-PMP mapping removal according to RCF6886
27 2014/10/22:
28   Discard NAT-PMP packets coming from the WAN
29   Send SSDP announces to IPv6 link-local, site-local
30     and global multicast addresses
32 2014/10/21:
33   small modifications to compile with exotic C libraries
35 2014/10/14:
36   add comments in miniupnpd.conf regarding security
38 2014/09/25:
39   DeletePortMapping now checks for client IP in Securemode
41 2014/06/xx:
42   Various fixes :
43     e->ipv6.flags |= IP6T_F_PROTO; (netfilter)
44     fix natpmp.c byte order conversion 
45     add small delay before SSDP response to prevent flooding
47 2014/05/22:
48   Add ipv6_bind_address (option "ipv6_listening_ip")
49   disable IPv6 when socket(PF_INTET6, ...) errors with EAFNOSUPPORT
50   Add IPV6 multicast membership only on selected "LAN" interfaces
52 2014/05/20:
53   be more strict when parsing LAN addresses / interface names
55 2014/05/19:
56   set source address for IPV6 packets sendto_schedule2() etc.
58 2014/05/15:
59   Fix deletePortMappingRange()
61 2014/04/21:
62   Fix PCP when request contain 0 IPv4 external address
63   Remove pointer casting in natpmp.c
65 2014/04/15:
66   rewrite iptables_*.sh scripts
68 2014/04/12:
69   Add FreeBSD support for CHECK_PORTINUSE
70   Add PCP support for CHECK_PORTINUSE
72 2014/04/09:
73   Add HTTPS support and skeleton of DeviceProtection implementation
75 2014/03/24:
76   start work to enable IPv6 PCP operations
78 2014/03/14:
79   reject renewal of subscribtion that already timeouted
80   Support for multiple URL in Callback: header (SUBSCRIBE)
82 2014/03/13:
83   fix getifaddr_in6() (used for PCP)
84   implement permissions with PCP Map
85   fix upnp_event_notify_connect() when ENABLE_IPV6 is set
87 2014/03/10:
88   Enable PCP by default.
89   Work in IPv6 on system where PF_INET6 are restricted to IPv6 only
90   change ipv6_enabled/ipv6fc_inbound_pinhole_allowed/ipv6fc_firewall_enabled
91     global vars to flags in runtime_flags
93 2014/03/09:
94   IPv6 support in testgetifaddr
96 2014/03/07:
97   NAT-PMP search an allowed eport instead of returning an error
98     if the original eport is not allowed.
100 2014/03/06:
101   Fix add_filter_rule2() for pf.
103 2014/02/28:
104   log message when shutting down
105   natpmp : avoid hang when all external ports in use
107 2014/02/25:
108   add implementation of scheduled sendto (asyncsendto) in order
109   to retry failed sendto() calls or schedule sending of packets
111 2014/02/24:
112   Defaulting to SSDP_RESPOND_SAME_VERSION
114 2014/02/11:
115   Fix PCP Map renewal
117 2014/02/06:
118   possibility to disable ipv6 at runtime
120 2014/02/03:
121   PCP : Add support for ANNOUNCE requests
122   minixml now handle XML comments
124 2013/12/16:
125   Attempt to compile with OS X/pf
127 2013/12/13:
128   Make all manufacturer info configurable thanks to Leo Moll
129   Merge PCP support (see https://github.com/miniupnp/miniupnp)
131 2013/06/13:
132   Have 3 UUID for the 3 devices (IGD, WAN Device, WAN Connection Device)
134 2013/06/06:
135   update upnpreplyparse to allow larger values (128 chars instead of 64)
137 2013/06/05:
138   check Service ID in SetDefaultConnectionService method
139   Don't advertise WANPPPConnection in UPNP_STRICT mode
141 2013/05/29:
142   Remove namespace from variable name elements in Events "propertyset"
143     to comply with UPNP DeviceArchitecture v1.1.
145 2013/05/20:
146   Adding support for IP Filter version 5.x
148 2013/05/16:
149   refuses non integer <NewPortMappingIndex> values
151 2013/05/14:
152   Update upnpreplyparse to take into account "empty" elements
154 2013/05/03:
155   Use pkg-config under linux to find libiptc. Thanks to Olivier Langlois
157 2013/04/29:
158   Add warning message when using IPv4 address for listening_ip with IPv6 enabled
160 2013/04/27:
161   Uses ifr_addr if ifr_netmask is not defined in struct ifreq
163 2013/04/26:
164   Correctly handle truncated snprintf() in SSDP code
166 2013/04/24:
167   to avoid build race conditions, genconfig.sh now uses a temporary file
169 2013/04/20:
170   use scope in get_lan_for_peer() for IPv6 addresses
172 2013/03/23:
173   autodetect LAN interface netmask instead of defaulting to /24
175 2013/02/11:
176   Use $(DESTDIR) in Makefile.linux.
177   see https://github.com/miniupnp/miniupnp/issues/26
179 2013/02/07:
180   Add DATE: header in SSDP packets
181   Fix SSDP packets sent with uuid as ST: header to conform to UDA
182   ignore SSDP packets missing the MX: header in UPNP_STRICT mode
183   Added Ext: header to HTTP responses to conform to UDA
184   Refactored SendSSDPNotifies() and SendSSDPGoodbye() and add
185     missing ssdp:alive and ssdp:byebye with NT uuid value.
187 VERSION 1.8 : released on 2013/02/06
189 2013/02/06:
190   Check source address of incomining HTTP connections and SSDP
191     packets in order to filter out WAN SSDP and HTTP trafic.
192   Implement get_src_for_route_to() for *BSD
193   fix 2 potential memory leaks in GetListOfPortMappings()
195 2013/01/29:
196   upnphttp.c: Fix and comment the findendheaders() function
197   upnphttp.c: remove strchr() call in ParseHttpHeaders()
198     add comments to explain how buffer is checked before calls
199     to ParseHttpHeaders()
201 2013/01/27:
202   upnphttp.c: ParseHttpHeaders() now checks atoi() return
204 2012/12/11:
205   More return value check for malloc() and realloc()
207 2012/10/23:
208   minor modifications to linux/getroute.c and testgetroute.c
210 2012/10/04:
211   updated DEFAULTCONNECTIONSERVICE_MAGICALVALUE for IGDv2
212   increased default buffer size for HTTP response
213   More argument check for SOAP actions in UPNP_STRICT mode
214   Better error checking after connect() in upnpevent
216 2012/10/03:
217   Fix atoi() on null pointer in upnpsoap.c
218   properly set service/device version in SSDP messages
219   fix newSubscriber() for IP6FirewallControl and DeviceProtection services
220   Enforce compliance for SUBSCRIBE messages (UPNP_STRICT mode)
221   Enforce compliance for UNSUBSCRIBE messages (UPNP_STRICT mode)
222   Ignore "-Wmissing-field-initializers" in upnpdescgen.c
223   check size of h->res_buf before building HTTP response
224   ENABLE_HTTP_DATE : add a Date: header to all HTTP responses
226 2012/09/27:
227   Fixes with DISABLE_CONFIG_FILE
228   and UPNP_STRICT
229   UPC must be a 12 decimal digit code
230   SetDefaultConnectionService() checks its argumnents in UPNP_STRICT mode
231   Support for Accept-Language/Content-Language HTTP headers
232   Content-Type is now text/xml; charset="utf-8" to conform with UDA v1.1
233   Support Expect: 100-continue for POST HTTP requests
234   Manage services/devices versions in minissdp.c
235   Rename all include guards to not clash with C99.
236    (7.1.3 Reserved identifiers)
238 2012/09/20:
239   Cleaning code in ipfw (Jardel Weyrich)
241 2012/09/18:
242   Fixing a bug in clean_pinhole_list() under linux/netfilter
244 2012/09/15:
245   Adding an informational message at startup
247 2012/08/24:
248   Moved man page to section 8. miniupnpd.1 => miniupnpd.8
249   Added install of miniupnpd.8 man page in Makefile.linux
251 2012/08/10:
252   improved SubmitServicesToMiniSSDPD() function fiability
254 2012/07/17:
255   Add -A command line option to add permission rules
257 2012/07/14:
258   Add -z command line option to change friendly name (thanks to Shawn Fisher)
260 2012/07/10:
261   Detect port in use - patch by David Kerr
263 2012/06/29:
264   added DISABLE_CONFIG_FILE in options.h to disable miniupnpd.conf parsing
265   Add command line parsing for clean_ruleset_interval option
267 2012/06/28:
268   Only activate -L option for PF and IPF
269   -a option takes two arguments with MULTIPLE_EXTERNAL_IP defined
271 2012/06/23:
272   in UPNP_STRICT mode, the literal IPv6 address in "location:" of SSDP
273   messages is the source address used to send the message
275 2012/06/08:
276   Disable -ansi CFLAGS in Makefile.linux because recent iptables headers
277   make use of typeof keyword which is a GCC extension.
279 2012/05/31:
280   Improvements in autodetecting firewall under (Free)BSD
282 2012/05/28:
283   Cleanup HTTP request handling. Answer 405 when relevant
285 VERSION 1.7 : released the 2012/05/28
287 2012/05/28:
288   clean linux/ifacewatcher.c
289   set natpmp socket non blocking
291 2012/05/24:
292   More solaris fixes
294 2012/05/21:
295   Clean signal handling
297 2012/05/08:
298   Clean expired IPv6 pinholes correctly. and also with linux/netfilter.
300 2012/05/07:
301   Finalizing netfilter version of get_pinhole_info()
303 2012/05/01:
304   Move IPv6FirewallControl related code from upnpredirect.c to upnppinhole.c
305   Add netfilter implementation for
306     delete_pinhole()/update_pinhole()/get_pinhole_info()
308 2012/04/30:
309   Clean up settings of CFLAGS in Makefile's
310   Remove Warnings caused by signed/unsigned integer comparaisons
311   Also fix a couple of integer/pointer comparaisons.
312   Add UNUSED(arg) macro to remove unused argument warning.
313   Fix error handling in upnpevents.c (was causing segfault on Solaris !)
315 2012/04/26:
316   Started to implement add_pinhole() for netfilter (linux)
318 2012/04/25:
319   Fixed a bug in upnphttp that happened when POST is received in several
320   recv() calls and realloc() is called so the buffer used is moved.
322 2012/04/23:
323   Implement CheckPinholeWorking GetPinholePackets. WANIPv6FirewallControl
324   UpdatePinhole still to be done. And also netfilter/ipf/ipfw versions
326 2012/04/20:
327   Enough WANIPv6FirewallControl is implemented on pf so that AddPinhole() and
328     DeletePinhole() works !
330 2012/04/19:
331   First working experiment of IPv6 "pinhole" with pf
333 2012/04/15:
334   More C++ => ANSI C comments to compile with -ansi option
335   Add command line arguments to genconfig.sh config script.
337 2012/04/12:
338   Set TTL on SSDP Notify sockets (IPv4). TTL is set to 2 (recommendation from
339     UPnP Device Architecture v1.1)
341 2012/04/06:
342   Implementing IPv6 support :
343     Send SSDP NOTIFY ssdp:alive and ssdp:goodbye messages in IPv6.
344   Use UPnP/1.1 in SERVER: string as required in UPnP Device architecture 1.1.
345   Allow LAN interface to be given as interface names, instead of interface
346     IP addresses. It will allow IPv6 operations.
347   fix linux/getifstats.c when bitrate is unknown
349 2012/03/31:
350   Only remove pidfile if one was written in the first place.
352 2012/03/19:
353   Fix ipfilter support (thanks dhowland https://github.com/dhowland)
355 2012/03/14:
356   Changes to miniupnpd.init.d.script by Shawn Landden
358 2012/03/05:
359   fixed reload_from_lease_file().
361 2012/02/15:
362   Change parselanaddr() function to allow 192.168.1.1/255.255.255.0 in
363     configuration file.
364   Change read_permission_line() to allow 192.168.1.1/255.255.255.0 in
365     permission line (in configuration file).
367 2012/02/12:
368   More syntax checks in upnppermissions.c
370 2012/02/11:
371   Fix ipfw/Mac OS X specific source files to compile ok with -ansi flag
373 2012/02/09:
374   Make HTTP listen socket non blocking (so accept() can't block)
375   Make SSDP receive sockets non blocking
376   use sockaddr_to_string() in SendSSDPAnnonce2 to handle IPv6 addresses
378 2012/02/06:
379   Make HTTP (SOAP) sockets non blocking.
381 2012/02/05:
382   Compile ok with -ansi flag.
383   Save a few bytes in options.c using a string repository, instead of a fixed size
384     buffer for each option value.
386 2012/02/04:
387   Added friendly_name= option to config file
389 2012/02/03:
390   Anchor name (PF) is now configurable through the config file with anchor=
391   Added test of presence of /lib/libip4tc.so and /lib/libip6tc.so files in
392     Makefile.linux in order to add -lip4tc and -lip6tc to LIBS accordingly.
394 2012/02/01:
395   always handle EAGAIN, EWOULDBLOCK and EINTR after recv()/recvfrom() calls
397 2012/01/20:
398   Always #include <netinet/in.h> before #include <arpa/inet.h> (for OpenBSD)
399   .onrdomain field was added in pf with OpenBSD 5.0. Add PFRULE_HAS_ONRDOMAIN
401 2012/01/02:
402   Fixing netfilter/iptables_*.sh scripts for new ifconfig output format.
403   getifaddr.c: added additional checks on structure returned by getifaddrs()
404   Fixing Mac OS X makefile for installation
406 2011/11/18:
407   avoid infinite loop in SendResp_upnphttp() in case of error
408   Replaced SendResp_upnphttp() + CloseSocket_upnphttp() by
409     SendRespAndClose_upnphttp()
410   Tomato specifics in genconfig.sh
412 2011/07/30:
413   netfilter : Added a tiny_nf_nat.h file to compile with iptables
414     installed headers.
415     include xtables.h instead of iptables.h
417 VERSION 1.6 : released the 2011/07/25
419 2011/07/25:
420   Update doc for version 1.6
422 2011/07/15:
423   Fixing code with MULTIPLE_EXTERNAL_IP defined.
425 2011/06/27:
426   IPv6 support for UPnP events.
427   Security checks in UPnP events.
429 2011/06/22:
430   Remote host for GetListOfPortMappings
431   Remote host support for ipfw (tested on Mac OS X)
433 2011/06/20:
434   support for iptables-1.4.11.1
436 2011/06/18:
437   Remote host support for pf version
439 2011/06/04:
440   Supporting RemoteHost (mandatory in IGD v2)
442 2011/06/03:
443   Enabling events by default
445 2011/06/01:
446   Fixing Timeout missing in SUBSCRIBE renewal responses
447   (thanks to Pranesh Kulkarni)
448   Added comments about changes between IGD v1 and IGD v2
450 2011/05/28:
451   Description and leaseduration kept in ipfw version of the code.
452   Fixing ipfw code after testing under Mac OS X 10.6.7 (darwin 10.7.0)
454 2011/05/27:
455   Finishing and testing LeaseDuration support under OpenBSD.
456   Changing NAT-PMP port mapping lifetime support to match
457   lease duration support.
458   NAT-PMP address change announce broadcasted to both port
459   5350 and 5351 to be compatible with client following the
460   version of NAT PMP specification from 2008 or earlier.
461   writepidfile() Overwrite file if already existing
463 2011/05/26:
464   fix in linux/getifstats.c.
465   See http://miniupnp.tuxfamily.org/forum/viewtopic.php?p=2212
466   Implementation of LeaseDuration support.
468 2011/05/23:
469   added get_wan_connection_status_str()
471 2011/05/20:
472   adding ifacewatcher thanks to Alexey Osipov
473   GET /DP.xml is now available. The description has to be completed.
475 2011/05/19:
476   Add getconnstatus.c/.h. Dont always have ConnectionStatus to "Connected"
477   Events for WANIPv6FirewallControll
479 2011/05/16:
480   patches for gentoo linux.
481   generation of the DeviceProtection service description.
483 2011/05/15:
484   Making the SSDP receiving socket work in IPv6 !
486 2011/05/14:
487   Support for HTTP in both IPv6 and IPv4.
488   IPv6 for SSDP receiving socket.
490 2011/05/13:
491   add new options in genconfig.sh (IGD_V2, ENABLE_DP_SERVICE)
492   add global vars ipv6fc_firewall_enabled and ipv6fc_inbound_pinhole_allowed
493   have MACROS for magical values in upnpdescgen.c, add eventing vars for WanIPv6FirewallControl.
494   applied 0001-Cosmetic-changes.patch(see http://miniupnp.tuxfamily.org/forum/viewtopic.php?t=764)
495   applied 0002-Remove-lan-addresses-limit-by-changing-storage-type-.patch
496   replaced some of the urn:schemas-upnp-org:device:* literal strings by macros.
497   adding some support for IP v6. #define ENABLE_IPV6
498   added -fno-strict-aliasing to compile options.
500 2011/05/09:
501   updating upnp descriptions for IGDv2
503 2011/05/07:
504   Adding WANIPv6FirewallContro to upnp description
506 2011/04/30:
507   adding a UPNP_STRICT config macro. Use it now for checking RemoteHost.
508   ENABLE_6FC_SERVICE : add the implementations of WANIPv6FirewallControl actions
510 2011/04/11:
511   preparing getifaddr() for IP v6
512   preparing SSDP stuff for IP v6. Trying to conform to UDA v1.1
514 2011/03/09:
515   Some modifications thanks to Daniel Dickinson to improve OpenWRT
516   build.
517   Fixed some warnings.
519 2011/03/03:
520   Added code to generate devices/services descriptions for IGD v2
521   (to be continued)
523 2011/03/02:
524   improved netfilter/delete_redirect_and_filter_rules() in order
525   to remove the right filter rule, even if it has another index than
526   the nat rule.
528 2011/03/01:
529   clean up an fixes to make netfilter/testiptcrdr compile
531 2011/02/21:
532   Make "Makefile" work under Mac OS X with bsdmake.
533   added get_portmappings_in_range() in ipfwrdr.c
535 2011/02/07:
536   added get_portmappings_in_range() / upnp_get_portmappings_in_range()
538 2011/02/06:
539   Implementation of GetListOfPortMappings
541 2011/01/27:
542   Reverting "fixes" done in linux/iptables code the 2010/09/27.
543   see http://miniupnp.tuxfamily.org/forum/viewtopic.php?t=741
545 2011/01/04:
546   added MINIUPNPD_VERSION in config.h. Taken from VERSION file.
548 VERSION 1.5 : released the 2011/01/01
550 2011/01/01:
551   Started to implement some of the new methods from WANIPConnection v2
553 2010/09/27:
554   Some fixes in the linux/iptables code when
555   miniupnpd_nat_chain <> miniupnpd_forward_chain
557 2010/09/21:
558   Patch to support nfqueue thanks to Colin McFarlane
560 2010/08/07:
561   Update Mac OS X / ipfw stuff from Jardel Weyrich
562   Fix in Makefile.linux for x86_64
564 2010/05/06:
565   Bugfix un CleanNATPMPRules() : see http://miniupnp.tuxfamily.org/forum/viewtopic.php?t=640
567 2010/03/14:
568   Fixing natpmp sockets.
570 2010/03/08:
571   Fix Makefile.linux to compile properly under Mandriva/rh/Fedora with
572     Iptables >= 1.4.3
573   Workaround for bad uptime when started with a bad time set.
575 2010/03/07:
576   Tried to make a OpenBSD version 4.7 compatible code... still some
577   issues.
579 2010/03/06:
580   updates to testobsdrdr
582 2010/03/03:
583   -lip4tc in Makefile.linux.
585 2010/02/15:
586   some more error handling in set_startup_time()
587   silencing some warnings
589 2010/01/14:
590   Open Several sockets for NAT-PMP to make sure the source address
591   of NAT-PMP replies is right.
592   see http://miniupnp.tuxfamily.org/forum/viewtopic.php?t=609
594 2009/12/31:
595   miniupnpdctl now output command line arguments.
596   added a -h option to get help. improved help.
598 2009/12/22:
599   using PRIu64 format to printf u_int64_t
600   Fixing calls to get_redirect_rule_by_index() : ifname should be initialized.
601   Add header lines to miniupnpdctl output
603 2009/11/06:
604   implementing sending of ip address change notification when receiving
605     the signal SIGUSR1
607 VERSION 1.4 : released the 2009/10/30
609 2009/10/10:
610   Integrate IPfilter patch from Roy Marples.
611   Fix Netfilter code for old netfilter :
612     see http://miniupnp.tuxfamily.org/forum/viewtopic.php?t=584
613   trim the description string in reload_from_lease_file()
615 2009/09/21:
616   Fixing unclosed raw sockets bug with netfilter code.
618 2009/09/04:
619   Fixes in ipf code thanks to Roy Marples
620   Enable DragonFly BSD Support thanks to Roy Marples.
621   Allow packager to define default location of config file via CFLAGS
622   Respect $DESTDIR when installing
624 2009/08/20:
625   Adding some support for MacOS X and IPFW
626   SO_REUSEADDR in minissdp.c for SSDP listening socket
628 2009/06/05:
629   unlink lease file in reload_from_lease_file()
631 2009/05/16:
632   Fixed a buffer overflow in ProcessSSDPRequest()
634 2009/05/11:
635   improving genconfig.sh for NetBSD : detecting use of pf or ipf
637 VERSION 1.3 :
638 2009/04/17:
639   working support for iptables >= 1.4.3
641 2009/04/13:
642   work to support iptables-1.4.3 and up
644 2009/04/10:
645   fix in upnpevents_removeSubscriber()
647 2009/02/14:
648   added reload_from_lease_file()
650 2009/02/13:
651   Changes in upnpdescgen.c to allow to remove empty elements
652   strcasecmp instead of strcmp on path comparaisons to allow
653   bugged clients to work
655 2009/01/29:
656   Some minor changes to Makefile
657   improving Makefile.linux in order to build with iptables not properly
658   installed on the system.
660 2009/01/23:
661   Fixing upnpevents thanks to Justin Maggard
663 2008/10/15:
664   getifstats() return -1 when supplied with bad arguments
666 2008/10/11:
667   Fixed NAT-PMP response when IP not allocated to external interface
669 2008/10/09:
670   adding testgetifaddr
671   Reporting Unconnected status when the "external interface" has
672   no IP address assigned. Also added some comments
674 VERSION 1.2 :
676 2008/10/07:
677   updating docs
679 2008/10/06:
680   MiniUPnPd is now able to use MiniSSDPd to manage SSDP M-SEARCH answering
682 2008/10/03:
683   You can now let miniupnpd choose itself the HTTP port used.
685 2008/10/01:
686   Improvements in genconfig.sh for detecting ipf or pf (under FreeBSD)
687   and improve debian/ubuntu stuff.
688   custom chain name patch from :
689     http://miniupnp.tuxfamily.org/forum/viewtopic.php?t=493
691 2008/08/24:
692   added USE_IFNAME_IN_RULES macro that can be disabled in order to
693   remove interface name from rules.
695 2008/07/10:
696   Fixed compilation without ENABLE_L3F_SERVICE
698 2008/04/27:
699   correct UNSUBSCRIBE processing
701 2008/04/25(bis):
702   changed iptables_removeall.sh and iptables_init.sh in order
703   to remove IP from the rules
705 VERSION 1.1 :
707 2008/04/25:
708   Eventing is allmost completly implemented
710 2008/04/24:
711   Correct event handling ?
713 2008/04/08:
714   enabling tag in PF rules. quick can be set off.
716 2008/03/13:
717   implementing event notify
719 2008/03/11:
720   fixing a command line parsing error
722 2008/03/09:
723   optimisations in upnpsoap.c
725 2008/03/08:
726   optimizing upnpsoap.c for size
728 2008/03/06:
729   Worked on the Eventing : generating XML event notifications
730     Send initial notification after subscribe
731   Improved pretty print of testupnpdescgen
732   Reduced Memory usage of upnpdescgen
733   fixed a small bug in the description
735 2008/03/03:
736   Fixed miniupnpd.c for compiling without natpmp support
737   fixed presentationURL not there with L3F
738   fixing lease file creation/modification
740 2008/02/25:
741   Rewrite of Send501() and Send404()
742   More work on events
743   genconfig.sh autodetects pf/ipf
745 2008/02/24:
746   Started to implement UPnP Events. do NOT use it at the moment !
748 2008/02/21:
749   Added support for the Layer3Forwarding Service
750   added init_redirect() and shutdown_redirect() functions
752 2008/02/20:
753   Removed Ext: HTTP header when useless
754   enabled the dummy service by default to please windows XP !
756 2008/02/07:
757   upnp_enable patch by Nikos Mavrogiannopoulos.
758   lease_file patch by Nikos Mavrogiannopoulos.
760 2008/01/29:
761   some changes to Makefile.openwrt
762   use daemon() - daemonize() is still available for systems lacking daemon()
764 VERSION 1.0 :
765 2008/01/27:
766   moved lan_addr to upnpglobalvars.h/.c
767   Adding experimental multiple external IP support.
769 2008/01/22:
770   removed dummy service from description to improve compatibility
771   with emule client
772   Add "secure mode". put runtime flags in the same variable
774 2008/01/14:
775   Fixed a bug in options.c for the parsing of empty lines.
777 2008/01/03:
778   Fixed CleanExpiredNATPMP()
780 2008/01/02:
781   Adding a queue parameter for setting ALTQ in pf
783 2007/12/27:
784   improving some stuff with the PF_ENABLE_FILTER_RULE.
786 2007/12/22:
787   Adding a runtime option to enable/disable NAT-PMP
789 2007/12/20:
790   Added a cache in linux getifstats(). Please enable by editing config.h
792 2007/12/14:
793   Updating an existing NAT-PMP mapping now works
795 2007/12/13:
796   NAT-PMP code now remove expired mappings
797   TCP/UDP where swapped in NAT-PMP code
799 2007/12/04:
800   Adding details to the error message for sendto(udp_notify)
802 2007/11/27:
803   pf code doesn't generate filter rules by default anymore. The
804   #ifdef PF_ENABLE_FILTER_RULES must be uncommented in config.h.
806 2007/11/02:
807   moved some of the prototypes common to all firewalls to commonrdr.h
808   Added functionalities to NAT-PMP
810 2007/11/01:
811   Debugged NAT-PMP code
813 2007/10/28:
814   Cleaning and improving NAT-PMP code
816 2007/10/25:
817   improved the NAT-PMP experimental support
818   updated README and INSTALL files
820 2007/10/24:
821   Adding support for NAT-PMP (from apple !)
823 2007/10/11:
824   Checking the commandline for errors.
826 2007/10/08:
827   Improved the BSD/Solaris Makefile
828   Merging last code from Darren Reed. Solaris/IPF should work now !
829   added a man page.
831 2007/10/07:
832   Adding Darren Reed code for ipf.
834 2007/10/06:
835   Adding SunOS support thanks to Darren Reed.
836   Reorganizing os/firewall dependent code thanks to Darren Reed.
838 2007/09/27:
839   linux make install support PREFIX variable
841 2007/09/25:
842   reorganizing LAN sockets/address to improve multi LAN support.
843   SSDP announces are sent to all configured networks.
844   SSDP responses are "customized" by subnetwork.
846 2007/09/24:
847   prototype code to remove unused rules
848   miniupnpdctl now display current rules
849   synchronised add_filter_rule2() prototype between pf and netfilter code.
851 2007/09/19:
852   Correctly filling the Cache-control header in SSDP packets
854 2007/08/28:
855   update PFRULE_INOUT_COUNTS detection for FreeBSD
857 2007/08/27:
858   update version in genconfig.sh
859   do not error when a duplicate redirection is requested.
861 2007/07/16:
862   really fixed the compilation bug with linux>=2.6.22
864 2007/07/04:
865   fixed an error in options.c that prevented to use packet_log option
867 2007/07/03:
868   improved genconfig.sh
869   fixed a compilation bug with linux>=2.6.22
871 2007/06/22:
872   added PFRULE_INOUT_COUNTS macro to enable separate in/out packet and
873   bytes counts in pf for OpenBSD >= 3.8
875 2007/06/15:
876   removed a possible racecondition in writepidfile()
878 2007/06/12:
879   improved genconfig.sh : no more "echo -e", use lsb_release when available
881 2007/06/11:
882   get_redirect_rule*() functions now return some statistics about
883   rule usage (bytes and packets)
885 2007/06/07:
886   Fixed the get_redirect_desc() in the linux/netfilter code
888 2007/06/05:
889   Clean up init code in miniupnpd.c
890   Added a syslog message in SoapError()
892 2007/06/04:
893   Now store redirection descriptions in the linux/netfilter code
895 2007/05/21:
896   Answers to SSDP M-SEARCH requests with ST: ssdp:all
897   added make install to Makefile.linux
899 2007/05/10:
900   Fixed a bug int the DeletePortMapping linux/netfilter implementation
901   It was allways the 1st rule that was deleted.
903 2007/04/26:
904   Fixed config.h.openwrt
906 2007/04/16:
907   added something in the INSTALL file about the FreeBSD send(udp_notify)
908   problem fix (allowing 239.0.0.0/8 explicitely in pf.conf)
910 2007/03/30:
911   added setsockopt(s, SOL_SOCKET, SO_BROADCAST ...) for broadcasting
912   socket
914 2007/03/17:
915   Fixed filter rule under linux : it was using wrong port !
916   thanks to Wesley W. Terpstra
918 2007/03/01:
919   Moved some of the SSDP code from miniupnpd.c to minissdp.c
921 2007/02/28:
922   creating miniupnpdctl
924 2007/02/26:
925   use LOG_MINIUPNPD macro for openlog()
926   simplify miniupndShutdown()
928 2007/02/09:
929   improved genconfig.h
930   Added stuff to change the pf rule "rdr" to "rdr pass"
932 2007/02/07:
933   Corrected Bytes per seconds to bits per second.
934   Ryan cleaned up comments and typos.
935   Ryan cleaned up daemonize stuff.
936   Ryan added possibility to configure model number and serial number
938 2007/01/30:
939   ryan improved the robustness of most UPnP Soap methods
940   I added a target in the Makefiles to properly generate an uuid using
941   command line tools.
942   Improved configuration file parsing.
944 2007/01/29:
945   Adding uuid option in miniupnpd.conf
947 2007/01/27:
948   Added upnppermissions stuff : adding some security to UPnP !
949   fixed XML description thanks to Ryan Wagoner
950   improved QueryStateVariable thanks to Ryan Wagoner
952 2007/01/22:
953   use getifaddr() for each GetExtenalIPAddress() Call.
954   We can change the ip during execution without pb
956 2007/01/17:
957   Lots of code cleanup
959 2007/01/12:
960   Fixed a nasty bug in the linux/netfilter version of get_filter_rule()
962 2007/01/11:
963   Improved the handling of the miniupnpd.conf file.
964   added -f option to choose which config file to read.
966 2007/01/10:
967   Fixed potential bugs with ClearNameValueList()
969 2007/01/08:
970   All by Ryan Wagoner :
971   - coding style and comments cleanup
972   - using now option file miniupnpd.conf
974 2007/01/03:
975   changed "xx active incoming HTTP connections" msg
977 2007/01/02:
978   Patch from Ryan Wagoner :
979   - no need to open sockets if we can't set the error handlers
980   - format the usage so it fits nicely on a standard size terminal
981   - fix up log_err message so they have the same format and you know what
982     they are related to
983   - use same "white space" style throughout
984   - on shutdown no need to continue if opening socket or setsockopt fails
986 2006/12/14:
987   reduce amount of log lines (keeping the same information)
989 2006/12/07:
990   Fixed Makefiles
991   fixed typos in logs
992   version 1.0-RC1 released
994 2006/12/02:
995   moved strings from upnpdescgen.c to upnpdescstrings.h for
996   easier modification
997   Server: HTTP header now comes from a #define
998   added a compilation-time generated config.h
1000 2006/11/30:
1001   minixml updated. should have no impact
1002   Added support for presentationURL with -w switch
1003   implemented getifstats() for linux. Added testgetifstats program
1004   improved error handling in getifstats() BSD
1006 2006/11/26:
1007   no need to have miniupnpc sources to compile miniupnpd.
1008   Makefile.openwrt updated
1009   Closing sockets on exit thanks to Ryan Wagoner
1011 2006/11/23:
1012   now handling signal SIGINT
1013   setting HTTP socket with REUSEADDR thanks to Ryan Wagoner
1014   daemon now tested on a Linksys WRT54G device running OpenWRT !
1016 2006/11/21:
1017   disabling rtableid in pf code.
1019 2006/11/22:
1020   Also responds on M-SEARCH with the uuid
1022 2006/11/20:
1023   gaining some space in upnpsoap.c
1025 2006/11/19:
1026   Cleaning up code to comply with ANSI C89
1028 2006/11/17:
1029   Linux version now deleting both nat and accept rules
1030   implemented -U option under Linux
1032 2006/11/16:
1033   implemented delete_redirect_rule() for linux
1034   returning error 714 in DeletePortMapping() when needed
1036 2006/11/12:
1037   The linux/netfilter version should now WORK !
1038   fix in the writepidfile() function. open with a mode !
1040 2006/11/10:
1041   fixing the XML description generation for big endian machines
1042   working on the linux/netfilter port
1044 2006/11/09:
1045   improved a lot the handling of HTTP error cases
1047 2006/11/08:
1048   Tried to make the Makefile compatible with both BSDmake
1049   and GNUmake. It was hard because of $^ and $<
1051 2006/11/07:
1052   Makefile compatible with BSD make
1053   make install target.
1054   getifstats.c compatible with both OpenBSD and FreeBSD.
1056 2006/11/06:
1057   added getifstats.c for openBSD. May not work under FreeBSD ?
1058   now reports bytes/packets sent/received
1059   reporting bitrates
1060   possibility to report system uptime
1062 2006/10/29:
1063   added a -L option to enable loggin (is off by default now).
1065 2006/10/28:
1066   Patch by Ryan Wagoner to correct the XML description (was NewUpTime
1067   instead of NewUptime) and implement uptime.
1068   Trying to fix the memory leak. Added some comments
1069   added a -d option for debugging purpose
1070   Tnaks to valgrind (under linux!) I removed a small memory access error.
1072 2006/10/27:
1073   Thanks to a patch sent by Michael van Tellingen, miniupnpd is
1074   now ignoring NOTIFY packets sent by other devices and is
1075   writing is own pid to /var/run/miniupnpd.pid
1077 2006/10/23:
1078   Allways set sendEvents="no" in XML description (was causing
1079   pb with winXP as SUBSCRIBE is not implemented)
1081 2006/10/22:
1082   added translation from hostname to IP in the AddPortMapping() method
1083   Thanks to Ryan Wagoner.
1085 2006/10/18:
1086   Added an INSTALL file
1088 2006/10/13:
1089   Added the possibility to change the notify interval
1091 2006/09/29:
1092   Improved compliance of the XML Descriptions
1093   pretty print for testupnpdescgen
1095 2006/09/25:
1096   improved the Error 404 response.
1097   Better serviceType and serviceId for dummy service...
1099 2006/09/24:
1100   updating the XML description generator
1102 2006/09/18:
1103   Thanks to Rick Richard, support for SSDP "alive" and "byebye" notifications
1104   was added. The -u options was also added. The SSDP response are now
1105   improved.
1106   The -o option is now working (to force a specific external IP address).
1107   The Soap Methods errors are correctly responded (401 Invalid Action)
1109 2006/09/09:
1110   Added code to handle filter rules. Thanks to Seth Mos (pfsense.com)
1111   storing the descriptions in the label of the rule
1113 2006/09/02:
1114   improved the generation of the XML descriptions.
1115   I still need to add allowed values to variables.
1117 2006/07/29:
1118   filtering SSDP requests and responding with same ST: field
1120 2006/07/25:
1121   Added a dummy description for the WANDevice
1123 2006/07/20:
1124   Command line arguments processing
1125   Added possibility to listen internally on several interfaces