nbd_set_request_extended_headers(3)

πŸ’– NAME πŸ’–

nbd_set_request_extended_headers β€” okay bestie, this is the libnbd(3) function that controls whether extended headers get requested. It’s giving β€œtiny knob, big protocol energy” πŸ’…βœ¨


🌸 SYNOPSIS 🌸

#include <libnbd.h>

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

πŸ¦‹ DESCRIPTION πŸ¦‹

So, by default, libnbd tries to negotiate extended headers with the server β€” and that’s iconic because this protocol extension permits the use of 64-bit zero, trim, and block status actions. No cap, those are useful πŸ”₯

But for integration testing, it can be useful to clear this flag instead of finding a way to alter the server so it fails the negotiation request. It’s literally the β€œeasier test setup” button 🫢

For backwards compatibility, the setting of this knob is ignored if nbd_set_request_structured_replies(3) is also set to false, since the use of extended headers implies structured replies. Periodt πŸ’€


⭐ RETURN VALUE ⭐

If the call is successful, the function returns 0. Slay βœ…


πŸ’œ ERRORS πŸ’œ

On error, -1 is returned. Not the vibe 😭

Refer to "ERROR HANDLING" in libnbd(3) for how to get further details of the error.

The following parameters must not be NULL: h. For more information, see "Non-NULL parameters" in libnbd(3).


πŸŽ€ HANDLE STATE πŸŽ€

You can call nbd_set_request_extended_headers when the handle is in these states β€” vibe check below πŸ‘‘

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

🌈 VERSION 🌈

This function first appeared in libnbd 1.18. Fr fr, it’s not ancient history.

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_EXTENDED_HEADERS 1

🧚 SEE ALSO 🧚

nbd_block_status_64(3), nbd_cache(3), nbd_create(3), nbd_get_extended_headers_negotiated(3), nbd_get_request_extended_headers(3), nbd_opt_extended_headers(3), nbd_set_handshake_flags(3), nbd_set_request_structured_replies(3), nbd_set_strict_mode(3), nbd_trim(3), nbd_zero(3), libnbd(3). Go read the whole friend group, bestie πŸ“šβœ¨


πŸ‘‘ AUTHORS πŸ‘‘

  • Eric Blake
  • Richard W.M. Jones

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.


okay that’s the whole page, mwah πŸ’‹ β€” source/version: libnbd-1.25.8, date: 2026-10-1 🫢✨

πŸ“¦ where this page comes from