static void igmp_group_added(struct ip_mc_list *im) { igmp_init_timer(im); igmp_send_report(im->interface, im->multiaddr, IGMP_HOST_MEMBERSHIP_REPORT); ip_mc_filter_add(im->interface, im->multiaddr); /* printk("Joined group %lX\n",im->multiaddr);*/ }
extern __inline__ void igmp_group_added(struct ip_mc_list *im) { struct ip_router_info *r; igmp_init_timer(im); ip_mc_filter_add(im->interface, im->multiaddr); r=igmp_get_mrouter_info(im->interface); if(r==NULL) return; if(r->type==IGMP_NEW_ROUTER) igmp_send_report(im->interface, im->multiaddr, IGMP_HOST_NEW_MEMBERSHIP_REPORT); else igmp_send_report(im->interface, im->multiaddr, IGMP_HOST_MEMBERSHIP_REPORT); }
static void igmp_group_added(struct ip_mc_list *im) { if (im->loaded == 0) { im->loaded = 1; ip_mc_filter_add(im->interface, im->multiaddr); } #ifdef CONFIG_IP_MULTICAST if (im->multiaddr == IGMP_ALL_HOSTS) return; start_bh_atomic(); igmp_start_timer(im, IGMP_Initial_Report_Delay); end_bh_atomic(); #endif }
void ip_mc_allhost(struct device *dev) { struct ip_mc_list *i; for(i=dev->ip_mc_list;i!=NULL;i=i->next) if(i->multiaddr==IGMP_ALL_HOSTS) return; i=(struct ip_mc_list *)kmalloc(sizeof(*i), GFP_KERNEL); if(!i) return; i->users=1; i->interface=dev; i->multiaddr=IGMP_ALL_HOSTS; i->next=dev->ip_mc_list; dev->ip_mc_list=i; ip_mc_filter_add(i->interface, i->multiaddr); }