diff options
-rw-r--r-- | include/linux/if_packet.h | 1 | ||||
-rw-r--r-- | net/packet/af_packet.c | 10 |
2 files changed, 9 insertions, 2 deletions
diff --git a/include/linux/if_packet.h b/include/linux/if_packet.h index 5b2badeb9497..dea7d6b7cf98 100644 --- a/include/linux/if_packet.h +++ b/include/linux/if_packet.h | |||
@@ -145,5 +145,6 @@ struct packet_mreq | |||
145 | #define PACKET_MR_MULTICAST 0 | 145 | #define PACKET_MR_MULTICAST 0 |
146 | #define PACKET_MR_PROMISC 1 | 146 | #define PACKET_MR_PROMISC 1 |
147 | #define PACKET_MR_ALLMULTI 2 | 147 | #define PACKET_MR_ALLMULTI 2 |
148 | #define PACKET_MR_UNICAST 3 | ||
148 | 149 | ||
149 | #endif | 150 | #endif |
diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c index 766e6b41f7ca..c7c5d524967e 100644 --- a/net/packet/af_packet.c +++ b/net/packet/af_packet.c | |||
@@ -1570,9 +1570,9 @@ static int packet_dev_mc(struct net_device *dev, struct packet_mclist *i, | |||
1570 | switch (i->type) { | 1570 | switch (i->type) { |
1571 | case PACKET_MR_MULTICAST: | 1571 | case PACKET_MR_MULTICAST: |
1572 | if (what > 0) | 1572 | if (what > 0) |
1573 | dev_mc_add(dev, i->addr, i->alen, 0); | 1573 | return dev_mc_add(dev, i->addr, i->alen, 0); |
1574 | else | 1574 | else |
1575 | dev_mc_delete(dev, i->addr, i->alen, 0); | 1575 | return dev_mc_delete(dev, i->addr, i->alen, 0); |
1576 | break; | 1576 | break; |
1577 | case PACKET_MR_PROMISC: | 1577 | case PACKET_MR_PROMISC: |
1578 | return dev_set_promiscuity(dev, what); | 1578 | return dev_set_promiscuity(dev, what); |
@@ -1580,6 +1580,12 @@ static int packet_dev_mc(struct net_device *dev, struct packet_mclist *i, | |||
1580 | case PACKET_MR_ALLMULTI: | 1580 | case PACKET_MR_ALLMULTI: |
1581 | return dev_set_allmulti(dev, what); | 1581 | return dev_set_allmulti(dev, what); |
1582 | break; | 1582 | break; |
1583 | case PACKET_MR_UNICAST: | ||
1584 | if (what > 0) | ||
1585 | return dev_unicast_add(dev, i->addr, i->alen); | ||
1586 | else | ||
1587 | return dev_unicast_delete(dev, i->addr, i->alen); | ||
1588 | break; | ||
1583 | default:; | 1589 | default:; |
1584 | } | 1590 | } |
1585 | return 0; | 1591 | return 0; |