miniupnp.tuxfamily.org Forum Index miniupnp.tuxfamily.org
The forum about miniupnp and libnatpmp
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Xbox 360 works, Xbox One doesn't
Goto page Previous  1, 2, 3, 4, 5  Next
 
Post new topic   Reply to topic    miniupnp.tuxfamily.org Forum Index -> miniupnpd Bugs
View previous topic :: View next topic  
Author Message
yakkowarner



Joined: 02 Dec 2015
Posts: 11

PostPosted: Fri Dec 11, 2015 7:35 am    Post subject: Reply with quote

BoHiCa wrote:
@yakkowarner: Try checking the multiplayer status 2X in a row, once the test completes, then hit the rb + rt & lb + lt at the same time and hold for a few seconds to get the details of the test, before hitting the B button to go back).


Yeah, that trick used to work before this new dashboard update; but now, no matter how many times I run the test, it gives me the same "Your network is behind a port-preserving port-symmetric NAT" garbage.
Back to top
View user's profile Send private message
miniupnp
Site Admin


Joined: 14 Apr 2007
Posts: 1589

PostPosted: Fri Dec 11, 2015 9:34 am    Post subject: Reply with quote

yakkowarner wrote:
Ok, I put all four files (two from linux-igd, two from miniupnpd (from when I had it configured for 1.1)) here: https://gist.github.com/anonymous/7d6f306515a60965e9c9

1) diff linux-igd_gateicfgSCPD.xml miniupnpd_WANCfg.xml

linux-igd has "Other" in WANAccessType <allowedValueList>
This value is not defined in the spec http://upnp.org/specs/gw/UPnP-gw-WANCommonInterfaceConfig-v1-Service.pdf

linux-igd also defines WANAccessProvider and MaximumActiveConnections variables which are not required by the spec (see page 6)

2) diff linux-igd_gateconnSCPD.xml miniupnpd_WANIPCn.xml
more differences here :

there is a mixup in miniupnpd with the ConnectionType / PossibleConnectionTypes allowed values.

for ConnectionStatus, linux-igd sets default "Unconfigured" and defines the value "Authenticating"

Uptime range is defined in linux-igd, not miniupnpd

LastConnectionError has much more possible values in linux-igd (and a default value)

RSIPAvailable and NATEnabled have default values
_________________
Main miniUPnP author.
https://miniupnp.tuxfamily.org/
Back to top
View user's profile Send private message Visit poster's website
miniupnp
Site Admin


Joined: 14 Apr 2007
Posts: 1589

PostPosted: Fri Dec 11, 2015 9:59 am    Post subject: Reply with quote

see the desc_test branch https://github.com/miniupnp/miniupnp/tree/desc_test

commit https://github.com/miniupnp/miniupnp/commit/76a5f9930b8b3340922c1b09118e19f6fc6368fd
_________________
Main miniUPnP author.
https://miniupnp.tuxfamily.org/
Back to top
View user's profile Send private message Visit poster's website
miniupnp
Site Admin


Joined: 14 Apr 2007
Posts: 1589

PostPosted: Fri Dec 11, 2015 10:02 am    Post subject: Reply with quote

BoHiCa wrote:
@Thomas: I'm not ignoring you, just very little time for the next week or so! I'll try to set up linux-igd on my perimeter and see if it fares any better with the current build of Xbone. I *do* have --igd2 in my compile options for the build of miniupnpd on my perimeter firewall at the moment. Do you think it is worth simply rebuilding with that option removed? I didn't see a conf file tunable parameter for toggling igd v1/v2 support for the runtime there (probably why it is a compile time option eh? Laughing)

yep IGD2 support is only a compile time option.
edit config.h to set UPNP version also.
UPnP version 2.0 is not related to IGD2 !
(I mean you can have IGD2 on UPnP/1.1 or UPnP/1.0 and IGD1 on UPnP/2.0)
_________________
Main miniUPnP author.
https://miniupnp.tuxfamily.org/
Back to top
View user's profile Send private message Visit poster's website
BoHiCa



Joined: 19 Jun 2015
Posts: 22

PostPosted: Fri Dec 11, 2015 4:45 pm    Post subject: Reply with quote

