diff --git a/libc/bionic/ether_aton.c b/libc/bionic/ether_aton.c
index 6540c07..edd6b11 100644
--- a/libc/bionic/ether_aton.c
+++ b/libc/bionic/ether_aton.c
@@ -26,11 +26,11 @@
  * SUCH DAMAGE.
  */
 
+#include <net/ethernet.h>
+
+#include <ctype.h>
 #include <stdio.h>
 #include <stdlib.h>
-#include <sys/types.h>
-#include <net/if_ether.h>
-#include <ctype.h>
 
 static inline int
 xdigit (char c) {
diff --git a/libc/bionic/ether_ntoa.c b/libc/bionic/ether_ntoa.c
index f56e48b..7c31af3 100644
--- a/libc/bionic/ether_ntoa.c
+++ b/libc/bionic/ether_ntoa.c
@@ -28,7 +28,7 @@
 
 #include <stdio.h>
 #include <sys/types.h>
-#include <net/if_ether.h>
+#include <net/ethernet.h>
 
 /*
  * Convert Ethernet address to standard hex-digits-and-colons printable form.
diff --git a/libc/include/net/ethernet.h b/libc/include/net/ethernet.h
index 47858b3..d5ba11f 100644
--- a/libc/include/net/ethernet.h
+++ b/libc/include/net/ethernet.h
@@ -29,7 +29,52 @@
 #ifndef _NET_ETHERNET_H_
 #define _NET_ETHERNET_H_
 
+#include <sys/cdefs.h>
+#include <sys/types.h>
+
 #include <linux/if_ether.h>
-#include <net/if_ether.h>
+
+#define ETHERTYPE_IP 0x0800
+#define ETHERTYPE_ARP 0x0806
+#define ETHERTYPE_REVARP 0x8035
+#define ETHERTYPE_VLAN 0x8100
+#define ETHERTYPE_IPX 0x8137
+#define ETHERTYPE_IPV6 0x86dd
+#define ETHERTYPE_LOOPBACK 0x9000
+
+#define ETHERTYPE_TRAIL 0x1000
+#define ETHERTYPE_NTRAILER 16
+
+/*
+ * Some basic Ethernet constants.
+ */
+#define	ETHER_ADDR_LEN	6	/* length of an Ethernet address */
+#define	ETHER_TYPE_LEN	2	/* length of the Ethernet type field */
+#define	ETHER_CRC_LEN	4	/* length of the Ethernet CRC */
+#define	ETHER_HDR_LEN	((ETHER_ADDR_LEN * 2) + ETHER_TYPE_LEN)
+#define	ETHER_MIN_LEN	64	/* minimum frame length, including CRC */
+#define	ETHER_MAX_LEN	1518	/* maximum frame length, including CRC */
+#define	ETHER_MAX_LEN_JUMBO 9018 /* maximum jumbo frame len, including CRC */
+
+/*
+ * Ethernet address - 6 octets
+ * this is only used by the ethers(3) functions.
+ */
+struct ether_addr {
+	u_int8_t ether_addr_octet[ETHER_ADDR_LEN];
+} __attribute__((__packed__));
+
+/*
+ * Structure of a 10Mb/s Ethernet header.
+ */
+struct	ether_header {
+	u_int8_t  ether_dhost[ETHER_ADDR_LEN];
+	u_int8_t  ether_shost[ETHER_ADDR_LEN];
+	u_int16_t ether_type;
+} __attribute__((__packed__));
+
+#define	ETHERMTU_JUMBO	(ETHER_MAX_LEN_JUMBO - ETHER_HDR_LEN - ETHER_CRC_LEN)
+#define	ETHERMTU	(ETHER_MAX_LEN - ETHER_HDR_LEN - ETHER_CRC_LEN)
+#define	ETHERMIN	(ETHER_MIN_LEN - ETHER_HDR_LEN - ETHER_CRC_LEN)
 
 #endif
diff --git a/libc/include/net/ethertypes.h b/libc/include/net/ethertypes.h
deleted file mode 100644
index 1cfd2cd..0000000
--- a/libc/include/net/ethertypes.h
+++ /dev/null
@@ -1,313 +0,0 @@
-/*	$NetBSD: ethertypes.h,v 1.17 2005/12/10 23:21:38 elad Exp $	*/
-
-/*
- * Copyright (c) 1982, 1986, 1993
- *	The Regents of the University of California.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *	@(#)if_ether.h	8.1 (Berkeley) 6/10/93
- */
-
-/*
- * Ethernet protocol types.
- *
- * According to "assigned numbers", the Ethernet protocol numbers are also
- * used as ARP protocol type numbers.
- *
- * I factor them out here to avoid pulling all the Ethernet header file
- * into the hardware independent ARP code. -is
- *
- * Additional sources of information:
- *	http://www.mit.edu/~map/Ethernet/Ethernet.txt
- *	ftp://venera.isi.edu/in-notes/iana/assignments/ethernet-numbers
- *
- */
-
-#ifndef _NET_ETHERTYPES_H_
-#define	_NET_ETHERTYPES_H_
-
-/*
- *  NOTE: 0x0000-0x05DC (0..1500) are generally IEEE 802.3 length fields.
- *  However, there are some conflicts.
- */
-
-#define	ETHERTYPE_8023		0x0004	/* IEEE 802.3 packet */
-		   /* 0x0101 .. 0x1FF	   Experimental */
-#define	ETHERTYPE_PUP		0x0200	/* Xerox PUP protocol - see 0A00 */
-#define	ETHERTYPE_PUPAT		0x0200	/* PUP Address Translation - see 0A01 */
-#define	ETHERTYPE_SPRITE	0x0500	/* ??? */
-			     /* 0x0400	   Nixdorf */
-#define	ETHERTYPE_NS		0x0600	/* XNS */
-#define	ETHERTYPE_NSAT		0x0601	/* XNS Address Translation (3Mb only) */
-#define	ETHERTYPE_DLOG1 	0x0660	/* DLOG (?) */
-#define	ETHERTYPE_DLOG2 	0x0661	/* DLOG (?) */
-#define	ETHERTYPE_IP		0x0800	/* IP protocol */
-#define	ETHERTYPE_X75		0x0801	/* X.75 Internet */
-#define	ETHERTYPE_NBS		0x0802	/* NBS Internet */
-#define	ETHERTYPE_ECMA		0x0803	/* ECMA Internet */
-#define	ETHERTYPE_CHAOS 	0x0804	/* CHAOSnet */
-#define	ETHERTYPE_X25		0x0805	/* X.25 Level 3 */
-#define	ETHERTYPE_ARP		0x0806	/* Address resolution protocol */
-#define	ETHERTYPE_NSCOMPAT	0x0807	/* XNS Compatibility */
-#define	ETHERTYPE_FRARP 	0x0808	/* Frame Relay ARP (RFC1701) */
-			     /* 0x081C	   Symbolics Private */
-		    /* 0x0888 - 0x088A	   Xyplex */
-#define	ETHERTYPE_UBDEBUG	0x0900	/* Ungermann-Bass network debugger */
-#define	ETHERTYPE_IEEEPUP	0x0A00	/* Xerox IEEE802.3 PUP */
-#define	ETHERTYPE_IEEEPUPAT	0x0A01	/* Xerox IEEE802.3 PUP Address Translation */
-#define	ETHERTYPE_VINES 	0x0BAD	/* Banyan VINES */
-#define	ETHERTYPE_VINESLOOP	0x0BAE	/* Banyan VINES Loopback */
-#define	ETHERTYPE_VINESECHO	0x0BAF	/* Banyan VINES Echo */
-
-/*		       0x1000 - 0x100F	   Berkeley Trailer */
-/*
- * The ETHERTYPE_NTRAILER packet types starting at ETHERTYPE_TRAIL have
- * (type-ETHERTYPE_TRAIL)*512 bytes of data followed
- * by an ETHER type (as given above) and then the (variable-length) header.
- */
-#define	ETHERTYPE_TRAIL		0x1000	/* Trailer packet */
-#define	ETHERTYPE_NTRAILER	16
-
-#define	ETHERTYPE_DCA		0x1234	/* DCA - Multicast */
-#define	ETHERTYPE_VALID 	0x1600	/* VALID system protocol */
-#define	ETHERTYPE_DOGFIGHT	0x1989	/* Artificial Horizons ("Aviator" dogfight simulator [on Sun]) */
-#define	ETHERTYPE_RCL		0x1995	/* Datapoint Corporation (RCL lan protocol) */
-
-					/* The following 3C0x types
-					   are unregistered: */
-#define	ETHERTYPE_NBPVCD	0x3C00	/* 3Com NBP virtual circuit datagram (like XNS SPP) not registered */
-#define	ETHERTYPE_NBPSCD	0x3C01	/* 3Com NBP System control datagram not registered */
-#define	ETHERTYPE_NBPCREQ	0x3C02	/* 3Com NBP Connect request (virtual cct) not registered */
-#define	ETHERTYPE_NBPCRSP	0x3C03	/* 3Com NBP Connect repsonse not registered */
-#define	ETHERTYPE_NBPCC		0x3C04	/* 3Com NBP Connect complete not registered */
-#define	ETHERTYPE_NBPCLREQ	0x3C05	/* 3Com NBP Close request (virtual cct) not registered */
-#define	ETHERTYPE_NBPCLRSP	0x3C06	/* 3Com NBP Close response not registered */
-#define	ETHERTYPE_NBPDG		0x3C07	/* 3Com NBP Datagram (like XNS IDP) not registered */
-#define	ETHERTYPE_NBPDGB	0x3C08	/* 3Com NBP Datagram broadcast not registered */
-#define	ETHERTYPE_NBPCLAIM	0x3C09	/* 3Com NBP Claim NetBIOS name not registered */
-#define	ETHERTYPE_NBPDLTE	0x3C0A	/* 3Com NBP Delete Netbios name not registered */
-#define	ETHERTYPE_NBPRAS	0x3C0B	/* 3Com NBP Remote adaptor status request not registered */
-#define	ETHERTYPE_NBPRAR	0x3C0C	/* 3Com NBP Remote adaptor response not registered */
-#define	ETHERTYPE_NBPRST	0x3C0D	/* 3Com NBP Reset not registered */
-
-#define	ETHERTYPE_PCS		0x4242	/* PCS Basic Block Protocol */
-#define	ETHERTYPE_IMLBLDIAG	0x424C	/* Information Modes Little Big LAN diagnostic */
-#define	ETHERTYPE_DIDDLE	0x4321	/* THD - Diddle */
-#define	ETHERTYPE_IMLBL		0x4C42	/* Information Modes Little Big LAN */
-#define	ETHERTYPE_SIMNET	0x5208	/* BBN Simnet Private */
-#define	ETHERTYPE_DECEXPER	0x6000	/* DEC Unassigned, experimental */
-#define	ETHERTYPE_MOPDL		0x6001	/* DEC MOP dump/load */
-#define	ETHERTYPE_MOPRC		0x6002	/* DEC MOP remote console */
-#define	ETHERTYPE_DECnet	0x6003	/* DEC DECNET Phase IV route */
-#define	ETHERTYPE_DN		ETHERTYPE_DECnet	/* libpcap, tcpdump */
-#define	ETHERTYPE_LAT		0x6004	/* DEC LAT */
-#define	ETHERTYPE_DECDIAG	0x6005	/* DEC diagnostic protocol (at interface initialization?) */
-#define	ETHERTYPE_DECCUST	0x6006	/* DEC customer protocol */
-#define	ETHERTYPE_SCA		0x6007	/* DEC LAVC, SCA */
-#define	ETHERTYPE_AMBER		0x6008	/* DEC AMBER */
-#define	ETHERTYPE_DECMUMPS	0x6009	/* DEC MUMPS */
-		    /* 0x6010 - 0x6014	   3Com Corporation */
-#define	ETHERTYPE_TRANSETHER	0x6558	/* Trans Ether Bridging (RFC1701)*/
-#define	ETHERTYPE_RAWFR		0x6559	/* Raw Frame Relay (RFC1701) */
-#define	ETHERTYPE_UBDL		0x7000	/* Ungermann-Bass download */
-#define	ETHERTYPE_UBNIU		0x7001	/* Ungermann-Bass NIUs */
-#define	ETHERTYPE_UBDIAGLOOP	0x7002	/* Ungermann-Bass diagnostic/loopback */
-#define	ETHERTYPE_UBNMC		0x7003	/* Ungermann-Bass ??? (NMC to/from UB Bridge) */
-#define	ETHERTYPE_UBBST		0x7005	/* Ungermann-Bass Bridge Spanning Tree */
-#define	ETHERTYPE_OS9		0x7007	/* OS/9 Microware */
-#define	ETHERTYPE_OS9NET	0x7009	/* OS/9 Net? */
-		    /* 0x7020 - 0x7029	   LRT (England) (now Sintrom) */
-#define	ETHERTYPE_RACAL		0x7030	/* Racal-Interlan */
-#define	ETHERTYPE_PRIMENTS	0x7031	/* Prime NTS (Network Terminal Service) */
-#define	ETHERTYPE_CABLETRON	0x7034	/* Cabletron */
-#define	ETHERTYPE_CRONUSVLN	0x8003	/* Cronus VLN */
-#define	ETHERTYPE_CRONUS	0x8004	/* Cronus Direct */
-#define	ETHERTYPE_HP		0x8005	/* HP Probe */
-#define	ETHERTYPE_NESTAR	0x8006	/* Nestar */
-#define	ETHERTYPE_ATTSTANFORD	0x8008	/* AT&T/Stanford (local use) */
-#define	ETHERTYPE_EXCELAN	0x8010	/* Excelan */
-#define	ETHERTYPE_SG_DIAG	0x8013	/* SGI diagnostic type */
-#define	ETHERTYPE_SG_NETGAMES	0x8014	/* SGI network games */
-#define	ETHERTYPE_SG_RESV	0x8015	/* SGI reserved type */
-#define	ETHERTYPE_SG_BOUNCE	0x8016	/* SGI bounce server */
-#define	ETHERTYPE_APOLLODOMAIN	0x8019	/* Apollo DOMAIN */
-#define	ETHERTYPE_TYMSHARE	0x802E	/* Tymeshare */
-#define	ETHERTYPE_TIGAN		0x802F	/* Tigan, Inc. */
-#define	ETHERTYPE_REVARP	0x8035	/* Reverse addr resolution protocol */
-#define	ETHERTYPE_AEONIC	0x8036	/* Aeonic Systems */
-#define	ETHERTYPE_IPXNEW	0x8037	/* IPX (Novell Netware?) */
-#define	ETHERTYPE_LANBRIDGE	0x8038	/* DEC LANBridge */
-#define	ETHERTYPE_DSMD	0x8039	/* DEC DSM/DDP */
-#define	ETHERTYPE_ARGONAUT	0x803A	/* DEC Argonaut Console */
-#define	ETHERTYPE_VAXELN	0x803B	/* DEC VAXELN */
-#define	ETHERTYPE_DECDNS	0x803C	/* DEC DNS Naming Service */
-#define	ETHERTYPE_ENCRYPT	0x803D	/* DEC Ethernet Encryption */
-#define	ETHERTYPE_DECDTS	0x803E	/* DEC Distributed Time Service */
-#define	ETHERTYPE_DECLTM	0x803F	/* DEC LAN Traffic Monitor */
-#define	ETHERTYPE_DECNETBIOS	0x8040	/* DEC PATHWORKS DECnet NETBIOS Emulation */
-#define	ETHERTYPE_DECLAST	0x8041	/* DEC Local Area System Transport */
-			     /* 0x8042	   DEC Unassigned */
-#define	ETHERTYPE_PLANNING	0x8044	/* Planning Research Corp. */
-		    /* 0x8046 - 0x8047	   AT&T */
-#define	ETHERTYPE_DECAM		0x8048	/* DEC Availability Manager for Distributed Systems DECamds (but someone at DEC says not) */
-#define	ETHERTYPE_EXPERDATA	0x8049	/* ExperData */
-#define	ETHERTYPE_VEXP		0x805B	/* Stanford V Kernel exp. */
-#define	ETHERTYPE_VPROD		0x805C	/* Stanford V Kernel prod. */
-#define	ETHERTYPE_ES		0x805D	/* Evans & Sutherland */
-#define	ETHERTYPE_LITTLE	0x8060	/* Little Machines */
-#define	ETHERTYPE_COUNTERPOINT	0x8062	/* Counterpoint Computers */
-		    /* 0x8065 - 0x8066	   Univ. of Mass @ Amherst */
-#define	ETHERTYPE_VEECO		0x8067	/* Veeco Integrated Auto. */
-#define	ETHERTYPE_GENDYN	0x8068	/* General Dynamics */
-#define	ETHERTYPE_ATT		0x8069	/* AT&T */
-#define	ETHERTYPE_AUTOPHON	0x806A	/* Autophon */
-#define	ETHERTYPE_COMDESIGN	0x806C	/* ComDesign */
-#define	ETHERTYPE_COMPUGRAPHIC	0x806D	/* Compugraphic Corporation */
-		    /* 0x806E - 0x8077	   Landmark Graphics Corp. */
-#define	ETHERTYPE_MATRA		0x807A	/* Matra */
-#define	ETHERTYPE_DDE		0x807B	/* Dansk Data Elektronik */
-#define	ETHERTYPE_MERIT		0x807C	/* Merit Internodal (or Univ of Michigan?) */
-		    /* 0x807D - 0x807F	   Vitalink Communications */
-#define	ETHERTYPE_VLTLMAN	0x8080	/* Vitalink TransLAN III Management */
-		    /* 0x8081 - 0x8083	   Counterpoint Computers */
-		    /* 0x8088 - 0x808A	   Xyplex */
-#define	ETHERTYPE_ATALK		0x809B	/* AppleTalk */
-#define	ETHERTYPE_AT		ETHERTYPE_ATALK		/* old NetBSD */
-#define	ETHERTYPE_APPLETALK	ETHERTYPE_ATALK		/* HP-UX */
-		    /* 0x809C - 0x809E	   Datability */
-#define	ETHERTYPE_SPIDER	0x809F	/* Spider Systems Ltd. */
-			     /* 0x80A3	   Nixdorf */
-		    /* 0x80A4 - 0x80B3	   Siemens Gammasonics Inc. */
-		    /* 0x80C0 - 0x80C3	   DCA (Digital Comm. Assoc.) Data Exchange Cluster */
-		    /* 0x80C4 - 0x80C5	   Banyan Systems */
-#define	ETHERTYPE_PACER		0x80C6	/* Pacer Software */
-#define	ETHERTYPE_APPLITEK	0x80C7	/* Applitek Corporation */
-		    /* 0x80C8 - 0x80CC	   Intergraph Corporation */
-		    /* 0x80CD - 0x80CE	   Harris Corporation */
-		    /* 0x80CF - 0x80D2	   Taylor Instrument */
-		    /* 0x80D3 - 0x80D4	   Rosemount Corporation */
-#define	ETHERTYPE_SNA		0x80D5	/* IBM SNA Services over Ethernet */
-#define	ETHERTYPE_VARIAN	0x80DD	/* Varian Associates */
-		    /* 0x80DE - 0x80DF	   TRFS (Integrated Solutions Transparent Remote File System) */
-		    /* 0x80E0 - 0x80E3	   Allen-Bradley */
-		    /* 0x80E4 - 0x80F0	   Datability */
-#define	ETHERTYPE_RETIX		0x80F2	/* Retix */
-#define	ETHERTYPE_AARP		0x80F3	/* AppleTalk AARP */
-		    /* 0x80F4 - 0x80F5	   Kinetics */
-#define	ETHERTYPE_APOLLO	0x80F7	/* Apollo Computer */
-#define ETHERTYPE_VLAN		0x8100	/* IEEE 802.1Q VLAN tagging (XXX conflicts) */
-		    /* 0x80FF - 0x8101	   Wellfleet Communications (XXX conflicts) */
-#define	ETHERTYPE_BOFL		0x8102	/* Wellfleet; BOFL (Breath OF Life) pkts [every 5-10 secs.] */
-#define	ETHERTYPE_WELLFLEET	0x8103	/* Wellfleet Communications */
-		    /* 0x8107 - 0x8109	   Symbolics Private */
-#define	ETHERTYPE_TALARIS	0x812B	/* Talaris */
-#define	ETHERTYPE_WATERLOO	0x8130	/* Waterloo Microsystems Inc. (XXX which?) */
-#define	ETHERTYPE_HAYES		0x8130	/* Hayes Microcomputers (XXX which?) */
-#define	ETHERTYPE_VGLAB		0x8131	/* VG Laboratory Systems */
-		    /* 0x8132 - 0x8137	   Bridge Communications */
-#define	ETHERTYPE_IPX		0x8137	/* Novell (old) NetWare IPX (ECONFIG E option) */
-#define	ETHERTYPE_NOVELL	0x8138	/* Novell, Inc. */
-		    /* 0x8139 - 0x813D	   KTI */
-#define	ETHERTYPE_MUMPS		0x813F	/* M/MUMPS data sharing */
-#define	ETHERTYPE_AMOEBA	0x8145	/* Vrije Universiteit (NL) Amoeba 4 RPC (obsolete) */
-#define	ETHERTYPE_FLIP		0x8146	/* Vrije Universiteit (NL) FLIP (Fast Local Internet Protocol) */
-#define	ETHERTYPE_VURESERVED	0x8147	/* Vrije Universiteit (NL) [reserved] */
-#define	ETHERTYPE_LOGICRAFT	0x8148	/* Logicraft */
-#define	ETHERTYPE_NCD		0x8149	/* Network Computing Devices */
-#define	ETHERTYPE_ALPHA		0x814A	/* Alpha Micro */
-#define	ETHERTYPE_SNMP		0x814C	/* SNMP over Ethernet (see RFC1089) */
-		    /* 0x814D - 0x814E	   BIIN */
-#define	ETHERTYPE_TEC	0x814F	/* Technically Elite Concepts */
-#define	ETHERTYPE_RATIONAL	0x8150	/* Rational Corp */
-		    /* 0x8151 - 0x8153	   Qualcomm */
-		    /* 0x815C - 0x815E	   Computer Protocol Pty Ltd */
-		    /* 0x8164 - 0x8166	   Charles River Data Systems */
-#define	ETHERTYPE_XTP		0x817D	/* Protocol Engines XTP */
-#define	ETHERTYPE_SGITW		0x817E	/* SGI/Time Warner prop. */
-#define	ETHERTYPE_HIPPI_FP	0x8180	/* HIPPI-FP encapsulation */
-#define	ETHERTYPE_STP		0x8181	/* Scheduled Transfer STP, HIPPI-ST */
-		    /* 0x8182 - 0x8183	   Reserved for HIPPI-6400 */
-		    /* 0x8184 - 0x818C	   SGI prop. */
-#define	ETHERTYPE_MOTOROLA	0x818D	/* Motorola */
-#define	ETHERTYPE_NETBEUI	0x8191	/* PowerLAN NetBIOS/NetBEUI (PC) */
-		    /* 0x819A - 0x81A3	   RAD Network Devices */
-		    /* 0x81B7 - 0x81B9	   Xyplex */
-		    /* 0x81CC - 0x81D5	   Apricot Computers */
-		    /* 0x81D6 - 0x81DD	   Artisoft Lantastic */
-		    /* 0x81E6 - 0x81EF	   Polygon */
-		    /* 0x81F0 - 0x81F2	   Comsat Labs */
-		    /* 0x81F3 - 0x81F5	   SAIC */
-		    /* 0x81F6 - 0x81F8	   VG Analytical */
-		    /* 0x8203 - 0x8205	   QNX Software Systems Ltd. */
-		    /* 0x8221 - 0x8222	   Ascom Banking Systems */
-		    /* 0x823E - 0x8240	   Advanced Encryption Systems */
-		    /* 0x8263 - 0x826A	   Charles River Data Systems */
-		    /* 0x827F - 0x8282	   Athena Programming */
-		    /* 0x829A - 0x829B	   Inst Ind Info Tech */
-		    /* 0x829C - 0x82AB	   Taurus Controls */
-		    /* 0x82AC - 0x8693	   Walker Richer & Quinn */
-#define	ETHERTYPE_ACCTON	0x8390	/* Accton Technologies (unregistered) */
-#define	ETHERTYPE_TALARISMC	0x852B	/* Talaris multicast */
-#define	ETHERTYPE_KALPANA	0x8582	/* Kalpana */
-		    /* 0x8694 - 0x869D	   Idea Courier */
-		    /* 0x869E - 0x86A1	   Computer Network Tech */
-		    /* 0x86A3 - 0x86AC	   Gateway Communications */
-#define	ETHERTYPE_SECTRA	0x86DB	/* SECTRA */
-#define	ETHERTYPE_IPV6		0x86DD	/* IP protocol version 6 */
-#define	ETHERTYPE_DELTACON	0x86DE	/* Delta Controls */
-#define	ETHERTYPE_ATOMIC	0x86DF	/* ATOMIC */
-		    /* 0x86E0 - 0x86EF	   Landis & Gyr Powers */
-		    /* 0x8700 - 0x8710	   Motorola */
-#define	ETHERTYPE_RDP		0x8739	/* Control Technology Inc. RDP Without IP */
-#define	ETHERTYPE_MICP		0x873A	/* Control Technology Inc. Mcast Industrial Ctrl Proto. */
-		    /* 0x873B - 0x873C	   Control Technology Inc. Proprietary */
-#define	ETHERTYPE_TCPCOMP	0x876B	/* TCP/IP Compression (RFC1701) */
-#define	ETHERTYPE_IPAS		0x876C	/* IP Autonomous Systems (RFC1701) */
-#define	ETHERTYPE_SECUREDATA	0x876D	/* Secure Data (RFC1701) */
-#define	ETHERTYPE_FLOWCONTROL	0x8808	/* 802.3x flow control packet */
-#define	ETHERTYPE_SLOWPROTOCOLS	0x8809	/* Slow protocols */
-#define	ETHERTYPE_PPP		0x880B	/* PPP (obsolete by PPPOE) */
-#define	ETHERTYPE_HITACHI	0x8820	/* Hitachi Cable (Optoelectronic Systems Laboratory) */
-#define	ETHERTYPE_MPLS		0x8847	/* MPLS Unicast */
-#define	ETHERTYPE_MPLS_MCAST	0x8848	/* MPLS Multicast */
-#define	ETHERTYPE_AXIS		0x8856	/* Axis Communications AB proprietary bootstrap/config */
-#define	ETHERTYPE_PPPOEDISC	0x8863	/* PPP Over Ethernet Discovery Stage */
-#define	ETHERTYPE_PPPOE		0x8864	/* PPP Over Ethernet Session Stage */
-#define	ETHERTYPE_LANPROBE	0x8888	/* HP LanProbe test? */
-#define	ETHERTYPE_PAE		0x888e	/* EAPOL PAE/802.1x */
-#define	ETHERTYPE_LOOPBACK	0x9000	/* Loopback */
-#define	ETHERTYPE_LBACK		ETHERTYPE_LOOPBACK	/* DEC MOP loopback */
-#define	ETHERTYPE_XNSSM		0x9001	/* 3Com (Formerly Bridge Communications), XNS Systems Management */
-#define	ETHERTYPE_TCPSM		0x9002	/* 3Com (Formerly Bridge Communications), TCP/IP Systems Management */
-#define	ETHERTYPE_BCLOOP	0x9003	/* 3Com (Formerly Bridge Communications), loopback detection */
-#define	ETHERTYPE_DEBNI		0xAAAA	/* DECNET? Used by VAX 6220 DEBNI */
-#define	ETHERTYPE_SONIX		0xFAF5	/* Sonix Arpeggio */
-#define	ETHERTYPE_VITAL		0xFF00	/* BBN VITAL-LanBridge cache wakeups */
-		    /* 0xFF00 - 0xFFOF	   ISC Bunker Ramo */
-
-#define	ETHERTYPE_MAX		0xFFFF	/* Maximum valid ethernet type, reserved */
-
-#endif /* !_NET_ETHERTYPES_H_ */
diff --git a/libc/include/net/if_ether.h b/libc/include/net/if_ether.h
deleted file mode 100644
index b1d2bce..0000000
--- a/libc/include/net/if_ether.h
+++ /dev/null
@@ -1,114 +0,0 @@
-/*	$NetBSD: if_ether.h,v 1.43 2006/11/24 01:04:30 rpaulo Exp $	*/
-
-/*
- * Copyright (c) 1982, 1986, 1993
- *	The Regents of the University of California.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *	@(#)if_ether.h	8.1 (Berkeley) 6/10/93
- */
-
-#ifndef _NET_IF_ETHER_H_
-#define _NET_IF_ETHER_H_
-
-#include <sys/cdefs.h>
-#include <sys/types.h>
-
-/*
- * Some basic Ethernet constants.
- */
-#define	ETHER_ADDR_LEN	6	/* length of an Ethernet address */
-#define	ETHER_TYPE_LEN	2	/* length of the Ethernet type field */
-#define	ETHER_CRC_LEN	4	/* length of the Ethernet CRC */
-#define	ETHER_HDR_LEN	((ETHER_ADDR_LEN * 2) + ETHER_TYPE_LEN)
-#define	ETHER_MIN_LEN	64	/* minimum frame length, including CRC */
-#define	ETHER_MAX_LEN	1518	/* maximum frame length, including CRC */
-#define	ETHER_MAX_LEN_JUMBO 9018 /* maximum jumbo frame len, including CRC */
-
-/*
- * Ethernet address - 6 octets
- * this is only used by the ethers(3) functions.
- */
-struct ether_addr {
-	u_int8_t ether_addr_octet[ETHER_ADDR_LEN];
-} __attribute__((__packed__));
-
-/*
- * Structure of a 10Mb/s Ethernet header.
- */
-struct	ether_header {
-	u_int8_t  ether_dhost[ETHER_ADDR_LEN];
-	u_int8_t  ether_shost[ETHER_ADDR_LEN];
-	u_int16_t ether_type;
-} __attribute__((__packed__));
-
-#include <net/ethertypes.h>
-
-#define	ETHERMTU_JUMBO	(ETHER_MAX_LEN_JUMBO - ETHER_HDR_LEN - ETHER_CRC_LEN)
-#define	ETHERMTU	(ETHER_MAX_LEN - ETHER_HDR_LEN - ETHER_CRC_LEN)
-#define	ETHERMIN	(ETHER_MIN_LEN - ETHER_HDR_LEN - ETHER_CRC_LEN)
-
-/*
- * Macro to map an IP multicast address to an Ethernet multicast address.
- * The high-order 25 bits of the Ethernet address are statically assigned,
- * and the low-order 23 bits are taken from the low end of the IP address.
- */
-#define ETHER_MAP_IP_MULTICAST(ipaddr, enaddr)				\
-	/* struct in_addr *ipaddr; */					\
-	/* u_int8_t enaddr[ETHER_ADDR_LEN]; */				\
-{									\
-	(enaddr)[0] = 0x01;						\
-	(enaddr)[1] = 0x00;						\
-	(enaddr)[2] = 0x5e;						\
-	(enaddr)[3] = ((u_int8_t *)ipaddr)[1] & 0x7f;			\
-	(enaddr)[4] = ((u_int8_t *)ipaddr)[2];				\
-	(enaddr)[5] = ((u_int8_t *)ipaddr)[3];				\
-}
-/*
- * Macro to map an IP6 multicast address to an Ethernet multicast address.
- * The high-order 16 bits of the Ethernet address are statically assigned,
- * and the low-order 32 bits are taken from the low end of the IP6 address.
- */
-#define ETHER_MAP_IPV6_MULTICAST(ip6addr, enaddr)			\
-	/* struct in6_addr *ip6addr; */					\
-	/* u_int8_t enaddr[ETHER_ADDR_LEN]; */				\
-{                                                                       \
-	(enaddr)[0] = 0x33;						\
-	(enaddr)[1] = 0x33;						\
-	(enaddr)[2] = ((u_int8_t *)ip6addr)[12];			\
-	(enaddr)[3] = ((u_int8_t *)ip6addr)[13];			\
-	(enaddr)[4] = ((u_int8_t *)ip6addr)[14];			\
-	(enaddr)[5] = ((u_int8_t *)ip6addr)[15];			\
-}
-
-__BEGIN_DECLS
-
-char* ether_ntoa(const struct ether_addr*) __INTRODUCED_IN(21);
-struct ether_addr* ether_aton(const char*) __INTRODUCED_IN(21);
-
-__END_DECLS
-
-#endif /* !_NET_IF_ETHER_H_ */
diff --git a/libc/include/netinet/ether.h b/libc/include/netinet/ether.h
index a1c9cbb..17b61c1 100644
--- a/libc/include/netinet/ether.h
+++ b/libc/include/netinet/ether.h
@@ -25,4 +25,18 @@
  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  */
-#include <net/if_ether.h>
+
+#ifndef _NETINET_ETHER_H_
+#define _NETINET_ETHER_H_ 1
+
+#include <sys/cdefs.h>
+#include <netinet/if_ether.h>
+
+__BEGIN_DECLS
+
+char* ether_ntoa(const struct ether_addr*) __INTRODUCED_IN(21);
+struct ether_addr* ether_aton(const char*) __INTRODUCED_IN(21);
+
+__END_DECLS
+
+#endif
diff --git a/libc/include/netinet/if_ether.h b/libc/include/netinet/if_ether.h
index e4317fa..b1b9ed0 100644
--- a/libc/include/netinet/if_ether.h
+++ b/libc/include/netinet/if_ether.h
@@ -1,35 +1,110 @@
+/*	$NetBSD: if_ether.h,v 1.34 2007/12/25 18:33:46 perry Exp $	*/
+
 /*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
+ * Copyright (c) 1982, 1986, 1993
+ *	The Regents of the University of California.  All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
  * are met:
- *  * Redistributions of source code must retain the above copyright
+ * 1. Redistributions of source code must retain the above copyright
  *    notice, this list of conditions and the following disclaimer.
- *  * Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
  *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
+ *
+ *	@(#)if_ether.h	8.3 (Berkeley) 5/2/95
  */
 
-#include <sys/socket.h>
+#ifndef _NETINET_IF_ETHER_H_
+#define _NETINET_IF_ETHER_H_
+
+#include <sys/cdefs.h>
+#include <sys/types.h>
+
+#if defined(__USE_BSD)
+
+/* pull in Ethernet-specific definitions and packet structures */
+
 #include <linux/if_ether.h>
-#include <linux/if_arp.h>
-#ifndef ETHER_ADDR_LEN
-#define ETHER_ADDR_LEN ETH_ALEN
-#include <net/ethertypes.h>
-#endif
+
+/* pull in ARP-specific definitions and packet structures */
+
+#include <net/if_arp.h>
+
+#include <net/ethernet.h>
+
+/* ... and define some more which we don't need anymore: */
+
+/*
+ * Ethernet Address Resolution Protocol.
+ *
+ * See RFC 826 for protocol description.  Structure below is not
+ * used by our kernel!!! Only for userland programs which are externally
+ * maintained and need it.
+ */
+
+struct	ether_arp {
+	struct	 arphdr ea_hdr;			/* fixed-size header */
+	u_int8_t arp_sha[ETHER_ADDR_LEN];	/* sender hardware address */
+	u_int8_t arp_spa[4];			/* sender protocol address */
+	u_int8_t arp_tha[ETHER_ADDR_LEN];	/* target hardware address */
+	u_int8_t arp_tpa[4];			/* target protocol address */
+} __packed;
+#define	arp_hrd	ea_hdr.ar_hrd
+#define	arp_pro	ea_hdr.ar_pro
+#define	arp_hln	ea_hdr.ar_hln
+#define	arp_pln	ea_hdr.ar_pln
+#define	arp_op	ea_hdr.ar_op
+
+/*
+ * Macro to map an IP multicast address to an Ethernet multicast address.
+ * The high-order 25 bits of the Ethernet address are statically assigned,
+ * and the low-order 23 bits are taken from the low end of the IP address.
+ */
+#define ETHER_MAP_IP_MULTICAST(ipaddr, enaddr)				\
+	/* struct in_addr *ipaddr; */					\
+	/* u_int8_t enaddr[ETHER_ADDR_LEN]; */				\
+{									\
+	(enaddr)[0] = 0x01;						\
+	(enaddr)[1] = 0x00;						\
+	(enaddr)[2] = 0x5e;						\
+	(enaddr)[3] = ((u_int8_t *)ipaddr)[1] & 0x7f;			\
+	(enaddr)[4] = ((u_int8_t *)ipaddr)[2];				\
+	(enaddr)[5] = ((u_int8_t *)ipaddr)[3];				\
+}
+/*
+ * Macro to map an IP6 multicast address to an Ethernet multicast address.
+ * The high-order 16 bits of the Ethernet address are statically assigned,
+ * and the low-order 32 bits are taken from the low end of the IP6 address.
+ */
+#define ETHER_MAP_IPV6_MULTICAST(ip6addr, enaddr)			\
+	/* struct in6_addr *ip6addr; */					\
+	/* u_int8_t enaddr[ETHER_ADDR_LEN]; */				\
+{                                                                       \
+	(enaddr)[0] = 0x33;						\
+	(enaddr)[1] = 0x33;						\
+	(enaddr)[2] = ((u_int8_t *)ip6addr)[12];			\
+	(enaddr)[3] = ((u_int8_t *)ip6addr)[13];			\
+	(enaddr)[4] = ((u_int8_t *)ip6addr)[14];			\
+	(enaddr)[5] = ((u_int8_t *)ip6addr)[15];			\
+}
+
+#endif /* __USE_BSD */
+
+#endif /* !_NET_IF_ETHER_H_ */
