summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/fastd.h12
-rw-r--r--src/receive.c3
-rw-r--r--src/send.c16
3 files changed, 17 insertions, 14 deletions
diff --git a/src/fastd.h b/src/fastd.h
index 6eaf831..464a7fd 100644
--- a/src/fastd.h
+++ b/src/fastd.h
@@ -147,8 +147,10 @@ struct fastd_socket {
/** Some kind of network transfer stratistics */
struct fastd_stats {
+#ifdef WITH_STATUS_SOCKET
uint64_t packets; /**< The number of packets transferred */
uint64_t bytes; /**< The number of bytes transferred */
+#endif
};
/** A data structure keeping track of an unknown addresses that a handshakes was received from recently */
@@ -379,6 +381,16 @@ static inline size_t fastd_max_payload(void) {
}
}
+/** Adds statistics for a single packet of a given size */
+static inline void fastd_stats_add(fastd_stats_t *stats UNUSED, size_t stat_size UNUSED) {
+#ifdef WITH_STATUS_SOCKET
+ if (stat_size) {
+ stats->packets++;
+ stats->bytes += stat_size;
+ }
+#endif
+}
+
/** Checks if a fastd_peer_address_t is an IPv6 link-local address */
static inline bool fastd_peer_address_is_v6_ll(const fastd_peer_address_t *addr) {
return (addr->sa.sa_family == AF_INET6 && IN6_IS_ADDR_LINKLOCAL(&addr->in6.sin6_addr));
diff --git a/src/receive.c b/src/receive.c
index ce20c4d..134564c 100644
--- a/src/receive.c
+++ b/src/receive.c
@@ -267,8 +267,7 @@ void fastd_handle_receive(fastd_peer_t *peer, fastd_buffer_t buffer) {
fastd_peer_eth_addr_add(peer, src_addr);
}
- ctx.rx.packets++;
- ctx.rx.bytes += buffer.len;
+ fastd_stats_add(&ctx.rx, buffer.len);
fastd_tuntap_write(buffer);
diff --git a/src/send.c b/src/send.c
index 32e3492..4028c55 100644
--- a/src/send.c
+++ b/src/send.c
@@ -75,14 +75,6 @@ static inline void add_pktinfo(struct msghdr *msg, const fastd_peer_address_t *l
}
}
-/** Adds statistics for a single packet of a given size */
-static inline void count_stat(fastd_stats_t *stats, size_t stat_size) {
- if (stat_size) {
- stats->packets++;
- stats->bytes += stat_size;
- }
-}
-
/** Sends a packet of a given type */
static void send_type(const fastd_socket_t *sock, const fastd_peer_address_t *local_addr, const fastd_peer_address_t *remote_addr, fastd_peer_t *peer, uint8_t packet_type, fastd_buffer_t buffer, size_t stat_size) {
if (!sock)
@@ -151,23 +143,23 @@ static void send_type(const fastd_socket_t *sock, const fastd_peer_address_t *lo
case EWOULDBLOCK:
#endif
pr_debug2_errno("sendmsg");
- count_stat(&ctx.tx_dropped, stat_size);
+ fastd_stats_add(&ctx.tx_dropped, stat_size);
break;
case ENETDOWN:
case ENETUNREACH:
case EHOSTUNREACH:
pr_debug_errno("sendmsg");
- count_stat(&ctx.tx_error, stat_size);
+ fastd_stats_add(&ctx.tx_error, stat_size);
break;
default:
pr_warn_errno("sendmsg");
- count_stat(&ctx.tx_error, stat_size);
+ fastd_stats_add(&ctx.tx_error, stat_size);
}
}
else {
- count_stat(&ctx.tx, stat_size);
+ fastd_stats_add(&ctx.tx, stat_size);
}
fastd_buffer_free(buffer);