1
10
13
14
20
21
22
23
24
25
26
27
28
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
117
118
119
120
121
122
128
134
135
136
137
138
139
140
141
142
143
144
145
146
147
154
155
156
...
...
...
#define NX_SOURCE_CODE
#include "nx_api.h"
#include "nx_packet.h"
#include "nx_igmp.h"
#include "nx_ip.h"
#include "tx_thread.h"
5 includes
#ifndef NX_DISABLE_IPV4...
...
VOID _nx_igmp_packet_receive(NX_IP *ip_ptr, NX_PACKET *packet_ptr)
{
TX_INTERRUPT_SAVE_AREA
NX_PACKET_DEBUG(__FILE__, __LINE__, packet_ptr);
#ifndef NX_DISABLE_RX_SIZE_CHECKING
if (packet_ptr -> nx_packet_length < sizeof(NX_IGMP_HEADER))
{
#ifndef NX_DISABLE_IGMP_INFO
ip_ptr -> nx_ip_igmp_invalid_packets++;/* ... */
#endif
_nx_packet_release(packet_ptr);
return;
}if (packet_ptr -> nx_packet_length < sizeof(NX_IGMP_HEADER)) { ... }
/* ... */#endif
if ((TX_THREAD_GET_SYSTEM_STATE()) || (&(ip_ptr -> nx_ip_thread) != _tx_thread_current_ptr))
{
/* ... */
TX_DISABLE
if (ip_ptr -> nx_ip_igmp_queue_head)
{
packet_ptr -> nx_packet_queue_next = ip_ptr -> nx_ip_igmp_queue_head;
}if (ip_ptr -> nx_ip_igmp_queue_head) { ... }
else
{
packet_ptr -> nx_packet_queue_next = NX_NULL;
}else { ... }
NX_PACKET_DEBUG(__FILE__, __LINE__, packet_ptr);
ip_ptr -> nx_ip_igmp_queue_head = packet_ptr;
TX_RESTORE
tx_event_flags_set(&(ip_ptr -> nx_ip_events), NX_IP_IGMP_EVENT, TX_OR);
}if ((TX_THREAD_GET_SYSTEM_STATE()) || (&(ip_ptr -> nx_ip_thread) != _tx_thread_current_ptr)) { ... }
else
{
/* ... */
_nx_igmp_packet_process(ip_ptr, packet_ptr);
}else { ... }
}{ ... }
#endif/* ... */