patch-1.3.26 linux/net/core/dev_mcast.c
Next file: linux/net/core/sock.c
Previous file: linux/net/core/dev.c
Back to the patch index
Back to the overall index
- Lines: 59
- Date:
Mon Sep 11 20:16:03 1995
- Orig file:
v1.3.25/linux/net/core/dev_mcast.c
- Orig date:
Tue Jun 6 12:16:43 1995
diff -u --recursive --new-file v1.3.25/linux/net/core/dev_mcast.c linux/net/core/dev_mcast.c
@@ -11,6 +11,7 @@
* Fixes:
* Alan Cox : Update the device on a real delete
* rather than any time but...
+ * Alan Cox : IFF_ALLMULTI support.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -70,21 +71,48 @@
return;
- /* Devices with no set multicast don't get set */
+ /*
+ * Devices with no set multicast don't get set
+ */
+
if(dev->set_multicast_list==NULL)
return;
- /* Promiscuous is promiscuous - so no filter needed */
+
+ /*
+ * Promiscuous is promiscuous - so no filter needed
+ */
+
if(dev->flags&IFF_PROMISC)
{
dev->set_multicast_list(dev, -1, NULL);
return;
}
+ /*
+ * All multicasts. Older cards will interpret this as
+ * promisc mode, which is the next best thing.
+ */
+
+ if(dev->flags&IFF_ALLMULTI)
+ {
+ dev->set_multicast_list(dev, -2, NULL);
+ return;
+ }
+
+ /*
+ * No multicasts
+ */
+
if(dev->mc_count==0)
{
dev->set_multicast_list(dev,0,NULL);
return;
}
+
+ /*
+ * The drivers need changing to process the list themselves... this is
+ * a mess.
+ */
data=kmalloc(dev->mc_count*dev->addr_len, GFP_KERNEL);
if(data==NULL)
FUNET's LINUX-ADM group, [email protected]
TCL-scripts by Sam Shen, [email protected]
with Sam's (original) version of this