From d45be55a67f8b6f0eea9cf4f1845cd1433353015 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fran=C3=A7ois=20De=20Keersmaeker?=
 <francois.dekeersmaeker@uclouvain.be>
Date: Fri, 29 Nov 2024 10:30:27 +0100
Subject: [PATCH] Support for DNS subdomains

---
 profile_translator_blocklist/protocols               | 2 +-
 profile_translator_blocklist/templates/callback.c.j2 | 3 ++-
 profile_translator_blocklist/templates/main.c.j2     | 5 +++--
 3 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/profile_translator_blocklist/protocols b/profile_translator_blocklist/protocols
index 9f79c30..5cf2ab5 160000
--- a/profile_translator_blocklist/protocols
+++ b/profile_translator_blocklist/protocols
@@ -1 +1 @@
-Subproject commit 9f79c30e33e8e2625c274c90482fddf259685b76
+Subproject commit 5cf2ab501e6fba18273a5dd4e337b1416bf88bc9
diff --git a/profile_translator_blocklist/templates/callback.c.j2 b/profile_translator_blocklist/templates/callback.c.j2
index 9fd9781..4ad54f5 100644
--- a/profile_translator_blocklist/templates/callback.c.j2
+++ b/profile_translator_blocklist/templates/callback.c.j2
@@ -215,6 +215,7 @@ uint32_t callback_{{nfqueue_name}}(int pkt_id, int pkt_len, uint8_t *payload, vo
         {% if "domain_name" in nfq_match["template"] %}
         {% set domain_name = nfq_match["match"] %}
         domain_name = "{{domain_name}}";
+        subdomain = "{{domain_name.split('.', 1)[1]}}";
         ip_list = dns_get_ip_from_name(dns_message.answers, dns_message.header.ancount, domain_name);
         {% endif %}
         {% endif %}
@@ -225,7 +226,7 @@ uint32_t callback_{{nfqueue_name}}(int pkt_id, int pkt_len, uint8_t *payload, vo
         {% if is_dns_response.value %}
         if (ip_list.ip_count > 0) {
             // Add IP addresses to DNS map
-            dns_map_add(dns_map, domain_name, ip_list);
+            dns_map_add(dns_map, subdomain, ip_list);
         }
         {% endif %}
 
diff --git a/profile_translator_blocklist/templates/main.c.j2 b/profile_translator_blocklist/templates/main.c.j2
index 83d9167..1ce5511 100644
--- a/profile_translator_blocklist/templates/main.c.j2
+++ b/profile_translator_blocklist/templates/main.c.j2
@@ -115,10 +115,11 @@ int main(int argc, char *argv[]) {
         ret = dns_receive_response(sockfd, &server_addr, &dns_response);
         if (ret == 0) {
             ip_list = dns_get_ip_from_name(dns_response.answers, dns_response.header.ancount, "{{name}}");
-            dns_map_add(dns_map, "{{name}}", ip_list);
+            {% set subdomain = name.split(".", 1)[1] %}
+            dns_map_add(dns_map, "{{subdomain}}", ip_list);
             #ifdef DEBUG
             // Check DNS map has been correctly updated
-            dns_entry = dns_map_get(dns_map, "{{name}}");
+            dns_entry = dns_map_get(dns_map, "{{subdomain}}");
             dns_entry_print(dns_entry);
             #endif /* DEBUG */
         }
-- 
GitLab