summaryrefslogtreecommitdiff
path: root/libhw_generic
diff options
context:
space:
mode:
Diffstat (limited to 'libhw_generic')
-rw-r--r--libhw_generic/include/libhw/generic/net.h16
-rw-r--r--libhw_generic/net.c20
2 files changed, 22 insertions, 14 deletions
diff --git a/libhw_generic/include/libhw/generic/net.h b/libhw_generic/include/libhw/generic/net.h
index 1052392..573a01f 100644
--- a/libhw_generic/include/libhw/generic/net.h
+++ b/libhw_generic/include/libhw/generic/net.h
@@ -12,6 +12,7 @@
#include <stdint.h> /* for uint{n}_t} */
#include <sys/types.h> /* for ssize_t */
+#include <libmisc/fmt.h>
#include <libhw/generic/io.h>
/* Errnos *********************************************************************/
@@ -34,24 +35,13 @@ struct net_ip4_addr {
static const struct net_ip4_addr net_ip4_addr_broadcast = {{255, 255, 255, 255}};
static const struct net_ip4_addr net_ip4_addr_zero = {{0, 0, 0, 0}};
-
-#define PRI_net_ip4_addr "%"PRIu8".%"PRIu8".%"PRIu8".%"PRIu8
-#define ARG_net_ip4_addr(addr) (addr).octets[0], \
- (addr).octets[1], \
- (addr).octets[2], \
- (addr).octets[3]
+void fmt_print_net_ip4_addr(lo_interface fmt_dest, struct net_ip4_addr);
struct net_eth_addr {
unsigned char octets[6];
};
-#define PRI_net_eth_addr "%02"PRIx8":%02"PRIx8":%02"PRIx8":%02"PRIx8":%02"PRIx8":%02"PRIx8
-#define ARG_net_eth_addr(addr) (addr).octets[0], \
- (addr).octets[1], \
- (addr).octets[2], \
- (addr).octets[3], \
- (addr).octets[4], \
- (addr).octets[5]
+void fmt_print_net_eth_addr(lo_interface fmt_dest, struct net_eth_addr);
/* Streams (e.g. TCP) *********************************************************/
diff --git a/libhw_generic/net.c b/libhw_generic/net.c
index e2785ae..d21626e 100644
--- a/libhw_generic/net.c
+++ b/libhw_generic/net.c
@@ -1,6 +1,6 @@
/* libhw_generic/net.c - Device-independent <libhw/generic/net.h> utilities
*
- * Copyright (C) 2024 Luke T. Shumaker <lukeshu@lukeshu.com>
+ * Copyright (C) 2024-2025 Luke T. Shumaker <lukeshu@lukeshu.com>
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
@@ -29,3 +29,21 @@ const char *net_strerror(int net_errno) {
assert_notreached("invalid net_errno");
}
}
+
+void fmt_print_net_ip4_addr(lo_interface fmt_dest w, struct net_ip4_addr addr) {
+ fmt_print(w,
+ addr.octets[0], ".",
+ addr.octets[1], ".",
+ addr.octets[2], ".",
+ addr.octets[3]);
+}
+
+void fmt_print_net_eth_addr(lo_interface fmt_dest w, struct net_eth_addr addr) {
+ fmt_print(w,
+ (base16_u8_, addr.octets[0]), ":",
+ (base16_u8_, addr.octets[1]), ":",
+ (base16_u8_, addr.octets[2]), ":",
+ (base16_u8_, addr.octets[3]), ":",
+ (base16_u8_, addr.octets[4]), ":",
+ (base16_u8_, addr.octets[5]));
+}