aboutsummaryrefslogtreecommitdiff
path: root/sys/netinet6/in6.h
diff options
context:
space:
mode:
authorBruce M Simpson <bms@FreeBSD.org>2009-04-29 10:22:44 +0000
committerBruce M Simpson <bms@FreeBSD.org>2009-04-29 10:22:44 +0000
commitba970783a9c3022d8df57f05c5dbb1a044369a1b (patch)
treeed3f9f0b20afe8431621112b782bbd849bd087af /sys/netinet6/in6.h
parent9efc1a1bbf4ced1f38d1f78810626d59ee7890b5 (diff)
downloadsrc-ba970783a9c3022d8df57f05c5dbb1a044369a1b.tar.gz
src-ba970783a9c3022d8df57f05c5dbb1a044369a1b.zip
Add IN6ADDR_LINKLOCAL_ALLV2ROUTERS_INIT, in6addr_linklocal_allv2routers
for use by MLDv2. Add IPv6 SSM socket layer membership vector size constants and tree bounds. Remove unreferenced struct ipv6_mreq_source; SSM for IPv6 goes straight to the RFC 3678 socket options.
Notes
Notes: svn path=/head/; revision=191662
Diffstat (limited to 'sys/netinet6/in6.h')
-rw-r--r--sys/netinet6/in6.h31
1 files changed, 19 insertions, 12 deletions
diff --git a/sys/netinet6/in6.h b/sys/netinet6/in6.h
index 04a68d886971..ecec6e4963bf 100644
--- a/sys/netinet6/in6.h
+++ b/sys/netinet6/in6.h
@@ -201,6 +201,9 @@ extern const struct in6_addr in6mask128;
#define IN6ADDR_LINKLOCAL_ALLROUTERS_INIT \
{{{ 0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02 }}}
+#define IN6ADDR_LINKLOCAL_ALLV2ROUTERS_INIT \
+ {{{ 0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16 }}}
#endif
extern const struct in6_addr in6addr_any;
@@ -209,6 +212,7 @@ extern const struct in6_addr in6addr_loopback;
extern const struct in6_addr in6addr_nodelocal_allnodes;
extern const struct in6_addr in6addr_linklocal_allnodes;
extern const struct in6_addr in6addr_linklocal_allrouters;
+extern const struct in6_addr in6addr_linklocal_allv2routers;
#endif
/*
@@ -494,24 +498,27 @@ struct route_in6 {
#define IPV6_DEFAULT_MULTICAST_LOOP 1 /* normally hear sends if a member */
/*
- * Argument structure for IPV6_JOIN_GROUP and IPV6_LEAVE_GROUP.
+ * The im6o_membership vector for each socket is now dynamically allocated at
+ * run-time, bounded by USHRT_MAX, and is reallocated when needed, sized
+ * according to a power-of-two increment.
*/
-struct ipv6_mreq {
- struct in6_addr ipv6mr_multiaddr;
- unsigned int ipv6mr_interface;
-};
+#define IPV6_MIN_MEMBERSHIPS 31
+#define IPV6_MAX_MEMBERSHIPS 4095
-#ifdef notyet
/*
- * Argument structure for IPV6_ADD_SOURCE_MEMBERSHIP,
- * IPV6_DROP_SOURCE_MEMBERSHIP, IPV6_BLOCK_SOURCE, and IPV6_UNBLOCK_SOURCE.
+ * Default resource limits for IPv6 multicast source filtering.
+ * These may be modified by sysctl.
*/
-struct ipv6_mreq_source {
+#define IPV6_MAX_GROUP_SRC_FILTER 512 /* sources per group */
+#define IPV6_MAX_SOCK_SRC_FILTER 128 /* sources per socket/group */
+
+/*
+ * Argument structure for IPV6_JOIN_GROUP and IPV6_LEAVE_GROUP.
+ */
+struct ipv6_mreq {
struct in6_addr ipv6mr_multiaddr;
- struct in6_addr ipv6mr_sourceaddr;
- uint32_t ipv6mr_interface;
+ unsigned int ipv6mr_interface;
};
-#endif
/*
* IPV6_PKTINFO: Packet information(RFC2292 sec 5)