The explicit value here is not so important.
Let's chop off the higher bits.
Fixes the issue reported at
https://github.com/systemd/systemd/pull/29802#issuecomment-
1788637950.
if (serials)
serials[i] = message_get_serial(messages[i]);
- /* It seems that the kernel accepts an arbitrary number. Let's set the serial of the
- * first message. */
- nfnl_message_set_res_id(messages[i], message_get_serial(batch_begin));
+ /* It seems that the kernel accepts an arbitrary number. Let's set the lower 16 bits of the
+ * serial of the first message. */
+ nfnl_message_set_res_id(messages[i], (uint16_t) (message_get_serial(batch_begin) & UINT16_MAX));
iovs[c++] = IOVEC_MAKE(messages[i]->hdr, messages[i]->hdr->nlmsg_len);
}