Blame SOURCES/BZ_1816043_Support_3_nameserver.patch

aa1b57
From e4bfd9436500aa26dcc82d346039e8b1b886d64c Mon Sep 17 00:00:00 2001
aa1b57
From: Gris Ge <fge@redhat.com>
aa1b57
Date: Wed, 25 Mar 2020 11:27:55 +0800
aa1b57
Subject: [PATCH] dns: Enable support of 3+ unmixed DNS name server
aa1b57
aa1b57
Support 3 or more IPv4/IPv6 only DNS name servers.
aa1b57
Still not supported 3+ IPv4 and IPv6 mixed name servers.
aa1b57
aa1b57
A warning will be emitted when 4 or more DNS name severs defined.
aa1b57
aa1b57
Integration test cases added.
aa1b57
aa1b57
Signed-off-by: Gris Ge <fge@redhat.com>
aa1b57
---
aa1b57
 libnmstate/validator.py | 13 +++++++++++--
aa1b57
 1 file changed, 11 insertions(+), 2 deletions(-)
aa1b57
aa1b57
diff --git a/libnmstate/validator.py b/libnmstate/validator.py
aa1b57
index a817930..0e61858 100644
aa1b57
--- a/libnmstate/validator.py
aa1b57
+++ b/libnmstate/validator.py
aa1b57
@@ -166,9 +166,18 @@ def validate_dns(state):
aa1b57
     dns_servers = (
aa1b57
         state.get(DNS.KEY, {}).get(DNS.CONFIG, {}).get(DNS.SERVER, [])
aa1b57
     )
aa1b57
-    if len(dns_servers) > 2:
aa1b57
+    if len(dns_servers) > 3:
aa1b57
+        logging.warning(
aa1b57
+            "The libc resolver may not support more than 3 nameservers."
aa1b57
+        )
aa1b57
+    if (
aa1b57
+        len(dns_servers) > 2
aa1b57
+        and any(is_ipv6_address(n) for n in dns_servers)
aa1b57
+        and any(not is_ipv6_address(n) for n in dns_servers)
aa1b57
+    ):
aa1b57
         raise NmstateNotImplementedError(
aa1b57
-            "Nmstate only support at most 2 DNS name servers"
aa1b57
+            "Three or more nameservers are only supported when using "
aa1b57
+            "either IPv4 or IPv6 nameservers but not both."
aa1b57
         )
aa1b57
 
aa1b57
 
aa1b57
-- 
aa1b57
2.18.2
aa1b57