Logo Search packages:      
Sourcecode: libnl version File versions  Download package

void* nlmsg_reserve ( struct nl_msg n,
size_t  len,
int  pad 
)

Reserve room for additional data in a netlink message

  • n netlink message
  • len length of additional data to reserve room for
  • pad number of bytes to align data to

Reserves room for additional data at the tail of the an existing netlink message. Eventual padding required will be zeroed out.

Returns:
Pointer to start of additional data tailroom or NULL.

Definition at line 512 of file msg.c.

References nlmsg_len().

Referenced by nlmsg_append(), and nlmsg_put().

{
      void *buf = n->nm_nlh;
      size_t nlmsg_len = n->nm_nlh->nlmsg_len;
      size_t tlen;

      tlen = pad ? ((len + (pad - 1)) & ~(pad - 1)) : len;

      if ((tlen + nlmsg_len) > n->nm_size) {
            nl_errno(ENOBUFS);
            return NULL;
      }

      buf += nlmsg_len;
      n->nm_nlh->nlmsg_len += tlen;

      if (tlen > len)
            memset(buf + len, 0, tlen - len);

      NL_DBG(2, "msg %p: Reserved %zu bytes, pad=%d, nlmsg_len=%d\n",
              n, len, pad, n->nm_nlh->nlmsg_len);

      return buf;
}

Here is the call graph for this function:

Here is the caller graph for this function:


Generated by  Doxygen 1.6.0   Back to index