diff -Naur Linux-Headers/2.6.16.20.old/include/linux/if.h Linux-Headers/2.6.16.20/include/linux/if.h
--- Linux-Headers/2.6.16.20.old/include/linux/if.h	2006-08-25 10:10:18.000000000 +0200
+++ Linux-Headers/2.6.16.20/include/linux/if.h	2006-08-25 10:14:41.000000000 +0200
@@ -89,6 +89,7 @@
  *	being very small might be worth keeping for clean configuration.
  */
 
+#ifndef _NET_IF_H
 struct ifmap 
 {
 	unsigned long mem_start;
@@ -99,6 +100,7 @@
 	unsigned char port;
 	/* 3 bytes spare */
 };
+#endif
 
 struct if_settings
 {
@@ -106,15 +108,15 @@
 	unsigned int size;	/* Size of the data allocated by the caller */
 	union {
 		/* {atm/eth/dsl}_settings anyone ? */
-		raw_hdlc_proto		 *raw_hdlc;
-		cisco_proto		 *cisco;
-		fr_proto		 *fr;
-		fr_proto_pvc		 *fr_pvc;
-		fr_proto_pvc_info	 *fr_pvc_info;
+		raw_hdlc_proto		 __user *raw_hdlc;
+		cisco_proto		 __user *cisco;
+		fr_proto		 __user *fr;
+		fr_proto_pvc		 __user *fr_pvc;
+		fr_proto_pvc_info	 __user *fr_pvc_info;
 
 		/* interface settings */
-		sync_serial_settings	 *sync;
-		te1_settings		 *te1;
+		sync_serial_settings	 __user *sync;
+		te1_settings		 __user *te1;
 	} ifs_ifsu;
 };
 
@@ -125,6 +127,7 @@
  * remainder may be interface specific.
  */
 
+#ifndef _NET_IF_H
 struct ifreq 
 {
 #define IFHWADDRLEN	6
@@ -149,6 +152,7 @@
 		struct	if_settings ifru_settings;
 	} ifr_ifru;
 };
+#endif
 
 #define ifr_name	ifr_ifrn.ifrn_name	/* interface name 	*/
 #define ifr_hwaddr	ifr_ifru.ifru_hwaddr	/* MAC address 		*/
@@ -175,6 +179,7 @@
  * must know all networks accessible).
  */
 
+#ifndef _NET_IF_H
 struct ifconf 
 {
 	int	ifc_len;			/* size of buffer	*/
@@ -184,6 +189,8 @@
 		struct ifreq  *ifcu_req;
 	} ifc_ifcu;
 };
+#endif
+
 #define	ifc_buf	ifc_ifcu.ifcu_buf		/* buffer address	*/
 #define	ifc_req	ifc_ifcu.ifcu_req		/* array of structures	*/
 
