*** /sys/netinet/ip_output.c.orig	Fri Aug 28 13:49:46 1998
--- /sys/netinet/ip_output.c	Fri Aug 28 13:53:05 1998
***************
*** 99,104 ****
--- 99,109 ----
  static struct mbuf *ip_insertoptions __P((struct mbuf *, struct mbuf *, int *));
  static void ip_mloopback
  	__P((struct ifnet *, struct mbuf *, struct sockaddr_in *));
+ #if defined(IPFILTER)
+ extern int fr_check __P((struct ip *, int, struct ifnet *, int, struct mbuf **));
+ extern int (*fr_checkp) __P((struct ip *, int, struct ifnet *, int, struct mbuf **));
+ #endif
+ 
  
  /*
   * IP output.  The packet in mbuf chain m contains a skeletal IP
***************
*** 447,452 ****
--- 452,467 ----
  
  	if (mtu > IP_MAXPACKET)
  		mtu = IP_MAXPACKET;
+ 
+ #if defined(IPFILTER)
+ 	if (fr_checkp) {
+ 		struct mbuf *m1 = m;
+ 
+ 		if ((error = (*fr_checkp)(ip, hlen, ifp, 1, &m1)) || !m1)
+ 			goto done;
+ 		ip = mtod(m = m1, struct ip *);
+ 	}
+ #endif
  
  #ifdef	IPFW
  	if (ipfw_output.filter &&
