Home | History | Annotate | Download | only in Ip4Dxe

Lines Matching refs:Group

42   IGMP_GROUP                    *Group;

50 Group = AllocatePool (sizeof (IGMP_GROUP));
52 if (Group == NULL) {
58 Group->Address = IP4_ALLSYSTEM_ADDRESS;
59 Group->RefCnt = 1;
60 Group->DelayTime = 0;
61 Group->ReportByUs = FALSE;
63 Status = Ip4GetMulticastMac (Mnp, IP4_ALLSYSTEM_ADDRESS, &Group->Mac);
69 Status = Mnp->Groups (Mnp, TRUE, &Group->Mac);
75 InsertHeadList (&IgmpCtrl->Groups, &Group->Link);
79 FreePool (Group);
86 group Address in this IGMP control block
92 the point to the IGMP_GROUP which contains the status of multicast group
103 IGMP_GROUP *Group;
106 Group = NET_LIST_USER_STRUCT (Entry, IGMP_GROUP, Link);
108 if (Group->Address == Address) {
109 return Group;
125 @return The number of the IP4 multicast group that mapped to the same
126 multicast group Mac.
136 IGMP_GROUP *Group;
142 Group = NET_LIST_USER_STRUCT (Entry, IGMP_GROUP, Link);
144 if (NET_MAC_EQUAL (&Group->Mac, Mac, sizeof (EFI_MAC_ADDRESS))) {
161 @param[in] Group The group address in the IGMP message head.
173 IN IP4_ADDR Group
202 Igmp->Group = HTONL (Group);
232 @param[in] Group The group address to report.
242 IN IP4_ADDR Group
246 return Ip4SendIgmpMessage (IpSb, Group, IGMP_V1_MEMBERSHIP_REPORT, Group);
248 return Ip4SendIgmpMessage (IpSb, Group, IGMP_V2_MEMBERSHIP_REPORT, Group);
254 Join the multicast group on behalf of this IP4 child
256 @param[in] IpInstance The IP4 child that wants to join the group.
257 @param[in] Address The group to join.
259 @retval EFI_SUCCESS Successfully join the multicast group.
261 @retval Others Failed to join the multicast group.
273 IGMP_GROUP *Group;
281 // If the IP service already is a member in the group, just
284 Group = Ip4FindGroup (IgmpCtrl, Address);
286 if (Group != NULL) {
287 Group->RefCnt++;
295 Group = AllocatePool (sizeof (IGMP_GROUP));
297 if (Group == NULL) {
301 Group->Address = Address;
302 Group->RefCnt = 1;
303 Group->DelayTime = IGMP_UNSOLICIATED_REPORT;
304 Group->ReportByUs = TRUE;
306 Status = Ip4GetMulticastMac (Mnp, Address, &Group->Mac);
318 Status = Mnp->Groups (Mnp, TRUE, &Group->Mac);
324 InsertHeadList (&IgmpCtrl->Groups, &Group->Link);
328 FreePool (Group);
334 Leave the IP4 multicast group on behalf of IpInstance.
336 @param[in] IpInstance The IP4 child that wants to leave the group
338 @param[in] Address The group address to leave.
340 @retval EFI_NOT_FOUND The IP4 service instance isn't in the group.
341 @retval EFI_SUCCESS Successfully leave the multicast group.
342 @retval Others Failed to leave the multicast group.
354 IGMP_GROUP *Group;
361 Group = Ip4FindGroup (IgmpCtrl, Address);
363 if (Group == NULL) {
368 // If more than one instance is in the group, decrease
371 if (--Group->RefCnt > 0) {
376 // If multiple IP4 group addresses are mapped to the same
380 if (Ip4FindMac (IgmpCtrl, &Group->Mac) == 1) {
381 Status = Mnp->Groups (Mnp, FALSE, &Group->Mac);
392 if (Group->ReportByUs && IgmpCtrl->Igmpv1QuerySeen == 0) {
393 Ip4SendIgmpMessage (IpSb, IP4_ALLROUTER_ADDRESS, IGMP_LEAVE_GROUP, Group->Address);
396 RemoveEntryList (&Group->Link);
397 FreePool (Group);
423 IGMP_GROUP *Group;
460 Address = NTOHL (Igmp.Group);
467 Group = NET_LIST_USER_STRUCT (Entry, IGMP_GROUP, Link);
473 if ((Address == IP4_ALLZERO_ADDRESS) || (Address == Group->Address)) {
478 if ((Group->DelayTime == 0) || (Group->DelayTime > Igmp.MaxRespTime)) {
479 Group->DelayTime = MAX (1, Igmp.MaxRespTime);
488 Address = NTOHL (Igmp.Group);
489 Group = Ip4FindGroup (IgmpCtrl, Address);
491 if ((Group != NULL) && (Group->DelayTime > 0)) {
492 Group->DelayTime = 0;
493 Group->ReportByUs = FALSE;
509 2. Decrease the report timer for each IGMP group in "delaying
522 IGMP_GROUP *Group;
531 // Decrease the report timer for each IGMP group in "delaying member"
534 Group = NET_LIST_USER_STRUCT (Entry, IGMP_GROUP, Link);
535 ASSERT (Group->DelayTime >= 0);
537 if (Group->DelayTime > 0) {
538 Group->DelayTime--;
540 if (Group->DelayTime == 0) {
541 Ip4SendIgmpReport (IpSb, Group->Address);
542 Group->ReportByUs = TRUE;
550 Add a group address to the array of group addresses.
556 @param[in] Source The array of group addresses to add to.
557 @param[in] Count The number of group addresses in the Source.
561 otherwise the new combined group addresses.
587 Remove a group address from the array of group addresses.
592 @param Groups The array of group addresses to remove from.
593 @param Count The number of group addresses in the Groups.
596 @return The nubmer of group addresses in the Groups after remove.