Introduce a test for a sw implementation of inet_pton

Create a bypass define to simulate platforms
without AF_INET6.
Signed-off-by: Andrzej Kurek <andrzej.kurek@arm.com>
diff --git a/library/x509_crt.c b/library/x509_crt.c
index 791fad1..58f7cc0 100644
--- a/library/x509_crt.c
+++ b/library/x509_crt.c
@@ -2558,10 +2558,11 @@
  * dependencies, and Solaris requires additional link dependencies.
  * Also, as a coarse heuristic, use the local implementation if the compiler
  * does not support __has_include(), or if the definition of AF_INET6 is not
- * provided by headers included (or not) via __has_include() above. */
-#ifndef AF_INET6
-
-/* definition located further below to possibly reduce compiler inlining */
+ * provided by headers included (or not) via __has_include() above.
+ * MBEDTLS_TEST_SW_INET_PTON is a bypass define to force testing of this code //no-check-names
+ * despite having a platform that has inet_pton. */
+#if !defined(AF_INET6) || defined(MBEDTLS_TEST_SW_INET_PTON) //no-check-names
+/* Definition located further below to possibly reduce compiler inlining */
 static int x509_inet_pton_ipv4(const char *src, void *dst);
 
 #define li_cton(c, n) \
@@ -2654,7 +2655,7 @@
     return inet_pton(AF_INET, src, dst) == 1 ? 0 : -1;
 }
 
-#endif /* AF_INET6 */
+#endif /* !AF_INET6 || MBEDTLS_TEST_SW_INET_PTON */ //no-check-names
 
 MBEDTLS_STATIC_TESTABLE
 size_t mbedtls_x509_crt_parse_cn_inet_pton(const char *cn, void *dst)
diff --git a/tests/scripts/all.sh b/tests/scripts/all.sh
index 465f9bb..3a0eb78 100755
--- a/tests/scripts/all.sh
+++ b/tests/scripts/all.sh
@@ -1219,6 +1219,17 @@
     tests/ssl-opt.sh -f 'Default\|opaque'
 }
 
+component_test_sw_inet_pton () {
+    msg "build: default plus MBEDTLS_TEST_SW_INET_PTON"
+
+    # MBEDTLS_TEST_HOOKS required for x509_crt_parse_cn_inet_pton
+    scripts/config.py set MBEDTLS_TEST_HOOKS
+    make CFLAGS="-DMBEDTLS_TEST_SW_INET_PTON"
+
+    msg "test: default plus MBEDTLS_TEST_SW_INET_PTON"
+    make test
+}
+
 component_test_crypto_full_md_light_only () {
     msg "build: crypto_full with only the light subset of MD"
     scripts/config.py crypto_full