Updated: 2022/Sep/29

Please read Privacy Policy. It's for your privacy.


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.

NetBSD 10.99                   November 15, 2018                  NetBSD 10.99