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