Thanks Thomas! Will rebuild and retest, hopefully tonight. I'll let you know how it goes!
Back to top
View user's profile Send private message
miniupnp
Site Admin


Joined: 14 Apr 2007
Posts: 1589

PostPosted: Sat Dec 12, 2015 11:39 pm    Post subject: Reply with quote

Has someone tested code from the branch below ?
(also edit config.h to set UPNP_VERSION_MAJOR to 1, Microsoft doesn't like Devices advertising as version 2...)
miniupnp wrote:
see the desc_test branch https://github.com/miniupnp/miniupnp/tree/desc_test

commit https://github.com/miniupnp/miniupnp/commit/76a5f9930b8b3340922c1b09118e19f6fc6368fd

_________________
Main miniUPnP author.
https://miniupnp.tuxfamily.org/
Back to top
View user's profile Send private message Visit poster's website
BoHiCa



Joined: 19 Jun 2015
Posts: 22

PostPosted: Sun Dec 13, 2015 10:51 pm    Post subject: Reply with quote

Hi, I just ran through a few tests with the on-board "Test Multiplayer" tests on the console. (Haven't been able to test actual multiplayer XboxLive functionality yet). The report back from the Xbone is still "Moderate" described as a "Your network is behind a Port Restricted NAT" (or only once so far "Your network is behind a UPnP port Restricted NAT"). The goal is always to have it report back an "Open" status. I do not see any test port forwards added to the MINIUPNPD chain during this procedure (but I might have missed them since the xbone is very far away from the firewall console and it takes a few minutes to get over there... may have to arrange for some type of remoting in to the firewall console from the game room to catch the forwards...), when I did previously (usually for the teredo protocol on UDP 3074). There are entries in the miniupnpd debug log from the xbone that appear normal however.

Attempting to get a build of linux-igd to work on my perimeter firewall (SmoothWall Express 3.1u6 x64) to see if it fares any better. I can post miniupnpd debug logs if that would be helpful at this point. I *did* edit the version info prior to rebuilding with the current git-commit so it should be reporting back version 1.0 to the xbone. (can also post config.h if that would be helpful). Just shout.

update: With linux-igd (v. 1.0) and libupnpd-1.6.19 I get similar results on the "Status" report from the Xbone between miniupnpd and linux-igd. "Moderate" but the longer description is always "Your network is behind a UPnP port restricted NAT" vs. miniupnpd (latest git commit) always reporting "Moderate" and "Your network is behind a port restricted NAT" (Note the subtle differences in the description). I'm wondering if M$ changed what "Open" means since I have never seen the "Your network is behind a UPnP port restricted NAT" descriptions prior to this latest update to Xbone. However, there are reports of that message appearing from at least 2014 so I don't think it is new.

linux-igd log (log level = 3 (verbose):
Code:
Dec 13 23:53:10 miniwall64 upnpd[1166]: Initializing UPnP SDK ...
Dec 13 23:53:10 miniwall64 upnpd[1166]: UPnP SDK Successfully Initialized.
Dec 13 23:53:10 miniwall64 upnpd[1166]: Setting the Web Server Root Directory to /etc/linuxigd
Dec 13 23:53:10 miniwall64 upnpd[1166]: Succesfully set the Web Server Root Directory.
Dec 13 23:53:10 miniwall64 upnpd[1166]: Registering the root device with descDocUrl http://192.168.1.1:49152/gatedesc.xml
Dec 13 23:53:10 miniwall64 upnpd[1166]: IGD root device successfully registered.
Dec 13 23:53:10 miniwall64 upnpd[1166]: Advertisements Sent.  Listening for requests ...
Dec 13 23:53:11 miniwall64 upnpd[1166]: Recieved request to subscribe to WANCommonIFC1
Dec 13 23:53:11 miniwall64 upnpd[1166]: Received request to subscribe to WANIPConn1
Dec 13 23:53:11 miniwall64 upnpd[1166]: ActionName = GetConnectionTypeInfo
Dec 13 23:53:11 miniwall64 upnpd[1166]: ActionName = GetNATRSIPStatus
Dec 13 23:53:15 miniwall64 upnpd[1166]: ActionName = GetStatusInfo
Dec 13 23:54:12 miniwall64 last message repeated 2 times
Dec 13 23:54:25 miniwall64 upnpd[1166]: ActionName = GetExternalIPAddress
Dec 13 23:54:25 miniwall64 upnpd[1166]: ActionName = GetStatusInfo
Dec 13 23:54:25 miniwall64 upnpd[1166]: ActionName = GetNATRSIPStatus
Dec 13 23:54:25 miniwall64 upnpd[1166]: Received request to subscribe to WANIPConn1
Dec 13 23:54:40 miniwall64 upnpd[1166]: ActionName = GetStatusInfo
Dec 13 23:55:09 miniwall64 upnpd[1166]: ActionName = GetStatusInfo
Dec 13 23:55:36 miniwall64 upnpd[1166]: Recieved request to subscribe to WANCommonIFC1
Dec 13 23:55:36 miniwall64 upnpd[1166]: Received request to subscribe to WANIPConn1
Dec 13 23:55:36 miniwall64 upnpd[1166]: ActionName = GetConnectionTypeInfo
Dec 13 23:55:36 miniwall64 upnpd[1166]: ActionName = GetNATRSIPStatus
Dec 13 23:55:36 miniwall64 upnpd[1166]: ActionName = AddPortMapping
Dec 13 23:55:36 miniwall64 upnpd[1166]: appended 1 UDP 3074 192.168.1.201 3074 0
Dec 13 23:55:36 miniwall64 upnpd[1166]: /sbin/iptables -t nat -I PREROUTING -i eth3 -p UDP --dport 3074 -j DNAT --to 192.168.1.201:3074
Dec 13 23:55:36 miniwall64 upnpd[1166]: /sbin/iptables -A FORWARD -p UDP -d 192.168.1.201 --dport 3074 -j ACCEPT
Dec 13 23:55:36 miniwall64 upnpd[1166]: ScheduleMappingExpiration: DevUDN: uuid:75802409-bccb-40e7-8e6c-fa095ecce13e ServiceID: urn:upnp-org:serviceId:WANIPConn1 Proto: UDP ExtPort: 3074 Int: 192.168.1.201.3074 at: Mon Dec 14 23:55:36 2015  eventId: 0
Dec 13 23:55:36 miniwall64 upnpd[1166]: PortMappingNumberOfEntries: 1
Dec 13 23:55:36 miniwall64 upnpd[1166]: AddPortMap: DevUDN: uuid:75802409-bccb-40e7-8e6c-fa095ecce13e ServiceID: urn:upnp-org:serviceId:WANIPConn1 RemoteHost: (null) Prot: UDP ExtPort: 3074 Int: 192.168.1.201.3074
Dec 13 23:55:36 miniwall64 upnpd[1166]: ActionName = GetSpecificPortMappingEntry
Dec 13 23:55:36 miniwall64 upnpd[1166]: ActionName = GetExternalIPAddress
Dec 13 23:55:36 miniwall64 upnpd[1166]: ActionName = GetGenericPortMappingEntry
Dec 13 23:55:37 miniwall64 upnpd[1166]: ActionName = GetStatusInfo
Dec 13 23:55:46 miniwall64 upnpd[1166]: Recieved request to subscribe to WANCommonIFC1
Dec 13 23:55:46 miniwall64 upnpd[1166]: Recieved request to subscribe to WANCommonIFC1
Dec 13 23:55:47 miniwall64 upnpd[1166]: Received request to subscribe to WANIPConn1
Dec 13 23:55:47 miniwall64 upnpd[1166]: ActionName = GetConnectionTypeInfo
Dec 13 23:55:47 miniwall64 upnpd[1166]: ActionName = GetNATRSIPStatus
Dec 13 23:55:47 miniwall64 upnpd[1166]: Received request to subscribe to WANIPConn1
Dec 13 23:55:47 miniwall64 upnpd[1166]: ActionName = GetConnectionTypeInfo
Dec 13 23:55:47 miniwall64 upnpd[1166]: ActionName = GetNATRSIPStatus
Dec 13 23:56:06 miniwall64 upnpd[1166]: ActionName = GetStatusInfo
Dec 13 23:57:05 miniwall64 last message repeated 2 times
Dec 13 23:58:31 miniwall64 last message repeated 3 times


As always, thanks for you help with this!
Back to top
View user's profile Send private message
miniupnp
Site Admin


Joined: 14 Apr 2007
Posts: 1589

PostPosted: Mon Dec 14, 2015 8:15 am    Post subject: Reply with quote

please post log from miniupnpd
also confirm you hav been testing the desc_test branch https://github.com/miniupnp/miniupnp/tree/desc_test
_________________
Main miniUPnP author.
https://miniupnp.tuxfamily.org/
Back to top
View user's profile Send private message Visit poster's website
BoHiCa



Joined: 19 Jun 2015
Posts: 22

PostPosted: Tue Dec 15, 2015 12:54 am    Post subject: Reply with quote

The attached is the miniupnpd log from my perimeter firewall. It was obtained via this command:

Code:
/usr/sbin/miniupnpd -f /etc/miniupnpd.conf -d > /tmp/miniupnpd_igd2.log 2>&1


The running daemon was built using the full tarball from the test_desc branch you linked above. I edited genconfig.sh (ln 105) to:
Code:
#define UPNP_VERSION_MAJOR   1
which resulted in the expected config.h entries:
Code:
/* UPnP version reported in XML descriptions
 * 1.0 / 1.1 / 2.0 depending on which UDA (UPnP Device Architecture) Version */
#define UPNP_VERSION_MAJOR   1
#define UPNP_VERSION_MINOR   0
#define UPNP_VERSION_MAJOR_STR   XSTR(UPNP_VERSION_MAJOR)
#define UPNP_VERSION_MINOR_STR   XSTR(UPNP_VERSION_MINOR)


The configure options used were:
Code:
--portinuse --vendorcfg --leasefile --pcp-peer --igd2


The log captured the Xbone boot up and the multiplayer tests. The IP of the Xbone is 192.168.1.201. The other entries are from various Win 10 machines, a upnp test client on Debian Wheezy, Kodi and other UPnP clients on my network. Interestingly, there does not appear to be any logs of the "AddPortMap" request for UDP 3074 (see linux-igd log above) that occurs during the multiplayer tests. The first entry for the Xbox One is on line 1225 of the linked file below.
miniupnd.log (huge!)

http://www.hivemynd.net/miniupnp/miniupnpd_igd2.log

I noted that there were also no entries in the MINIUPNPD chain in the firewall's rules (via iptables_display.sh).

Xbone reports "Moderate" and "Your network is behind a port restricted NAT".

-------------------

Now... here is where it gets *interesting*. I noted your comments in the code about igd_v2 support not being stable or tested enough and support being experimental etc, So... I rebuilt the daemon from the same codebase (test_desc) as above, with these config options:
Code:
--portinuse --vendorcfg --leasefile --pcp-peer


Sparked it back up, and re-ran the Xbone test (from a hard reboot with cache clear, as always for this kind of testing) and *Viola!* The magic goodness of Open status and "Your network is behind a cone NAT"!. And there was much rejoicing! Cool

The link below is to the igd_v1 miniupnpd debug log from the daemon as described above: (xbone first entry appears on line 1502, (IP: 192.168.1.201)). The #AddPortMapping request appears on ln 1805. #GetSpecificPortMappingEntry appears at ln 1903. (I didn't see any of these in the igd_v2 logs).

http://www.hivemynd.net/miniupnp/miniupnpd_igd1.log

output of iptables_display.sh: (igd_v1)

http://www.hivemynd.net/miniupnp/iptables-post-xbone-test_igd1.txt

The iptables_display.sh for (igd_v2) looks exactly the same, except there are no entries in the MINIUPNPD chain, nor any DNAT entries for the Xbone IP (192.168.1.201).

If there is anything else you need that would help, just shout! I would say your tweaks, plus the version tweak, and not using igd_v2 kicks it back into place for Xbox One users. If something goes sideways during game usage, I'll post back. (Won't have time to test that for a bit tho!)

Also, potentially of interest... I use the "UPnP Router Control" application on Debian to run some quick-n-dirty checks against the daemon. When igd_v2 is enabled, the router name is "none available" and the "config" url is also empty, but with igd_v1, both are properly displayed. Perhaps the tweaks you made for the above need to be propagated to igd_v2 also?

Thanks again for your time and efforts on our behalf Thomas! Onward through the Fog!
Back to top
View user's profile Send private message
miniupnp
Site Admin


Joined: 14 Apr 2007
Posts: 1589

PostPosted: Tue Dec 15, 2015 9:45 am    Post subject: Reply with quote

So either turning on IGDv2 makes XML descriptions be wrong,
or XBox don't properly support IGDv2

with IGDv1 :
Code:
HTTP REQUEST : GET /rootDesc.xml (HTTP/1.1)
HTTP REQUEST : GET /L3F.xml (HTTP/1.1)
HTTP REQUEST : SUBSCRIBE /evt/L3F (HTTP/1.1)
HTTP REQUEST : GET /WANCfg.xml (HTTP/1.1)
HTTP REQUEST : SUBSCRIBE /evt/CmnIfCfg (HTTP/1.1)
HTTP REQUEST : GET /WANIPCn.xml (HTTP/1.1)
HTTP REQUEST : SUBSCRIBE /evt/IPConn (HTTP/1.1)
HTTP REQUEST : POST /ctl/IPConn (HTTP/1.1)
   SOAPAction: urn:schemas-upnp-org:service:WANIPConnection:1#GetConnectionTypeInfo
HTTP REQUEST : POST /ctl/IPConn (HTTP/1.1)
   SOAPAction: urn:schemas-upnp-org:service:WANIPConnection:1#GetNATRSIPStatus
HTTP REQUEST : POST /ctl/IPConn (HTTP/1.1)
   SOAPAction: urn:schemas-upnp-org:service:WANIPConnection:1#AddPortMapping


with IGD v2 :
Code:
HTTP REQUEST : GET /rootDesc.xml (HTTP/1.1)
HTTP REQUEST : GET /L3F.xml (HTTP/1.1)
HTTP REQUEST : SUBSCRIBE /evt/L3F (HTTP/1.1)
HTTP REQUEST : GET /DP.xml (HTTP/1.1)
HTTP REQUEST : SUBSCRIBE /evt/DP (HTTP/1.1)
HTTP REQUEST : UNSUBSCRIBE /evt/L3F (HTTP/1.1)
HTTP REQUEST : UNSUBSCRIBE /evt/DP (HTTP/1.1)
[...]
HTTP REQUEST : GET /rootDesc.xml (HTTP/1.1)
HTTP REQUEST : GET /L3F.xml (HTTP/1.1)


So there may be a problem with the DP.xml (Device protection) service
_________________
Main miniUPnP author.
https://miniupnp.tuxfamily.org/
Back to top
View user's profile Send private message Visit poster's website
miniupnp
Site Admin


Joined: 14 Apr 2007
Posts: 1589

PostPosted: Tue Dec 15, 2015 10:21 am    Post subject: Reply with quote

@BoHiCa
there have been some fixes lately to the DP device protection service.
https://github.com/miniupnp/miniupnp/commit/04b344b6f8ed6245de450e2328c6b0b1d34209ef

please test again igd2 with code from master branch
https://github.com/miniupnp/miniupnp/tree/master

your log files are very valuable !!! Thank you for the time you spend doing your tests.

PS: if it still doesn't work with latest code, you can then edit config.h to comment #define ENABLE_DP_SERVICE in order to disable Device protection service and then test again
_________________
Main miniUPnP author.
https://miniupnp.tuxfamily.org/
Back to top
View user's profile Send private message Visit poster's website
BoHiCa



Joined: 19 Jun 2015
Posts: 22

PostPosted: Tue Dec 15, 2015 11:51 pm    Post subject: Reply with quote

Roger that, will do! Perhaps later tonight or tomorrow.

<time passes>

Xbone IP: 192.168.1.201

Three builds from the current master branch in git:

igd2 with DP enabled:

1. compile options:
Code:
"--portinuse --vendorcfg --leasefile --pcp-peer --uda-version=1.0 --igd2"


2. Xbone Status "Moderate" "Your network is behind a port restricted NAT"

3. Xbox One IP: 192.168.1.201 (entries of interest begin ln 1851) (with igd2 and dp enabled)

http://www.hivemynd.net/miniupnp/miniupnpd_master_igd2_wdp.log

igd2 with DP *disabled*:

1. Edit to genconfig.sh
ln: 501
Code:
echo "/*#define ENABLE_DP_SERVICE*/" >> ${CONFIGFILE}   1


2. compile options:
Code:
"--portinuse --vendorcfg --leasefile --pcp-peer --uda-version=1.0 --igd2"


3. Xbone Status "Moderate" "Your network is behind a port restricted NAT"

4. Xbox One IP: 192.168.1.201 (entries of interest begin ln 2142) (with igd2 and dp disabled)

http://www.hivemynd.net/miniupnp/miniupnpd_master_igd2_nodp.log

It seems to get a little further with DP disabled, but still poops itself after the L3F subscription.

igd v1 from master branch:

1. compile options:
Code:
"--portinuse --vendorcfg --leasefile --pcp-peer --uda-version=1.0"


2. Xbone Status "Open" "Your network is behind a cone NAT" Cool

2. Xbox One IP: 192.168.1.201 (entries of interest begin ln 2883) (igd v1)

http://www.hivemynd.net/miniupnp/miniupnpd_master_igd1.log

----------
Thanks for adding the --uda-version=x.x to the compile time options! Saves me from having to make a minor patch for genconfig.h for our distro Cool Would it be worthwhile to add one to enable/disable DP while this gets sorted out for igd v2? It is probably sufficient to just not use the --igd2 compile option to avoid the DP issues though.

I especially appreciate the hosts allow|deny options implemented by miniupnpd. It seems insane to run upnp services on a gateway without a method to specify which nodes/hosts can avail themselves of the upnp services!! (I have verified that the only pinholes/forwards actually being permitted through the firewall are from the Xbone (the only allowed host on my network, despite the dozen or so would-be upnp clients I am running). Strong work!

Again, thank you for your time and efforts!
Back to top
View user's profile Send private message
miniupnp
Site Admin


Joined: 14 Apr 2007
Posts: 1589

PostPosted: Wed Dec 16, 2015 9:22 am    Post subject: Reply with quote

BoHiCa wrote:

Thanks for adding the --uda-version=x.x to the compile time options! Saves me from having to make a minor patch for genconfig.h for our distro Cool Would it be worthwhile to add one to enable/disable DP while this gets sorted out for igd v2? It is probably sufficient to just not use the --igd2 compile option to avoid the DP issues though.

Instead of patching the genconfig.sh file, shouldn't you 1) ./genconfig.sh [options] 2) patch config.h 3) make -f Makefile.linux ?
_________________
Main miniUPnP author.
https://miniupnp.tuxfamily.org/
Back to top
View user's profile Send private message Visit poster's website
miniupnp
Site Admin


Joined: 14 Apr 2007
Posts: 1589

PostPosted: Wed Dec 16, 2015 10:43 am    Post subject: Reply with quote

so unfortunately the problem is not just with DeviceProtection.
I'm afraid the XBox just doesn't support IGD v2, so just stick to IGD v1
_________________
Main miniUPnP author.
https://miniupnp.tuxfamily.org/
Back to top
View user's profile Send private message Visit poster's website
BoHiCa



Joined: 19 Jun 2015
Posts: 22

PostPosted: Wed Dec 16, 2015 3:29 pm    Post subject: Reply with quote

miniupnp wrote:
BoHiCa wrote:

Thanks for adding the --uda-version=x.x to the compile time options! Saves me from having to make a minor patch for genconfig.h for our distro Cool Would it be worthwhile to add one to enable/disable DP while this gets sorted out for igd v2? It is probably sufficient to just not use the --igd2 compile option to avoid the DP issues though.

Instead of patching the genconfig.sh file, shouldn't you 1) ./genconfig.sh [options] 2) patch config.h 3) make -f Makefile.linux ?
We already have a patch to genconfig.sh to add in vendor info so it seemed to make sense to just include the extra patch lines in the same patch file target, but it really isn't necessary since we'll simply drop --igd2 from the options for now and thus have no need to explicitly comment out the DP stuff. Thanks again for your help with this one!

Cheers!
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    miniupnp.tuxfamily.org Forum Index -> miniupnpd Bugs All times are GMT
Goto page Previous  1, 2, 3, 4, 5  Next
Page 2 of 5

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group
Protected by Anti-Spam ACP
© 2007 Thomas Bernard, author of MiniUPNP.