From 24957c135eaacd718f3c788285de33d64316b32e Mon Sep 17 00:00:00 2001
From: Felix Janda <felix.janda@posteo.de>
Date: Sat, 16 May 2015 10:31:24 +0200
Subject: [PATCH 1/2] src: Use stdint types

Backport of upstream commit 047f37b1d5d865084a435fd7594b8c5c332ccb8d

Please note that the backported patch does not include two changes
to arptables.h from the upstream - these modified lines added in commit
dbbe9f7de36aa3c7dd61dc89092c03f7902e474e which was committed after
the 0.0.4 release.

Upstream-status: backport
Signed-off-by: Felix Janda <felix.janda@posteo.de>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Brendan Heading <brendanheading@gmail.com>
---
 arptables.c                 | 8 ++++----
 include/arptables.h         | 3 ++-
 include/libarptc/libarptc.h | 7 ++++---
 libarptc/libarptc.c         | 4 ++--
 libarptc/libarptc_incl.c    | 2 +-
 5 files changed, 13 insertions(+), 11 deletions(-)

diff --git a/arptables.c b/arptables.c
index 5535ab2..6d1377f 100644
--- a/arptables.c
+++ b/arptables.c
@@ -230,7 +230,7 @@ extern void dump_entries(const arptc_handle_t handle);
    /etc/protocols */
 struct pprot {
 	char *name;
-	u_int8_t num;
+	uint8_t num;
 };
 
 /* Primitive headers... */
@@ -925,7 +925,7 @@ mask_to_dotted(const struct in_addr *mask)
 {
 	int i;
 	static char buf[20];
-	u_int32_t maskaddr, bits;
+	uint32_t maskaddr, bits;
 
 	maskaddr = ntohl(mask->s_addr);
 
@@ -967,7 +967,7 @@ string_to_number(const char *s, unsigned int min, unsigned int max,
 }
 
 static void
-set_option(unsigned int *options, unsigned int option, u_int16_t *invflg,
+set_option(unsigned int *options, unsigned int option, uint16_t *invflg,
 	   int invert)
 {
 	if (*options & option)
@@ -1107,7 +1107,7 @@ register_target(struct arptables_target *me)
 }
 
 static void
-print_num(u_int64_t number, unsigned int format)
+print_num(uint64_t number, unsigned int format)
 {
 	if (format & FMT_KILOMEGAGIGA) {
 		if (number > 99999) {
diff --git a/include/arptables.h b/include/arptables.h
index 820b664..e6a6ba6 100644
--- a/include/arptables.h
+++ b/include/arptables.h
@@ -1,6 +1,7 @@
 #ifndef _ARPTABLES_USER_H
 #define _ARPTABLES_USER_H
 
+#include <stdint.h>
 #include "arptables_common.h"
 #include "libarptc/libarptc.h"
 
@@ -126,7 +127,7 @@ extern char *mask_to_dotted(const struct in_addr *mask);
 
 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,
 		      arptc_handle_t *handle);
diff --git a/include/libarptc/libarptc.h b/include/libarptc/libarptc.h
index e4f1175..76fbfab 100644
--- a/include/libarptc/libarptc.h
+++ b/include/libarptc/libarptc.h
@@ -6,9 +6,10 @@
 #include <linux/netfilter_arp/arp_tables.h>
 
 #ifndef ARPT_MIN_ALIGN
-/* arpt_entry has pointers and u_int64_t's in it, so if you align to
-   it, you'll also align to any crazy matches and targets someone
-   might write */
+/* arpt_entry has pointers and uint64_t's in it, so if you align to
+ * it, you'll also align to any crazy matches and targets someone
+ * might write.
+ */
 #define ARPT_MIN_ALIGN (__alignof__(struct arpt_entry))
 #endif
 
diff --git a/libarptc/libarptc.c b/libarptc/libarptc.c
index 2dcaaef..701bae0 100644
--- a/libarptc/libarptc.c
+++ b/libarptc/libarptc.c
@@ -256,8 +256,8 @@ unconditional(const struct arpt_arp *arp)
 {
 	unsigned int i;
 
-	for (i = 0; i < sizeof(*arp)/sizeof(u_int32_t); i++)
-		if (((u_int32_t *)arp)[i])
+	for (i = 0; i < sizeof(*arp) / sizeof(uint32_t); i++)
+		if (((uint32_t *)arp)[i])
 			return 0;
 
 	return 1;
diff --git a/libarptc/libarptc_incl.c b/libarptc/libarptc_incl.c
index 2fa3d43..b41fcb2 100644
--- a/libarptc/libarptc_incl.c
+++ b/libarptc/libarptc_incl.c
@@ -1706,7 +1706,7 @@ TC_COMMIT(TC_HANDLE_T *handle)
 		/* Kernel will think that pointer should be 64-bits, and get
 		   padding.  So we accomodate here (assumption: alignment of
 		   `counters' is on 64-bit boundary). */
-		u_int64_t *kernptr = (u_int64_t *)&newcounters->counters;
+		uint64_t *kernptr = (uint64_t *)&newcounters->counters;
 		if ((unsigned long)&newcounters->counters % 8 != 0) {
 			fprintf(stderr,
 				"counters alignment incorrect! Mail rusty!\n");
-- 
2.4.3

