diff --git a/libc/kernel/common/linux/if.h b/libc/kernel/common/linux/if.h
index 7db4888..87f02e1 100644
--- a/libc/kernel/common/linux/if.h
+++ b/libc/kernel/common/linux/if.h
@@ -7,178 +7,195 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_IF_H
 #define _LINUX_IF_H
-
 #include <linux/types.h>  
 #include <linux/socket.h>  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/compiler.h>  
-
 #define IFNAMSIZ 16
 #define IFALIASZ 256
 #include <linux/hdlc/ioctl.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IFF_UP 0x1  
 #define IFF_BROADCAST 0x2  
 #define IFF_DEBUG 0x4  
 #define IFF_LOOPBACK 0x8  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IFF_POINTOPOINT 0x10  
 #define IFF_NOTRAILERS 0x20  
 #define IFF_RUNNING 0x40  
 #define IFF_NOARP 0x80  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IFF_PROMISC 0x100  
 #define IFF_ALLMULTI 0x200  
-
 #define IFF_MASTER 0x400  
 #define IFF_SLAVE 0x800  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IFF_MULTICAST 0x1000  
-
 #define IFF_PORTSEL 0x2000  
 #define IFF_AUTOMEDIA 0x4000  
 #define IFF_DYNAMIC 0x8000  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IFF_LOWER_UP 0x10000  
 #define IFF_DORMANT 0x20000  
-
 #define IFF_ECHO 0x40000  
-
 #define IFF_VOLATILE (IFF_LOOPBACK|IFF_POINTOPOINT|IFF_BROADCAST|IFF_ECHO|  IFF_MASTER|IFF_SLAVE|IFF_RUNNING|IFF_LOWER_UP|IFF_DORMANT)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IFF_802_1Q_VLAN 0x1  
 #define IFF_EBRIDGE 0x2  
 #define IFF_SLAVE_INACTIVE 0x4  
 #define IFF_MASTER_8023AD 0x8  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IFF_MASTER_ALB 0x10  
 #define IFF_BONDING 0x20  
 #define IFF_SLAVE_NEEDARP 0x40  
 #define IFF_ISATAP 0x80  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IFF_MASTER_ARPMON 0x100  
 #define IFF_WAN_HDLC 0x200  
 #define IFF_XMIT_DST_RELEASE 0x400  
 #define IFF_DONT_BRIDGE 0x800  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IFF_IN_NETPOLL 0x1000  
 #define IFF_DISABLE_NETPOLL 0x2000  
-
 #define IF_GET_IFACE 0x0001  
 #define IF_GET_PROTO 0x0002
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IF_IFACE_V35 0x1000  
 #define IF_IFACE_V24 0x1001  
 #define IF_IFACE_X21 0x1002  
 #define IF_IFACE_T1 0x1003  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IF_IFACE_E1 0x1004  
 #define IF_IFACE_SYNC_SERIAL 0x1005  
 #define IF_IFACE_X21D 0x1006  
-
 #define IF_PROTO_HDLC 0x2000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IF_PROTO_PPP 0x2001  
 #define IF_PROTO_CISCO 0x2002  
 #define IF_PROTO_FR 0x2003  
 #define IF_PROTO_FR_ADD_PVC 0x2004  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IF_PROTO_FR_DEL_PVC 0x2005  
 #define IF_PROTO_X25 0x2006  
 #define IF_PROTO_HDLC_ETH 0x2007  
 #define IF_PROTO_FR_ADD_ETH_PVC 0x2008  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IF_PROTO_FR_DEL_ETH_PVC 0x2009  
 #define IF_PROTO_FR_PVC 0x200A  
 #define IF_PROTO_FR_ETH_PVC 0x200B
 #define IF_PROTO_RAW 0x200C  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
  IF_OPER_UNKNOWN,
  IF_OPER_NOTPRESENT,
  IF_OPER_DOWN,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  IF_OPER_LOWERLAYERDOWN,
  IF_OPER_TESTING,
  IF_OPER_DORMANT,
  IF_OPER_UP,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 enum {
  IF_LINK_MODE_DEFAULT,
  IF_LINK_MODE_DORMANT,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct ifmap {
  unsigned long mem_start;
  unsigned long mem_end;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short base_addr;
  unsigned char irq;
  unsigned char dma;
  unsigned char port;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct if_settings {
  unsigned int type;
  unsigned int size;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  union {
-
  raw_hdlc_proto __user *raw_hdlc;
  cisco_proto __user *cisco;
  fr_proto __user *fr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  fr_proto_pvc __user *fr_pvc;
  fr_proto_pvc_info __user *fr_pvc_info;
-
  sync_serial_settings __user *sync;
  te1_settings __user *te1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  } ifs_ifsu;
 };
-
 struct ifreq {
 #define IFHWADDRLEN 6
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  union
  {
  char ifrn_name[IFNAMSIZ];
  } ifr_ifrn;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  union {
  struct sockaddr ifru_addr;
  struct sockaddr ifru_dstaddr;
  struct sockaddr ifru_broadaddr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct sockaddr ifru_netmask;
  struct sockaddr ifru_hwaddr;
  short ifru_flags;
  int ifru_ivalue;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int ifru_mtu;
  struct ifmap ifru_map;
  char ifru_slave[IFNAMSIZ];
  char ifru_newname[IFNAMSIZ];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void __user * ifru_data;
  struct if_settings ifru_settings;
  } ifr_ifru;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ifr_name ifr_ifrn.ifrn_name  
 #define ifr_hwaddr ifr_ifru.ifru_hwaddr  
 #define ifr_addr ifr_ifru.ifru_addr  
 #define ifr_dstaddr ifr_ifru.ifru_dstaddr  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ifr_broadaddr ifr_ifru.ifru_broadaddr  
 #define ifr_netmask ifr_ifru.ifru_netmask  
 #define ifr_flags ifr_ifru.ifru_flags  
 #define ifr_metric ifr_ifru.ifru_ivalue  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ifr_mtu ifr_ifru.ifru_mtu  
 #define ifr_map ifr_ifru.ifru_map  
 #define ifr_slave ifr_ifru.ifru_slave  
 #define ifr_data ifr_ifru.ifru_data  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ifr_ifindex ifr_ifru.ifru_ivalue  
 #define ifr_bandwidth ifr_ifru.ifru_ivalue  
 #define ifr_qlen ifr_ifru.ifru_ivalue  
 #define ifr_newname ifr_ifru.ifru_newname  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ifr_settings ifr_ifru.ifru_settings  
-
 struct ifconf {
  int ifc_len;
  union {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  char __user *ifcu_buf;
  struct ifreq __user *ifcu_req;
  } ifc_ifcu;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ifc_buf ifc_ifcu.ifcu_buf  
 #define ifc_req ifc_ifcu.ifcu_req  
-
 #endif
-
