From 0cba786b6f7127ef9aabb5ec30715275bb070a91 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Blin?=
 <sebastien.blin@savoirfairelinux.com>
Date: Mon, 3 May 2021 15:37:44 -0400
Subject: [PATCH] pjproject: ignore 192.0.0.0/29

From https://datatracker.ietf.org/doc/html/rfc7335#section-4
 " As defined in [RFC6333], this subnet
   is only present between the B4 and the Address Family Transition
   Router (AFTR) and never emits packets from this prefix "on the wire".
   464XLAT has the same need for a non-routed IPv4 prefix, and this same
   need may be common for other similar solutions"

Meaning that this candidate can be ignored. This is the second part of:

GitLab: #539
Change-Id: I52a906bc4ae5a1b1062cf6fe21dec216329c1d14
---
 .../0020-ignore-addresses-for-RFC7335.patch   | 55 +++++++++++++++++++
 contrib/src/pjproject/package.json            |  2 +
 contrib/src/pjproject/rules.mak               |  1 +
 3 files changed, 58 insertions(+)
 create mode 100644 contrib/src/pjproject/0020-ignore-addresses-for-RFC7335.patch

diff --git a/contrib/src/pjproject/0020-ignore-addresses-for-RFC7335.patch b/contrib/src/pjproject/0020-ignore-addresses-for-RFC7335.patch
new file mode 100644
index 0000000000..8f0d5d88a6
--- /dev/null
+++ b/contrib/src/pjproject/0020-ignore-addresses-for-RFC7335.patch
@@ -0,0 +1,55 @@
+diff --git a/pjlib/src/pj/ip_helper_generic.c b/pjlib/src/pj/ip_helper_generic.c
+index d7bbf725e..3d64146df 100644
+--- a/pjlib/src/pj/ip_helper_generic.c
++++ b/pjlib/src/pj/ip_helper_generic.c
+@@ -116,6 +116,16 @@ static pj_status_t if_enum_by_af(int af,
+ 	    continue; /* Skip when interface is down */
+ 	}
+ 
++	/* Ignore 192.0.0.0/29 address. cf https://datatracker.ietf.org/doc/html/rfc7335#section-4
++	 */
++	if (af==pj_AF_INET() &&
++	    (pj_ntohl(((pj_sockaddr_in*)ad)->sin_addr.s_addr) >> 4) == 201326592 /* 0b1100000000000000000000000000 which is 192.0.0.0 >> 4 */)
++	{
++	    TRACE_((THIS_FILE, "  address %s ignored (192.0.0.0/29 class)",
++		    get_addr(ad), ad->sa_family));
++	    continue;
++	}
++
+ 	/* Ignore 0.0.0.0/8 address. This is a special address
+ 	 * which doesn't seem to have practical use.
+ 	 */
+@@ -215,6 +225,16 @@ static pj_status_t if_enum_by_af(int af,
+ 	}
+ #endif
+ 
++	/* Ignore 192.0.0.0/29 address. cf https://datatracker.ietf.org/doc/html/rfc7335#section-4
++	 */
++	if (af==pj_AF_INET() &&
++	    (pj_ntohl(((pj_sockaddr_in*)ad)->sin_addr.s_addr) >> 4) == 201326592 /* 0b1100000000000000000000000000 which is 192.0.0.0 >> 4 */)
++	{
++	    TRACE_((THIS_FILE, "  address %s ignored (192.0.0.0/29 class)",
++		    get_addr(ad), ad->sa_family));
++	    continue;
++	}
++
+ 	/* Ignore 0.0.0.0/8 address. This is a special address
+ 	 * which doesn't seem to have practical use.
+ 	 */
+@@ -309,6 +329,16 @@ static pj_status_t if_enum_by_af(int af, unsigned *p_cnt, pj_sockaddr ifs[])
+ 	    continue;	/* Not address family that we want, continue */
+ 	}
+ 
++	/* Ignore 192.0.0.0/29 address. cf https://datatracker.ietf.org/doc/html/rfc7335#section-4
++	 */
++	if (af==pj_AF_INET() &&
++	    (pj_ntohl(((pj_sockaddr_in*)ad)->sin_addr.s_addr) >> 4) == 201326592 /* 0b1100000000000000000000000000 which is 192.0.0.0 >> 4 */)
++	{
++	    TRACE_((THIS_FILE, "  address %s ignored (192.0.0.0/29 class)",
++		    get_addr(ad), ad->sa_family));
++	    continue;
++	}
++
+ 	/* Ignore 0.0.0.0/8 address. This is a special address
+ 	 * which doesn't seem to have practical use.
+ 	 */
diff --git a/contrib/src/pjproject/package.json b/contrib/src/pjproject/package.json
index fe6585f405..5595550948 100644
--- a/contrib/src/pjproject/package.json
+++ b/contrib/src/pjproject/package.json
@@ -21,6 +21,8 @@
         "0016-use-addrinfo-instead-CFHOST.patch",
         "0017-CVE-2020-15260.patch",
         "0018-CVE-2021-21375.patch",
+        "0019-ignore-down-interfaces.patch",
+        "0020-ignore-addresses-for-RFC7335.patch",
         "0001-win-config.patch",
         "0002-win-vs-gnutls.patch",
         "0003-win-vs2017-props.patch"
diff --git a/contrib/src/pjproject/rules.mak b/contrib/src/pjproject/rules.mak
index b1c273450d..7b2aa213ce 100644
--- a/contrib/src/pjproject/rules.mak
+++ b/contrib/src/pjproject/rules.mak
@@ -64,6 +64,7 @@ pjproject: pjproject-$(PJPROJECT_VERSION).tar.gz .sum-pjproject
 	$(APPLY) $(SRC)/pjproject/0017-CVE-2020-15260.patch
 	$(APPLY) $(SRC)/pjproject/0018-CVE-2021-21375.patch
 	$(APPLY) $(SRC)/pjproject/0019-ignore-down-interfaces.patch
+	$(APPLY) $(SRC)/pjproject/0020-ignore-addresses-for-RFC7335.patch
 ifdef HAVE_ANDROID
 	$(APPLY) $(SRC)/pjproject/0001-android.patch
 endif
-- 
GitLab