kame 1.32 -> 1.33
in add_m6fc(), set interface list for all cases. in response to a report from Hoerdt Mickael. kame 1.31 -> 1.32 discard PIM register if the version of the inner packet is incorrect (i.e. IPv6) (according to clarfication of recent discussion in the IETF pim ML)
This commit is contained in:
parent
dd2b039a87
commit
a91a9fde81
@ -1,5 +1,5 @@
|
||||
/* $FreeBSD$ */
|
||||
/* $KAME: ip6_mroute.c,v 1.24 2000/05/19 07:37:05 jinmei Exp $ */
|
||||
/* $KAME: ip6_mroute.c,v 1.33 2000/10/19 02:23:43 jinmei Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (C) 1998 WIDE Project.
|
||||
@ -74,6 +74,8 @@
|
||||
#include <netinet6/pim6.h>
|
||||
#include <netinet6/pim6_var.h>
|
||||
|
||||
#include <net/net_osdep.h>
|
||||
|
||||
static MALLOC_DEFINE(M_MRTABLE, "mf6c", "multicast forwarding cache entry");
|
||||
|
||||
#define M_HASCL(m) ((m)->m_flags & M_EXT)
|
||||
@ -760,6 +762,7 @@ add_m6fc(mfccp)
|
||||
rt->mf6c_origin = mfccp->mf6cc_origin;
|
||||
rt->mf6c_mcastgrp = mfccp->mf6cc_mcastgrp;
|
||||
rt->mf6c_parent = mfccp->mf6cc_parent;
|
||||
rt->mf6c_ifset = mfccp->mf6cc_ifset;
|
||||
/* initialize pkt counters per src-grp */
|
||||
rt->mf6c_pkt_cnt = 0;
|
||||
rt->mf6c_byte_cnt = 0;
|
||||
@ -783,6 +786,7 @@ add_m6fc(mfccp)
|
||||
rt->mf6c_origin = mfccp->mf6cc_origin;
|
||||
rt->mf6c_mcastgrp = mfccp->mf6cc_mcastgrp;
|
||||
rt->mf6c_parent = mfccp->mf6cc_parent;
|
||||
rt->mf6c_ifset = mfccp->mf6cc_ifset;
|
||||
/* initialize pkt counters per src-grp */
|
||||
rt->mf6c_pkt_cnt = 0;
|
||||
rt->mf6c_byte_cnt = 0;
|
||||
@ -934,6 +938,28 @@ ip6_mforward(ip6, ifp, m)
|
||||
return 0;
|
||||
ip6->ip6_hlim--;
|
||||
|
||||
/*
|
||||
* Source address check: do not forward packets with unspecified
|
||||
* source. It was discussed in July 2000, on ipngwg mailing list.
|
||||
* This is rather more serious than unicast cases, because some
|
||||
* MLD packets can be sent with the unspecified source address
|
||||
* (although such packets must normally set 1 to the hop limit field).
|
||||
*/
|
||||
if (IN6_IS_ADDR_UNSPECIFIED(&ip6->ip6_src)) {
|
||||
ip6stat.ip6s_cantforward++;
|
||||
if (ip6_log_time + ip6_log_interval < time_second) {
|
||||
ip6_log_time = time_second;
|
||||
log(LOG_DEBUG,
|
||||
"cannot forward "
|
||||
"from %s to %s nxt %d received on %s\n",
|
||||
ip6_sprintf(&ip6->ip6_src),
|
||||
ip6_sprintf(&ip6->ip6_dst),
|
||||
ip6->ip6_nxt,
|
||||
if_name(m->m_pkthdr.rcvif));
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Determine forwarding mifs from the forwarding cache table
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user