diff options
author | Ivan Nardi <12729895+IvanNardi@users.noreply.github.com> | 2022-06-15 12:25:26 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-06-15 12:25:26 +0200 |
commit | e2cc08bfe56dcd2738b684c44eb478cea352de4f (patch) | |
tree | 85e4ba68fe6823be2d255c49f55725d79174055a /src | |
parent | d1773cc8e364bcc4934c6f577259c1098950c2c0 (diff) |
Add support for PIM (Protocol Indipendent Multicast) protocol (#1599)
Close #1598
Diffstat (limited to 'src')
-rw-r--r-- | src/include/ndpi_define.h.in | 1 | ||||
-rw-r--r-- | src/include/ndpi_protocol_ids.h | 1 | ||||
-rw-r--r-- | src/lib/ndpi_main.c | 7 | ||||
-rw-r--r-- | src/lib/protocols/non_tcp_udp.c | 12 |
4 files changed, 21 insertions, 0 deletions
diff --git a/src/include/ndpi_define.h.in b/src/include/ndpi_define.h.in index 8ec960dd3..2999a38f7 100644 --- a/src/include/ndpi_define.h.in +++ b/src/include/ndpi_define.h.in @@ -297,6 +297,7 @@ #define NDPI_IPIP_PROTOCOL_TYPE 0x04 #define NDPI_ICMPV6_PROTOCOL_TYPE 0x3a #define NDPI_PGM_PROTOCOL_TYPE 0x71 +#define NDPI_PIM_PROTOCOL_TYPE 0x67 #define NDPI_ARRAY_LENGTH(array) (sizeof(array) / sizeof((array)[0])) diff --git a/src/include/ndpi_protocol_ids.h b/src/include/ndpi_protocol_ids.h index b12180cf7..f9fd31881 100644 --- a/src/include/ndpi_protocol_ids.h +++ b/src/include/ndpi_protocol_ids.h @@ -325,6 +325,7 @@ typedef enum { NDPI_PROTOCOL_RSH = 294, NDPI_PROTOCOL_1KXUN = 295, NDPI_PROTOCOL_IP_PGM = 296, + NDPI_PROTOCOL_IP_PIM = 297, #ifdef CUSTOM_NDPI_PROTOCOLS #include "../../../nDPI-custom/custom_ndpi_protocol_ids.h" diff --git a/src/lib/ndpi_main.c b/src/lib/ndpi_main.c index 544470da3..de9d53350 100644 --- a/src/lib/ndpi_main.c +++ b/src/lib/ndpi_main.c @@ -1915,6 +1915,10 @@ static void ndpi_init_protocol_defaults(struct ndpi_detection_module_struct *ndp "RSH", NDPI_PROTOCOL_CATEGORY_REMOTE_ACCESS, ndpi_build_default_ports(ports_a, 514, 0, 0, 0, 0) /* TCP */, ndpi_build_default_ports(ports_b, 0, 0, 0, 0, 0) /* UDP */); + ndpi_set_proto_defaults(ndpi_str, 1 /* cleartext */, 0 /* nw proto */, NDPI_PROTOCOL_ACCEPTABLE, NDPI_PROTOCOL_IP_PIM, + "IP_PIM", NDPI_PROTOCOL_CATEGORY_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 */); #ifdef CUSTOM_NDPI_PROTOCOLS #include "../../../nDPI-custom/custom_ndpi_main.c" @@ -3144,6 +3148,9 @@ u_int16_t ndpi_guess_protocol_id(struct ndpi_detection_module_struct *ndpi_str, case NDPI_PGM_PROTOCOL_TYPE: return(NDPI_PROTOCOL_IP_PGM); break; + case NDPI_PIM_PROTOCOL_TYPE: + return(NDPI_PROTOCOL_IP_PIM); + break; case NDPI_ICMP_PROTOCOL_TYPE: if(flow) { flow->entropy = 0.0f; diff --git a/src/lib/protocols/non_tcp_udp.c b/src/lib/protocols/non_tcp_udp.c index 50e3a949b..9f3ced86e 100644 --- a/src/lib/protocols/non_tcp_udp.c +++ b/src/lib/protocols/non_tcp_udp.c @@ -89,6 +89,10 @@ void ndpi_search_in_non_tcp_udp(struct ndpi_detection_module_struct set_protocol_and_bmask(NDPI_PROTOCOL_IP_ICMPV6); break; + case NDPI_PIM_PROTOCOL_TYPE: + set_protocol_and_bmask(NDPI_PROTOCOL_IP_PIM); + break; + case 112: set_protocol_and_bmask(NDPI_PROTOCOL_IP_VRRP); break; @@ -181,4 +185,12 @@ void init_non_tcp_udp_dissector(struct ndpi_detection_module_struct *ndpi_struct NO_SAVE_DETECTION_BITMASK_AS_UNKNOWN, ADD_TO_DETECTION_BITMASK); *id += 1; + + ndpi_set_bitmask_protocol_detection("IP_PIM", ndpi_struct, detection_bitmask, *id, + NDPI_PROTOCOL_IP_PIM, + ndpi_search_in_non_tcp_udp, + NDPI_SELECTION_BITMASK_PROTOCOL_IPV4_OR_IPV6, + NO_SAVE_DETECTION_BITMASK_AS_UNKNOWN, + ADD_TO_DETECTION_BITMASK); + *id += 1; } |