From 35ecfd1dba001d5d2dba6833a558076299b2a6a9 Mon Sep 17 00:00:00 2001 From: 0xFEEDC0DE64 Date: Tue, 21 Dec 2021 23:17:20 +0100 Subject: [PATCH] Implemented udp sender for ipv6 --- src/udpsender.cpp | 13 +++++++++++++ src/udpsender.h | 1 + 2 files changed, 14 insertions(+) diff --git a/src/udpsender.cpp b/src/udpsender.cpp index 059cd87..b23f80e 100644 --- a/src/udpsender.cpp +++ b/src/udpsender.cpp @@ -82,4 +82,17 @@ tl::expected UdpSender::send(const struct sockaddr_in &recipi return {}; } +tl::expected UdpSender::send(const struct sockaddr_in6 &recipient, std::string_view buf) +{ + if (!ready()) + return tl::make_unexpected("initializing failed, not ready to send"); + + if (const ssize_t sent = sendto(m_udp_server, buf.data(), buf.size(), 0, (const struct sockaddr*)&recipient, sizeof(recipient)); sent < 0) + return tl::make_unexpected(fmt::format("send failed with {} (errno={})", sent, errno)); + else if (sent != buf.size()) + return tl::make_unexpected(fmt::format("sent bytes does not match, expected={}, sent={}", buf.size(), sent)); + + return {}; +} + } // namespace wifi_stack diff --git a/src/udpsender.h b/src/udpsender.h index 5cbcf46..0114b4c 100644 --- a/src/udpsender.h +++ b/src/udpsender.h @@ -27,6 +27,7 @@ public: tl::expected send(esp_netif_t *interf, uint16_t port, std::string_view buf); tl::expected send(const esp_netif_ip_info_t &ip, uint16_t port, std::string_view buf); tl::expected send(const struct sockaddr_in &recipient, std::string_view buf); + tl::expected send(const struct sockaddr_in6 &recipient, std::string_view buf); private: const int m_udp_server;