---
name: "ixp_message"
section: "3"
platform: "linux"
package: "libixp-dev"
version: "0.6~20121202+hg148-5"
release: "Debian 11 (Bullseye)"
platforms: ["linux"]
url: "https://new.carta.tech/ixp_message"
---

# ixp\_message(3)

## NAME

IxpMsg, IxpMsgMode, ixp\_message

## SYNOPSIS

```
#include <ixp.h>
typedef struct IxpMsg IxpMsg;
struct IxpMsg {
        char*   data; /* Beginning of buffer. */
        char*   pos;  /* Current position in buffer. */
        char*   end;  /* End of message. */
        uint    size; /* Size of buffer. */
        uint    mode; /* MsgPack or MsgUnpack. */
}
enum IxpMsgMode {
        MsgPack,
        MsgUnpack,
}
IxpMsg ixp_message(char *data, uint length, uint mode);
```

## DESCRIPTION

The IxpMsg struct represents a binary message, and is used extensively by libixp for converting messages to and from wire format. The location and size of a buffer are stored in *data* and *size*, respectively. *pos* points to the location in the message currently being packed or unpacked, while *end* points to the end of the message. The packing functions advance *pos* as they go, always ensuring that they don't read or write past *end*.  When a message is entirely packed or unpacked, *pos* whould be less than or equal to *end*. Any other state indicates error.

ixp\_message is a convenience function to pack a construct an IxpMsg from a buffer of a given *length* and a given *mode*. *pos* and *data* are set to *data* and *end* is set to *data* + *length*.

## SEE ALSO

[ixp\_pu8(3)](/ixp_pu8/3.md), [ixp\_pu16(3)](/ixp_pu16/3.md), [ixp\_pu32(3)](/ixp_pu32/3.md), [ixp\_pu64(3)](/ixp_pu64/3.md), [ixp\_pstring(3)](/ixp_pstring/3.md), [ixp\_pstrings(3)](/ixp_pstrings/3.md)
