]>
Commit | Line | Data |
---|---|---|
b49c89de | 1 | --- linux-2.4.2/net/ipv4/raw.c Fri Feb 9 14:29:44 2001 |
2 | +++ linux/net/ipv4/raw.c Wed Feb 28 17:43:59 2001 | |
3 | @@ -54,6 +54,7 @@ | |
4 | #include <linux/inet.h> | |
5 | #include <linux/netdevice.h> | |
6 | #include <linux/mroute.h> | |
7 | +#include <linux/igmp.h> | |
8 | #include <net/ip.h> | |
9 | #include <net/protocol.h> | |
10 | #include <linux/skbuff.h> | |
11 | @@ -107,6 +108,18 @@ | |
12 | !(s->rcv_saddr && s->rcv_saddr != laddr) && | |
13 | !(s->bound_dev_if && s->bound_dev_if != dif)) | |
14 | break; /* gotcha */ | |
15 | + if (LOCAL_MCAST(laddr)) { | |
16 | + | |
17 | + struct ip_mc_socklist *iml; | |
18 | + struct ip_mreqn *imr; | |
19 | + | |
20 | + for (iml=sk->protinfo.af_inet.mc_list; iml; iml=iml->next) { | |
21 | + imr = &(iml->multi); | |
22 | + if ((imr->imr_multiaddr.s_addr == laddr) && !(imr->imr_ifindex && imr->imr_ifindex != dif)) | |
23 | + return s; | |
24 | + } | |
25 | + | |
26 | + } | |
27 | } | |
28 | return s; | |
29 | } | |
30 |