svn commit: r354016 - head/sys/netinet6
Bjoern A. Zeeb
bz at FreeBSD.org
Thu Oct 24 07:53:11 UTC 2019
Author: bz
Date: Thu Oct 24 07:53:10 2019
New Revision: 354016
URL: https://svnweb.freebsd.org/changeset/base/354016
Log:
frag6: remove IP6_REASS_MBUF macro
The IP6_REASS_MBUF() macro did some pointer gynmastics to end up with the
same type as it gets in [*(cast **)&]. Spelling it out instead saves all
this and makes the code more readable and less obfuscated directly using
the structure field.
MFC after: 3 weeks
Sponsored by: Netflix
Modified:
head/sys/netinet6/frag6.c
Modified: head/sys/netinet6/frag6.c
==============================================================================
--- head/sys/netinet6/frag6.c Thu Oct 24 07:49:33 2019 (r354015)
+++ head/sys/netinet6/frag6.c Thu Oct 24 07:53:10 2019 (r354016)
@@ -106,8 +106,6 @@ struct ip6asfrag {
bool ip6af_mff; /* More fragment bit in frag off. */
};
-#define IP6_REASS_MBUF(ip6af) (*(struct mbuf **)&((ip6af)->ip6af_m))
-
static MALLOC_DEFINE(M_FRAG6, "frag6", "IPv6 fragment reassembly header");
#ifdef VIMAGE
@@ -257,7 +255,7 @@ frag6_freef(struct ip6q *q6, uint32_t bucket)
while ((af6 = TAILQ_FIRST(&q6->ip6q_frags)) != NULL) {
- m = IP6_REASS_MBUF(af6);
+ m = af6->ip6af_m;
TAILQ_REMOVE(&q6->ip6q_frags, af6, ip6af_tq);
/*
@@ -301,7 +299,6 @@ frag6_cleanup(void *arg __unused, struct ifnet *ifp)
struct ip6qhead *head;
struct ip6q *q6;
struct ip6asfrag *af6;
- struct mbuf *m;
uint32_t bucket;
KASSERT(ifp != NULL, ("%s: ifp is NULL", __func__));
@@ -323,11 +320,9 @@ frag6_cleanup(void *arg __unused, struct ifnet *ifp)
TAILQ_FOREACH(q6, head, ip6q_tq) {
TAILQ_FOREACH(af6, &q6->ip6q_frags, ip6af_tq) {
- m = IP6_REASS_MBUF(af6);
-
/* Clear no longer valid rcvif pointer. */
- if (m->m_pkthdr.rcvif == ifp)
- m->m_pkthdr.rcvif = NULL;
+ if (af6->ip6af_m->m_pkthdr.rcvif == ifp)
+ af6->ip6af_m->m_pkthdr.rcvif = NULL;
}
}
IP6QB_UNLOCK(bucket);
@@ -593,7 +588,7 @@ frag6_input(struct mbuf **mp, int *offp, int proto)
struct mbuf *merr;
int erroff;
- merr = IP6_REASS_MBUF(af6);
+ merr = af6->ip6af_m;
erroff = af6->ip6af_offset;
/* Dequeue the fragment. */
@@ -630,7 +625,7 @@ frag6_input(struct mbuf **mp, int *offp, int proto)
ip6af->ip6af_off = fragoff;
ip6af->ip6af_frglen = frgpartlen;
ip6af->ip6af_offset = offset;
- IP6_REASS_MBUF(ip6af) = m;
+ ip6af->ip6af_m = m;
if (only_frag) {
/*
@@ -735,20 +730,20 @@ postinsert:
/* Reassembly is complete; concatenate fragments. */
ip6af = TAILQ_FIRST(&q6->ip6q_frags);
- t = m = IP6_REASS_MBUF(ip6af);
+ t = m = ip6af->ip6af_m;
TAILQ_REMOVE(&q6->ip6q_frags, ip6af, ip6af_tq);
while ((af6 = TAILQ_FIRST(&q6->ip6q_frags)) != NULL) {
m->m_pkthdr.csum_flags &=
- IP6_REASS_MBUF(af6)->m_pkthdr.csum_flags;
+ af6->ip6af_m->m_pkthdr.csum_flags;
m->m_pkthdr.csum_data +=
- IP6_REASS_MBUF(af6)->m_pkthdr.csum_data;
+ af6->ip6af_m->m_pkthdr.csum_data;
TAILQ_REMOVE(&q6->ip6q_frags, af6, ip6af_tq);
while (t->m_next)
t = t->m_next;
- m_adj(IP6_REASS_MBUF(af6), af6->ip6af_offset);
- m_demote_pkthdr(IP6_REASS_MBUF(af6));
- m_cat(t, IP6_REASS_MBUF(af6));
+ m_adj(af6->ip6af_m, af6->ip6af_offset);
+ m_demote_pkthdr(af6->ip6af_m);
+ m_cat(t, af6->ip6af_m);
free(af6, M_FRAG6);
}
More information about the svn-src-all
mailing list