Date: Mon, 16 Oct 2006 20:13:51 GMT From: Paolo Pisati <piso@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 107997 for review Message-ID: <200610162013.k9GKDpAs066306@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=107997 Change 107997 by piso@piso_newluxor on 2006/10/16 20:13:08 Move the helper function m_megapullup from ng_nat.c & ipfw2.c to alias.c and alias.h. Affected files ... .. //depot/projects/soc2005/libalias/sys/netgraph/ng_nat.c#3 edit .. //depot/projects/soc2005/libalias/sys/netinet/ip_fw2.c#19 edit .. //depot/projects/soc2005/libalias/sys/netinet/libalias/alias.c#16 edit .. //depot/projects/soc2005/libalias/sys/netinet/libalias/alias.h#6 edit Differences ... ==== //depot/projects/soc2005/libalias/sys/netgraph/ng_nat.c#3 (text+ko) ==== @@ -56,8 +56,6 @@ static ng_rcvdata_t ng_nat_rcvdata; static ng_disconnect_t ng_nat_disconnect; -static struct mbuf * m_megapullup(struct mbuf *, int); - /* List of commands and how to convert arguments to/from ASCII. */ static const struct ng_cmdlist ng_nat_cmdlist[] = { { @@ -327,36 +325,3 @@ return (0); } -/* - * m_megapullup() function is a big hack. - * - * It allocates an mbuf with cluster and copies the whole - * chain into cluster, so that it is all contigous and the - * whole packet can be accessed via char pointer. - * - * This is required, because libalias doesn't have idea - * about mbufs. - */ -static struct mbuf * -m_megapullup(struct mbuf *m, int len) -{ - struct mbuf *mcl; - caddr_t cp; - - if (len > MCLBYTES) - goto bad; - - if ((mcl = m_getcl(M_DONTWAIT, MT_DATA, M_PKTHDR)) == NULL) - goto bad; - - cp = mtod(mcl, caddr_t); - m_copydata(m, 0, len, cp); - m_move_pkthdr(mcl, m); - mcl->m_len = mcl->m_pkthdr.len; - m_freem(m); - - return (mcl); -bad: - m_freem(m); - return (NULL); -} ==== //depot/projects/soc2005/libalias/sys/netinet/ip_fw2.c#19 (text+ko) ==== @@ -2046,42 +2046,6 @@ return match; } -/* - * m_megapullup() function (from ng_nat.c) is a big hack. - * - * It allocates an mbuf with cluster and copies the whole - * chain into cluster, so that it is all contigous and the - * whole packet can be accessed via char pointer. - * This is required, because libalias doesn't have idea - * about mbufs. - * - * On success, m_megapullup returns an mbuf with cluster - * containing the input packet, on failure NULL. - * In both cases, the input packet is consumed. - */ -static struct mbuf * -m_megapullup(struct mbuf *m, int len) { - struct mbuf *mcl; - caddr_t cp; - - if (len > MCLBYTES) - goto bad; - - if ((mcl = m_getcl(M_DONTWAIT, MT_DATA, M_PKTHDR)) == NULL) - goto bad; - - cp = mtod(mcl, caddr_t); - m_copydata(m, 0, len, cp); - m_move_pkthdr(mcl, m); - mcl->m_len = mcl->m_pkthdr.len; - m_freem(m); - - return (mcl); -bad: - m_freem(m); - return (NULL); -} - static void flush_nat_ptrs(const int i) { struct ip_fw *rule; ==== //depot/projects/soc2005/libalias/sys/netinet/libalias/alias.c#16 (text+ko) ==== @@ -113,6 +113,8 @@ #ifdef _KERNEL #include <sys/param.h> +#include <sys/systm.h> +#include <sys/mbuf.h> #else #include <sys/types.h> #include <stdlib.h> @@ -1574,3 +1576,41 @@ } #endif + +#ifdef _KERNEL +/* + * m_megapullup() function is a big hack (only used in ng_nat and ipfw+nat). + * + * It allocates an mbuf with cluster and copies the whole + * chain into cluster, so that it is all contigous and the + * whole packet can be accessed via char pointer. + * This is required, because libalias doesn't have idea + * about mbufs. + * + * On success, m_megapullup returns an mbuf with cluster + * containing the input packet, on failure NULL. + * In both cases, the input packet is consumed. + */ +struct mbuf * +m_megapullup(struct mbuf *m, int len) { + struct mbuf *mcl; + caddr_t cp; + + if (len > MCLBYTES) + goto bad; + + if ((mcl = m_getcl(M_DONTWAIT, MT_DATA, M_PKTHDR)) == NULL) + goto bad; + + cp = mtod(mcl, caddr_t); + m_copydata(m, 0, len, cp); + m_move_pkthdr(mcl, m); + mcl->m_len = mcl->m_pkthdr.len; + m_freem(m); + + return (mcl); +bad: + m_freem(m); + return (NULL); +} +#endif ==== //depot/projects/soc2005/libalias/sys/netinet/libalias/alias.h#6 (text+ko) ==== @@ -189,6 +189,9 @@ int LibAliasUnLoadAllModule(void); int LibAliasRefreshModules(void); +/* Mbuf helper function. */ +struct mbuf *m_megapullup(struct mbuf *, int); + /* * Mode flags and other constants. */
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200610162013.k9GKDpAs066306>