From abf89faa6cba70bf60125366465c0e019817515c Mon Sep 17 00:00:00 2001 From: Sowmini Varadhan Date: Tue, 27 Apr 1999 22:20:58 +0000 Subject: [PATCH] Updated for OSF 4.0- don't set IFF_MULTICAST on __osf__. Copy the mtu into ifr_data for the SIOCSIFMTU ioctl --- modules/if_ppp.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/modules/if_ppp.c b/modules/if_ppp.c index a2a20ab..b33fc15 100644 --- a/modules/if_ppp.c +++ b/modules/if_ppp.c @@ -24,7 +24,7 @@ * OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, * OR MODIFICATIONS. * - * $Id: if_ppp.c,v 1.12 1999/03/31 06:07:58 paulus Exp $ + * $Id: if_ppp.c,v 1.13 1999/04/27 22:20:58 varadhan Exp $ */ /* @@ -290,9 +290,11 @@ if_ppp_wput(q, mp) ifp->if_unit = unit; ifp->if_mtu = PPP_MTU; ifp->if_flags = IFF_POINTOPOINT | IFF_RUNNING; +#ifndef __osf__ #ifdef IFF_MULTICAST ifp->if_flags |= IFF_MULTICAST; #endif +#endif /* __osf__ */ ifp->if_output = if_ppp_output; #ifdef __osf__ ifp->if_version = "Point-to-Point Protocol, version 2.3.7"; @@ -584,6 +586,7 @@ if_ppp_ioctl(ifp, cmd, data) int s, error; struct ifreq *ifr = (struct ifreq *) data; struct ifaddr *ifa = (struct ifaddr *) data; + u_short mtu; error = 0; s = splimp(); @@ -606,6 +609,15 @@ if_ppp_ioctl(ifp, cmd, data) case SIOCSIFMTU: if ((error = NOTSUSER()) != 0) break; +#ifdef __osf__ + /* this hack is necessary because ifioctl checks ifr_data + * in 4.0 and 5.0, but ifr_data and ifr_metric overlay each + * other in the definition of struct ifreq so pppd can't set both. + */ + bcopy(ifr->ifr_data, &mtu, sizeof (u_short)); + ifr->ifr_mtu = mtu; +#endif + if (ifr->ifr_mtu < PPP_MINMTU || ifr->ifr_mtu > PPP_MAXMTU) { error = EINVAL; break; -- 2.39.2