igmp_hdr
memcpy(&igmp_hdr, buf, sizeof(igmp_hdr));
iface->recv_query_resp_interval = igmp_hdr.max_resp_time;
if (igmp_chksum(&igmp_hdr) == -1) {
if (src.s_addr < iface->addr.s_addr && igmp_hdr.grp_addr == 0) {
if (iface->state == IF_STA_NONQUERIER && igmp_hdr.grp_addr != 0) {
if (!IN_MULTICAST(ntohl(igmp_hdr.grp_addr))) {
if ((group = group_list_add(iface, igmp_hdr.grp_addr))
struct igmp_hdr igmp_hdr;
if (len < sizeof(igmp_hdr)) {
memcpy(&igmp_hdr, buf, sizeof(igmp_hdr));
if (igmp_chksum(&igmp_hdr) == -1) {
if (!IN_MULTICAST(ntohl(igmp_hdr.grp_addr))) {
if ((group = group_list_add(iface, igmp_hdr.grp_addr)) == NULL)
struct igmp_hdr igmp_hdr;
if (len < sizeof(igmp_hdr)) {
memcpy(&igmp_hdr, buf, sizeof(igmp_hdr));
if (igmp_chksum(&igmp_hdr) == -1) {
if (!IN_MULTICAST(ntohl(igmp_hdr.grp_addr))) {
if ((group = group_list_find(iface, igmp_hdr.grp_addr)) != NULL) {
igmp_chksum(struct igmp_hdr *igmp_hdr)
chksum = igmp_hdr->chksum;
igmp_hdr->chksum = 0;
if (chksum != in_cksum(igmp_hdr, sizeof(*igmp_hdr)))
int igmp_chksum(struct igmp_hdr *);
struct igmp_hdr igmp_hdr;
memset(&igmp_hdr, 0, sizeof(igmp_hdr));
igmp_hdr.type = PKT_TYPE_MEMBER_QUERY;
igmp_hdr.grp_addr = 0;
igmp_hdr.max_resp_time = iface->query_resp_interval;
igmp_hdr.grp_addr = group->addr.s_addr;
igmp_hdr.max_resp_time = iface->last_member_query_interval;
ibuf_add(buf, &igmp_hdr, sizeof(igmp_hdr));
struct igmp_hdr igmp_hdr;
if (len < sizeof(igmp_hdr)) {