Subject: kern/3455: Please make pppoutput public again
To: None <gnats-bugs@gnats.netbsd.org>
From: None <martin@rumolt.teuto.de>
List: netbsd-bugs
Date: 04/07/1997 11:05:51
>Number:         3455
>Category:       kern
>Synopsis:       Can't use pppoutput from other drivers any more
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    kern-bug-people (Kernel Bug People)
>State:          open
>Class:          change-request
>Submitter-Id:   net
>Arrival-Date:   Mon Apr  7 02:35:02 1997
>Last-Modified:
>Originator:     Martin Husemann
>Organization:
private
>Release:        current as of Apr 6 1997
>Environment:
	
System: NetBSD hwart.teuto.de 1.2D NetBSD 1.2D (HWART) #0: Sun Apr  6 13:27:01 MEST 1997     root@hwart.teuto.de:/usr/src/sys/arch/i386/compile/HWART

>Description:

The last changes to sys/net/if_ppp.[ch] made the pppoutput function private
to the ppp interface. There are drivers out there (ISDN ppp support for
the BISDN package) which need this function to perform output on their own
interface derived from ppp. No need to prevent object oriented reuse of
existing code here ;-)

>How-To-Repeat:

Try to call pppoutput from a driver outside of if_ppp.c.

>Fix:

Apply this patch:

*** sys/net/if_ppp.c	Thu Mar 13 13:22:19 1997
--- sys-isdn/net/if_ppp.c	Mon Apr  7 13:03:39 1997
***************
*** 128,132 ****
  
  static int	pppsioctl __P((struct ifnet *, u_long, caddr_t));
! static int	pppoutput __P((struct ifnet *, struct mbuf *,
  			       struct sockaddr *, struct rtentry *));
  static void	ppp_requeue __P((struct ppp_softc *));
--- 128,132 ----
  
  static int	pppsioctl __P((struct ifnet *, u_long, caddr_t));
! int		pppoutput __P((struct ifnet *, struct mbuf *,
  			       struct sockaddr *, struct rtentry *));
  static void	ppp_requeue __P((struct ppp_softc *));
*** sys/net/if_ppp.h	Thu Mar 13 13:22:20 1997
--- sys-isdn/net/if_ppp.h	Mon Apr  7 13:03:39 1997
***************
*** 136,139 ****
--- 136,141 ----
  void pppattach __P((void));
  void pppintr __P((void));
+ int pppoutput __P((struct ifnet *, struct mbuf *,
+ 	          struct sockaddr *, struct rtentry *));
  #endif
  #endif /* _IF_PPP_H_ */

>Audit-Trail:
>Unformatted: