Skip to content

Commit

Permalink
Merge remote-tracking branch 'upstream/master'
Browse files Browse the repository at this point in the history
  • Loading branch information
actions-user committed Jul 16, 2024
2 parents 9e42942 + 9d110c5 commit 72ac965
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 248 deletions.
7 changes: 3 additions & 4 deletions openwrt/patch/miniupnpd/01-set-presentation_url.patch
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
diff --git a/net/miniupnpd/files/miniupnpd.init b/net/miniupnpd/files/miniupnpd.init
index de35045..c5a14ab 100644
index de3504529..e89e4e55a 100644
--- a/net/miniupnpd/files/miniupnpd.init
+++ b/net/miniupnpd/files/miniupnpd.init
@@ -217,6 +217,9 @@ stop_service() {
@@ -217,6 +217,8 @@ stop_service() {
}

start_service() {
+ sed -i '/presentation_url/d' /etc/config/upnpd
+ sed -i "\/uuid/a\\\toption presentation_url 'http://$(uci -q get network.lan.ipaddr)/'" /etc/config/upnpd
+ uci set upnpd.config.presentation_url="http://$(uci -q get network.lan.ipaddr)/"
+ uci commit upnpd
config_load "upnpd"
config_foreach upnpd "upnpd"
Expand Down
82 changes: 29 additions & 53 deletions openwrt/patch/miniupnpd/02-force_forwarding.patch
Original file line number Diff line number Diff line change
Expand Up @@ -66,10 +66,10 @@ index bd7c3ec..b03d60a 100644
option download 1024
diff --git a/net/miniupnpd/patches/301-options-force_forwarding-support.patch b/net/miniupnpd/patches/301-options-force_forwarding-support.patch
new file mode 100644
index 0000000..927dad1
index 000000000..ecd4b34c4
--- /dev/null
+++ b/net/miniupnpd/patches/301-options-force_forwarding-support.patch
@@ -0,0 +1,209 @@
@@ -0,0 +1,185 @@
+From 09690d550a1ad3cc3a8cba79aa2e970c3b2b8fbe Mon Sep 17 00:00:00 2001
+From: Chen Minqiang <ptpt52@gmail.com>
+Date: Sun, 5 Jul 2020 10:42:52 +0800
Expand All @@ -93,20 +93,18 @@ index 0000000..927dad1
+ upnpsoap.c | 6 +++++-
+ 11 files changed, 26 insertions(+), 8 deletions(-)
+
+diff --git a/miniupnpd.c b/miniupnpd.c
+index f13dd8d..21ce4d3 100644
+--- a/miniupnpd.c
++++ b/miniupnpd.c
+@@ -1009,7 +1009,7 @@ parselanaddr(struct lan_addr_s * lan_addr, const char * str)
+ fprintf(stderr, "Error parsing address : %s\n", lan_addr->ext_ip_str);
+@@ -1010,7 +1010,7 @@ parselanaddr(struct lan_addr_s * lan_add
+ INIT_PRINT_ERR("Error parsing address : %s\n", lan_addr->ext_ip_str);
+ return -1;
+ }
+- if(addr_is_reserved(&lan_addr->ext_ip_addr)) {
++ if(addr_is_reserved(&lan_addr->ext_ip_addr) && !GETFLAG(FORCEFORWARDINGMASK)) {
+ /* error */
+ fprintf(stderr, "Error: option ext_ip address contains reserved / private address : %s\n", lan_addr->ext_ip_str);
+ INIT_PRINT_ERR("Error: option ext_ip address contains reserved / private address : %s\n", lan_addr->ext_ip_str);
+ return -1;
+@@ -1241,6 +1241,10 @@ init(int argc, char * * argv, struct runtime_vars * v)
+@@ -1252,6 +1252,10 @@ init(int argc, char * * argv, struct run
+ case UPNPEXT_IP:
+ use_ext_ip_addr = ary_options[i].value;
+ break;
Expand All @@ -117,51 +115,48 @@ index 0000000..927dad1
+ case UPNPEXT_PERFORM_STUN:
+ if(strcmp(ary_options[i].value, "yes") == 0)
+ SETFLAG(PERFORMSTUNMASK);
+@@ -1779,7 +1783,7 @@ init(int argc, char * * argv, struct runtime_vars * v)
+ fprintf(stderr, "Error: option ext_ip contains invalid address %s\n", use_ext_ip_addr);
+@@ -1859,7 +1863,7 @@ init(int argc, char * * argv, struct run
+ INIT_PRINT_ERR("Error: option ext_ip contains invalid address %s\n", use_ext_ip_addr);
+ return 1;
+ }
+- if (addr_is_reserved(&addr)) {
++ if (addr_is_reserved(&addr) && !GETFLAG(FORCEFORWARDINGMASK)) {
+ fprintf(stderr, "Error: option ext_ip contains reserved / private address %s, not public routable\n", use_ext_ip_addr);
+ INIT_PRINT_ERR("Error: option ext_ip contains reserved / private address %s, not public routable\n", use_ext_ip_addr);
+ return 1;
+ }
+@@ -2190,7 +2194,7 @@ main(int argc, char * * argv)
+ struct in_addr addr;
+@@ -2305,7 +2309,7 @@ main(int argc, char * * argv)
+ if (getifaddr(ext_if_name, if_addr, INET_ADDRSTRLEN, &addr, NULL) < 0) {
+ syslog(LOG_WARNING, "Cannot get IP address for ext interface %s. Network is down", ext_if_name);
+ disable_port_forwarding = 1;
+- } else if (addr_is_reserved(&addr)) {
++ } else if (addr_is_reserved(&addr) && !GETFLAG(FORCEFORWARDINGMASK)) {
+ syslog(LOG_INFO, "Reserved / private IP address %s on ext interface %s: Port forwarding is impossible", if_addr, ext_if_name);
+ syslog(LOG_INFO, "You are probably behind NAT, enable option ext_perform_stun=yes to detect public IP address");
+ syslog(LOG_INFO, "Or use ext_ip= / -o option to declare public IP address");
+@@ -2460,7 +2464,7 @@ main(int argc, char * * argv)
+ char if_addr[INET_ADDRSTRLEN];
+ struct in_addr addr;
+ if (getifaddr(ext_if_name, if_addr, INET_ADDRSTRLEN, &addr, NULL) == 0) {
+@@ -2596,7 +2600,7 @@ main(int argc, char * * argv)
+ syslog(LOG_WARNING, "Cannot get IP address for ext interface %s. Network is down", ext_if_name);
+ disable_port_forwarding = 1;
+ } else {
+- int reserved = addr_is_reserved(&addr);
++ int reserved = addr_is_reserved(&addr) && !GETFLAG(FORCEFORWARDINGMASK);
+ if (disable_port_forwarding && !reserved) {
+ syslog(LOG_INFO, "Public IP address %s on ext interface %s: Port forwarding is enabled", if_addr, ext_if_name);
+ } else if (!disable_port_forwarding && reserved) {
+diff --git a/miniupnpd.conf b/miniupnpd.conf
+index 6355532..68a1fda 100644
+ if (!disable_port_forwarding && reserved) {
+ syslog(LOG_INFO, "Reserved / private IP address %s on ext interface %s: Port forwarding is impossible", if_addr, ext_if_name);
+ syslog(LOG_INFO, "You are probably behind NAT, enable option ext_perform_stun=yes to detect public IP address");
+--- a/miniupnpd.conf
++++ b/miniupnpd.conf
+@@ -9,6 +9,8 @@
+ # Setting ext_ip is also useful in double NAT setup, you can declare here
+@@ -12,6 +12,9 @@
+ # the public IP address.
+ #ext_ip=
++#force forwarding enable for upnp: default is no
+
++# force forwarding enable for upnp: default is no
++#force_forwarding=yes
++
+ # WAN interface must have public IP address. Otherwise it is behind NAT
+ # and port forwarding is impossible. In some cases WAN interface can be
+ # behind unrestricted full-cone NAT 1:1 when all incoming traffic is NAT-ed and
+diff --git a/natpmp.c b/natpmp.c
+index 14690a6..e3acce1 100644
+--- a/natpmp.c
++++ b/natpmp.c
+@@ -108,7 +108,7 @@ static void FillPublicAddressResponse(unsigned char * resp, in_addr_t senderaddr
+@@ -109,7 +109,7 @@ static void FillPublicAddressResponse(un
+ syslog(LOG_ERR, "Failed to get IP for interface %s", ext_if_name);
+ resp[3] = 3; /* Network Failure (e.g. NAT box itself
+ * has not obtained a DHCP lease) */
Expand All @@ -170,20 +165,16 @@ index 0000000..927dad1
+ resp[3] = 3; /* Network Failure, box has not obtained
+ public IP address */
+ } else {
+diff --git a/options.c b/options.c
+index 05fa317..9ff0502 100644
+--- a/options.c
++++ b/options.c
+@@ -34,6 +34,7 @@ static const struct {
+@@ -35,6 +35,7 @@ static const struct {
+ { UPNPEXT_IFNAME6, "ext_ifname6" },
+ #endif
+ { UPNPEXT_IP, "ext_ip" },
++ { UPNP_FORCE_FORWARDING, "force_forwarding" },
+ { UPNPEXT_PERFORM_STUN, "ext_perform_stun" },
+ { UPNPEXT_STUN_HOST, "ext_stun_host" },
+ { UPNPEXT_STUN_PORT, "ext_stun_port" },
+diff --git a/options.h b/options.h
+index 96cdbbf..f9cf201 100644
+--- a/options.h
++++ b/options.h
+@@ -21,6 +21,7 @@ enum upnpconfigoptions {
Expand All @@ -194,8 +185,6 @@ index 0000000..927dad1
+ UPNPEXT_PERFORM_STUN, /* ext_perform_stun */
+ UPNPEXT_STUN_HOST, /* ext_stun_host */
+ UPNPEXT_STUN_PORT, /* ext_stun_port */
+diff --git a/testgetifaddr.c b/testgetifaddr.c
+index 8045b89..b5cdbb4 100644
+--- a/testgetifaddr.c
++++ b/testgetifaddr.c
+@@ -13,6 +13,8 @@
Expand All @@ -207,8 +196,6 @@ index 0000000..927dad1
+ #if defined(__sun)
+ /* solaris 10 does not define LOG_PERROR */
+ #define LOG_PERROR 0
+diff --git a/testportinuse.c b/testportinuse.c
+index 98574c6..507f830 100644
+--- a/testportinuse.c
++++ b/testportinuse.c
+@@ -14,6 +14,8 @@
Expand All @@ -220,11 +207,9 @@ index 0000000..927dad1
+ int main(int argc, char * * argv)
+ {
+ #ifndef CHECK_PORTINUSE
+diff --git a/upnpdescgen.c b/upnpdescgen.c
+index 46110f2..3a86c09 100644
+--- a/upnpdescgen.c
++++ b/upnpdescgen.c
+@@ -1290,7 +1290,7 @@ genEventVars(int * len, const struct serviceDesc * s)
+@@ -1316,7 +1316,7 @@ genEventVars(int * len, const struct ser
+ else {
+ struct in_addr addr;
+ char ext_ip_addr[INET_ADDRSTRLEN];
Expand All @@ -233,11 +218,9 @@ index 0000000..927dad1
+ str = strcat_str(str, len, &tmplen, "0.0.0.0");
+ } else {
+ str = strcat_str(str, len, &tmplen, ext_ip_addr);
+diff --git a/upnpglobalvars.h b/upnpglobalvars.h
+index a474353..a36f515 100644
+--- a/upnpglobalvars.h
++++ b/upnpglobalvars.h
+@@ -84,6 +84,8 @@ extern int runtime_flags;
+@@ -87,6 +87,8 @@ extern int runtime_flags;
+
+ #define PERFORMSTUNMASK 0x1000
+
Expand All @@ -246,11 +229,9 @@ index 0000000..927dad1
+ #define SETFLAG(mask) runtime_flags |= mask
+ #define GETFLAG(mask) (runtime_flags & mask)
+ #define CLEARFLAG(mask) runtime_flags &= ~mask
+diff --git a/upnpredirect.c b/upnpredirect.c
+index 07fa229..c9fc7ac 100644
+--- a/upnpredirect.c
++++ b/upnpredirect.c
+@@ -444,7 +444,7 @@ upnp_redirect_internal(const char * rhost, unsigned short eport,
+@@ -444,7 +444,7 @@ upnp_redirect_internal(const char * rhos
+ {
+ /*syslog(LOG_INFO, "redirecting port %hu to %s:%hu protocol %s for: %s",
+ eport, iaddr, iport, protocol, desc); */
Expand All @@ -259,11 +240,9 @@ index 0000000..927dad1
+ return -1;
+ if(add_redirect_rule2(ext_if_name, rhost, eport, iaddr, iport, proto,
+ desc, timestamp) < 0) {
+diff --git a/upnpsoap.c b/upnpsoap.c
+index fb4b70e..932df62 100644
+--- a/upnpsoap.c
++++ b/upnpsoap.c
+@@ -348,7 +348,11 @@ GetExternalIPAddress(struct upnphttp * h, const char * action, const char * ns)
+@@ -348,7 +348,11 @@ GetExternalIPAddress(struct upnphttp * h
+ ext_ip_addr[0] = '\0';
+ } else if (addr_is_reserved(&addr)) {
+ syslog(LOG_NOTICE, "private/reserved address %s is not suitable for external IP", ext_ip_addr);
Expand All @@ -276,9 +255,6 @@ index 0000000..927dad1
+ }
+ }
+ #else
+--
+2.17.1
+
--
2.34.8
2.39.3

Loading

0 comments on commit 72ac965

Please sign in to comment.