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