Smart Home firewall
Profile-based Smart Home firewall
igmp.h
Go to the documentation of this file.
1 
14 #ifndef _PROTOCOL_PARSERS_IGMP_
15 #define _PROTOCOL_PARSERS_IGMP_
16 
17 #include <stdio.h>
18 #include <stdint.h>
19 #include "packet_utils.h"
20 
21 
25 typedef enum {
26  MEMBERSHIP_QUERY = 0x11,
27  V1_MEMBERSHIP_REPORT = 0x12,
28  V2_MEMBERSHIP_REPORT = 0x16,
29  LEAVE_GROUP = 0x17,
30  V3_MEMBERSHIP_REPORT = 0x22
32 
36 typedef struct {
37  uint8_t max_resp_time;
38  uint16_t checksum;
39  uint32_t group_address; // IPv4 group address, in network byte order
41 
45 typedef struct {
46  uint8_t max_resp_code;
47  uint16_t checksum;
48  uint32_t group_address; // IPv4 group address, in network byte order
49  uint8_t flags; // Resv, S, QRV
50  uint8_t qqic;
51  uint16_t num_sources;
52  uint32_t *sources; // Array of IPv4 addresses, in network byte order
54 
58 typedef struct {
59  uint8_t type;
60  uint8_t aux_data_len;
61  uint16_t num_sources;
62  uint32_t group_address; // IPv4 group address, in network byte order
63  uint32_t *sources; // Array of IPv4 addresses, in network byte order
65 
69 typedef struct {
70  uint16_t checksum;
71  uint16_t num_groups;
72  igmp_v3_group_record_t *groups; // Array of group records
74 
78 typedef union
79 {
80  igmp_v2_message_t v2_message;
81  igmp_v3_membership_query_t v3_membership_query;
82  igmp_v3_membership_report_t v3_membership_report;
84 
88 typedef struct
89 {
90  uint8_t version;
94 
95 
97 
104 igmp_message_t igmp_parse_message(uint8_t *data);
105 
111 void igmp_free_message(igmp_message_t message);
112 
118 void igmp_print_message(igmp_message_t message);
119 
120 
121 #endif /* _PROTOCOL_PARSERS_IGMP_ */
void igmp_print_message(igmp_message_t message)
Print an IGMP message.
Definition: igmp.c:165
igmp_message_type_t
IGMP message types.
Definition: igmp.h:25
igmp_message_t igmp_parse_message(uint8_t *data)
Parse an IGMP message.
Definition: igmp.c:86
void igmp_free_message(igmp_message_t message)
Free the memory allocated for an IGMP message.
Definition: igmp.c:113
Utilitaries for payload manipulation and display.
Generic IGMP message.
Definition: igmp.h:89
IGMPv2 message.
Definition: igmp.h:36
IGMPv3 Group Record.
Definition: igmp.h:58
IGMPv3 membership query.
Definition: igmp.h:45
IGMPv3 membership report.
Definition: igmp.h:69
IGMP message body.
Definition: igmp.h:79