NAME
m_tag, m_tag_get,
m_tag_free, m_tag_prepend,
m_tag_unlink, m_tag_delete,
m_tag_delete_chain,
m_tag_delete_nonpersistent,
m_tag_find, m_tag_copy,
m_tag_copy_chain,
m_tag_init, m_tag_first,
m_tag_next —
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
*t);
void
m_tag_delete_nonpersistent(struct
mbuf *);
struct m_tag *
m_tag_find(struct
mbuf *m, int type,
struct m_tag *t);
struct m_tag *
m_tag_copy(struct
m_tag *m);
int
m_tag_copy_chain(struct
mbuf *to, struct mbuf
*from);
void
m_tag_init(struct
mbuf *m);
struct m_tag *
m_tag_first(struct
mbuf *m);
struct m_tag *
m_tag_next(struct
mbuf *m, struct m_tag
*t);
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 eitherM_WAITOKorM_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 bym_tag_free(). m_tag_delete_chain(m, t)- Unlink and free mbuf tags beginning with the mbuf tag
t from the mbuf m. If
t is
NULL,m_tag_delete_chain() unlinks and frees all mbuf tags associated with the mbuf m. m_tag_delete_nonpersistent(m)- Unlink and free all non persistent tags associated with the mbuf m.
m_tag_find(m, type, t)- Find an mbuf tag with type type after the mbuf tag
t in the tag chain associated with the mbuf
m. If t is
NULL, search from the first mbuf tag. If an mbuf tag is found, return a pointer to it. Otherwise returnNULL. 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.
m_tag_init(m)- Initialize mbuf tag chain of the mbuf m.
m_tag_first(m)- Return the first mbuf tag associated with the mbuf
m. Return
NULLif no mbuf tags are found. m_tag_next(m, t)- Return the next mbuf tag after t associated with the
mbuf m. Return
NULLif t is the last tag in the chain.
CODE REFERENCES
The mbuf tagging interfaces are implemented within the file sys/kern/uipc_mbuf2.c.
The PACKET_TAG_ macros are defined in the
file sys/sys/mbuf.h.
SEE ALSO
BUGS
The semantics of the term "persistent tag" are vague.