NBD_SET_REQUEST_STRUCTURED_REPLIES(3)

πŸ’… nbd_set_request_structured_replies(3) β€” the libnbd glow-up

okay so bestie, welcome to the libnbd manual, section 3 (library functions, iykyk). today's main character is nbd_set_request_structured_replies, and honestly? she's a little knob with big opinions. let's get into it ✨


✨ NAME ✨

nbd_set_request_structured_replies β€” control use of structured replies πŸŽ€


πŸ¦‹ SYNOPSIS πŸ¦‹

#include <libnbd.h>

int nbd_set_request_structured_replies (
      struct nbd_handle *h, bool request
    );

like, you hand her a handle and a bool, that's the whole vibe πŸ’œ


🌸 DESCRIPTION 🌸

so by default, libnbd tries to negotiate structured replies with the server. and the reason is lowkey important: this protocol extension must be in use before nbd_can_meta_context(3) or nbd_can_df(3) can return true. no negotiation, no fancy answers. periodt πŸ’…

but sometimes you just want to turn it off, and for integration testing that's genuinely useful β€” instead of going through the whole struggle of finding a way to alter the server so it fails the negotiation request, you can just clear this flag. way less effort, no cap.

it's also useful to set this to false prior to using nbd_set_opt_mode(3) if you want to control when to send nbd_opt_structured_reply(3) during negotiation. main character energy: you decide the timing πŸ‘‘

🚨 real talk though: setting this knob to false also disables any automatic request for extended headers. so like, that's a package deal, bestie, don't act surprised later 😭

πŸ”₯ RETURN VALUE πŸ”₯

if the call is successful the function returns 0. slay. that's it. that's the win βœ…


πŸ’€ ERRORS πŸ’€

on error -1 is returned. yikes.

refer to "ERROR HANDLING" in libnbd(3) for how to get further details of the error β€” that's where the lore lives 🧚

also, the following parameters must not be NULL: "h". for more info see "Non-NULL parameters" in libnbd(3). don't hand her a null handle, she will simply not be doing that πŸ™ˆ


πŸ‘‘ HANDLE STATE πŸ‘‘

nbd_set_request_structured_replies can be called when the handle is in the following state:

  • βœ… Handle created, before connecting β€” allowed, this is her moment
  • ❌ Connecting β€” error
  • ❌ Connecting & handshaking (opt_mode) β€” error
  • ❌ Connected to the server β€” error
  • ❌ Connection shut down β€” error
  • ❌ Handle dead β€” error

so basically: catch her early, before anything connects. after that, it's giving "too late babe" πŸ’€


⭐ VERSION ⭐

this function first appeared in libnbd 1.2. a legend from the start, honestly.

if you need to test if this function is available at compile time, check if the following macro is defined:

#define LIBNBD_HAVE_NBD_SET_REQUEST_STRUCTURED_REPLIES 1

🌈 SEE ALSO 🌈

the whole friend group, fr fr:

nbd_can_df(3), nbd_can_meta_context(3), nbd_create(3), nbd_get_request_structured_replies(3), nbd_get_structured_replies_negotiated(3), nbd_opt_structured_reply(3), nbd_set_handshake_flags(3), nbd_set_opt_mode(3), nbd_set_request_extended_headers(3), nbd_set_strict_mode(3), libnbd(3).


🫢 AUTHORS 🫢

Eric Blake

Richard W.M. Jones

(icons, both of them 🌟)


Copyright Red Hat


πŸŽ€ LICENSE πŸŽ€

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA


ok that's the whole page, you ate that πŸ“ go forth and negotiate responsibly πŸ’œ

this cutie came from libnbd-1.25.8, dated 2026-10 β€” mwah, see you in the next manpage bestie πŸ’…βœ¨

πŸ“¦ where this page comes from