Lines Matching refs:igmp

749 			struct igmp_ip_t igmp;  in send_igmp_reports()  local
750 igmp.router_alert[0] = 0x94; in send_igmp_reports()
751 igmp.router_alert[1] = 0x04; in send_igmp_reports()
752 igmp.router_alert[2] = 0; in send_igmp_reports()
753 igmp.router_alert[3] = 0; in send_igmp_reports()
755 1, IP_IGMP, sizeof(igmp.router_alert), sizeof(igmp), &igmp); in send_igmp_reports()
756 igmp.igmp.type = IGMPv2_REPORT; in send_igmp_reports()
759 igmp.igmp.type = IGMPv1_REPORT; in send_igmp_reports()
761 igmp.igmp.response_time = 0; in send_igmp_reports()
762 igmp.igmp.chksum = 0; in send_igmp_reports()
763 igmp.igmp.group.s_addr = igmptable[i].group.s_addr; in send_igmp_reports()
764 igmp.igmp.chksum = ipchksum(&igmp.igmp, sizeof(igmp.igmp)); in send_igmp_reports()
765 ip_transmit(sizeof(igmp), &igmp); in send_igmp_reports()
767 printf("Sent IGMP report to: %@\n", igmp.igmp.group.s_addr); in send_igmp_reports()
777 struct igmp *igmp; in process_igmp() local
781 (nic.packetlen < sizeof(struct iphdr) + sizeof(struct igmp))) { in process_igmp()
785 igmp = (struct igmp *)&nic.packet[sizeof(struct iphdr)]; in process_igmp()
786 if (ipchksum(igmp, ntohs(ip->len) - iplen) != 0) in process_igmp()
788 if ((igmp->type == IGMP_QUERY) && in process_igmp()
791 if (igmp->response_time == 0) { in process_igmp()
794 interval = (igmp->response_time * TICKS_PER_SEC)/10; in process_igmp()
798 printf("Received IGMP query for: %@\n", igmp->group.s_addr); in process_igmp()
802 if ((group == 0) || (group == igmp->group.s_addr)) { in process_igmp()
811 if (((igmp->type == IGMPv1_REPORT) || (igmp->type == IGMPv2_REPORT)) && in process_igmp()
812 (ip->dest.s_addr == igmp->group.s_addr)) { in process_igmp()
814 printf("Received IGMP report for: %@\n", igmp->group.s_addr); in process_igmp()
817 if ((igmptable[i].group.s_addr == igmp->group.s_addr) && in process_igmp()
836 struct igmp_ip_t igmp; in leave_group() local
837 igmp.router_alert[0] = 0x94; in leave_group()
838 igmp.router_alert[1] = 0x04; in leave_group()
839 igmp.router_alert[2] = 0; in leave_group()
840 igmp.router_alert[3] = 0; in leave_group()
842 1, IP_IGMP, sizeof(igmp.router_alert), sizeof(igmp), &igmp); in leave_group()
843 igmp.igmp.type = IGMP_LEAVE; in leave_group()
844 igmp.igmp.response_time = 0; in leave_group()
845 igmp.igmp.chksum = 0; in leave_group()
846 igmp.igmp.group.s_addr = igmptable[slot].group.s_addr; in leave_group()
847 igmp.igmp.chksum = ipchksum(&igmp.igmp, sizeof(igmp)); in leave_group()
848 ip_transmit(sizeof(igmp), &igmp); in leave_group()
850 printf("Sent IGMP leave for: %@\n", igmp.igmp.group.s_addr); in leave_group()