mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-04 04:04:19 +00:00
[IPV6] MROUTE: Adjust IPV6 multicast routing module to use mroute6 header declarations.
- This patch adjusts IPv6 multicast routing module, net/ipv6/ip6mr.c, to use mroute6 header definitions instead of mroute. (MFC6_LINES instead of MFC_LINES, MAXMIFS instead of MAXVIFS, mifi_t instead of vifi_t.) - In addition, inclusion of some headers was removed as it is not needed. Signed-off-by: Rami Rosen <ramirose@gmail.com> Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
This commit is contained in:
parent
b2a9d7c2f8
commit
6ac7eb0868
@ -27,27 +27,18 @@
|
|||||||
#include <linux/fcntl.h>
|
#include <linux/fcntl.h>
|
||||||
#include <linux/stat.h>
|
#include <linux/stat.h>
|
||||||
#include <linux/socket.h>
|
#include <linux/socket.h>
|
||||||
#include <linux/in.h>
|
|
||||||
#include <linux/inet.h>
|
#include <linux/inet.h>
|
||||||
#include <linux/netdevice.h>
|
#include <linux/netdevice.h>
|
||||||
#include <linux/inetdevice.h>
|
#include <linux/inetdevice.h>
|
||||||
#include <linux/igmp.h>
|
|
||||||
#include <linux/proc_fs.h>
|
#include <linux/proc_fs.h>
|
||||||
#include <linux/seq_file.h>
|
#include <linux/seq_file.h>
|
||||||
#include <linux/mroute.h>
|
|
||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
#include <net/ip.h>
|
|
||||||
#include <net/protocol.h>
|
#include <net/protocol.h>
|
||||||
#include <linux/skbuff.h>
|
#include <linux/skbuff.h>
|
||||||
#include <net/sock.h>
|
#include <net/sock.h>
|
||||||
#include <net/icmp.h>
|
|
||||||
#include <net/udp.h>
|
|
||||||
#include <net/raw.h>
|
#include <net/raw.h>
|
||||||
#include <net/route.h>
|
|
||||||
#include <linux/notifier.h>
|
#include <linux/notifier.h>
|
||||||
#include <linux/if_arp.h>
|
#include <linux/if_arp.h>
|
||||||
#include <linux/netfilter_ipv4.h>
|
|
||||||
#include <net/ipip.h>
|
|
||||||
#include <net/checksum.h>
|
#include <net/checksum.h>
|
||||||
#include <net/netlink.h>
|
#include <net/netlink.h>
|
||||||
|
|
||||||
@ -83,7 +74,7 @@ static int mroute_do_pim;
|
|||||||
#define mroute_do_pim 0
|
#define mroute_do_pim 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static struct mfc6_cache *mfc6_cache_array[MFC_LINES]; /* Forwarding cache */
|
static struct mfc6_cache *mfc6_cache_array[MFC6_LINES]; /* Forwarding cache */
|
||||||
|
|
||||||
static struct mfc6_cache *mfc_unres_queue; /* Queue of unresolved entries */
|
static struct mfc6_cache *mfc_unres_queue; /* Queue of unresolved entries */
|
||||||
static atomic_t cache_resolve_queue_len; /* Size of unresolved */
|
static atomic_t cache_resolve_queue_len; /* Size of unresolved */
|
||||||
@ -102,7 +93,7 @@ static DEFINE_SPINLOCK(mfc_unres_lock);
|
|||||||
static struct kmem_cache *mrt_cachep __read_mostly;
|
static struct kmem_cache *mrt_cachep __read_mostly;
|
||||||
|
|
||||||
static int ip6_mr_forward(struct sk_buff *skb, struct mfc6_cache *cache);
|
static int ip6_mr_forward(struct sk_buff *skb, struct mfc6_cache *cache);
|
||||||
static int ip6mr_cache_report(struct sk_buff *pkt, vifi_t vifi, int assert);
|
static int ip6mr_cache_report(struct sk_buff *pkt, mifi_t mifi, int assert);
|
||||||
static int ip6mr_fill_mroute(struct sk_buff *skb, struct mfc6_cache *c, struct rtmsg *rtm);
|
static int ip6mr_fill_mroute(struct sk_buff *skb, struct mfc6_cache *c, struct rtmsg *rtm);
|
||||||
|
|
||||||
#ifdef CONFIG_IPV6_PIMSM_V2
|
#ifdef CONFIG_IPV6_PIMSM_V2
|
||||||
@ -597,9 +588,9 @@ static void ip6mr_update_thresholds(struct mfc6_cache *cache, unsigned char *ttl
|
|||||||
{
|
{
|
||||||
int vifi;
|
int vifi;
|
||||||
|
|
||||||
cache->mfc_un.res.minvif = MAXVIFS;
|
cache->mfc_un.res.minvif = MAXMIFS;
|
||||||
cache->mfc_un.res.maxvif = 0;
|
cache->mfc_un.res.maxvif = 0;
|
||||||
memset(cache->mfc_un.res.ttls, 255, MAXVIFS);
|
memset(cache->mfc_un.res.ttls, 255, MAXMIFS);
|
||||||
|
|
||||||
for (vifi = 0; vifi < maxvif; vifi++) {
|
for (vifi = 0; vifi < maxvif; vifi++) {
|
||||||
if (MIF_EXISTS(vifi) && ttls[vifi] && ttls[vifi] < 255) {
|
if (MIF_EXISTS(vifi) && ttls[vifi] && ttls[vifi] < 255) {
|
||||||
@ -700,7 +691,7 @@ static struct mfc6_cache *ip6mr_cache_alloc(void)
|
|||||||
if (c == NULL)
|
if (c == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
memset(c, 0, sizeof(*c));
|
memset(c, 0, sizeof(*c));
|
||||||
c->mfc_un.res.minvif = MAXVIFS;
|
c->mfc_un.res.minvif = MAXMIFS;
|
||||||
return c;
|
return c;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -753,7 +744,7 @@ static void ip6mr_cache_resolve(struct mfc6_cache *uc, struct mfc6_cache *c)
|
|||||||
* Called under mrt_lock.
|
* Called under mrt_lock.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static int ip6mr_cache_report(struct sk_buff *pkt, vifi_t vifi, int assert)
|
static int ip6mr_cache_report(struct sk_buff *pkt, mifi_t mifi, int assert)
|
||||||
{
|
{
|
||||||
struct sk_buff *skb;
|
struct sk_buff *skb;
|
||||||
struct mrt6msg *msg;
|
struct mrt6msg *msg;
|
||||||
@ -815,7 +806,7 @@ static int ip6mr_cache_report(struct sk_buff *pkt, vifi_t vifi, int assert)
|
|||||||
|
|
||||||
msg->im6_mbz = 0;
|
msg->im6_mbz = 0;
|
||||||
msg->im6_msgtype = assert;
|
msg->im6_msgtype = assert;
|
||||||
msg->im6_mif = vifi;
|
msg->im6_mif = mifi;
|
||||||
msg->im6_pad = 0;
|
msg->im6_pad = 0;
|
||||||
ipv6_addr_copy(&msg->im6_src, &ipv6_hdr(pkt)->saddr);
|
ipv6_addr_copy(&msg->im6_src, &ipv6_hdr(pkt)->saddr);
|
||||||
ipv6_addr_copy(&msg->im6_dst, &ipv6_hdr(pkt)->daddr);
|
ipv6_addr_copy(&msg->im6_dst, &ipv6_hdr(pkt)->daddr);
|
||||||
@ -848,7 +839,7 @@ static int ip6mr_cache_report(struct sk_buff *pkt, vifi_t vifi, int assert)
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
static int
|
static int
|
||||||
ip6mr_cache_unresolved(vifi_t vifi, struct sk_buff *skb)
|
ip6mr_cache_unresolved(mifi_t mifi, struct sk_buff *skb)
|
||||||
{
|
{
|
||||||
int err;
|
int err;
|
||||||
struct mfc6_cache *c;
|
struct mfc6_cache *c;
|
||||||
@ -883,7 +874,7 @@ ip6mr_cache_unresolved(vifi_t vifi, struct sk_buff *skb)
|
|||||||
/*
|
/*
|
||||||
* Reflect first query at pim6sd
|
* Reflect first query at pim6sd
|
||||||
*/
|
*/
|
||||||
if ((err = ip6mr_cache_report(skb, vifi, MRT6MSG_NOCACHE)) < 0) {
|
if ((err = ip6mr_cache_report(skb, mifi, MRT6MSG_NOCACHE)) < 0) {
|
||||||
/* If the report failed throw the cache entry
|
/* If the report failed throw the cache entry
|
||||||
out - Brad Parker
|
out - Brad Parker
|
||||||
*/
|
*/
|
||||||
@ -992,11 +983,11 @@ static int ip6mr_mfc_add(struct mf6cctl *mfc, int mrtsock)
|
|||||||
{
|
{
|
||||||
int line;
|
int line;
|
||||||
struct mfc6_cache *uc, *c, **cp;
|
struct mfc6_cache *uc, *c, **cp;
|
||||||
unsigned char ttls[MAXVIFS];
|
unsigned char ttls[MAXMIFS];
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
memset(ttls, 255, MAXVIFS);
|
memset(ttls, 255, MAXMIFS);
|
||||||
for (i = 0; i < MAXVIFS; i++) {
|
for (i = 0; i < MAXMIFS; i++) {
|
||||||
if (IF_ISSET(i, &mfc->mf6cc_ifset))
|
if (IF_ISSET(i, &mfc->mf6cc_ifset))
|
||||||
ttls[i] = 1;
|
ttls[i] = 1;
|
||||||
|
|
||||||
@ -1188,7 +1179,7 @@ int ip6_mroute_setsockopt(struct sock *sk, int optname, char __user *optval, int
|
|||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
if (copy_from_user(&vif, optval, sizeof(vif)))
|
if (copy_from_user(&vif, optval, sizeof(vif)))
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
if (vif.mif6c_mifi >= MAXVIFS)
|
if (vif.mif6c_mifi >= MAXMIFS)
|
||||||
return -ENFILE;
|
return -ENFILE;
|
||||||
rtnl_lock();
|
rtnl_lock();
|
||||||
ret = mif6_add(&vif, sk == mroute6_socket);
|
ret = mif6_add(&vif, sk == mroute6_socket);
|
||||||
|
Loading…
Reference in New Issue
Block a user