summaryrefslogtreecommitdiff
path: root/include/linux
diff options
context:
space:
mode:
authorDavid Stevens <dlstevens@us.ibm.com>2003-04-15 11:46:01 -0700
committerDavid S. Miller <davem@nuts.ninka.net>2003-04-15 11:46:01 -0700
commit06da9228364cafd7d5e8229a8f210f1151c32ef9 (patch)
tree15024daa8b7148ed34ad91b7716191febc8b7508 /include/linux
parent98fab1e40cc093ab9ebb64aa6c4c1a0359b409ec (diff)
[IPV6]: Add MLDv2 support.
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/icmpv6.h13
-rw-r--r--include/linux/in.h33
-rw-r--r--include/linux/ip.h1
-rw-r--r--include/linux/tcp.h1
-rw-r--r--include/linux/udp.h1
5 files changed, 49 insertions, 0 deletions
diff --git a/include/linux/icmpv6.h b/include/linux/icmpv6.h
index 2e5fcb59b131..604cef611b6c 100644
--- a/include/linux/icmpv6.h
+++ b/include/linux/icmpv6.h
@@ -86,6 +86,19 @@ struct icmp6hdr {
#define ICMPV6_MGM_REPORT 131
#define ICMPV6_MGM_REDUCTION 132
+/* definitions for MLDv2 */
+
+#define MLD2_MODE_IS_INCLUDE 1
+#define MLD2_MODE_IS_EXCLUDE 2
+#define MLD2_CHANGE_TO_INCLUDE 3
+#define MLD2_CHANGE_TO_EXCLUDE 4
+#define MLD2_ALLOW_NEW_SOURCES 5
+#define MLD2_BLOCK_OLD_SOURCES 6
+
+/* this must be an IANA-assigned value; 206 for testing only */
+#define ICMPV6_MLD2_REPORT 206
+#define MLD2_ALL_MCR_INIT { { { 0xff,0x02,0,0,0,0,0,0,0,0,0,0,0,0,0,0x16 } } }
+
/*
* Codes for Destination Unreachable
*/
diff --git a/include/linux/in.h b/include/linux/in.h
index bd2ec6c01f4f..5a5efb354b49 100644
--- a/include/linux/in.h
+++ b/include/linux/in.h
@@ -90,6 +90,13 @@ struct in_addr {
#define IP_ADD_SOURCE_MEMBERSHIP 39
#define IP_DROP_SOURCE_MEMBERSHIP 40
#define IP_MSFILTER 41
+#define MCAST_JOIN_GROUP 42
+#define MCAST_BLOCK_SOURCE 43
+#define MCAST_UNBLOCK_SOURCE 44
+#define MCAST_LEAVE_GROUP 45
+#define MCAST_JOIN_SOURCE_GROUP 46
+#define MCAST_LEAVE_SOURCE_GROUP 47
+#define MCAST_MSFILTER 48
#define MCAST_EXCLUDE 0
#define MCAST_INCLUDE 1
@@ -131,6 +138,32 @@ struct ip_msfilter {
(sizeof(struct ip_msfilter) - sizeof(__u32) \
+ (numsrc) * sizeof(__u32))
+struct group_req
+{
+ __u32 gr_interface; /* interface index */
+ struct sockaddr_storage gr_group; /* group address */
+};
+
+struct group_source_req
+{
+ __u32 gsr_interface; /* interface index */
+ struct sockaddr_storage gsr_group; /* group address */
+ struct sockaddr_storage gsr_source; /* source address */
+};
+
+struct group_filter
+{
+ __u32 gf_interface; /* interface index */
+ struct sockaddr_storage gf_group; /* multicast address */
+ __u32 gf_fmode; /* filter mode */
+ __u32 gf_numsrc; /* number of sources */
+ struct sockaddr_storage gf_slist[1]; /* interface index */
+};
+
+#define GROUP_FILTER_SIZE(numsrc) \
+ (sizeof(struct group_filter) - sizeof(struct sockaddr_storage) \
+ + (numsrc) * sizeof(struct sockaddr_storage))
+
struct in_pktinfo
{
int ipi_ifindex;
diff --git a/include/linux/ip.h b/include/linux/ip.h
index 5d3212a73ace..dca25a95d267 100644
--- a/include/linux/ip.h
+++ b/include/linux/ip.h
@@ -79,6 +79,7 @@
#define IPOPT_TS_PRESPEC 3 /* specified modules only */
#ifdef __KERNEL__
+#include <linux/config.h>
#include <linux/types.h>
#include <net/sock.h>
#include <linux/igmp.h>
diff --git a/include/linux/tcp.h b/include/linux/tcp.h
index da4be9ce631d..f5d9de777530 100644
--- a/include/linux/tcp.h
+++ b/include/linux/tcp.h
@@ -17,6 +17,7 @@
#ifndef _LINUX_TCP_H
#define _LINUX_TCP_H
+#include <linux/config.h>
#include <linux/skbuff.h>
#include <asm/byteorder.h>
#include <net/sock.h>
diff --git a/include/linux/udp.h b/include/linux/udp.h
index 2cd62b5b79f3..0d87073be1b4 100644
--- a/include/linux/udp.h
+++ b/include/linux/udp.h
@@ -17,6 +17,7 @@
#ifndef _LINUX_UDP_H
#define _LINUX_UDP_H
+#include <linux/config.h>
#include <asm/byteorder.h>
#include <net/sock.h>
#include <linux/ip.h>