summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
author/C=EU/ST=EU/CN=Patrick McHardy/emailAddress=kaber@trash.net </C=EU/ST=EU/CN=Patrick McHardy/emailAddress=kaber@trash.net>2007-09-05 14:10:53 +0000
committer/C=EU/ST=EU/CN=Patrick McHardy/emailAddress=kaber@trash.net </C=EU/ST=EU/CN=Patrick McHardy/emailAddress=kaber@trash.net>2007-09-05 14:10:53 +0000
commit9d575d763958c30a044cc3d8d839b3c39bb67bd2 (patch)
tree91d7aad991612c21f4add4e1e54a2c16cf914b54
parente951c1428053e879d44980dd1f6fe24d89223141 (diff)
Fix strict aliasing warnings
-rw-r--r--ip6tables.c7
-rw-r--r--iptables-restore.c6
-rw-r--r--iptables-xml.c12
-rw-r--r--iptables.c7
4 files changed, 23 insertions, 9 deletions
diff --git a/ip6tables.c b/ip6tables.c
index 79c31bb..d43029e 100644
--- a/ip6tables.c
+++ b/ip6tables.c
@@ -1413,6 +1413,7 @@ int do_command6(int argc, char *argv[], char **table, ip6tc_handle_t *handle)
const char *jumpto = "";
char *protocol = NULL;
int proto_used = 0;
+ u_int64_t *cnt;
memset(&fw, 0, sizeof(fw));
@@ -1727,12 +1728,14 @@ int do_command6(int argc, char *argv[], char **table, ip6tc_handle_t *handle)
"-%c requires packet and byte counter",
opt2char(OPT_COUNTERS));
- if (sscanf(pcnt, "%llu", (unsigned long long *)&fw.counters.pcnt) != 1)
+ cnt = &fw.counters.pcnt;
+ if (sscanf(pcnt, "%llu", (unsigned long long *)cnt) != 1)
exit_error(PARAMETER_PROBLEM,
"-%c packet counter not numeric",
opt2char(OPT_COUNTERS));
- if (sscanf(bcnt, "%llu", (unsigned long long *)&fw.counters.bcnt) != 1)
+ cnt = &fw.counters.bcnt;
+ if (sscanf(bcnt, "%llu", (unsigned long long *)cnt) != 1)
exit_error(PARAMETER_PROBLEM,
"-%c byte counter not numeric",
opt2char(OPT_COUNTERS));
diff --git a/iptables-restore.c b/iptables-restore.c
index 1a4beeb..df351ad 100644
--- a/iptables-restore.c
+++ b/iptables-restore.c
@@ -74,7 +74,11 @@ iptc_handle_t create_handle(const char *tablename, const char* modprobe )
static int parse_counters(char *string, struct ipt_counters *ctr)
{
- return (sscanf(string, "[%llu:%llu]", (unsigned long long *)&ctr->pcnt, (unsigned long long *)&ctr->bcnt) == 2);
+ u_int64_t *pcnt, *bcnt;
+
+ pcnt = &ctr->pcnt;
+ bcnt = &ctr->bcnt;
+ return (sscanf(string, "[%llu:%llu]", (unsigned long long *)pcnt, (unsigned long long *)bcnt) == 2);
}
/* global new argv and argc */
diff --git a/iptables-xml.c b/iptables-xml.c
index 1bb2e20..2aefb1a 100644
--- a/iptables-xml.c
+++ b/iptables-xml.c
@@ -70,12 +70,16 @@ print_usage(const char *name, const char *version)
static int
parse_counters(char *string, struct ipt_counters *ctr)
{
- if (string != NULL)
+ u_int64_t *pcnt, *bcnt;
+
+ if (string != NULL) {
+ pcnt = &ctr->pcnt;
+ bcnt = &ctr->bcnt;
return (sscanf
(string, "[%llu:%llu]",
- (unsigned long long *) &ctr->pcnt,
- (unsigned long long *) &ctr->bcnt) == 2);
- else
+ (unsigned long long *)pcnt,
+ (unsigned long long *)bcnt) == 2);
+ } else
return (0 == 2);
}
diff --git a/iptables.c b/iptables.c
index 344d2d6..549c6cd 100644
--- a/iptables.c
+++ b/iptables.c
@@ -1469,6 +1469,7 @@ int do_command(int argc, char *argv[], char **table, iptc_handle_t *handle)
const char *jumpto = "";
char *protocol = NULL;
int proto_used = 0;
+ u_int64_t *cnt;
memset(&fw, 0, sizeof(fw));
@@ -1793,12 +1794,14 @@ int do_command(int argc, char *argv[], char **table, iptc_handle_t *handle)
"-%c requires packet and byte counter",
opt2char(OPT_COUNTERS));
- if (sscanf(pcnt, "%llu", (unsigned long long *)&fw.counters.pcnt) != 1)
+ cnt = &fw.counters.pcnt;
+ if (sscanf(pcnt, "%llu", (unsigned long long *)cnt) != 1)
exit_error(PARAMETER_PROBLEM,
"-%c packet counter not numeric",
opt2char(OPT_COUNTERS));
- if (sscanf(bcnt, "%llu", (unsigned long long *)&fw.counters.bcnt) != 1)
+ cnt = &fw.counters.bcnt;
+ if (sscanf(bcnt, "%llu", (unsigned long long *)cnt) != 1)
exit_error(PARAMETER_PROBLEM,
"-%c byte counter not numeric",
opt2char(OPT_COUNTERS));