Date: Mon, 16 Feb 2015 01:25:05 +0000 From: "Bjoern A. Zeeb" <bz@FreeBSD.org> To: Gleb Smirnoff <glebius@freebsd.org> Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r278828 - head/sys/netinet6 Message-ID: <C993C12A-0F69-4BBF-86E8-D361B3F3A764@FreeBSD.org> In-Reply-To: <201502160112.t1G1CKd0074570@svn.freebsd.org> References: <201502160112.t1G1CKd0074570@svn.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
> On 16 Feb 2015, at 01:12 , Gleb Smirnoff <glebius@freebsd.org> wrote: >=20 > Author: glebius > Date: Mon Feb 16 01:12:20 2015 > New Revision: 278828 > URL: https://svnweb.freebsd.org/changeset/base/278828 >=20 > Log: > Factor out ip6_deletefraghdr() function, to be shared between IPv6 > stack and pf(4). >=20 > Submitted by: Kristof Provost > Reviewed by: ae > Differential Revision: D1764 >=20 > Modified: > head/sys/netinet6/frag6.c > head/sys/netinet6/ip6_output.c Why did it have to move file? > head/sys/netinet6/ip6_var.h >=20 > Modified: head/sys/netinet6/frag6.c > = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D > --- head/sys/netinet6/frag6.c Sun Feb 15 23:58:57 2015 = (r278827) > +++ head/sys/netinet6/frag6.c Mon Feb 16 01:12:20 2015 = (r278828) > @@ -541,27 +541,16 @@ insert: > *q6->ip6q_nxtp =3D (u_char)(nxt & 0xff); > #endif >=20 > - /* Delete frag6 header */ > - if (m->m_len >=3D offset + sizeof(struct ip6_frag)) { > - /* This is the only possible case with !PULLDOWN_TEST */ > - ovbcopy((caddr_t)ip6, (caddr_t)ip6 + sizeof(struct = ip6_frag), > - offset); > - m->m_data +=3D sizeof(struct ip6_frag); > - m->m_len -=3D sizeof(struct ip6_frag); > - } else { > - /* this comes with no copy if the boundary is on cluster = */ > - if ((t =3D m_split(m, offset, M_NOWAIT)) =3D=3D NULL) { > - frag6_remque(q6); > - V_frag6_nfrags -=3D q6->ip6q_nfrag; > + if (ip6_deletefraghdr(m, offset, M_NOWAIT) !=3D 0) { > + frag6_remque(q6); > + V_frag6_nfrags -=3D q6->ip6q_nfrag; > #ifdef MAC > - mac_ip6q_destroy(q6); > + mac_ip6q_destroy(q6); > #endif > - free(q6, M_FTABLE); > - V_frag6_nfragpackets--; > - goto dropfrag; > - } > - m_adj(t, sizeof(struct ip6_frag)); > - m_cat(m, t); > + free(q6, M_FTABLE); > + V_frag6_nfragpackets--; > + > + goto dropfrag; > } >=20 > /* >=20 > Modified: head/sys/netinet6/ip6_output.c > = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D > --- head/sys/netinet6/ip6_output.c Sun Feb 15 23:58:57 2015 = (r278827) > +++ head/sys/netinet6/ip6_output.c Mon Feb 16 01:12:20 2015 = (r278828) > @@ -1206,6 +1206,30 @@ ip6_insertfraghdr(struct mbuf *m0, struc > return (0); > } >=20 > +int > +ip6_deletefraghdr(struct mbuf *m, int offset, int wait) > +{ > + struct ip6_hdr *ip6 =3D mtod(m, struct ip6_hdr *); > + struct mbuf *t; > + > + /* Delete frag6 header. */ > + if (m->m_len >=3D offset + sizeof(struct ip6_frag)) { > + /* This is the only possible case with !PULLDOWN_TEST. = */ > + bcopy(ip6, (char *)ip6 + sizeof(struct ip6_frag), > + offset); > + m->m_data +=3D sizeof(struct ip6_frag); > + m->m_len -=3D sizeof(struct ip6_frag); > + } else { > + /* This comes with no copy if the boundary is on = cluster. */ > + if ((t =3D m_split(m, offset, wait)) =3D=3D NULL) > + return (ENOMEM); > + m_adj(t, sizeof(struct ip6_frag)); > + m_cat(m, t); > + } > + > + return (0); > +} > + > static int > ip6_getpmtu(struct route_in6 *ro_pmtu, struct route_in6 *ro, > struct ifnet *ifp, struct in6_addr *dst, u_long *mtup, >=20 > Modified: head/sys/netinet6/ip6_var.h > = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D > --- head/sys/netinet6/ip6_var.h Sun Feb 15 23:58:57 2015 = (r278827) > +++ head/sys/netinet6/ip6_var.h Mon Feb 16 01:12:20 2015 = (r278828) > @@ -388,6 +388,7 @@ int ip6_setpktopts(struct mbuf *, struct > void ip6_clearpktopts(struct ip6_pktopts *, int); > struct ip6_pktopts *ip6_copypktopts(struct ip6_pktopts *, int); > int ip6_optlen(struct inpcb *); > +int ip6_deletefraghdr(struct mbuf *, int, int); >=20 > int route6_input(struct mbuf **, int *, int); >=20 >=20 =E2=80=94=20 Bjoern A. Zeeb Charles Haddon Spurgeon: "Friendship is one of the sweetest joys of life. Many might have failed beneath the bitterness of their trial had they not found a friend."
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?C993C12A-0F69-4BBF-86E8-D361B3F3A764>