ip6mr.c (0588000eac9ba4178cebade437da3b28e8fad48f) ip6mr.c (af31f412c7c7a3c0fda4bf4beaf0c85af1f263c8)
1/*
2 * Linux IPv6 multicast routing support for BSD pim6sd
3 * Based on net/ipv4/ipmr.c.
4 *
5 * (c) 2004 Mickael Hoerdt, <hoerdt@clarinet.u-strasbg.fr>
6 * LSIIT Laboratory, Strasbourg, France
7 * (c) 2004 Jean-Philippe Andriot, <jean-philippe.andriot@6WIND.com>
8 * 6WIND, Paris, France

--- 1569 unchanged lines hidden (view full) ---

1578 struct net *net = sock_net(sk);
1579 struct mr6_table *mrt;
1580
1581 mrt = ip6mr_get_table(net, raw6_sk(sk)->ip6mr_table ? : RT6_TABLE_DFLT);
1582 if (mrt == NULL)
1583 return -ENOENT;
1584
1585 if (optname != MRT6_INIT) {
1/*
2 * Linux IPv6 multicast routing support for BSD pim6sd
3 * Based on net/ipv4/ipmr.c.
4 *
5 * (c) 2004 Mickael Hoerdt, <hoerdt@clarinet.u-strasbg.fr>
6 * LSIIT Laboratory, Strasbourg, France
7 * (c) 2004 Jean-Philippe Andriot, <jean-philippe.andriot@6WIND.com>
8 * 6WIND, Paris, France

--- 1569 unchanged lines hidden (view full) ---

1578 struct net *net = sock_net(sk);
1579 struct mr6_table *mrt;
1580
1581 mrt = ip6mr_get_table(net, raw6_sk(sk)->ip6mr_table ? : RT6_TABLE_DFLT);
1582 if (mrt == NULL)
1583 return -ENOENT;
1584
1585 if (optname != MRT6_INIT) {
1586 if (sk != mrt->mroute6_sk && !capable(CAP_NET_ADMIN))
1586 if (sk != mrt->mroute6_sk && !ns_capable(net->user_ns, CAP_NET_ADMIN))
1587 return -EACCES;
1588 }
1589
1590 switch (optname) {
1591 case MRT6_INIT:
1592 if (sk->sk_type != SOCK_RAW ||
1593 inet_sk(sk)->inet_num != IPPROTO_ICMPV6)
1594 return -EOPNOTSUPP;

--- 690 unchanged lines hidden ---
1587 return -EACCES;
1588 }
1589
1590 switch (optname) {
1591 case MRT6_INIT:
1592 if (sk->sk_type != SOCK_RAW ||
1593 inet_sk(sk)->inet_num != IPPROTO_ICMPV6)
1594 return -EOPNOTSUPP;

--- 690 unchanged lines hidden ---