diff options
author | 2000-07-13 13:41:45 +0000 | |
---|---|---|
committer | 2000-07-13 13:41:45 +0000 | |
commit | 49d02f77d87b786fa0cd3efbbcf402ff20b28b49 (patch) | |
tree | 6f6f013c624106138df82505944c661c12555674 | |
parent | rtadvd.conf is not required, actually (diff) | |
download | wireguard-openbsd-49d02f77d87b786fa0cd3efbbcf402ff20b28b49.tar.xz wireguard-openbsd-49d02f77d87b786fa0cd3efbbcf402ff20b28b49.zip |
enable setsockopt related to IPv6 multicast routing.
-rw-r--r-- | sys/netinet6/raw_ipv6.c | 31 |
1 files changed, 28 insertions, 3 deletions
diff --git a/sys/netinet6/raw_ipv6.c b/sys/netinet6/raw_ipv6.c index fbd3649bd0b..427ce5a7c5a 100644 --- a/sys/netinet6/raw_ipv6.c +++ b/sys/netinet6/raw_ipv6.c @@ -1,4 +1,4 @@ -/* $OpenBSD: raw_ipv6.c,v 1.24 2000/06/21 18:42:19 itojun Exp $ */ +/* $OpenBSD: raw_ipv6.c,v 1.25 2000/07/13 13:41:45 itojun Exp $ */ /* %%% copyright-nrl-95 @@ -44,7 +44,7 @@ didn't get a copy, you may request one from <license@ipv6.nrl.navy.mil>. * SUCH DAMAGE. * * @(#)raw_ip.c 8.7 (Berkeley) 5/15/95 - * $Id: raw_ipv6.c,v 1.24 2000/06/21 18:42:19 itojun Exp $ + * $Id: raw_ipv6.c,v 1.25 2000/07/13 13:41:45 itojun Exp $ */ #include <sys/param.h> @@ -62,7 +62,6 @@ didn't get a copy, you may request one from <license@ipv6.nrl.navy.mil>. #include <net/route.h> #include <netinet/in.h> -#include <netinet/ip_mroute.h> #include <netinet/in_systm.h> #include <netinet/ip.h> #include <netinet/in_pcb.h> @@ -71,6 +70,7 @@ didn't get a copy, you may request one from <license@ipv6.nrl.navy.mil>. #include <netinet/ip6.h> #include <netinet6/ip6_var.h> #include <netinet/icmp6.h> +#include <netinet6/ip6_mroute.h> #include <netinet6/ip6protosw.h> #undef IPSEC @@ -530,6 +530,7 @@ rip6_ctloutput(op, so, level, optname, m) struct mbuf **m; { register struct inpcb *inp = sotoinpcb(so); + int error; if ((level != IPPROTO_IPV6) && (level != IPPROTO_ICMPV6)) { if (op == PRCO_SETOPT && *m) @@ -538,6 +539,29 @@ rip6_ctloutput(op, so, level, optname, m) } switch (optname) { + case MRT6_INIT: + case MRT6_DONE: + case MRT6_ADD_MIF: + case MRT6_DEL_MIF: + case MRT6_ADD_MFC: + case MRT6_DEL_MFC: + case MRT6_PIM: + if (level != IPPROTO_IPV6) { + if (op == PRCO_SETOPT && *m) + (void)m_free(*m); + return EINVAL; + } + + if (op == PRCO_SETOPT) { + error = ip6_mrouter_set(optname, so, *m); + if (*m) + (void)m_free(*m); + } else if (op == PRCO_GETOPT) + error = ip6_mrouter_get(optname, so, m); + else + error = EINVAL; + return (error); + case IPV6_CHECKSUM: if (op == PRCO_SETOPT || op == PRCO_GETOPT) { if (op == PRCO_SETOPT) { @@ -553,6 +577,7 @@ rip6_ctloutput(op, so, level, optname, m) return 0; } break; + case ICMP6_FILTER: if (level != IPPROTO_ICMPV6) { if (op == PRCO_SETOPT && *m) |