Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 7 Oct 2002 17:06:25 -0700
From:      "Sam Leffler" <sam@errno.com>
To:        "Julian Elischer" <julian@elischer.org>
Cc:        <freebsd-arch@FreeBSD.ORG>, <freebsd-net@FreeBSD.ORG>
Subject:   Re: CFR: m_tag patch
Message-ID:  <18d301c26e5e$8b5c7a30$52557f42@errno.com>
References:  <Pine.BSF.4.21.0210071613260.34884-100000@InterJet.elischer.org>

next in thread | previous in thread | raw e-mail | index | archive | help
> On Mon, 7 Oct 2002, Sam Leffler wrote:
> >
> > If you allocate tag id's using your 32-bit time scheme then the fixed
values
> > above would never be hit since they are all for impossible times and so
> > there'd be no conflict.
>
> Just make them all IDs in a single "Legacy" API
>

Good idea; I see the way out.  Try this:

struct m_tag {
        SLIST_ENTRY(m_tag)      m_tag_link;     /* List of packet tags */
        u_int16_t               m_tag_id;       /* Tag ID */
        u_int16_t               m_tag_len;      /* Length of data */
        u_int32_t               m_tag_cookie;  /* Module/ABI */
};

Then define the "Legacy ABI" to be zero (or whatever you want).  Then all
the m_tag_* routines that I specified work only for the Legacy ABI.
(Whether this is done with shims or whatever doesn't matter.)  This gives me
the compatiblity I want with openbsd and gives you the functionality you
need for netgraph.  For new work we can specify users should avoid the
Legacy ABI.

Cost is basically 4 bytes per tag and an extra compare when walking the
tags.  Happy?

    Sam



To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-arch" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?18d301c26e5e$8b5c7a30$52557f42>