1 $Id: Changelog.txt,v 1.239 2011/07/25 16:06:11 nanard Exp $
3 VERSION 1.6 : released the 2011/07/25
6 Update doc for version 1.6
9 Fixing code with MULTIPLE_EXTERNAL_IP defined.
12 IPv6 support for UPnP events.
13 Security checks in UPnP events.
16 Remote host for GetListOfPortMappings
17 Remote host support for ipfw (tested on Mac OS X)
20 support for iptables-1.4.11.1
23 Remote host support for pf version
26 Supporting RemoteHost (mandatory in IGD v2)
29 Enabling events by default
32 Fixing Timeout missing in SUBSCRIBE renewal responses
33 (thanks to Pranesh Kulkarni)
34 Added comments about changes between IGD v1 and IGD v2
37 Description and leaseduration kept in ipfw version of the code.
38 Fixing ipfw code after testing under Mac OS X 10.6.7 (darwin 10.7.0)
41 Finishing and testing LeaseDuration support under OpenBSD.
42 Changing NAT-PMP port mapping lifetime support to match
43 lease duration support.
44 NAT-PMP address change announce broadcasted to both port
45 5350 and 5351 to be compatible with client following the
46 version of NAT PMP specification from 2008 or earlier.
47 writepidfile() Overwrite file if already existing
50 fix in linux/getifstats.c.
51 See http://miniupnp.tuxfamily.org/forum/viewtopic.php?p=2212
52 Implementation of LeaseDuration support.
55 added get_wan_connection_status_str()
58 adding ifacewatcher thanks to Alexey Osipov
59 GET /DP.xml is now available. The description has to be completed.
62 Add getconnstatus.c/.h. Dont always have ConnectionStatus to "Connected"
63 Events for WANIPv6FirewallControll
66 patches for gentoo linux.
67 generation of the DeviceProtection service description.
70 Making the SSDP receiving socket work in IPv6 !
73 Support for HTTP in both IPv6 and IPv4.
74 IPv6 for SSDP receiving socket.
77 add new options in genconfig.sh (IGD_V2, ENABLE_DP_SERVICE)
78 add global vars ipv6fc_firewall_enabled and ipv6fc_inbound_pinhole_allowed
79 have MACROS for magical values in upnpdescgen.c, add eventing vars for WanIPv6FirewallControl.
80 applied 0001-Cosmetic-changes.patch(see http://miniupnp.tuxfamily.org/forum/viewtopic.php?t=764)
81 applied 0002-Remove-lan-addresses-limit-by-changing-storage-type-.patch
82 replaced some of the urn:schemas-upnp-org:device:* literal strings by macros.
83 adding some support for IP v6. #define ENABLE_IPV6
84 added -fno-strict-aliasing to compile options.
87 updating upnp descriptions for IGDv2
90 Adding WANIPv6FirewallContro to upnp description
93 adding a UPNP_STRICT config macro. Use it now for checking RemoteHost.
94 ENABLE_6FC_SERVICE : add the implementations of WANIPv6FirewallControl actions
97 preparing getifaddr() for IP v6
98 preparing SSDP stuff for IP v6. Trying to conform to UDA v1.1
101 Some modifications thanks to Daniel Dickinson to improve OpenWRT
106 Added code to generate devices/services descriptions for IGD v2
110 improved netfilter/delete_redirect_and_filter_rules() in order
111 to remove the right filter rule, even if it has another index than
115 clean up an fixes to make netfilter/testiptcrdr compile
118 Make "Makefile" work under Mac OS X with bsdmake.
119 added get_portmappings_in_range() in ipfwrdr.c
122 added get_portmappings_in_range() / upnp_get_portmappings_in_range()
125 Implementation of GetListOfPortMappings
128 Reverting "fixes" done in linux/iptables code the 2010/09/27.
129 see http://miniupnp.tuxfamily.org/forum/viewtopic.php?t=741
132 added MINIUPNPD_VERSION in config.h. Taken from VERSION file.
134 VERSION 1.5 : released the 2011/01/01
137 Started to implement some of the new methods from WANIPConnection v2
140 Some fixes in the linux/iptables code when
141 miniupnpd_nat_chain <> miniupnpd_forward_chain
144 Patch to support nfqueue thanks to Colin McFarlane
147 Update Mac OS X / ipfw stuff from Jardel Weyrich
148 Fix in Makefile.linux for x86_64
151 Bugfix un CleanNATPMPRules() : see http://miniupnp.tuxfamily.org/forum/viewtopic.php?t=640
154 Fixing natpmp sockets.
157 Fix Makefile.linux to compile properly under Mandriva/rh/Fedora with
159 Workaround for bad uptime when started with a bad time set.
162 Tried to make a OpenBSD version 4.7 compatible code... still some
166 updates to testobsdrdr
169 -lip4tc in Makefile.linux.
172 some more error handling in set_startup_time()
173 silencing some warnings
176 Open Several sockets for NAT-PMP to make sure the source address
177 of NAT-PMP replies is right.
178 see http://miniupnp.tuxfamily.org/forum/viewtopic.php?t=609
181 miniupnpdctl now output command line arguments.
182 added a -h option to get help. improved help.
185 using PRIu64 format to printf u_int64_t
186 Fixing calls to get_redirect_rule_by_index() : ifname should be initialized.
187 Add header lines to miniupnpdctl output
190 implementing sending of ip address change notification when receiving
193 VERSION 1.4 : released the 2009/10/30
196 Integrate IPfilter patch from Roy Marples.
197 Fix Netfilter code for old netfilter :
198 see http://miniupnp.tuxfamily.org/forum/viewtopic.php?t=584
199 trim the description string in reload_from_lease_file()
202 Fixing unclosed raw sockets bug with netfilter code.
205 Fixes in ipf code thanks to Roy Marples
206 Enable DragonFly BSD Support thanks to Roy Marples.
207 Allow packager to define default location of config file via CFLAGS
208 Respect $DESTDIR when installing
211 Adding some support for MacOS X and IPFW
212 SO_REUSEADDR in minissdp.c for SSDP listening socket
215 unlink lease file in reload_from_lease_file()
218 Fixed a buffer overflow in ProcessSSDPRequest()
221 improving genconfig.sh for NetBSD : detecting use of pf or ipf
225 working support for iptables >= 1.4.3
228 work to support iptables-1.4.3 and up
231 fix in upnpevents_removeSubscriber()
234 added reload_from_lease_file()
237 Changes in upnpdescgen.c to allow to remove empty elements
238 strcasecmp instead of strcmp on path comparaisons to allow
239 bugged clients to work
242 Some minor changes to Makefile
243 improving Makefile.linux in order to build with iptables not properly
244 installed on the system.
247 Fixing upnpevents thanks to Justin Maggard
250 getifstats() return -1 when supplied with bad arguments
253 Fixed NAT-PMP response when IP not allocated to external interface
257 Reporting Unconnected status when the "external interface" has
258 no IP address assigned. Also added some comments
266 MiniUPnPd is now able to use MiniSSDPd to manage SSDP M-SEARCH answering
269 You can now let miniupnpd choose itself the HTTP port used.
272 Improvements in genconfig.sh for detecting ipf or pf (under FreeBSD)
273 and improve debian/ubuntu stuff.
274 custom chain name patch from :
275 http://miniupnp.tuxfamily.org/forum/viewtopic.php?t=493
278 added USE_IFNAME_IN_RULES macro that can be disabled in order to
279 remove interface name from rules.
282 Fixed compilation without ENABLE_L3F_SERVICE
285 correct UNSUBSCRIBE processing
288 changed iptables_removeall.sh and iptables_init.sh in order
289 to remove IP from the rules
294 Eventing is allmost completly implemented
297 Correct event handling ?
300 enabling tag in PF rules. quick can be set off.
303 implementing event notify
306 fixing a command line parsing error
309 optimisations in upnpsoap.c
312 optimizing upnpsoap.c for size
315 Worked on the Eventing : generating XML event notifications
316 Send initial notification after subscribe
317 Improved pretty print of testupnpdescgen
318 Reduced Memory usage of upnpdescgen
319 fixed a small bug in the description
322 Fixed miniupnpd.c for compiling without natpmp support
323 fixed presentationURL not there with L3F
324 fixing lease file creation/modification
327 Rewrite of Send501() and Send404()
329 genconfig.sh autodetects pf/ipf
332 Started to implement UPnP Events. do NOT use it at the moment !
335 Added support for the Layer3Forwarding Service
336 added init_redirect() and shutdown_redirect() functions
339 Removed Ext: HTTP header when useless
340 enabled the dummy service by default to please windows XP !
343 upnp_enable patch by Nikos Mavrogiannopoulos.
344 lease_file patch by Nikos Mavrogiannopoulos.
347 some changes to Makefile.openwrt
348 use daemon() - daemonize() is still available for systems lacking daemon()
352 moved lan_addr to upnpglobalvars.h/.c
353 Adding experimental multiple external IP support.
356 removed dummy service from description to improve compatibility
358 Add "secure mode". put runtime flags in the same variable
361 Fixed a bug in options.c for the parsing of empty lines.
364 Fixed CleanExpiredNATPMP()
367 Adding a queue parameter for setting ALTQ in pf
370 improving some stuff with the PF_ENABLE_FILTER_RULE.
373 Adding a runtime option to enable/disable NAT-PMP
376 Added a cache in linux getifstats(). Please enable by editing config.h
379 Updating an existing NAT-PMP mapping now works
382 NAT-PMP code now remove expired mappings
383 TCP/UDP where swapped in NAT-PMP code
386 Adding details to the error message for sendto(udp_notify)
389 pf code doesn't generate filter rules by default anymore. The
390 #ifdef PF_ENABLE_FILTER_RULES must be uncommented in config.h.
393 moved some of the prototypes common to all firewalls to commonrdr.h
394 Added functionalities to NAT-PMP
397 Debugged NAT-PMP code
400 Cleaning and improving NAT-PMP code
403 improved the NAT-PMP experimental support
404 updated README and INSTALL files
407 Adding support for NAT-PMP (from apple !)
410 Checking the commandline for errors.
413 Improved the BSD/Solaris Makefile
414 Merging last code from Darren Reed. Solaris/IPF should work now !
418 Adding Darren Reed code for ipf.
421 Adding SunOS support thanks to Darren Reed.
422 Reorganizing os/firewall dependent code thanks to Darren Reed.
425 linux make install support PREFIX variable
428 reorganizing LAN sockets/address to improve multi LAN support.
429 SSDP announces are sent to all configured networks.
430 SSDP responses are "customized" by subnetwork.
433 prototype code to remove unused rules
434 miniupnpdctl now display current rules
435 synchronised add_filter_rule2() prototype between pf and netfilter code.
438 Correctly filling the Cache-control header in SSDP packets
441 update PFRULE_INOUT_COUNTS detection for FreeBSD
444 update version in genconfig.sh
445 do not error when a duplicate redirection is requested.
448 really fixed the compilation bug with linux>=2.6.22
451 fixed an error in options.c that prevented to use packet_log option
454 improved genconfig.sh
455 fixed a compilation bug with linux>=2.6.22
458 added PFRULE_INOUT_COUNTS macro to enable separate in/out packet and
459 bytes counts in pf for OpenBSD >= 3.8
462 removed a possible racecondition in writepidfile()
465 improved genconfig.sh : no more "echo -e", use lsb_release when available
468 get_redirect_rule*() functions now return some statistics about
469 rule usage (bytes and packets)
472 Fixed the get_redirect_desc() in the linux/netfilter code
475 Clean up init code in miniupnpd.c
476 Added a syslog message in SoapError()
479 Now store redirection descriptions in the linux/netfilter code
482 Answers to SSDP M-SEARCH requests with ST: ssdp:all
483 added make install to Makefile.linux
486 Fixed a bug int the DeletePortMapping linux/netfilter implementation
487 It was allways the 1st rule that was deleted.
490 Fixed config.h.openwrt
493 added something in the INSTALL file about the FreeBSD send(udp_notify)
494 problem fix (allowing 239.0.0.0/8 explicitely in pf.conf)
497 added setsockopt(s, SOL_SOCKET, SO_BROADCAST ...) for broadcasting
501 Fixed filter rule under linux : it was using wrong port !
502 thanks to Wesley W. Terpstra
505 Moved some of the SSDP code from miniupnpd.c to minissdp.c
508 creating miniupnpdctl
511 use LOG_MINIUPNPD macro for openlog()
512 simplify miniupndShutdown()
516 Added stuff to change the pf rule "rdr" to "rdr pass"
519 Corrected Bytes per seconds to bits per second.
520 Ryan cleaned up comments and typos.
521 Ryan cleaned up daemonize stuff.
522 Ryan added possibility to configure model number and serial number
525 ryan improved the robustness of most UPnP Soap methods
526 I added a target in the Makefiles to properly generate an uuid using
528 Improved configuration file parsing.
531 Adding uuid option in miniupnpd.conf
534 Added upnppermissions stuff : adding some security to UPnP !
535 fixed XML description thanks to Ryan Wagoner
536 improved QueryStateVariable thanks to Ryan Wagoner
539 use getifaddr() for each GetExtenalIPAddress() Call.
540 We can change the ip during execution without pb
546 Fixed a nasty bug in the linux/netfilter version of get_filter_rule()
549 Improved the handling of the miniupnpd.conf file.
550 added -f option to choose which config file to read.
553 Fixed potential bugs with ClearNameValueList()
556 All by Ryan Wagoner :
557 - coding style and comments cleanup
558 - using now option file miniupnpd.conf
561 changed "xx active incoming HTTP connections" msg
564 Patch from Ryan Wagoner :
565 - no need to open sockets if we can't set the error handlers
566 - format the usage so it fits nicely on a standard size terminal
567 - fix up log_err message so they have the same format and you know what
569 - use same "white space" style throughout
570 - on shutdown no need to continue if opening socket or setsockopt fails
573 reduce amount of log lines (keeping the same information)
578 version 1.0-RC1 released
581 moved strings from upnpdescgen.c to upnpdescstrings.h for
583 Server: HTTP header now comes from a #define
584 added a compilation-time generated config.h
587 minixml updated. should have no impact
588 Added support for presentationURL with -w switch
589 implemented getifstats() for linux. Added testgetifstats program
590 improved error handling in getifstats() BSD
593 no need to have miniupnpc sources to compile miniupnpd.
594 Makefile.openwrt updated
595 Closing sockets on exit thanks to Ryan Wagoner
598 now handling signal SIGINT
599 setting HTTP socket with REUSEADDR thanks to Ryan Wagoner
600 daemon now tested on a Linksys WRT54G device running OpenWRT !
603 disabling rtableid in pf code.
606 Also responds on M-SEARCH with the uuid
609 gaining some space in upnpsoap.c
612 Cleaning up code to comply with ANSI C89
615 Linux version now deleting both nat and accept rules
616 implemented -U option under Linux
619 implemented delete_redirect_rule() for linux
620 returning error 714 in DeletePortMapping() when needed
623 The linux/netfilter version should now WORK !
624 fix in the writepidfile() function. open with a mode !
627 fixing the XML description generation for big endian machines
628 working on the linux/netfilter port
631 improved a lot the handling of HTTP error cases
634 Tried to make the Makefile compatible with both BSDmake
635 and GNUmake. It was hard because of $^ and $<
638 Makefile compatible with BSD make
640 getifstats.c compatible with both OpenBSD and FreeBSD.
643 added getifstats.c for openBSD. May not work under FreeBSD ?
644 now reports bytes/packets sent/received
646 possibility to report system uptime
649 added a -L option to enable loggin (is off by default now).
652 Patch by Ryan Wagoner to correct the XML description (was NewUpTime
653 instead of NewUptime) and implement uptime.
654 Trying to fix the memory leak. Added some comments
655 added a -d option for debugging purpose
656 Tnaks to valgrind (under linux!) I removed a small memory access error.
659 Thanks to a patch sent by Michael van Tellingen, miniupnpd is
660 now ignoring NOTIFY packets sent by other devices and is
661 writing is own pid to /var/run/miniupnpd.pid
664 Allways set sendEvents="no" in XML description (was causing
665 pb with winXP as SUBSCRIBE is not implemented)
668 added translation from hostname to IP in the AddPortMapping() method
669 Thanks to Ryan Wagoner.
672 Added an INSTALL file
675 Added the possibility to change the notify interval
678 Improved compliance of the XML Descriptions
679 pretty print for testupnpdescgen
682 improved the Error 404 response.
683 Better serviceType and serviceId for dummy service...
686 updating the XML description generator
689 Thanks to Rick Richard, support for SSDP "alive" and "byebye" notifications
690 was added. The -u options was also added. The SSDP response are now
692 The -o option is now working (to force a specific external IP address).
693 The Soap Methods errors are correctly responded (401 Invalid Action)
696 Added code to handle filter rules. Thanks to Seth Mos (pfsense.com)
697 storing the descriptions in the label of the rule
700 improved the generation of the XML descriptions.
701 I still need to add allowed values to variables.
704 filtering SSDP requests and responding with same ST: field
707 Added a dummy description for the WANDevice
710 Command line arguments processing
711 Added possibility to listen internally on several interfaces