Fix test for determining when RSVP is inactive in a router. (In this

case, multicast options are not passed to ip_mforward().)  The previous
version had a wrong test, thus causing RSVP mrouters to forward RSVP messages
in violation of the spec.
This commit is contained in:
Garrett Wollman 1995-07-26 18:05:16 +00:00
parent 1b9a801b93
commit b124e4f284
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=9728
3 changed files with 7 additions and 6 deletions

View File

@ -9,7 +9,7 @@
* Modified by Bill Fenner, PARC, April 1995
*
* MROUTING Revision: 3.5
* $Id: ip_mroute.c,v 1.19 1995/06/26 16:15:49 wollman Exp $
* $Id: ip_mroute.c,v 1.20 1995/07/24 18:15:13 wollman Exp $
*/
@ -52,8 +52,6 @@
#endif
#endif
extern int rsvp_on;
#ifndef MROUTING
/*
* Dummy routines and globals used when multicast routing is not compiled in.
@ -1126,6 +1124,8 @@ X_ip_mforward(ip, ifp, m, imo)
if (rsvpdebug && ip->ip_p == IPPROTO_RSVP) {
printf("Warning: IPPROTO_RSVP from %x to %x without vif option\n",
ntohl(ip->ip_src.s_addr), ntohl(ip->ip_dst.s_addr));
if(!imo)
printf("In fact, no options were specified at all\n");
}
/*

View File

@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)ip_output.c 8.3 (Berkeley) 1/21/94
* $Id: ip_output.c,v 1.21 1995/07/01 19:09:40 joerg Exp $
* $Id: ip_output.c,v 1.22 1995/07/02 16:45:07 joerg Exp $
*/
#include <sys/param.h>
@ -247,7 +247,7 @@ ip_output(m0, opt, ro, flags, imo)
* is multicast and not just sent down one link
* as prescribed by rsvpd.
*/
if (ip_rsvpd == NULL)
if (!rsvp_on)
imo = NULL;
if (ip_mforward(ip, ifp, m, imo) != 0) {
m_freem(m);

View File

@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)ip_var.h 8.1 (Berkeley) 6/10/93
* $Id: ip_var.h,v 1.11 1995/06/13 17:51:15 wollman Exp $
* $Id: ip_var.h,v 1.12 1995/06/28 05:13:02 davidg Exp $
*/
#ifndef _NETINET_IP_VAR_H_
@ -161,6 +161,7 @@ extern struct socket *ip_rsvpd; /* reservation protocol daemon */
extern struct socket *ip_mrouter; /* multicast routing daemon */
extern int (*legal_vif_num) __P((int));
extern u_long (*ip_mcast_src) __P((int));
extern int rsvp_on;
int ip_ctloutput __P((int, struct socket *, int, int, struct mbuf **));
void ip_deq __P((struct ipasfrag *));