* OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS,
* OR MODIFICATIONS.
*
- * $Id: if_ppp.c,v 1.6 1997/07/14 03:51:02 paulus Exp $
+ * $Id: if_ppp.c,v 1.17 1999/12/23 01:48:45 paulus Exp $
*/
/*
#ifdef __osf__
#include <sys/ioctl.h>
#include <net/if_types.h>
-#include "ppp_mod.h"
#else
#include <sys/sockio.h>
-#include <modules/ppp_mod.h>
#endif
+#include "ppp_mod.h"
#include <sys/stream.h>
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.1";
+ ifp->if_version = "Point-to-Point Protocol, version 2.3.11";
ifp->if_mediamtu = PPP_MTU;
ifp->if_type = IFT_PPP;
ifp->if_hdrlen = PPP_HDRLEN;
int s, error;
struct ifreq *ifr = (struct ifreq *) data;
struct ifaddr *ifa = (struct ifaddr *) data;
+ u_short mtu;
error = 0;
s = splimp();
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;