Wednesday, July 28, 2010

Google Summer of Code update

I've been working on NAT issues since the last update. As our initial approach involved running proxies for local devices at the router, which may not be possible for everyone to do, this was another use case we wanted to support.

For this I used the GUPnP-IGD which implements the IGD protocol. IGD helps a local device on the internal network to map a local port at the router using UPnP. Routers which support IGD advertise themselves on the internal network as a UPnP device and clients can perform several actions on them, like mapping/un-mapping of a port, listing all the current mappings etc.

I wrote Vala bindings for GUPnP-IGD as to the best of my knowledge they didn't exist previously. The rest of the concept is same, that we maintain a single state of the internal devices and all NAT mappings and/or proxies are initiated from this point. Also, I read some internal details about GLib system and Vala to update class hierarchies. The approach is much cleaner now.

Presently I'm working on to support UPnP eventing. The problem is that we make UPnP devices available on external networks through a proxy/NAT but the device can't reach a remote client with a private address to let the client know about events occurring. For this, we could take the similar approach as with devices using NAT/proxies but with clients it gets a little more complicated with remote devices.

No comments:

Post a Comment