M_TAG(9) | Kernel Developer's Manual | M_TAG(9)

# NAME

`m_tag`, `m_tag_get`, `m_tag_free`, `m_tag_prepend`, `m_tag_unlink`, `m_tag_delete`, `m_tag_delete_chain`, `m_tag_find`, `m_tag_copy`, `m_tag_copy_chain` —
mbuf tagging interfaces

# SYNOPSIS

`#include <sys/mbuf.h>`

struct m_tag *
`m_tag_get`(int type, int len, int wait);

void
`m_tag_free`(struct m_tag *t);

void
`m_tag_prepend`(struct mbuf *m, struct m_tag *t);

void
`m_tag_unlink`(struct mbuf *m, struct m_tag *t);

void
`m_tag_delete`(struct mbuf *m, struct m_tag *t);

void
`m_tag_delete_chain`(struct mbuf *m);

struct m_tag *
`m_tag_find`(struct mbuf *m, int type);

struct m_tag *
`m_tag_copy`(struct m_tag *m);

int
`m_tag_copy_chain`(struct mbuf *to, struct mbuf *from);

# DESCRIPTION

The `m_tag` interface is used to “tag” mbufs.

# FUNCTIONS

`m_tag_get`(type, len, wait)
  Allocate an mbuf tag. type is one of the `PACKET_TAG_` macros. len is the size of the data associated with the tag, in bytes. wait is either `M_WAITOK` or `M_NOWAIT`.
`m_tag_free`(t)
  Free the mbuf tag t.
`m_tag_prepend`(m, t)
  Prepend the mbuf tag t to the mbuf m. t will become the first tag of the mbuf m. When m is freed, t will also be freed.
`m_tag_unlink`(m, t)
  Unlink the mbuf tag t from the mbuf m.
`m_tag_delete`(m, t)
  The same as `m_tag_unlink`() followed by `m_tag_free`().
`m_tag_delete_chain`(m)
  Unlink and free mbuf tags from the mbuf m.
`m_tag_find`(m, type)
  Find an mbuf tag with type type in the tag chain associated with the mbuf m. If an mbuf tag is found, return a pointer to it. Otherwise return `NULL`.
`m_tag_copy`(t)
  Copy an mbuf tag t. Return a new mbuf tag on success. Otherwise return `NULL`.
`m_tag_copy_chain`(to, from)
  Copy all mbuf tags associated with the mbuf from to the mbuf to. If to already has any mbuf tags, they will be unlinked and freed beforehand. Return 1 on success. Otherwise return 0.

# CODE REFERENCES

The mbuf tagging interfaces are implemented within the file sys/kern/uipc_mbuf.c.

The `PACKET_TAG_` macros are defined in the file sys/sys/mbuf.h.

# SEE ALSO

intro(9), malloc(9), mbuf(9)

# BUGS

The semantics of the term "persistent tag" are vague.

November 15, 2018 | NetBSD 9.3