There is not guarantee that "%llu" is appropriate to print
"u_int64_t". See:
http://stackoverflow.com/questions/2844/how-do-you-printf-an-unsigned-long-long-int
---
src/mysql_plugin.c | 14 +++++++-------
src/pgsql_plugin.c | 35 +++++++++++++++--------------------
src/pmacct-defines.h | 4 ++++
src/pmacct.c | 50 ++++++++++++++++++--------------------------------
src/print_plugin.c | 23 ++++++++---------------
src/sql_common.c | 20 +++-----------------
src/sqlite3_plugin.c | 12 +++++-------
7 files changed, 60 insertions(+), 98 deletions(-)
diff --git a/src/mysql_plugin.c b/src/mysql_plugin.c
index 03a1925..5faed2e 100644
--- a/src/mysql_plugin.c
+++ b/src/mysql_plugin.c
@@ -319,13 +319,13 @@ int MY_cache_dbop(struct DBdesc *db, struct db_cache
*cache_elem, struct insert_
for (num = 0; set[num].type; num++)
(*set[num].handler)(cache_elem, idata, num, &ptr_set, NULL);
-#if defined HAVE_64BIT_COUNTERS
- if (have_flows) snprintf(ptr_values, SPACELEFT(values_clause), ", %llu,
%llu, %llu)", cache_elem->packet_counter, cache_elem->bytes_counter,
cache_elem->flows_counter);
- else snprintf(ptr_values, SPACELEFT(values_clause), ", %llu, %llu)",
cache_elem->packet_counter, cache_elem->bytes_counter);
-#else
- if (have_flows) snprintf(ptr_values, SPACELEFT(values_clause), ", %lu,
%lu, %lu)", cache_elem->packet_counter, cache_elem->bytes_counter,
cache_elem->flows_counter);
- else snprintf(ptr_values, SPACELEFT(values_clause), ", %lu, %lu)",
cache_elem->packet_counter, cache_elem->bytes_counter);
-#endif
+ if (have_flows) snprintf(ptr_values, SPACELEFT(values_clause),
+ ", %"PRIpmcounter", %"PRIpmcounter",
%"PRIpmcounter")",
+ cache_elem->packet_counter,
cache_elem->bytes_counter,
+ cache_elem->flows_counter);
+ else snprintf(ptr_values,
+ SPACELEFT(values_clause), ", %"PRIpmcounter",
%"PRIpmcounter")",
+ cache_elem->packet_counter, cache_elem->bytes_counter);
/* sending UPDATE query. Use an INSERT ... ON DUPLICATE KEY UPDATE ... */
if (!config.sql_dont_try_update) {
diff --git a/src/pgsql_plugin.c b/src/pgsql_plugin.c
index d1e9c55..8e07ff5 100644
--- a/src/pgsql_plugin.c
+++ b/src/pgsql_plugin.c
@@ -311,19 +311,15 @@ int PG_cache_dbop_copy(struct DBdesc *db, struct db_cache
*cache_elem, struct in
num++;
}
-#if defined HAVE_64BIT_COUNTERS
- if (have_flows) snprintf(ptr_values, SPACELEFT(values_clause),
"%s%llu%s%llu%s%llu\n", delim_buf, cache_elem->packet_counter,
-
delim_buf, cache_elem->bytes_counter,
-
delim_buf, cache_elem->flows_counter);
- else snprintf(ptr_values, SPACELEFT(values_clause), "%s%llu%s%llu\n",
delim_buf, cache_elem->packet_counter,
-
delim_buf, cache_elem->bytes_counter);
-#else
- if (have_flows) snprintf(ptr_values, SPACELEFT(values_clause),
"%s%lu%s%lu%s%lu\n", delim_buf, cache_elem->packet_counter,
-
delim_buf, cache_elem->bytes_counter,
-
delim_buf, cache_elem->flows_counter);
- else snprintf(ptr_values, SPACELEFT(values_clause), "%s%lu%s%lu\n",
delim_buf, cache_elem->packet_counter,
-
delim_buf, cache_elem->bytes_counter);
-#endif
+ if (have_flows) snprintf(ptr_values, SPACELEFT(values_clause),
+
"%s%"PRIpmcounter"%s%"PRIpmcounter"%s%"PRIpmcounter"\n",
+ delim_buf, cache_elem->packet_counter,
+ delim_buf, cache_elem->bytes_counter,
+ delim_buf, cache_elem->flows_counter);
+ else snprintf(ptr_values, SPACELEFT(values_clause),
+ "%s%"PRIpmcounter"%s%"PRIpmcounter"\n",
+ delim_buf, cache_elem->packet_counter,
+ delim_buf, cache_elem->bytes_counter);
strncpy(sql_data, values_clause, sizeof(sql_data));
if (PQputCopyData(db->desc, sql_data, strlen(sql_data)) < 0) { // avoid
strlen()
@@ -386,13 +382,12 @@ int PG_cache_dbop(struct DBdesc *db, struct db_cache
*cache_elem, struct insert_
if (config.sql_dont_try_update || (!PG_affected_rows(ret))) {
/* UPDATE failed, trying with an INSERT query */
strncpy(sql_data, insert_clause, sizeof(sql_data));
-#if defined HAVE_64BIT_COUNTERS
- if (have_flows) snprintf(ptr_values, SPACELEFT(values_clause), ", %llu,
%llu, %llu)", cache_elem->packet_counter, cache_elem->bytes_counter,
cache_elem->flows_counter);
- else snprintf(ptr_values, SPACELEFT(values_clause), ", %llu, %llu)",
cache_elem->packet_counter, cache_elem->bytes_counter);
-#else
- if (have_flows) snprintf(ptr_values, SPACELEFT(values_clause), ", %lu,
%lu, %lu)", cache_elem->packet_counter, cache_elem->bytes_counter,
cache_elem->flows_counter);
- else snprintf(ptr_values, SPACELEFT(values_clause), ", %lu, %lu)",
cache_elem->packet_counter, cache_elem->bytes_counter);
-#endif
+ if (have_flows) snprintf(ptr_values, SPACELEFT(values_clause),
+ ", %"PRIpmcounter", %"PRIpmcounter",
%"PRIpmcounter")",
+ cache_elem->packet_counter,
cache_elem->bytes_counter,
+ cache_elem->flows_counter);
+ else snprintf(ptr_values, SPACELEFT(values_clause), ", %"PRIpmcounter",
%"PRIpmcounter")",
+ cache_elem->packet_counter, cache_elem->bytes_counter);
strncat(sql_data, values_clause, SPACELEFT(sql_data));
ret = PQexec(db->desc, sql_data);
diff --git a/src/pmacct-defines.h b/src/pmacct-defines.h
index c7db91d..7737a5d 100644
--- a/src/pmacct-defines.h
+++ b/src/pmacct-defines.h
@@ -19,6 +19,8 @@
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
+#include <inttypes.h>
+
/* defines */
#define ARGS_NFACCTD "n:dDhP:b:f:F:c:m:p:r:s:S:L:l:v:o:O:uR"
#define ARGS_SFACCTD "n:dDhP:b:f:F:c:m:p:r:s:S:L:l:v:o:O:uR"
@@ -284,8 +286,10 @@ typedef u_int32_t pm_country_t;
#if defined HAVE_64BIT_COUNTERS
typedef u_int64_t pm_counter_t;
+#define PRIpmcounter PRIu64
#else
typedef u_int32_t pm_counter_t;
+#define PRIpmcounter PRIu32
#endif
/* Keep common NF_AS and NF_NET values aligned, ie. NF_[NET|AS]_KEEP ==
0x00000001 */
diff --git a/src/pmacct.c b/src/pmacct.c
index 46096a6..612183e 100644
--- a/src/pmacct.c
+++ b/src/pmacct.c
@@ -1705,25 +1705,25 @@ int main(int argc,char **argv)
}
#if defined HAVE_64BIT_COUNTERS
- if (want_output == PRINT_OUTPUT_FORMATTED) printf("%-20llu ",
acc_elem->pkt_num);
- else if (want_output == PRINT_OUTPUT_CSV) printf("%llu,",
acc_elem->pkt_num);
+ if (want_output == PRINT_OUTPUT_FORMATTED) printf("%-20"PRIpmcounter"
", acc_elem->pkt_num);
+ else if (want_output == PRINT_OUTPUT_CSV) printf("%"PRIpmcounter",",
acc_elem->pkt_num);
if (!have_wtc || (what_to_count & COUNT_FLOWS)) {
- if (want_output == PRINT_OUTPUT_FORMATTED) printf("%-20llu ",
acc_elem->flo_num);
- else if (want_output == PRINT_OUTPUT_CSV) printf("%llu,",
acc_elem->flo_num);
+ if (want_output == PRINT_OUTPUT_FORMATTED) printf("%-20"PRIpmcounter"
", acc_elem->flo_num);
+ else if (want_output == PRINT_OUTPUT_CSV) printf("%"PRIpmcounter",",
acc_elem->flo_num);
}
- printf("%llu\n", acc_elem->pkt_len);
+ printf("%"PRIpmcounter"\n", acc_elem->pkt_len);
#else
- if (want_output == PRINT_OUTPUT_FORMATTED) printf("%-10lu ",
acc_elem->pkt_num);
- else if (want_output == PRINT_OUTPUT_CSV) printf("%lu,",
acc_elem->pkt_num);
+ if (want_output == PRINT_OUTPUT_FORMATTED) printf("%-10"PRIpmcounter"
", acc_elem->pkt_num);
+ else if (want_output == PRINT_OUTPUT_CSV) printf("%"PRIpmcounter",",
acc_elem->pkt_num);
if (!have_wtc || (what_to_count & COUNT_FLOWS)) {
- if (want_output == PRINT_OUTPUT_FORMATTED) printf("%-10lu ",
acc_elem->flo_num);
- else if (want_output == PRINT_OUTPUT_CSV) printf("%lu,",
acc_elem->flo_num);
+ if (want_output == PRINT_OUTPUT_FORMATTED) printf("%-10"PRIpmcounter"
", acc_elem->flo_num);
+ else if (want_output == PRINT_OUTPUT_CSV) printf("%"PRIpmcounter",",
acc_elem->flo_num);
}
- printf("%lu\n", acc_elem->pkt_len);
+ printf("%"PRIpmcounter"\n", acc_elem->pkt_len);
#endif
counter++;
}
@@ -1778,36 +1778,22 @@ int main(int argc,char **argv)
num_counters += acc_elem->time_start.tv_sec; /* XXX: this field is used
here to count how much entries we are accumulating */
}
else {
-#if defined HAVE_64BIT_COUNTERS
/* print bytes */
- if (which_counter == 0) printf("%llu\n", acc_elem->pkt_len);
+ if (which_counter == 0) printf("%"PRIpmcounter"\n",
acc_elem->pkt_len);
/* print packets */
- else if (which_counter == 1) printf("%llu\n", acc_elem->pkt_num);
+ else if (which_counter == 1) printf("%"PRIpmcounter"\n",
acc_elem->pkt_num);
/* print packets+bytes+flows+num */
- else if (which_counter == 2) printf("%llu %llu %llu %lu\n",
acc_elem->pkt_num, acc_elem->pkt_len, acc_elem->flo_num,
acc_elem->time_start.tv_sec);
+ else if (which_counter == 2) printf("%"PRIpmcounter" %"PRIpmcounter"
%"PRIpmcounter" %lu\n", acc_elem->pkt_num, acc_elem->pkt_len,
acc_elem->flo_num, acc_elem->time_start.tv_sec);
/* print flows */
- else if (which_counter == 3) printf("%llu\n", acc_elem->flo_num);
-#else
- if (which_counter == 0) printf("%lu\n", acc_elem->pkt_len);
- else if (which_counter == 1) printf("%lu\n", acc_elem->pkt_num);
- else if (which_counter == 2) printf("%lu %lu %lu %lu\n",
acc_elem->pkt_num, acc_elem->pkt_len, acc_elem->flo_num,
acc_elem->time_start.tv_sec);
- else if (which_counter == 3) printf("%lu\n", acc_elem->flo_num);
-#endif
+ else if (which_counter == 3) printf("%"PRIpmcounter"\n",
acc_elem->flo_num);
}
}
if (sum_counters) {
-#if defined HAVE_64BIT_COUNTERS
- if (which_counter == 0) printf("%llu\n", bcnt); /* print bytes */
- else if (which_counter == 1) printf("%llu\n", pcnt); /* print packets */
- else if (which_counter == 2) printf("%llu %llu %llu %u\n", pcnt, bcnt,
fcnt, num_counters); /* print packets+bytes+flows+num */
- else if (which_counter == 3) printf("%llu\n", fcnt); /* print flows */
-#else
- if (which_counter == 0) printf("%lu\n", bcnt);
- else if (which_counter == 1) printf("%lu\n", pcnt);
- else if (which_counter == 2) printf("%lu %lu %lu %u\n", pcnt, bcnt,
fcnt, num_counters);
- else if (which_counter == 3) printf("%lu\n", fcnt);
-#endif
+ if (which_counter == 0) printf("%"PRIpmcounter"\n", bcnt); /* print
bytes */
+ else if (which_counter == 1) printf("%"PRIpmcounter"\n", pcnt); /* print
packets */
+ else if (which_counter == 2) printf("%"PRIpmcounter" %"PRIpmcounter"
%"PRIpmcounter" %u\n", pcnt, bcnt, fcnt, num_counters); /* print
packets+bytes+flows+num */
+ else if (which_counter == 3) printf("%"PRIpmcounter"\n", fcnt); /* print
flows */
}
}
else if (want_class_table) {
diff --git a/src/print_plugin.c b/src/print_plugin.c
index 66ef9d8..ed651ce 100644
--- a/src/print_plugin.c
+++ b/src/print_plugin.c
@@ -652,14 +652,13 @@ void P_cache_purge(struct chained_cache *queue[], int
index)
if (config.what_to_count_2 & COUNT_SAMPLING_RATE) fprintf(f, "%-7u
", data->sampling_rate);
#if defined HAVE_64BIT_COUNTERS
- fprintf(f, "%-20llu ", queue[j]->packet_counter);
- fprintf(f, "%-20llu ", queue[j]->flow_counter);
- fprintf(f, "%llu\n", queue[j]->bytes_counter);
+ fprintf(f, "%-20"PRIpmcounter" ", queue[j]->packet_counter);
+ fprintf(f, "%-20"PRIpmcounter" ", queue[j]->flow_counter);
#else
- fprintf(f, "%-10lu ", queue[j]->packet_counter);
- fprintf(f, "%-10lu ", queue[j]->flow_counter);
- fprintf(f, "%lu\n", queue[j]->bytes_counter);
+ fprintf(f, "%-10"PRIpmcounter" ", queue[j]->packet_counter);
+ fprintf(f, "%-10"PRIpmcounter" ", queue[j]->flow_counter);
#endif
+ fprintf(f, "%"PRIpmcounter"\n", queue[j]->bytes_counter);
}
else if (f && config.print_output == PRINT_OUTPUT_CSV) {
if (config.what_to_count & COUNT_ID) fprintf(f, "%llu,", data->id);
@@ -753,15 +752,9 @@ void P_cache_purge(struct chained_cache *queue[], int
index)
#endif
if (config.what_to_count_2 & COUNT_SAMPLING_RATE) fprintf(f, "%u,",
data->sampling_rate);
-#if defined HAVE_64BIT_COUNTERS
- fprintf(f, "%llu,", queue[j]->packet_counter);
- fprintf(f, "%llu,", queue[j]->flow_counter);
- fprintf(f, "%llu\n", queue[j]->bytes_counter);
-#else
- fprintf(f, "%lu,", queue[j]->packet_counter);
- fprintf(f, "%lu,", queue[j]->flow_counter);
- fprintf(f, "%lu\n", queue[j]->bytes_counter);
-#endif
+ fprintf(f, "%"PRIpmcounter",", queue[j]->packet_counter);
+ fprintf(f, "%"PRIpmcounter",", queue[j]->flow_counter);
+ fprintf(f, "%"PRIpmcounter"\n", queue[j]->bytes_counter);
}
}
diff --git a/src/sql_common.c b/src/sql_common.c
index 8e667b1..11f0f29 100644
--- a/src/sql_common.c
+++ b/src/sql_common.c
@@ -2321,33 +2321,19 @@ int sql_compose_static_set(int have_flows)
{
int set_primitives=0;
-#if defined HAVE_64BIT_COUNTERS
- strncpy(set[set_primitives].string, "SET packets=packets+%llu,
bytes=bytes+%llu", SPACELEFT(set[set_primitives].string));
+ strncpy(set[set_primitives].string, "SET packets=packets+%"PRIpmcounter",
bytes=bytes+%"PRIpmcounter,
+ SPACELEFT(set[set_primitives].string));
set[set_primitives].type = COUNT_COUNTERS;
set[set_primitives].handler = count_counters_setclause_handler;
set_primitives++;
if (have_flows) {
strncpy(set[set_primitives].string, ", ",
SPACELEFT(set[set_primitives].string));
- strncat(set[set_primitives].string, "flows=flows+%llu",
SPACELEFT(set[set_primitives].string));
+ strncat(set[set_primitives].string, "flows=flows+%"PRIpmcounter,
SPACELEFT(set[set_primitives].string));
set[set_primitives].type = COUNT_FLOWS;
set[set_primitives].handler = count_flows_setclause_handler;
set_primitives++;
}
-#else
- strncpy(set[set_primitives].string, "SET packets=packets+%u,
bytes=bytes+%u", SPACELEFT(set[set_primitives].string));
- set[set_primitives].type = COUNT_COUNTERS;
- set[set_primitives].handler = count_counters_setclause_handler;
- set_primitives++;
-
- if (have_flows) {
- strncpy(set[set_primitives].string, ", ",
SPACELEFT(set[set_primitives].string));
- strncat(set[set_primitives].string, "flows=flows+%u",
SPACELEFT(set[set_primitives].string));
- set[set_primitives].type = COUNT_FLOWS;
- set[set_primitives].handler = count_flows_setclause_handler;
- set_primitives++;
- }
-#endif
if (config.what_to_count & COUNT_TCPFLAGS) {
strncpy(set[set_primitives].string, ", ",
SPACELEFT(set[set_primitives].string));
diff --git a/src/sqlite3_plugin.c b/src/sqlite3_plugin.c
index 74af3f9..010e38b 100644
--- a/src/sqlite3_plugin.c
+++ b/src/sqlite3_plugin.c
@@ -327,13 +327,11 @@ int SQLI_cache_dbop(struct DBdesc *db, struct db_cache
*cache_elem, struct inser
if (config.sql_dont_try_update || (sqlite3_changes(db->desc) == 0)) {
/* UPDATE failed, trying with an INSERT query */
-#if defined HAVE_64BIT_COUNTERS
- if (have_flows) snprintf(ptr_values, SPACELEFT(values_clause), ", %llu,
%llu, %llu)", cache_elem->packet_counter, cache_elem->bytes_counter,
cache_elem->flows_counter);
- else snprintf(ptr_values, SPACELEFT(values_clause), ", %llu, %llu)",
cache_elem->packet_counter, cache_elem->bytes_counter);
-#else
- if (have_flows) snprintf(ptr_values, SPACELEFT(values_clause), ", %lu,
%lu, %lu)", cache_elem->packet_counter, cache_elem->bytes_counter,
cache_elem->flows_counter);
- else snprintf(ptr_values, SPACELEFT(values_clause), ", %lu, %lu)",
cache_elem->packet_counter, cache_elem->bytes_counter);
-#endif
+ if (have_flows) snprintf(ptr_values, SPACELEFT(values_clause),
+ ", %"PRIpmcounter", %"PRIpmcounter",
%"PRIpmcounter")",
+ cache_elem->packet_counter,
cache_elem->bytes_counter, cache_elem->flows_counter);
+ else snprintf(ptr_values, SPACELEFT(values_clause), ", %"PRIpmcounter",
%"PRIpmcounter")",
+ cache_elem->packet_counter, cache_elem->bytes_counter);
strncpy(sql_data, insert_clause, sizeof(sql_data));
strncat(sql_data, values_clause, SPACELEFT(sql_data));
--
1.7.10.4
_______________________________________________
pmacct-discussion mailing list
http://www.pmacct.net/#mailinglists