diff --git a/doc/protocols.rst b/doc/protocols.rst
index 468489acfee..f24897975a7 100644
--- a/doc/protocols.rst
+++ b/doc/protocols.rst
@@ -90,3 +90,13 @@ References: `Main site `_.
Notes:
- Since Roblox games use a custom version of the RakNet protocol, some Roblox flows might be classified as RakNet.
+
+
+.. _Proto 347:
+
+`NDPI_PROTOCOL_MULLVAD`
+========================
+Mullvad is a VPN service operated by Mullvad VPN AB, based in Sweden
+
+References: `Main site https://mullvad.net/`
+
diff --git a/src/include/ndpi_protocol_ids.h b/src/include/ndpi_protocol_ids.h
index 099127dffee..69c76485be8 100644
--- a/src/include/ndpi_protocol_ids.h
+++ b/src/include/ndpi_protocol_ids.h
@@ -375,6 +375,7 @@ typedef enum {
NDPI_PROTOCOL_PROTONVPN = 344,
NDPI_PROTOCOL_APACHE_THRIFT = 345,
NDPI_PROTOCOL_ROBLOX = 346,
+ NDPI_PROTOCOL_MULLVAD = 347,
#ifdef CUSTOM_NDPI_PROTOCOLS
#include "../../../nDPI-custom/custom_ndpi_protocol_ids.h"
diff --git a/src/include/ndpi_typedefs.h b/src/include/ndpi_typedefs.h
index f56fdab8fb2..4857243b7b4 100644
--- a/src/include/ndpi_typedefs.h
+++ b/src/include/ndpi_typedefs.h
@@ -1762,6 +1762,7 @@ typedef enum {
See: https://www.usenix.org/system/files/sec23fall-prepub-234-wu-mingshi.pdf */
ndpi_disable_fully_encrypted_heuristic = (1 << 21),
ndpi_dont_load_protonvpn_exit_nodes_list = (1 << 22),
+ ndpi_dont_load_mullvad_list = (1 << 23),
} ndpi_prefs;
typedef struct {
diff --git a/src/lib/inc_generated/ndpi_mullvad_match.c.inc b/src/lib/inc_generated/ndpi_mullvad_match.c.inc
new file mode 100644
index 00000000000..0183371c14e
--- /dev/null
+++ b/src/lib/inc_generated/ndpi_mullvad_match.c.inc
@@ -0,0 +1,567 @@
+/*
+ *
+ * This file is generated automatically and part of nDPI
+ *
+ * nDPI is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * nDPI is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with nDPI. If not, see .
+ *
+ */
+
+/* ****************************************************** */
+
+
+static ndpi_network ndpi_protocol_mullvad_protocol_list[] = {
+ { 0x05FDCEC2 /* 5.253.206.194/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x1FAA1602 /* 31.170.22.2/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x1FAA160F /* 31.170.22.15/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x1FAB9942 /* 31.171.153.66/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x1FAB9A32 /* 31.171.154.50/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x2513C882 /* 37.19.200.130/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x2513C88F /* 37.19.200.143/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x2513C89C /* 37.19.200.156/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x2513D201 /* 37.19.210.1/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x2513D20E /* 37.19.210.14/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x2513D21B /* 37.19.210.27/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x2513DD82 /* 37.19.221.130/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x2513DD8F /* 37.19.221.143/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x2513DD9C /* 37.19.221.156/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x2513DDA9 /* 37.19.221.169/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x2578C952 /* 37.120.201.82/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x2578C972 /* 37.120.201.114/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x2578DAAA /* 37.120.218.170/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x2578ED42 /* 37.120.237.66/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x2578F682 /* 37.120.246.130/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x26847992 /* 38.132.121.146/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x26F0E124 /* 38.240.225.36/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x26F0E144 /* 38.240.225.68/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x26F0E224 /* 38.240.226.36/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x26F0E244 /* 38.240.226.68/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x26F0E264 /* 38.240.226.100/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x26F0E284 /* 38.240.226.132/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x2D08DFC3 /* 45.8.223.195/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x2D08DFD2 /* 45.8.223.210/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x2D08DFE1 /* 45.8.223.225/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x2D08DFF0 /* 45.8.223.240/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x2D09F922 /* 45.9.249.34/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x2D53DC44 /* 45.83.220.68/31 */, 31, NDPI_PROTOCOL_MULLVAD },
+ { 0x2D53DC46 /* 45.83.220.70/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x2D53DC5C /* 45.83.220.92/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x2D53DC75 /* 45.83.220.117/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x2D8026E2 /* 45.128.38.226/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x2D813843 /* 45.129.56.67/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x2D813844 /* 45.129.56.68/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x2D813851 /* 45.129.56.81/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x2D85B6C2 /* 45.133.182.194/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x2D868C82 /* 45.134.140.130/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x2D868C8F /* 45.134.140.143/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x2D868C9C /* 45.134.140.156/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x2D868CA9 /* 45.134.140.169/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x2D868EC1 /* 45.134.142.193/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x2D868ECE /* 45.134.142.206/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x2D868EDB /* 45.134.142.219/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x2D86D442 /* 45.134.212.66/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x2D86D44F /* 45.134.212.79/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x2D86D45C /* 45.134.212.92/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x2D86D5C2 /* 45.134.213.194/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x2D86D5CF /* 45.134.213.207/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x2E1388E2 /* 46.19.136.226/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x3E852CCA /* 62.133.44.202/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x423FA772 /* 66.63.167.114/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x423FA792 /* 66.63.167.146/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x423FA7C2 /* 66.63.167.194/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x4273A5D3 /* 66.115.165.211/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x4273A5D4 /* 66.115.165.212/30 */, 30, NDPI_PROTOCOL_MULLVAD },
+ { 0x4273A5D8 /* 66.115.165.216/31 */, 31, NDPI_PROTOCOL_MULLVAD },
+ { 0x4273A5DA /* 66.115.165.218/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x4273B4E2 /* 66.115.180.226/31 */, 31, NDPI_PROTOCOL_MULLVAD },
+ { 0x4273B4E4 /* 66.115.180.228/30 */, 30, NDPI_PROTOCOL_MULLVAD },
+ { 0x4273B4E8 /* 66.115.180.232/30 */, 30, NDPI_PROTOCOL_MULLVAD },
+ { 0x4273B4EC /* 66.115.180.236/31 */, 31, NDPI_PROTOCOL_MULLVAD },
+ { 0x4273B4EE /* 66.115.180.238/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x4273B4F0 /* 66.115.180.240/31 */, 31, NDPI_PROTOCOL_MULLVAD },
+ { 0x44EB2B22 /* 68.235.43.34/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x44EB2B42 /* 68.235.43.66/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x44EB2B62 /* 68.235.43.98/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x44EB2B82 /* 68.235.43.130/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x44EB2BA2 /* 68.235.43.162/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x44EB2C02 /* 68.235.44.2/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x44EB2C22 /* 68.235.44.34/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x44EB2C42 /* 68.235.44.66/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x44EB2C62 /* 68.235.44.98/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x44EB2C82 /* 68.235.44.130/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x4504EA84 /* 69.4.234.132/30 */, 30, NDPI_PROTOCOL_MULLVAD },
+ { 0x4504EA88 /* 69.4.234.136/29 */, 29, NDPI_PROTOCOL_MULLVAD },
+ { 0x4504EA90 /* 69.4.234.144/30 */, 30, NDPI_PROTOCOL_MULLVAD },
+ { 0x51111042 /* 81.17.16.66/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x52661342 /* 82.102.19.66/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x52678CD5 /* 82.103.140.213/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x57F98601 /* 87.249.134.1/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x57F9860E /* 87.249.134.14/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x57F9861B /* 87.249.134.27/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x5928B692 /* 89.40.182.146/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x5928B6D2 /* 89.40.182.210/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x592D0632 /* 89.45.6.50/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x592D0652 /* 89.45.6.82/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x592D0662 /* 89.45.6.98/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x592D0672 /* 89.45.6.114/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x59EE863A /* 89.238.134.58/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x5B5A2C0A /* 91.90.44.10/31 */, 31, NDPI_PROTOCOL_MULLVAD },
+ { 0x5B5A2C0C /* 91.90.44.12/30 */, 30, NDPI_PROTOCOL_MULLVAD },
+ { 0x5B5A2C10 /* 91.90.44.16/31 */, 31, NDPI_PROTOCOL_MULLVAD },
+ { 0x5B5A2C12 /* 91.90.44.18/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x5B5A7B02 /* 91.90.123.2/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x5BC104D2 /* 91.193.4.210/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x5BC10502 /* 91.193.5.2/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x5BC10512 /* 91.193.5.18/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x5BC10522 /* 91.193.5.34/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x5BCF3982 /* 91.207.57.130/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x5C3C28C2 /* 92.60.40.194/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x5C3C28D1 /* 92.60.40.209/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x5C3C28E0 /* 92.60.40.224/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x5C3C28EF /* 92.60.40.239/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x5CDF59A0 /* 92.223.89.160/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x5CDF59A5 /* 92.223.89.165/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x5CDF59B5 /* 92.223.89.181/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x5CDF59B6 /* 92.223.89.182/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x5E2E1821 /* 94.46.24.33/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x5E2E1831 /* 94.46.24.49/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x602CBD62 /* 96.44.189.98/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x602CBF82 /* 96.44.191.130/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x602CBF92 /* 96.44.191.146/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x674B0B32 /* 103.75.11.50/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x674B0B42 /* 103.75.11.66/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x674B0B52 /* 103.75.11.82/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x674B0B62 /* 103.75.11.98/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x676CE532 /* 103.108.229.50/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x676CE542 /* 103.108.229.66/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x676CE552 /* 103.108.229.82/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x676CE562 /* 103.108.229.98/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x676CE732 /* 103.108.231.50/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x676CE742 /* 103.108.231.66/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x676CE752 /* 103.108.231.82/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x676CE762 /* 103.108.231.98/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x677DE903 /* 103.125.233.3/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x677DE912 /* 103.125.233.18/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x677DE921 /* 103.125.233.33/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x677DE930 /* 103.125.233.48/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x67D61432 /* 103.214.20.50/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x67D61482 /* 103.214.20.130/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x67D61492 /* 103.214.20.146/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x67D614A2 /* 103.214.20.162/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x67D8DC12 /* 103.216.220.18/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x67D8DC22 /* 103.216.220.34/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x67D8DC32 /* 103.216.220.50/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x67D8DC42 /* 103.216.220.66/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x68811862 /* 104.129.24.98/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x68811872 /* 104.129.24.114/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x688129C2 /* 104.129.41.194/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x68813942 /* 104.129.57.66/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x68DF5B12 /* 104.223.91.18/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x68DF7622 /* 104.223.118.34/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x6B961602 /* 107.150.22.2/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x8AC706C2 /* 138.199.6.194/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x8AC706CF /* 138.199.6.207/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x8AC706DC /* 138.199.6.220/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x8AC706E9 /* 138.199.6.233/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x8AC70F92 /* 138.199.15.146/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x8AC70FA2 /* 138.199.15.162/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x8AC715E2 /* 138.199.21.226/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x8AC715EF /* 138.199.21.239/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x8AC72281 /* 138.199.34.129/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x8AC7228F /* 138.199.34.143/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x8AC72B41 /* 138.199.43.65/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x8AC72B4E /* 138.199.43.78/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x8AC72B5B /* 138.199.43.91/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x8AC73C02 /* 138.199.60.2/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x8AC73C0F /* 138.199.60.15/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x8AC73C1C /* 138.199.60.28/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x8D62FC42 /* 141.98.252.66/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x8D62FC82 /* 141.98.252.130/31 */, 31, NDPI_PROTOCOL_MULLVAD },
+ { 0x8D62FC84 /* 141.98.252.132/31 */, 31, NDPI_PROTOCOL_MULLVAD },
+ { 0x8D62FC8A /* 141.98.252.138/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x8D62FCDE /* 141.98.252.222/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x8D62FE47 /* 141.98.254.71/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x8D62FF53 /* 141.98.255.83/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x8D62FF54 /* 141.98.255.84/30 */, 30, NDPI_PROTOCOL_MULLVAD },
+ { 0x8D62FF58 /* 141.98.255.88/30 */, 30, NDPI_PROTOCOL_MULLVAD },
+ { 0x8D62FF5C /* 141.98.255.92/31 */, 31, NDPI_PROTOCOL_MULLVAD },
+ { 0x8E9359C3 /* 142.147.89.195/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x8E9359D2 /* 142.147.89.210/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x8E9359E1 /* 142.147.89.225/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x8FF42F41 /* 143.244.47.65/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x8FF42F4E /* 143.244.47.78/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x8FF42F5B /* 143.244.47.91/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x92464A62 /* 146.70.74.98/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x92466BC2 /* 146.70.107.194/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x92467462 /* 146.70.116.98/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x92467482 /* 146.70.116.130/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x924674A2 /* 146.70.116.162/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x924674C2 /* 146.70.116.194/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x924674E2 /* 146.70.116.226/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x92467502 /* 146.70.117.2/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x92467522 /* 146.70.117.34/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x92467542 /* 146.70.117.66/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x92467562 /* 146.70.117.98/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x924675A2 /* 146.70.117.162/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x924675C2 /* 146.70.117.194/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x924675E2 /* 146.70.117.226/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x92467702 /* 146.70.119.2/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x92467722 /* 146.70.119.34/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x92467742 /* 146.70.119.66/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x92467762 /* 146.70.119.98/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x92467782 /* 146.70.119.130/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x924677A2 /* 146.70.119.162/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x92467C82 /* 146.70.124.130/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x92467CA2 /* 146.70.124.162/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x92467CC2 /* 146.70.124.194/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x92467EA2 /* 146.70.126.162/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x92467EC2 /* 146.70.126.194/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x92467EE2 /* 146.70.126.226/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x924680A2 /* 146.70.128.162/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x924680C2 /* 146.70.128.194/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x924680E2 /* 146.70.128.226/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x92468162 /* 146.70.129.98/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x92468182 /* 146.70.129.130/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x924681A2 /* 146.70.129.162/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x924681C2 /* 146.70.129.194/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x92468402 /* 146.70.132.2/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x92468422 /* 146.70.132.34/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x92468442 /* 146.70.132.66/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x92468462 /* 146.70.132.98/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x92468482 /* 146.70.132.130/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x924684A2 /* 146.70.132.162/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x924684C2 /* 146.70.132.194/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x924684E2 /* 146.70.132.226/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x92468502 /* 146.70.133.2/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x92468522 /* 146.70.133.34/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x92468542 /* 146.70.133.66/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x92468562 /* 146.70.133.98/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x92468602 /* 146.70.134.2/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x92468622 /* 146.70.134.34/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x92468642 /* 146.70.134.66/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x92468662 /* 146.70.134.98/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x92468682 /* 146.70.134.130/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x924686A2 /* 146.70.134.162/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x92468AC2 /* 146.70.138.194/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x92468D9A /* 146.70.141.154/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x92468DC2 /* 146.70.141.194/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x92469022 /* 146.70.144.34/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x92469042 /* 146.70.144.66/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x92469062 /* 146.70.144.98/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9246A502 /* 146.70.165.2/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9246A542 /* 146.70.165.66/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9246A582 /* 146.70.165.130/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9246A5C2 /* 146.70.165.194/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9246A602 /* 146.70.166.2/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9246A642 /* 146.70.166.66/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9246A682 /* 146.70.166.130/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9246A6C2 /* 146.70.166.194/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9246A802 /* 146.70.168.2/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9246A842 /* 146.70.168.66/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9246A882 /* 146.70.168.130/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9246A8C2 /* 146.70.168.194/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9246AB42 /* 146.70.171.66/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9246AB82 /* 146.70.171.130/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9246ABC2 /* 146.70.171.194/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9246AC02 /* 146.70.172.2/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9246AC42 /* 146.70.172.66/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9246AC82 /* 146.70.172.130/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9246ACC2 /* 146.70.172.194/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9246AD02 /* 146.70.173.2/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9246AD42 /* 146.70.173.66/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9246AD82 /* 146.70.173.130/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9246ADC2 /* 146.70.173.194/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9246AE02 /* 146.70.174.2/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9246B142 /* 146.70.177.66/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9246B722 /* 146.70.183.34/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9246B742 /* 146.70.183.66/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9246B802 /* 146.70.184.2/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9246B842 /* 146.70.184.66/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9246B882 /* 146.70.184.130/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9246B8C2 /* 146.70.184.194/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9246B902 /* 146.70.185.2/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9246B942 /* 146.70.185.66/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9246B982 /* 146.70.185.130/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9246BB02 /* 146.70.187.2/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9246BB42 /* 146.70.187.66/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9246BB82 /* 146.70.187.130/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9246BBC2 /* 146.70.187.194/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9246BC02 /* 146.70.188.2/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9246BC42 /* 146.70.188.66/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9246BC82 /* 146.70.188.130/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9246BCC2 /* 146.70.188.194/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9246BD02 /* 146.70.189.2/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9246BD42 /* 146.70.189.66/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9246BD82 /* 146.70.189.130/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9246BDC2 /* 146.70.189.194/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9246C022 /* 146.70.192.34/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9246C102 /* 146.70.193.2/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9246C142 /* 146.70.193.66/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9246C182 /* 146.70.193.130/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9246C1C2 /* 146.70.193.194/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9246C402 /* 146.70.196.2/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9246C442 /* 146.70.196.66/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9246C482 /* 146.70.196.130/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9246C4C2 /* 146.70.196.194/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9246C502 /* 146.70.197.2/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9246C542 /* 146.70.197.66/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9246C582 /* 146.70.197.130/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9246C5C2 /* 146.70.197.194/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9246C642 /* 146.70.198.66/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9246C682 /* 146.70.198.130/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9246C6C2 /* 146.70.198.194/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9246C702 /* 146.70.199.2/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9246C742 /* 146.70.199.66/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9246C782 /* 146.70.199.130/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9246C7C2 /* 146.70.199.194/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9246C802 /* 146.70.200.2/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9246C842 /* 146.70.200.66/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9246C882 /* 146.70.200.130/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9246C8C2 /* 146.70.200.194/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9246C902 /* 146.70.201.2/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9246C942 /* 146.70.201.66/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9246C982 /* 146.70.201.130/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9246C9C2 /* 146.70.201.194/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9246D302 /* 146.70.211.2/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9246D342 /* 146.70.211.66/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9246D382 /* 146.70.211.130/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9246D3C2 /* 146.70.211.194/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x954EB8C2 /* 149.78.184.194/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x954EB8D2 /* 149.78.184.210/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9566F042 /* 149.102.240.66/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9566F04F /* 149.102.240.79/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9566F602 /* 149.102.246.2/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9566F60F /* 149.102.246.15/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9566F61C /* 149.102.246.28/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9566F629 /* 149.102.246.41/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9859AA70 /* 152.89.170.112/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9859AA80 /* 152.89.170.128/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9A2F1022 /* 154.47.16.34/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9A2F102F /* 154.47.16.47/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9A2F1D02 /* 154.47.29.2/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9A2F1D0F /* 154.47.29.15/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9A2F1E82 /* 154.47.30.130/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0x9A2F1E8F /* 154.47.30.143/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xA996C402 /* 169.150.196.2/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xA996C40F /* 169.150.196.15/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xA996C41C /* 169.150.196.28/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xA996C642 /* 169.150.198.66/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xA996C64F /* 169.150.198.79/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xA996C902 /* 169.150.201.2/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xA996C90F /* 169.150.201.15/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xA996C91C /* 169.150.201.28/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xA996CB02 /* 169.150.203.2/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xA996CB0F /* 169.150.203.15/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xA996CB1C /* 169.150.203.28/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xA996CB29 /* 169.150.203.41/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xA996CB36 /* 169.150.203.54/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xA996E3C5 /* 169.150.227.197/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xA996E3D2 /* 169.150.227.210/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xA996E3DE /* 169.150.227.222/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xAD2C3F42 /* 173.44.63.66/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xADCD5522 /* 173.205.85.34/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xADCD5D02 /* 173.205.93.2/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xAE7F7103 /* 174.127.113.3/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xAE7F7104 /* 174.127.113.4/30 */, 30, NDPI_PROTOCOL_MULLVAD },
+ { 0xAE7F7108 /* 174.127.113.8/29 */, 29, NDPI_PROTOCOL_MULLVAD },
+ { 0xAE7F7110 /* 174.127.113.16/31 */, 31, NDPI_PROTOCOL_MULLVAD },
+ { 0xAE7F7112 /* 174.127.113.18/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xB07DEB47 /* 176.125.235.71/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xB07DEB48 /* 176.125.235.72/31 */, 31, NDPI_PROTOCOL_MULLVAD },
+ { 0xB07DEB4A /* 176.125.235.74/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xB2AF8362 /* 178.175.131.98/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xB2AF8EC2 /* 178.175.142.194/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xB2F9D1A2 /* 178.249.209.162/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xB2F9D1AF /* 178.249.209.175/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xB2F9D342 /* 178.249.211.66/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xB2F9D34F /* 178.249.211.79/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xB2F9D35C /* 178.249.211.92/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xB2F9D602 /* 178.249.214.2/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xB2F9D60F /* 178.249.214.15/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xB2F9D6C1 /* 178.249.214.193/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xB2F9D6CE /* 178.249.214.206/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xB32BBD42 /* 179.43.189.66/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xB9418647 /* 185.65.134.71/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xB9418648 /* 185.65.134.72/30 */, 30, NDPI_PROTOCOL_MULLVAD },
+ { 0xB941864C /* 185.65.134.76/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xB9418652 /* 185.65.134.82/31 */, 31, NDPI_PROTOCOL_MULLVAD },
+ { 0xB9418656 /* 185.65.134.86/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xB9418674 /* 185.65.134.116/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xB9418743 /* 185.65.135.67/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xB9418744 /* 185.65.135.68/30 */, 30, NDPI_PROTOCOL_MULLVAD },
+ { 0xB9418748 /* 185.65.135.72/31 */, 31, NDPI_PROTOCOL_MULLVAD },
+ { 0xB9418750 /* 185.65.135.80/30 */, 30, NDPI_PROTOCOL_MULLVAD },
+ { 0xB99C2E8F /* 185.156.46.143/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xB99C2E9C /* 185.156.46.156/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xB99C2EA9 /* 185.156.46.169/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xB99C2EB6 /* 185.156.46.182/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xB9C3E842 /* 185.195.232.66/31 */, 31, NDPI_PROTOCOL_MULLVAD },
+ { 0xB9C3E844 /* 185.195.232.68/31 */, 31, NDPI_PROTOCOL_MULLVAD },
+ { 0xB9C3E846 /* 185.195.232.70/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xB9C3E855 /* 185.195.232.85/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xB9C3E856 /* 185.195.232.86/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xB9C3E942 /* 185.195.233.66/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xB9C3E944 /* 185.195.233.68/30 */, 30, NDPI_PROTOCOL_MULLVAD },
+ { 0xB9C3E94C /* 185.195.233.76/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xB9CC01AB /* 185.204.1.171/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xB9CC01AC /* 185.204.1.172/30 */, 30, NDPI_PROTOCOL_MULLVAD },
+ { 0xB9CC01B0 /* 185.204.1.176/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xB9CC01CB /* 185.204.1.203/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xB9CC01D3 /* 185.204.1.211/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xB9CC01DB /* 185.204.1.219/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xB9D1C449 /* 185.209.196.73/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xB9D1C44A /* 185.209.196.74/31 */, 31, NDPI_PROTOCOL_MULLVAD },
+ { 0xB9D1C44C /* 185.209.196.76/31 */, 31, NDPI_PROTOCOL_MULLVAD },
+ { 0xB9D1C44E /* 185.209.196.78/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xB9D495C9 /* 185.212.149.201/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xB9D59A42 /* 185.213.154.66/31 */, 31, NDPI_PROTOCOL_MULLVAD },
+ { 0xB9D59A44 /* 185.213.154.68/31 */, 31, NDPI_PROTOCOL_MULLVAD },
+ { 0xB9D59A46 /* 185.213.154.70/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xB9D59A75 /* 185.213.154.117/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xB9D59A83 /* 185.213.154.131/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xB9D59A84 /* 185.213.154.132/30 */, 30, NDPI_PROTOCOL_MULLVAD },
+ { 0xB9D59A88 /* 185.213.154.136/30 */, 30, NDPI_PROTOCOL_MULLVAD },
+ { 0xB9D59A8C /* 185.213.154.140/31 */, 31, NDPI_PROTOCOL_MULLVAD },
+ { 0xB9D59B42 /* 185.213.155.66/31 */, 31, NDPI_PROTOCOL_MULLVAD },
+ { 0xB9D59B44 /* 185.213.155.68/30 */, 30, NDPI_PROTOCOL_MULLVAD },
+ { 0xB9D59B48 /* 185.213.155.72/31 */, 31, NDPI_PROTOCOL_MULLVAD },
+ { 0xB9D59B4A /* 185.213.155.74/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xB9D59B75 /* 185.213.155.117/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xB9E11C92 /* 185.225.28.146/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xB9F20422 /* 185.242.4.34/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xB9F85503 /* 185.248.85.3/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xB9F85512 /* 185.248.85.18/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xB9F85521 /* 185.248.85.33/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xB9F85530 /* 185.248.85.48/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xB9FE4B03 /* 185.254.75.3/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xB9FE4B04 /* 185.254.75.4/31 */, 31, NDPI_PROTOCOL_MULLVAD },
+ { 0xBCF1B0C2 /* 188.241.176.194/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC0917F62 /* 192.145.127.98/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC0917F72 /* 192.145.127.114/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC1207E42 /* 193.32.126.66/31 */, 31, NDPI_PROTOCOL_MULLVAD },
+ { 0xC1207E44 /* 193.32.126.68/31 */, 31, NDPI_PROTOCOL_MULLVAD },
+ { 0xC1207E46 /* 193.32.126.70/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC1207E51 /* 193.32.126.81/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC1207E52 /* 193.32.126.82/31 */, 31, NDPI_PROTOCOL_MULLVAD },
+ { 0xC1207E54 /* 193.32.126.84/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC1207E75 /* 193.32.126.117/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC1207F42 /* 193.32.127.66/31 */, 31, NDPI_PROTOCOL_MULLVAD },
+ { 0xC1207F44 /* 193.32.127.68/31 */, 31, NDPI_PROTOCOL_MULLVAD },
+ { 0xC1207F46 /* 193.32.127.70/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC1207F51 /* 193.32.127.81/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC1207F52 /* 193.32.127.82/31 */, 31, NDPI_PROTOCOL_MULLVAD },
+ { 0xC1207F54 /* 193.32.127.84/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC1207F75 /* 193.32.127.117/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC120F842 /* 193.32.248.66/31 */, 31, NDPI_PROTOCOL_MULLVAD },
+ { 0xC120F844 /* 193.32.248.68/30 */, 30, NDPI_PROTOCOL_MULLVAD },
+ { 0xC120F848 /* 193.32.248.72/30 */, 30, NDPI_PROTOCOL_MULLVAD },
+ { 0xC120F942 /* 193.32.249.66/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC120F945 /* 193.32.249.69/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC120F946 /* 193.32.249.70/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC18A0784 /* 193.138.7.132/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC18A0789 /* 193.138.7.137/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC18A079D /* 193.138.7.157/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC18A07B1 /* 193.138.7.177/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC18A07C5 /* 193.138.7.197/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC18A07D9 /* 193.138.7.217/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC18A07ED /* 193.138.7.237/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC18ADA47 /* 193.138.218.71/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC18ADA50 /* 193.138.218.80/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC18ADA52 /* 193.138.218.82/31 */, 31, NDPI_PROTOCOL_MULLVAD },
+ { 0xC18ADA82 /* 193.138.218.130/31 */, 31, NDPI_PROTOCOL_MULLVAD },
+ { 0xC18ADA84 /* 193.138.218.132/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC18ADADC /* 193.138.218.220/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC2241903 /* 194.36.25.3/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC2241912 /* 194.36.25.18/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC2241921 /* 194.36.25.33/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC2241930 /* 194.36.25.48/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC26E7302 /* 194.110.115.2/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC26E7322 /* 194.110.115.34/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC27FA743 /* 194.127.167.67/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC27FA757 /* 194.127.167.87/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC27FA76B /* 194.127.167.107/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC27FC702 /* 194.127.199.2/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC27FC71F /* 194.127.199.31/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC27FC73E /* 194.127.199.62/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC27FC75D /* 194.127.199.93/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC27FC772 /* 194.127.199.114/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC27FC791 /* 194.127.199.145/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC27FC7F5 /* 194.127.199.245/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC62C8062 /* 198.44.128.98/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC62C8082 /* 198.44.128.130/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC62C80A2 /* 198.44.128.162/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC62C80C2 /* 198.44.128.194/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC62C80E2 /* 198.44.128.226/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC62C8122 /* 198.44.129.34/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC62C8142 /* 198.44.129.66/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC62C8162 /* 198.44.129.98/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC62C8182 /* 198.44.129.130/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC62C81A2 /* 198.44.129.162/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC62C8822 /* 198.44.136.34/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC62C8842 /* 198.44.136.66/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC62C8862 /* 198.44.136.98/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC62C8882 /* 198.44.136.130/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC62C88A2 /* 198.44.136.162/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC62C88C2 /* 198.44.136.194/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC62C8C82 /* 198.44.140.130/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC62C8CA2 /* 198.44.140.162/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC62C8CC2 /* 198.44.140.194/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC62C8CE2 /* 198.44.140.226/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC6368222 /* 198.54.130.34/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC6368232 /* 198.54.130.50/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC6368242 /* 198.54.130.66/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC6368252 /* 198.54.130.82/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC6368262 /* 198.54.130.98/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC6368272 /* 198.54.130.114/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC6368282 /* 198.54.130.130/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC6368292 /* 198.54.130.146/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC63682B2 /* 198.54.130.178/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC6368322 /* 198.54.131.34/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC6368342 /* 198.54.131.66/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC6368362 /* 198.54.131.98/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC6368382 /* 198.54.131.130/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC6368422 /* 198.54.132.34/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC6368442 /* 198.54.132.66/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC6368462 /* 198.54.132.98/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC6368482 /* 198.54.132.130/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC63684A2 /* 198.54.132.162/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC63684E2 /* 198.54.132.226/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC6368522 /* 198.54.133.34/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC6368542 /* 198.54.133.66/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC6368562 /* 198.54.133.98/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC6368582 /* 198.54.133.130/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC63685A2 /* 198.54.133.162/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC6368622 /* 198.54.134.34/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC6368642 /* 198.54.134.66/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC6368662 /* 198.54.134.98/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC6368682 /* 198.54.134.130/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC63686A2 /* 198.54.134.162/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC6368722 /* 198.54.135.34/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC6368742 /* 198.54.135.66/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC6368762 /* 198.54.135.98/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC6368782 /* 198.54.135.130/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC63687A2 /* 198.54.135.162/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC63687C2 /* 198.54.135.194/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC66059C2 /* 198.96.89.194/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xC7E5FA34 /* 199.229.250.52/30 */, 30, NDPI_PROTOCOL_MULLVAD },
+ { 0xC7E5FA38 /* 199.229.250.56/30 */, 30, NDPI_PROTOCOL_MULLVAD },
+ { 0xCC98D862 /* 204.152.216.98/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xCC98D872 /* 204.152.216.114/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xD1366582 /* 209.54.101.130/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xD13AB93B /* 209.58.185.59/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xD46730E2 /* 212.103.48.226/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xD98AC76A /* 217.138.199.106/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ { 0xD98AD512 /* 217.138.213.18/32 */, 32, NDPI_PROTOCOL_MULLVAD },
+ /* End */
+ { 0x0, 0, 0 }
+};
diff --git a/src/lib/ndpi_content_match.c.inc b/src/lib/ndpi_content_match.c.inc
index f6faf72ca75..36e1e955c5f 100644
--- a/src/lib/ndpi_content_match.c.inc
+++ b/src/lib/ndpi_content_match.c.inc
@@ -1399,6 +1399,8 @@ static ndpi_protocol_match host_match[] =
{ "roblox.com", "Roblox", NDPI_PROTOCOL_ROBLOX, NDPI_PROTOCOL_CATEGORY_GAME, NDPI_PROTOCOL_FUN, NDPI_PROTOCOL_DEFAULT_LEVEL },
{ "rbxcdn.com", "Roblox", NDPI_PROTOCOL_ROBLOX, NDPI_PROTOCOL_CATEGORY_GAME, NDPI_PROTOCOL_FUN, NDPI_PROTOCOL_DEFAULT_LEVEL },
+ { "mullvad.net", "Mullvad", NDPI_PROTOCOL_MULLVAD, NDPI_PROTOCOL_CATEGORY_VPN, NDPI_PROTOCOL_ACCEPTABLE, NDPI_PROTOCOL_DEFAULT_LEVEL },
+
/*
ADS/tracking/analytic
*/
diff --git a/src/lib/ndpi_main.c b/src/lib/ndpi_main.c
index 9b955e7a9c3..f461b42e446 100644
--- a/src/lib/ndpi_main.c
+++ b/src/lib/ndpi_main.c
@@ -78,6 +78,7 @@
#include "inc_generated/ndpi_icloud_private_relay_match.c.inc"
#include "inc_generated/ndpi_protonvpn_in_match.c.inc"
#include "inc_generated/ndpi_protonvpn_out_match.c.inc"
+#include "inc_generated/ndpi_mullvad_match.c.inc"
#include "inc_generated/ndpi_asn_telegram.c.inc"
#include "inc_generated/ndpi_asn_apple.c.inc"
#include "inc_generated/ndpi_asn_twitter.c.inc"
@@ -1303,7 +1304,7 @@ static void ndpi_init_protocol_defaults(struct ndpi_detection_module_struct *ndp
"Reddit", NDPI_PROTOCOL_CATEGORY_SOCIAL_NETWORK,
ndpi_build_default_ports(ports_a, 0, 0, 0, 0, 0) /* TCP */,
ndpi_build_default_ports(ports_b, 0, 0, 0, 0, 0) /* UDP */);
- ndpi_set_proto_defaults(ndpi_str, 0 /* encrypted */, 1 /* app proto */, NDPI_PROTOCOL_ACCEPTABLE, NDPI_PROTOCOL_WIREGUARD,
+ ndpi_set_proto_defaults(ndpi_str, 0 /* encrypted */, 0 /* nw proto */, NDPI_PROTOCOL_ACCEPTABLE, NDPI_PROTOCOL_WIREGUARD,
"WireGuard", NDPI_PROTOCOL_CATEGORY_VPN,
ndpi_build_default_ports(ports_a, 0, 0, 0, 0, 0) /* TCP */,
ndpi_build_default_ports(ports_b, 51820, 0, 0, 0, 0) /* UDP */);
@@ -2147,7 +2148,10 @@ static void ndpi_init_protocol_defaults(struct ndpi_detection_module_struct *ndp
"Roblox", NDPI_PROTOCOL_CATEGORY_GAME,
ndpi_build_default_ports(ports_a, 0, 0, 0, 0, 0) /* TCP */,
ndpi_build_default_ports(ports_b, 0, 0, 0, 0, 0) /* UDP */);
-
+ ndpi_set_proto_defaults(ndpi_str, 0 /* encrypted */, 1 /* app proto */, NDPI_PROTOCOL_ACCEPTABLE, NDPI_PROTOCOL_MULLVAD,
+ "Mullvad", NDPI_PROTOCOL_CATEGORY_VPN,
+ ndpi_build_default_ports(ports_a, 0, 0, 0, 0, 0) /* TCP */,
+ ndpi_build_default_ports(ports_b, 0, 0, 0, 0, 0) /* UDP */);
#ifdef CUSTOM_NDPI_PROTOCOLS
#include "../../../nDPI-custom/custom_ndpi_main.c"
@@ -2879,6 +2883,9 @@ struct ndpi_detection_module_struct *ndpi_init_detection_module(ndpi_init_prefs
if(!(prefs & ndpi_dont_load_protonvpn_list))
ndpi_init_ptree_ipv4(ndpi_str, ndpi_str->protocols_ptree, ndpi_protocol_protonvpn_protocol_list);
+ if(!(prefs & ndpi_dont_load_mullvad_list))
+ ndpi_init_ptree_ipv4(ndpi_str, ndpi_str->protocols_ptree, ndpi_protocol_mullvad_protocol_list);
+
if(!(prefs & ndpi_dont_load_asn_lists)) {
ndpi_init_ptree_ipv4(ndpi_str, ndpi_str->protocols_ptree, ndpi_protocol_telegram_protocol_list);
ndpi_init_ptree_ipv4(ndpi_str, ndpi_str->protocols_ptree, ndpi_protocol_apple_protocol_list);
diff --git a/utils/mullvad_ip_addresses_download.sh b/utils/mullvad_ip_addresses_download.sh
new file mode 100755
index 00000000000..6035cc9e651
--- /dev/null
+++ b/utils/mullvad_ip_addresses_download.sh
@@ -0,0 +1,30 @@
+#!/usr/bin/env bash
+
+set -e
+
+cd "$(dirname "${0}")" || exit 1
+. ./common.sh || exit 1
+
+DEST=../src/lib/inc_generated/ndpi_mullvad_match.c.inc
+TMP=/tmp/mullvad.json
+LIST=/tmp/mullvad.list
+LIST_MERGED=/tmp/mullvad.list.merged
+ORIGIN=https://api-www.mullvad.net/www/relays/all/
+
+
+echo "(1) Downloading file..."
+http_response=$(curl -s -o $TMP -w "%{http_code}" ${ORIGIN})
+check_http_response "${http_response}"
+is_file_empty "${TMP}"
+
+echo "(2) Processing IP addresses..."
+jq -r '.[].ipv4_addr_in' $TMP > $LIST # TODO: ipv6
+is_file_empty "${LIST}"
+./mergeipaddrlist.py $LIST > $LIST_MERGED
+./ipaddr2list.py $LIST_MERGED NDPI_PROTOCOL_MULLVAD > $DEST
+is_file_empty "${DEST}"
+
+rm -f $TMP $LIST $LIST_MERGED
+
+echo "(3) Mullvad IPs are available in $DEST"
+exit 0
diff --git a/utils/update_every_lists.sh b/utils/update_every_lists.sh
index 95f72476e85..3f0f75adf75 100755
--- a/utils/update_every_lists.sh
+++ b/utils/update_every_lists.sh
@@ -36,6 +36,8 @@ RETVAL=$(( RETVAL + $? ))
./gambling_sites_download.sh
RETVAL=$(( RETVAL + $? ))
+./mullvad_ip_addresses_download.sh
+RETVAL=$(( RETVAL + $? ))
./protonvpn_ip_addresses_download.sh
RETVAL=$(( RETVAL + $? ))