--- a/include/iptables_common.h
+++ b/include/iptables_common.h
@@ -2,6 +2,8 @@
 #define _IPTABLES_COMMON_H
 /* Shared definitions between ipv4 and ipv6. */
 
+#include <stdint.h>
+
 enum exittype {
 	OTHER_PROBLEM = 1,
 	PARAMETER_PROBLEM,
@@ -43,9 +45,9 @@ extern char *lib_dir;
   extern void init_extensions(void);
 #endif
 
-#define __be32	u_int32_t
-#define __le32	u_int32_t
-#define __be16	u_int16_t
-#define __le16	u_int16_t
+#define __be32	uint32_t
+#define __le32	uint32_t
+#define __be16	uint16_t
+#define __le16	uint16_t
 
 #endif /*_IPTABLES_COMMON_H*/
--- a/include/netinet/tcp.h
+++ /dev/null
@@ -1,231 +0,0 @@
-/*
- * 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.
- * 4. 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.
- *
- *	@(#)tcp.h	8.1 (Berkeley) 6/10/93
- */
-
-#ifndef _NETINET_TCP_H
-#define _NETINET_TCP_H	1
-
-#include <features.h>
-
-/*
- * User-settable options (used with setsockopt).
- */
-#define	TCP_NODELAY	 1	/* Don't delay send to coalesce packets  */
-#define	TCP_MAXSEG	 2	/* Set maximum segment size  */
-#define TCP_CORK	 3	/* Control sending of partial frames  */
-#define TCP_KEEPIDLE	 4	/* Start keeplives after this period */
-#define TCP_KEEPINTVL	 5	/* Interval between keepalives */
-#define TCP_KEEPCNT	 6	/* Number of keepalives before death */
-#define TCP_SYNCNT	 7	/* Number of SYN retransmits */
-#define TCP_LINGER2	 8	/* Life time of orphaned FIN-WAIT-2 state */
-#define TCP_DEFER_ACCEPT 9	/* Wake up listener only when data arrive */
-#define TCP_WINDOW_CLAMP 10	/* Bound advertised window */
-#define TCP_INFO	 11	/* Information about this connection. */
-#define	TCP_QUICKACK	 12	/* Bock/reenable quick ACKs.  */
-#define TCP_CONGESTION	 13	/* Congestion control algorithm.  */
-
-#ifdef __USE_MISC
-# include <sys/types.h>
-
-# ifdef __FAVOR_BSD
-typedef	u_int32_t tcp_seq;
-/*
- * TCP header.
- * Per RFC 793, September, 1981.
- */
-struct tcphdr
-  {
-    u_int16_t th_sport;		/* source port */
-    u_int16_t th_dport;		/* destination port */
-    tcp_seq th_seq;		/* sequence number */
-    tcp_seq th_ack;		/* acknowledgement number */
-#  if __BYTE_ORDER == __LITTLE_ENDIAN
-    u_int8_t th_x2:4;		/* (unused) */
-    u_int8_t th_off:4;		/* data offset */
-#  endif
-#  if __BYTE_ORDER == __BIG_ENDIAN
-    u_int8_t th_off:4;		/* data offset */
-    u_int8_t th_x2:4;		/* (unused) */
-#  endif
-    u_int8_t th_flags;
-#  define TH_FIN	0x01
-#  define TH_SYN	0x02
-#  define TH_RST	0x04
-#  define TH_PUSH	0x08
-#  define TH_ACK	0x10
-#  define TH_URG	0x20
-    u_int16_t th_win;		/* window */
-    u_int16_t th_sum;		/* checksum */
-    u_int16_t th_urp;		/* urgent pointer */
-};
-
-# else /* !__FAVOR_BSD */
-struct tcphdr
-  {
-    u_int16_t source;
-    u_int16_t dest;
-    u_int32_t seq;
-    u_int32_t ack_seq;
-#  if __BYTE_ORDER == __LITTLE_ENDIAN
-    u_int16_t res1:4;
-    u_int16_t doff:4;
-    u_int16_t fin:1;
-    u_int16_t syn:1;
-    u_int16_t rst:1;
-    u_int16_t psh:1;
-    u_int16_t ack:1;
-    u_int16_t urg:1;
-    u_int16_t res2:2;
-#  elif __BYTE_ORDER == __BIG_ENDIAN
-    u_int16_t doff:4;
-    u_int16_t res1:4;
-    u_int16_t res2:2;
-    u_int16_t urg:1;
-    u_int16_t ack:1;
-    u_int16_t psh:1;
-    u_int16_t rst:1;
-    u_int16_t syn:1;
-    u_int16_t fin:1;
-#  else
-#   error "Adjust your <bits/endian.h> defines"
-#  endif
-    u_int16_t window;
-    u_int16_t check;
-    u_int16_t urg_ptr;
-};
-# endif /* __FAVOR_BSD */
-
-enum
-{
-  TCP_ESTABLISHED = 1,
-  TCP_SYN_SENT,
-  TCP_SYN_RECV,
-  TCP_FIN_WAIT1,
-  TCP_FIN_WAIT2,
-  TCP_TIME_WAIT,
-  TCP_CLOSE,
-  TCP_CLOSE_WAIT,
-  TCP_LAST_ACK,
-  TCP_LISTEN,
-  TCP_CLOSING   /* now a valid state */
-};
-
-# define TCPOPT_EOL		0
-# define TCPOPT_NOP		1
-# define TCPOPT_MAXSEG		2
-# define TCPOLEN_MAXSEG		4
-# define TCPOPT_WINDOW		3
-# define TCPOLEN_WINDOW		3
-# define TCPOPT_SACK_PERMITTED	4		/* Experimental */
-# define TCPOLEN_SACK_PERMITTED	2
-# define TCPOPT_SACK		5		/* Experimental */
-# define TCPOPT_TIMESTAMP	8
-# define TCPOLEN_TIMESTAMP	10
-# define TCPOLEN_TSTAMP_APPA	(TCPOLEN_TIMESTAMP+2) /* appendix A */
-
-# define TCPOPT_TSTAMP_HDR	\
-    (TCPOPT_NOP<<24|TCPOPT_NOP<<16|TCPOPT_TIMESTAMP<<8|TCPOLEN_TIMESTAMP)
-
-/*
- * Default maximum segment size for TCP.
- * With an IP MSS of 576, this is 536,
- * but 512 is probably more convenient.
- * This should be defined as MIN(512, IP_MSS - sizeof (struct tcpiphdr)).
- */
-# define TCP_MSS	512
-
-# define TCP_MAXWIN	65535	/* largest value for (unscaled) window */
-
-# define TCP_MAX_WINSHIFT	14	/* maximum window shift */
-
-# define SOL_TCP		6	/* TCP level */
-
-
-# define TCPI_OPT_TIMESTAMPS	1
-# define TCPI_OPT_SACK		2
-# define TCPI_OPT_WSCALE	4
-# define TCPI_OPT_ECN		8
-# define TCPI_OPT_ECN_SEEN	16
-
-/* Values for tcpi_state.  */
-enum tcp_ca_state
-{
-  TCP_CA_Open = 0,
-  TCP_CA_Disorder = 1,
-  TCP_CA_CWR = 2,
-  TCP_CA_Recovery = 3,
-  TCP_CA_Loss = 4
-};
-
-struct tcp_info
-{
-  u_int8_t	tcpi_state;
-  u_int8_t	tcpi_ca_state;
-  u_int8_t	tcpi_retransmits;
-  u_int8_t	tcpi_probes;
-  u_int8_t	tcpi_backoff;
-  u_int8_t	tcpi_options;
-  u_int8_t	tcpi_snd_wscale : 4, tcpi_rcv_wscale : 4;
-
-  u_int32_t	tcpi_rto;
-  u_int32_t	tcpi_ato;
-  u_int32_t	tcpi_snd_mss;
-  u_int32_t	tcpi_rcv_mss;
-
-  u_int32_t	tcpi_unacked;
-  u_int32_t	tcpi_sacked;
-  u_int32_t	tcpi_lost;
-  u_int32_t	tcpi_retrans;
-  u_int32_t	tcpi_fackets;
-
-  /* Times. */
-  u_int32_t	tcpi_last_data_sent;
-  u_int32_t	tcpi_last_ack_sent;	/* Not remembered, sorry.  */
-  u_int32_t	tcpi_last_data_recv;
-  u_int32_t	tcpi_last_ack_recv;
-
-  /* Metrics. */
-  u_int32_t	tcpi_pmtu;
-  u_int32_t	tcpi_rcv_ssthresh;
-  u_int32_t	tcpi_rtt;
-  u_int32_t	tcpi_rttvar;
-  u_int32_t	tcpi_snd_ssthresh;
-  u_int32_t	tcpi_snd_cwnd;
-  u_int32_t	tcpi_advmss;
-  u_int32_t	tcpi_reordering;
-  u_int32_t	tcpi_rcv_rtt;
-  u_int32_t	tcpi_rcv_space;
-  u_int32_t	tcpi_total_retrans;
-
-};
-
-#endif /* Misc.  */
-
-#endif /* netinet/tcp.h */
--- a/include/iptables.h
+++ b/include/iptables.h
@@ -20,7 +20,7 @@ struct ipt_get_revision
 {
 	char name[IPT_FUNCTION_MAXNAMELEN-1];
 
-	u_int8_t revision;
+	uint8_t revision;
 };
 #endif /* IPT_SO_GET_REVISION_MATCH   Old kernel source */
 
@@ -39,7 +39,7 @@ struct iptables_match
 	ipt_chainlabel name;
 
 	/* Revision of match (0 by default). */
-	u_int8_t revision;
+	uint8_t revision;
 
 	const char *version;
 
@@ -92,7 +92,7 @@ struct iptables_target
 	ipt_chainlabel name;
 
 	/* Revision of target (0 by default). */
-	u_int8_t revision;
+	uint8_t revision;
 
 	const char *version;
 
@@ -153,7 +153,7 @@ extern char *mask_to_dotted(const struct
 
 extern void parse_hostnetworkmask(const char *name, struct in_addr **addrpp,
                       struct in_addr *maskp, unsigned int *naddrs);
-extern u_int16_t parse_protocol(const char *s);
+extern uint16_t parse_protocol(const char *s);
 
 extern int do_command(int argc, char *argv[], char **table,
 		      iptc_handle_t *handle);
--- a/lib/dnet_ntop.c
+++ b/lib/dnet_ntop.c
@@ -1,24 +1,25 @@
 #include <errno.h>
 #include <string.h>
+#include <stdint.h>
 #include <sys/types.h>
 #include <netinet/in.h>
 
 #include "utils.h"
 
-static __inline__ u_int16_t dn_ntohs(u_int16_t addr)
+static __inline__ uint16_t dn_ntohs(uint16_t addr)
 {
 	union {
-		u_int8_t byte[2];
-		u_int16_t word;
+		uint8_t byte[2];
+		uint16_t word;
 	} u;
 
 	u.word = addr;
-	return ((u_int16_t)u.byte[0]) | (((u_int16_t)u.byte[1]) << 8);
+	return ((uint16_t)u.byte[0]) | (((uint16_t)u.byte[1]) << 8);
 }
 
-static __inline__ int do_digit(char *str, u_int16_t *addr, u_int16_t scale, size_t *pos, size_t len, int *started)
+static __inline__ int do_digit(char *str, uint16_t *addr, uint16_t scale, size_t *pos, size_t len, int *started)
 {
-	u_int16_t tmp = *addr / scale;
+	uint16_t tmp = *addr / scale;
 
 	if (*pos == len)
 		return 1;
@@ -36,7 +37,7 @@ static __inline__ int do_digit(char *str
 
 static const char *dnet_ntop1(const struct dn_naddr *dna, char *str, size_t len)
 {
-	u_int16_t addr, area;
+	uint16_t addr, area;
 	size_t pos = 0;
 	int started = 0;
 
--- a/lib/dnet_pton.c
+++ b/lib/dnet_pton.c
@@ -1,23 +1,24 @@
 #include <errno.h>
 #include <string.h>
+#include <stdint.h>
 #include <sys/types.h>
 #include <netinet/in.h>
 
 #include "utils.h"
 
-static __inline__ u_int16_t dn_htons(u_int16_t addr)
+static __inline__ uint16_t dn_htons(uint16_t addr)
 {
         union {
-                u_int8_t byte[2];
-                u_int16_t word;
+                uint8_t byte[2];
+                uint16_t word;
         } u;
 
         u.word = addr;
-        return ((u_int16_t)u.byte[0]) | (((u_int16_t)u.byte[1]) << 8);
+        return ((uint16_t)u.byte[0]) | (((uint16_t)u.byte[1]) << 8);
 }
 
 
-static int dnet_num(const char *src, u_int16_t * dst)
+static int dnet_num(const char *src, uint16_t * dst)
 {
 	int rv = 0;
 	int tmp;
@@ -38,9 +39,9 @@ static int dnet_num(const char *src, u_i
 
 static int dnet_pton1(const char *src, struct dn_naddr *dna)
 {
-	u_int16_t addr;
-	u_int16_t area = 0;
-	u_int16_t node = 0;
+	uint16_t addr;
+	uint16_t area = 0;
+	uint16_t node = 0;
 	int pos;
 
 	pos = dnet_num(src, &area);
--- a/include/libiptc/ipt_kernel_headers.h
+++ b/include/libiptc/ipt_kernel_headers.h
@@ -5,7 +5,7 @@
 
 #include <limits.h>
 
-#if defined(__GLIBC__) && __GLIBC__ == 2
+#if 1
 #include <netinet/ip.h>
 #include <netinet/in.h>
 #include <netinet/ip_icmp.h>
