瀏覽代碼

dns_conf: add -enable-cache for domain-rules

Nick Peng 1 年之前
父節點
當前提交
422f98256e
共有 3 個文件被更改,包括 19 次插入0 次删除
  1. 14 0
      src/dns_conf.c
  2. 1 0
      src/dns_conf.h
  3. 4 0
      src/dns_server.c

+ 14 - 0
src/dns_conf.c

@@ -4393,6 +4393,11 @@ static int _conf_domain_rule_no_cache(const char *domain)
 	return _config_domain_rule_flag_set(domain, DOMAIN_FLAG_NO_CACHE, 0);
 }
 
+static int _conf_domain_rule_enable_cache(const char *domain)
+{
+	return _config_domain_rule_flag_set(domain, DOMAIN_FLAG_ENABLE_CACHE, 0);
+}
+
 static int _conf_domain_rule_no_ipalias(const char *domain)
 {
 	return _config_domain_rule_flag_set(domain, DOMAIN_FLAG_NO_IPALIAS, 0);
@@ -4427,6 +4432,7 @@ static int _conf_domain_rules(void *data, int argc, char *argv[])
 		{"delete", no_argument, NULL, 255},
 		{"no-cache", no_argument, NULL, 256},
 		{"no-ip-alias", no_argument, NULL, 257},
+		{"enable-cache", no_argument, NULL, 258},
 		{NULL, no_argument, NULL, 0}
 	};
 	/* clang-format on */
@@ -4616,6 +4622,14 @@ static int _conf_domain_rules(void *data, int argc, char *argv[])
 
 			break;
 		}
+		case 258: {
+			if (_conf_domain_rule_enable_cache(domain) != 0) {
+				tlog(TLOG_ERROR, "set enable-cache rule failed.");
+				goto errout;
+			}
+
+			break;
+		}
 		default:
 			tlog(TLOG_WARN, "unknown domain-rules option: %s at '%s:%d'.", argv[optind - 1], conf_get_conf_file(),
 				 conf_get_current_lineno());

+ 1 - 0
src/dns_conf.h

@@ -135,6 +135,7 @@ typedef enum {
 #define DOMAIN_FLAG_NO_CACHE (1 << 17)
 #define DOMAIN_FLAG_NO_IPALIAS (1 << 18)
 #define DOMAIN_FLAG_GROUP_IGNORE (1 << 19)
+#define DOMAIN_FLAG_ENABLE_CACHE (1 << 20)
 
 #define IP_RULE_FLAG_BLACKLIST (1 << 0)
 #define IP_RULE_FLAG_WHITELIST (1 << 1)

+ 4 - 0
src/dns_server.c

@@ -4792,6 +4792,10 @@ static int _dns_server_pre_process_rule_flags(struct dns_request *request)
 		request->no_cache = 1;
 	}
 
+	if (flags & DOMAIN_FLAG_ENABLE_CACHE) {
+		request->no_cache = 0;
+	}
+
 	if (flags & DOMAIN_FLAG_NO_IPALIAS) {
 		request->no_ipalias = 1;
 	}