miniupnpd: enabled igdv2 and apply upstream patch

Existing miniupnpd is compiled with IGDv1, this CL enables IGDv2
compilation flag and applies upstream patch to fix the issue in
advertising service and device versions. These changes are under
igdv2 IUSE flag. This flag is enabled only for jetstream.

BUG=b:74124280
TEST=Built, flashed and verified AP advertises v2 services and devices
Link to packet capture:
https://drive.google.com/open?id=163kFv5i2-6fWsQvSCixzl7z7CKIPzczR

run_lab_test --board=gale --pool=wifi --ssh suite:jetstream_cq
https://jetstream-autotest.corp.google.com/afe/#tab_id=view_job&object_id=662653

run_lab_test --board=whirlwind --pool=testdev --ssh suite:jetstream_cq
https://jetstream-autotest.corp.google.com/afe/#tab_id=view_job&object_id=662732

Change-Id: I73c19d5b2e6095ceb2553faae576388c209d033a
Reviewed-on: https://chromium-review.googlesource.com/995232
Commit-Ready: Reddeiah Raju Konduru <raju.konduru@globaledgesoft.com>
Tested-by: Reddeiah Raju Konduru <raju.konduru@globaledgesoft.com>
Reviewed-by: Kishan Kunduru <kkunduru@chromium.org>
(cherry picked from commit b9eb6828f4a44eb3de7f4e2049bdd7d02f40ba0c)
Reviewed-on: https://chromium-review.googlesource.com/1000658
Commit-Queue: Raju Konduru <rkonduru@google.com>
Tested-by: Raju Konduru <rkonduru@google.com>
diff --git a/net-misc/miniupnpd/files/miniupnpd-1.10-UPSTREAM-advertise-correct-service-and-device-versions-when-I.patch b/net-misc/miniupnpd/files/miniupnpd-1.10-UPSTREAM-advertise-correct-service-and-device-versions-when-I.patch
new file mode 100644
index 0000000..50491ce
--- /dev/null
+++ b/net-misc/miniupnpd/files/miniupnpd-1.10-UPSTREAM-advertise-correct-service-and-device-versions-when-I.patch
@@ -0,0 +1,84 @@
+From 1cc3d1a5fa18f652fcf38a0dad971d562c89c2ad Mon Sep 17 00:00:00 2001
+From: Daniel Becker <razzfazz@gmail.com>
+Date: Fri, 11 Dec 2015 18:08:18 -0800
+Subject: [PATCH] advertise correct service and device versions when IGDv2 is
+ enabled
+
+---
+ miniupnpd/minissdp.c | 26 +++++++++++++-------------
+ miniupnpd/upnpsoap.c |  4 ++++
+ 2 files changed, 17 insertions(+), 13 deletions(-)
+
+diff --git a/miniupnpd/minissdp.c b/miniupnpd/minissdp.c
+index e879d15..6f7008e 100644
+--- a/miniupnpd/minissdp.c
++++ b/miniupnpd/minissdp.c
+@@ -469,14 +469,6 @@ SendSSDPResponse(int s, const struct sockaddr * addr,
+ 	}
+ }
+
+-#ifndef IGD_V2
+-#define IGD_VER 1
+-#define WANIPC_VER 1
+-#else
+-#define IGD_VER 2
+-#define WANIPC_VER 2
+-#endif
+-
+ static struct {
+ 	const char * s;
+ 	const int version;
+@@ -484,11 +476,22 @@ static struct {
+ } const known_service_types[] =
+ {
+ 	{"upnp:rootdevice", 0, uuidvalue_igd},
+-	{"urn:schemas-upnp-org:device:InternetGatewayDevice:", IGD_VER, uuidvalue_igd},
++#ifdef IGD_V2
++	{"urn:schemas-upnp-org:device:InternetGatewayDevice:", 2, uuidvalue_igd},
++	{"urn:schemas-upnp-org:device:WANConnectionDevice:", 2, uuidvalue_wcd},
++	{"urn:schemas-upnp-org:device:WANDevice:", 2, uuidvalue_wan},
++	{"urn:schemas-upnp-org:service:WANIPConnection:", 2, uuidvalue_wcd},
++	{"urn:schemas-upnp-org:service:DeviceProtection:", 1, uuidvalue_igd},
++#ifdef ENABLE_6FC_SERVICE
++	{"urn:schemas-upnp-org:service:WANIPv6FirewallControl:", 1, uuidvalue_wcd},
++#endif
++#else
++	{"urn:schemas-upnp-org:device:InternetGatewayDevice:", 1, uuidvalue_igd},
+ 	{"urn:schemas-upnp-org:device:WANConnectionDevice:", 1, uuidvalue_wcd},
+ 	{"urn:schemas-upnp-org:device:WANDevice:", 1, uuidvalue_wan},
++	{"urn:schemas-upnp-org:service:WANIPConnection:", 1, uuidvalue_wcd},
++#endif
+ 	{"urn:schemas-upnp-org:service:WANCommonInterfaceConfig:", 1, uuidvalue_wan},
+-	{"urn:schemas-upnp-org:service:WANIPConnection:", WANIPC_VER, uuidvalue_wcd},
+ #ifndef UPNP_STRICT
+ 	/* We use WAN IP Connection, not PPP connection,
+ 	 * but buggy control points may try to use WanPPPConnection
+@@ -498,9 +501,6 @@ static struct {
+ #ifdef ENABLE_L3F_SERVICE
+ 	{"urn:schemas-upnp-org:service:Layer3Forwarding:", 1, uuidvalue_igd},
+ #endif
+-#ifdef ENABLE_6FC_SERVICE
+-	{"url:schemas-upnp-org:service:WANIPv6FirewallControl:", 1, uuidvalue_wcd},
+-#endif
+ /* we might want to support urn:schemas-wifialliance-org:device:WFADevice:1
+  * urn:schemas-wifialliance-org:device:WFADevice:1
+  * in the future */
+diff --git a/miniupnpd/upnpsoap.c b/miniupnpd/upnpsoap.c
+index 07aa373..6ed0a9b 100644
+--- a/miniupnpd/upnpsoap.c
++++ b/miniupnpd/upnpsoap.c
+@@ -1126,7 +1126,11 @@ GetDefaultConnectionService(struct upnphttp * h, const char * action, const char
+ 	static const char resp[] =
+ 		"<u:%sResponse "
+ 		"xmlns:u=\"urn:schemas-upnp-org:service:Layer3Forwarding:1\">"
++#ifdef IGD_V2
++		"<NewDefaultConnectionService>%s:WANConnectionDevice:2,"
++#else
+ 		"<NewDefaultConnectionService>%s:WANConnectionDevice:1,"
++#endif
+ 		SERVICE_ID_WANIPC "</NewDefaultConnectionService>"
+ 		"</u:%sResponse>";
+ 	/* example from UPnP_IGD_Layer3Forwarding 1.0.pdf :
+-- 
+1.9.1
+
diff --git a/net-misc/miniupnpd/miniupnpd-1.11_pre20141209.ebuild b/net-misc/miniupnpd/miniupnpd-1.12_pre20141209.ebuild
similarity index 85%
rename from net-misc/miniupnpd/miniupnpd-1.11_pre20141209.ebuild
rename to net-misc/miniupnpd/miniupnpd-1.12_pre20141209.ebuild
index 93349ed..3cf97e1 100644
--- a/net-misc/miniupnpd/miniupnpd-1.11_pre20141209.ebuild
+++ b/net-misc/miniupnpd/miniupnpd-1.12_pre20141209.ebuild
@@ -16,7 +16,7 @@
 LICENSE="BSD"
 SLOT="0"
 KEYWORDS="*"
-IUSE="strict"
+IUSE="strict igdv2"
 
 RDEPEND=">=net-firewall/iptables-1.4.6
 	net-libs/libnfnetlink"
@@ -28,6 +28,9 @@
 
 src_prepare() {
 	epatch "${FILESDIR}"/${PN}-1.10-build.patch
+	if use igdv2; then
+		epatch "${FILESDIR}"/${PN}-1.10-UPSTREAM-advertise-correct-service-and-device-versions-when-I.patch
+	fi
 	mv Makefile.linux Makefile || die
 }
 
@@ -49,6 +52,12 @@
 			-e '/#define UPNP_STRICT/s:(/[*]|[*]/)::g' \
 			config.h || die
 	fi
+
+	if use igdv2; then
+		sed -i -r \
+			-e '/#define IGD_V2/s:(/[*]|[*]/)::g' \
+			config.h || die
+	fi
 }
 
 src_compile() {