File tree Expand file tree Collapse file tree 2 files changed +10
-4
lines changed
Expand file tree Collapse file tree 2 files changed +10
-4
lines changed Original file line number Diff line number Diff line change @@ -69,9 +69,8 @@ typedef unsigned char byte_t; ///< For compatibility with platforms where byte s
6969/// transfers with transfer-ID less than or equal to N-ORDERING_WINDOW (modulo 2^64) as late.
7070#define RX_TRANSFER_ORDERING_WINDOW 1024U
7171
72- #define UDP_PORT 9382U
73- #define IPv4_MCAST_PREFIX 0xEF000000UL
74- #define IPv4_MCAST_SUFFIX_MASK 0x007FFFFFUL
72+ #define UDP_PORT 9382U
73+ #define IPv4_MCAST_PREFIX 0xEF000000UL
7574
7675static size_t smaller (const size_t a , const size_t b ) { return (a < b ) ? a : b ; }
7776static size_t larger (const size_t a , const size_t b ) { return (a > b ) ? a : b ; }
@@ -130,7 +129,9 @@ bool udpard_is_valid_endpoint(const udpard_udpip_ep_t ep)
130129
131130udpard_udpip_ep_t udpard_make_subject_endpoint (const uint32_t subject_id )
132131{
133- return (udpard_udpip_ep_t ){ .ip = IPv4_MCAST_PREFIX | (subject_id & IPv4_MCAST_SUFFIX_MASK ), .port = UDP_PORT };
132+ static_assert ((UDPARD_IPv4_SUBJECT_ID_MAX & (UDPARD_IPv4_SUBJECT_ID_MAX + 1 )) == 0 ,
133+ "UDPARD_IPv4_SUBJECT_ID_MAX must be one less than a power of 2" );
134+ return (udpard_udpip_ep_t ){ .ip = IPv4_MCAST_PREFIX | (subject_id & UDPARD_IPv4_SUBJECT_ID_MAX ), .port = UDP_PORT };
134135}
135136
136137// NOLINTNEXTLINE(misc-no-recursion)
Original file line number Diff line number Diff line change @@ -74,6 +74,11 @@ extern "C"
7474/// Timestamps supplied by the application must be non-negative monotonically increasing counts of microseconds.
7575typedef int64_t udpard_us_t ;
7676
77+ /// The subject-ID only affects the formation of the multicast UDP/IP endpoint address.
78+ /// In IPv4 networks, it is limited to 23 bits only due to the limited MAC multicast address space.
79+ /// In IPv6 networks, 32 bits are supported.
80+ #define UDPARD_IPv4_SUBJECT_ID_MAX 0x7FFFFFUL
81+
7782#define UDPARD_PRIORITY_MAX 7U
7883
7984typedef enum udpard_prio_t
You can’t perform that action at this time.
0 commit comments