NetBSD Problem Report #47618

From www@NetBSD.org  Mon Mar  4 17:58:47 2013
Return-Path: <www@NetBSD.org>
Received: from mail.netbsd.org (mail.netbsd.org [149.20.53.66])
	by www.NetBSD.org (Postfix) with ESMTP id 6155163C07C
	for <gnats-bugs@gnats.NetBSD.org>; Mon,  4 Mar 2013 17:58:47 +0000 (UTC)
Message-Id: <20130304175846.6E3DE63C07C@www.NetBSD.org>
Date: Mon,  4 Mar 2013 17:58:46 +0000 (UTC)
From: gergely@egervary.hu
Reply-To: gergely@egervary.hu
To: gnats-bugs@NetBSD.org
Subject: mppe-lkm does not build on NetBSD 6.x
X-Send-Pr-Version: www-1.0

>Number:         47618
>Category:       pkg
>Synopsis:       mppe-lkm does not build on NetBSD 6.x
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    pkg-manager
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Mon Mar 04 18:00:00 +0000 2013
>Last-Modified:  Sun Jul 07 14:15:01 +0000 2013
>Originator:     Gergely Egervary
>Release:        NetBSD 6.0.1
>Organization:
>Environment:
NetBSD galileo-test.polinet 6.0.1_PATCH NetBSD 6.0.1_PATCH (GALILEO) #0: Mon Mar  4 12:18:05 CET 2013  root@galileo-test.polinet:/usr/src/sys/arch/amd64/compile/GALILEO amd64

>Description:
=> Bootstrap dependency digest>=20010302: found digest-20111104
===> Skipping vulnerability checks.
WARNING: No /var/db/pkg/pkg-vulnerabilities file found.
WARNING: To fix run: `/usr/pkg/sbin/pkg_admin -K /var/db/pkg fetch-pkg-vulnerabilities'.
===> Building for mppe-lkm-0.0.4nb2
make: "/usr/pkgsrc/net/mppe-lkm/work/mppe-lkm/Makefile" line 8: Could not find bsd.kmod.mk
make: Fatal errors encountered -- cannot continue
make: stopped in /usr/pkgsrc/net/mppe-lkm/work/mppe-lkm
*** Error code 1

>How-To-Repeat:
Try to build mppe-lkm from pkgsrc
>Fix:

>Audit-Trail:
From: Thomas Klausner <wiz@NetBSD.org>
To: NetBSD bugtracking <gnats-bugs@NetBSD.org>
Cc: 
Subject: Re: pkg/47618: mppe-lkm does not build on NetBSD 6.x
Date: Mon, 4 Mar 2013 23:02:14 +0100

 On Mon, Mar 04, 2013 at 06:00:01PM +0000, gergely@egervary.hu wrote:
 > >Number:         47618
 > >Category:       pkg
 > >Synopsis:       mppe-lkm does not build on NetBSD 6.x
 > >Confidential:   no
 > >Severity:       serious
 > >Priority:       medium
 > >Responsible:    pkg-manager
 > >State:          open
 > >Class:          sw-bug
 > >Submitter-Id:   net
 > >Arrival-Date:   Mon Mar 04 18:00:00 +0000 2013
 > >Originator:     Gergely Egervary
 > >Release:        NetBSD 6.0.1
 > >Organization:
 > >Environment:
 > NetBSD galileo-test.polinet 6.0.1_PATCH NetBSD 6.0.1_PATCH (GALILEO) #0: Mon Mar  4 12:18:05 CET 2013  root@galileo-test.polinet:/usr/src/sys/arch/amd64/compile/GALILEO amd64
 > 
 > >Description:
 > => Bootstrap dependency digest>=20010302: found digest-20111104
 > ===> Skipping vulnerability checks.
 > WARNING: No /var/db/pkg/pkg-vulnerabilities file found.
 > WARNING: To fix run: `/usr/pkg/sbin/pkg_admin -K /var/db/pkg fetch-pkg-vulnerabilities'.
 > ===> Building for mppe-lkm-0.0.4nb2
 > make: "/usr/pkgsrc/net/mppe-lkm/work/mppe-lkm/Makefile" line 8: Could not find bsd.kmod.mk
 > make: Fatal errors encountered -- cannot continue
 > make: stopped in /usr/pkgsrc/net/mppe-lkm/work/mppe-lkm
 > *** Error code 1

 What does "ls /usr/share/mk" report? I think the file should be there.
 It's in the base set, so I don't know how you could have missing
 extracting it.
  Thomas

From: Egervary Gergely <gergely@egervary.hu>
To: gnats-bugs@NetBSD.org
Cc: Thomas Klausner <wiz@NetBSD.org>, pkg-manager@netbsd.org, 
 gnats-admin@netbsd.org, pkgsrc-bugs@netbsd.org
Subject: Re: pkg/47618: mppe-lkm does not build on NetBSD 6.x
Date: Mon, 04 Mar 2013 23:41:56 +0100

 > No, it was removed from /usr/share/mk @ Wed Nov 12 12:35:54 2008 UTC
 > Now, pkgsrc bootstrap installs it to /usr/pkg/share/mk.

 Actually, lkm support was removed before 6.0 happened, so one should
 port this code to the new module(7) framework.

 -- 
 Egerváry Gergely


From: Egervary Gergely <gergely@egervary.hu>
To: gnats-bugs@NetBSD.org
Cc: Thomas Klausner <wiz@NetBSD.org>, pkg-manager@netbsd.org, 
 gnats-admin@netbsd.org, pkgsrc-bugs@netbsd.org
Subject: Re: pkg/47618: mppe-lkm does not build on NetBSD 6.x
Date: Mon, 04 Mar 2013 23:18:21 +0100

 >   > >Description:
 >   > => Bootstrap dependency digest>=20010302: found digest-20111104
 >   > ===> Skipping vulnerability checks.
 >   > WARNING: No /var/db/pkg/pkg-vulnerabilities file found.
 >   > WARNING: To fix run: `/usr/pkg/sbin/pkg_admin -K /var/db/pkg fetch-pkg-vulnerabilities'.
 >   > ===> Building for mppe-lkm-0.0.4nb2
 >   > make: "/usr/pkgsrc/net/mppe-lkm/work/mppe-lkm/Makefile" line 8: Could not find bsd.kmod.mk
 >   > make: Fatal errors encountered -- cannot continue
 >   > make: stopped in /usr/pkgsrc/net/mppe-lkm/work/mppe-lkm
 >   > *** Error code 1
 >
 >   What does "ls /usr/share/mk" report? I think the file should be there.
 >   It's in the base set, so I don't know how you could have missing
 >   extracting it.

 No, it was removed from /usr/share/mk @ Wed Nov 12 12:35:54 2008 UTC
 Now, pkgsrc bootstrap installs it to /usr/pkg/share/mk.

 -- 
 Egerváry Gergely


From: Aran Clauson <aran@100acres.us>
To: gnats-bugs@NetBSD.org
Cc: 
Subject: Re: pkg/47618
Date: Mon, 01 Jul 2013 09:15:06 -0700 (PDT)

 All,

 I am not proud of this patch, but it works for me on 6.99.22.  The kernel module
 does not get installed properly.  Instead of /stand/.../mppe/mppe.kmod it is
 installed in /usr/pkg/stand/.../mppe.kmod.  I had to copy it to the correct
 location and it worked.  Also, I included a full copy of the arc4 routines in
 the module.  I figured it was better than forcing everyone to include arc4 for
 just one module.  The patch follows:

 Aran


 ? work
 Index: Makefile
 ===================================================================
 RCS file: /cvsroot/pkgsrc/net/mppe-lkm/Makefile,v
 retrieving revision 1.7
 diff -u -r1.7 Makefile
 --- Makefile	1 Jun 2013 22:42:49 -0000	1.7
 +++ Makefile	1 Jul 2013 15:59:30 -0000
 @@ -1,8 +1,8 @@
 -# $NetBSD: Makefile,v 1.7 2013/06/01 22:42:49 dholland Exp $
 +#$NetBSD: Makefile,v 1.7 2013/06/01 22:42:49 dholland Exp $

  DISTNAME=	kernel_ppp_mppe-0.0.4-src
  PKGNAME=	mppe-lkm-0.0.4
 -PKGREVISION=	2
 +PKGREVISION=	3
  CATEGORIES=	net
  MASTER_SITES=	${MASTER_SITE_SOURCEFORGE:=poptop/}
  EXTRACT_SUFX=	.tgz
 @@ -14,12 +14,12 @@

  NO_CONFIGURE=	yes

 -ONLY_FOR_PLATFORM=	NetBSD-[12345]*-*
 -MAKE_ENV+=	KMODDIR=${PREFIX}/lkm
 +ONLY_FOR_PLATFORM=	NetBSD-[6]*-*
  WRKSRC=		${WRKDIR}/mppe-lkm
  KPM_SRC=	${WRKDIR}/${DISTNAME:C/-src$//}

 -INSTALLATION_DIRS=	lkm
 +INSTALLATION_DIRS=	stand
 +

  post-extract:
  	@${CP} -R ${FILESDIR} ${WRKSRC}
 @@ -27,4 +27,8 @@
  	@${CP} -p ${KPM_SRC}/ppp-comp-local.h ${KPM_SRC}/ppp_mppe_compress.c \
  		${WRKSRC}

 +post-install:
 +	@${CP} -R ${DESTDIR}/stand ${DESTDIR}/${PREFIX:Q}
 +
  .include "../../mk/bsd.pkg.mk"
 +
 Index: PLIST
 ===================================================================
 RCS file: /cvsroot/pkgsrc/net/mppe-lkm/PLIST,v
 retrieving revision 1.1.1.1
 diff -u -r1.1.1.1 PLIST
 --- PLIST	2 Jan 2005 02:52:56 -0000	1.1.1.1
 +++ PLIST	1 Jul 2013 15:59:30 -0000
 @@ -1,2 +1,2 @@
 -@comment $NetBSD: PLIST,v 1.1.1.1 2005/01/02 02:52:56 cube Exp $
 -lkm/mppe.o
 +@comment $NetBSD$
 +stand/amd64/6.99.22/modules/mppe/mppe.kmod
 Index: distinfo
 ===================================================================
 RCS file: /cvsroot/pkgsrc/net/mppe-lkm/distinfo,v
 retrieving revision 1.4
 diff -u -r1.4 distinfo
 --- distinfo	29 Apr 2005 11:41:29 -0000	1.4
 +++ distinfo	1 Jul 2013 15:59:30 -0000
 @@ -3,4 +3,6 @@
  SHA1 (kernel_ppp_mppe-0.0.4-src.tgz) = 37dc2487c760a78eb02585690bd6a1708d8dbaa2
  RMD160 (kernel_ppp_mppe-0.0.4-src.tgz) = 37ebac9263da2cc5e90844d7cc823d0fbcb3baf4
  Size (kernel_ppp_mppe-0.0.4-src.tgz) = 54194 bytes
 -SHA1 (patch-aa) = 9b1571fe86611f09b0eba290649fd6b91c6cb961
 +SHA1 (patch-Makefile) = c74335208b31809b8bf70f52dee0f1a1301c8d30
 +SHA1 (patch-aa) = fd578ca534afcf5f6415c9cd47397098cdb1f2d8
 +SHA1 (patch-lkm__mppe.c) = b4a911d347d529f5e27da83740fa620c3a71064e
 Index: patches/patch-Makefile
 ===================================================================
 RCS file: patches/patch-Makefile
 diff -N patches/patch-Makefile
 --- /dev/null	1 Jan 1970 00:00:00 -0000
 +++ patches/patch-Makefile	1 Jul 2013 15:59:30 -0000
 @@ -0,0 +1,10 @@
 +$NetBSD$
 +
 +--- Makefile.orig	2013-07-01 03:39:07.000000000 +0000
 ++++ Makefile
 +@@ -5,4 +5,4 @@ MKMAN=	no
 + # We set LDFLAGS because bsd.pkg.mk will put cc specific flags in it.
 + LDFLAGS=
 + 
 +-.include <bsd.kmod.mk>
 ++.include <bsd.kmodule.mk>
 Index: patches/patch-aa
 ===================================================================
 RCS file: /cvsroot/pkgsrc/net/mppe-lkm/patches/patch-aa,v
 retrieving revision 1.3
 diff -u -r1.3 patch-aa
 --- patches/patch-aa	29 Apr 2005 11:41:29 -0000	1.3
 +++ patches/patch-aa	1 Jul 2013 15:59:30 -0000
 @@ -1,6 +1,6 @@
  $NetBSD: patch-aa,v 1.3 2005/04/29 11:41:29 cube Exp $

 ---- ppp_mppe_compress.c.orig	2004-05-31 07:31:51.000000000 +0200
 +--- ppp_mppe_compress.c.orig	2004-05-31 05:31:51.000000000 +0000
  +++ ppp_mppe_compress.c
  @@ -5,6 +5,8 @@
    * By Frank Cusack <frank@google.com>.
 @@ -11,7 +11,7 @@
    *
    * Permission to use, copy, modify, and distribute this software and its
    * documentation is hereby granted, provided that the above copyright
 -@@ -18,19 +20,35 @@
 +@@ -18,19 +20,34 @@
    *                    deprecated in 2.6
    */

 @@ -35,7 +35,6 @@
  +#include <net/ppp-comp.h>
  +
  +#include <sys/sha1.h>
 -+#include <crypto/arc4/arc4.h>
  +
  +#if __NetBSD_Version__ < 299001600
  +/* MPPE definitions were included into the kernel source */
 @@ -58,7 +57,7 @@

   /*
    * State for an MPPE (de)compressor.
 -@@ -38,8 +56,8 @@
 +@@ -38,8 +55,8 @@
   typedef struct ppp_mppe_state {
       unsigned char	master_key[MPPE_MAX_KEY_LEN];
       unsigned char	session_key[MPPE_MAX_KEY_LEN];
 @@ -69,7 +68,7 @@
   					/* NB: 128-bit == 16, 40-bit == 8! */
   					/* If we want to support 56-bit,   */
   					/* the unit has to change to bits  */
 -@@ -84,12 +102,12 @@ static int	mppe_comp_init __P((void *sta
 +@@ -84,16 +101,81 @@ static int	mppe_comp_init __P((void *sta
   static int	mppe_decomp_init __P((void *state, unsigned char *options,
   				      int optlen, int unit,
   				      int hdrlen, int mru, int debug));
 @@ -87,7 +86,76 @@
   static void	mppe_comp_reset __P((void *state));
   static void	mppe_decomp_reset __P((void *state));
   static void	mppe_comp_stats __P((void *state, struct compstat *stats));
 -@@ -104,7 +122,7 @@ GetNewKeyFromSHA(unsigned char *MasterKe
 + 
 ++struct arc4_ctx {
 ++        unsigned int    x;
 ++        unsigned int    y;
 ++        unsigned int    state[256];
 ++        /* was unsigned char, changed to int for performance -- onoe */
 ++};
 ++
 ++static int
 ++arc4_ctxlen(void)
 ++{
 ++        return sizeof(struct arc4_ctx);
 ++}
 ++static void
 ++arc4_setkey(void *ctxp, const u_char *key, u_int keylen)
 ++{
 ++        struct arc4_ctx *ctx = ctxp;
 ++        unsigned int i, t, u, ki, si;
 ++        unsigned int *state;
 ++
 ++        state = ctx->state;
 ++        ctx->x = 0;
 ++        ctx->y = 0;
 ++        for (i = 0; i < 256; i++)
 ++               state[i] = i;
 ++        ki = si = 0;
 ++        for (i = 0; i < 256; i++) {
 ++                t = state[i];
 ++                si = (si + key[ki] + t) & 0xff;
 ++                u = state[si];
 ++                state[si] = t;
 ++                state[i] = u;
 ++                if (++ki >= keylen)
 ++                        ki = 0;
 ++        }
 ++}
 ++
 ++static void
 ++arc4_encrypt(void *ctxp, u_char *dst, const u_char *src, int len)
 ++{
 ++        struct arc4_ctx *ctx = ctxp;
 ++        unsigned int x, y, sx, sy;
 ++        unsigned int *state;
 ++        const unsigned char *endsrc;
 ++
 ++        state = ctx->state;
 ++        x = ctx->x;
 ++        y = ctx->y;
 ++        for (endsrc = src + len; src != endsrc; src++, dst++) {
 ++                x = (x + 1) & 0xff;
 ++                sx = state[x];
 ++                y = (sx + y) & 0xff;
 ++                state[x] = sy = state[y];
 ++                state[y] = sx;
 ++                *dst = *src ^ state[(sx + sy) & 0xff];
 ++        }
 ++        ctx->x = x;
 ++        ctx->y = y;
 ++}
 ++
 ++static void
 ++arc4_decrypt(void *ctxp, u_char *dst, const u_char *src, int len)
 ++{
 ++
 ++        arc4_encrypt(ctxp, dst, src, len);
 ++}
 + 
 + /*
 +  * Key Derivation, from RFC 3078, RFC 3079.
 +@@ -104,7 +186,7 @@ GetNewKeyFromSHA(unsigned char *MasterKe
   		 unsigned SessionKeyLength, unsigned char *InterimKey)
   {
       SHA1_CTX Context;
 @@ -96,7 +164,7 @@

       unsigned char SHApad1[40] =
       { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 -@@ -119,12 +137,12 @@ GetNewKeyFromSHA(unsigned char *MasterKe
 +@@ -119,12 +201,12 @@ GetNewKeyFromSHA(unsigned char *MasterKe

       /* assert(SessionKeyLength <= SHA1_SIGNATURE_SIZE); */

 @@ -115,7 +183,7 @@

       memcpy(InterimKey, Digest, SessionKeyLength);
   }
 -@@ -141,9 +159,9 @@ mppe_rekey(ppp_mppe_state *state, int in
 +@@ -141,9 +223,9 @@ mppe_rekey(ppp_mppe_state *state, int in
       GetNewKeyFromSHA(state->master_key, state->session_key,
   		     state->keylen, InterimKey);
       if (!initial_key) {
 @@ -128,7 +196,7 @@
       } else {
   	memcpy(state->session_key, InterimKey, state->keylen);
       }
 -@@ -153,7 +171,7 @@ mppe_rekey(ppp_mppe_state *state, int in
 +@@ -153,7 +235,7 @@ mppe_rekey(ppp_mppe_state *state, int in
   	state->session_key[1] = 0x26;
   	state->session_key[2] = 0x9e;
       }
 @@ -137,7 +205,7 @@
   }


 -@@ -170,15 +188,12 @@ mppe_alloc(unsigned char *options, int o
 +@@ -170,15 +252,12 @@ mppe_alloc(unsigned char *options, int o
   	|| options[1] != CILEN_MPPE)
   	return NULL;

 @@ -155,7 +223,7 @@
       memset(state, 0, sizeof(*state));

       /* Save keys. */
 -@@ -201,12 +216,10 @@ mppe_free(void *arg)
 +@@ -201,12 +280,10 @@ mppe_free(void *arg)
       ppp_mppe_state *state = (ppp_mppe_state *) arg;

       if (state) {
 @@ -171,7 +239,7 @@
       }
   }

 -@@ -232,12 +245,16 @@ mppe_init(void *arg, unsigned char *opti
 +@@ -232,12 +309,16 @@ mppe_init(void *arg, unsigned char *opti
       else if (mppe_opts & MPPE_OPT_40)
   	state->keylen = 8;
       else {
 @@ -189,7 +257,7 @@
       /* Generate the initial session key. */
       mppe_rekey(state, 1);

 -@@ -246,7 +263,7 @@ mppe_init(void *arg, unsigned char *opti
 +@@ -246,7 +327,7 @@ mppe_init(void *arg, unsigned char *opti
   	char mkey[sizeof(state->master_key) * 2 + 1];
   	char skey[sizeof(state->session_key) * 2 + 1];

 @@ -198,7 +266,7 @@
   	       unit, (state->keylen == 16)? 128: 40,
   	       (state->stateful)? "stateful": "stateless");

 -@@ -254,7 +271,7 @@ mppe_init(void *arg, unsigned char *opti
 +@@ -254,7 +335,7 @@ mppe_init(void *arg, unsigned char *opti
   	    sprintf(mkey + i * 2, "%.2x", state->master_key[i]);
   	for (i = 0; i < sizeof(state->session_key); i++)
   	    sprintf(skey + i * 2, "%.2x", state->session_key[i]);
 @@ -207,7 +275,7 @@
   	       debugstr, unit, mkey, skey);
       }

 -@@ -311,30 +328,75 @@ mppe_comp_reset(void *arg)
 +@@ -311,30 +392,75 @@ mppe_comp_reset(void *arg)
    * MPPE_OVHD + 2 bytes larger than the input.
    */
   int
 @@ -289,7 +357,7 @@
       /*
        * Copy over the PPP header and set control bits.
        */
 -@@ -346,7 +408,7 @@ mppe_compress(void *arg, unsigned char *
 +@@ -346,7 +472,7 @@ mppe_compress(void *arg, unsigned char *

       state->ccount = (state->ccount + 1) % MPPE_CCOUNT_SPACE;
       if (state->debug >= 7)
 @@ -298,7 +366,7 @@
   	       state->ccount);
       obuf[0] = state->ccount >> 8;
       obuf[1] = state->ccount & 0xff;
 -@@ -356,19 +418,62 @@ mppe_compress(void *arg, unsigned char *
 +@@ -356,19 +482,62 @@ mppe_compress(void *arg, unsigned char *
   	(state->bits & MPPE_BIT_FLUSHED)) {	/* CCP Reset-Request  */
   	/* We must rekey */
   	if (state->debug && state->stateful)
 @@ -365,7 +433,7 @@

       state->stats.unc_bytes += isize;
       state->stats.unc_packets++;
 -@@ -413,56 +518,50 @@ mppe_decomp_reset(void *arg)
 +@@ -413,56 +582,50 @@ mppe_decomp_reset(void *arg)
    * Decompress (decrypt) an MPPE packet.
    */
   int
 @@ -442,7 +510,7 @@
   	state->sanity_errors += 100;
   	sanity = 1;
       }
 -@@ -531,6 +630,46 @@ mppe_decompress(void *arg, unsigned char
 +@@ -531,6 +694,46 @@ mppe_decompress(void *arg, unsigned char
   	    mppe_rekey(state, 0);
       }

 @@ -489,7 +557,7 @@
       /*
        * Fill in the first part of the PPP header.  The protocol field
        * comes from the decrypted data.
 -@@ -538,15 +677,17 @@ mppe_decompress(void *arg, unsigned char
 +@@ -538,15 +741,17 @@ mppe_decompress(void *arg, unsigned char
       obuf[0] = PPP_ADDRESS(ibuf);	/* +1 */
       obuf[1] = PPP_CONTROL(ibuf);	/* +1 */
       obuf  += 2;
 @@ -508,7 +576,7 @@

       /*
        * Do PFC decompression.
 -@@ -557,13 +698,56 @@ mppe_decompress(void *arg, unsigned char
 +@@ -557,13 +762,56 @@ mppe_decompress(void *arg, unsigned char
   	obuf[1] = obuf[0];
   	obuf[0] = 0;
   	obuf++;
 @@ -569,7 +637,7 @@
       state->stats.unc_packets++;
       state->stats.comp_bytes += isize;
       state->stats.comp_packets++;
 -@@ -571,7 +755,7 @@ mppe_decompress(void *arg, unsigned char
 +@@ -571,7 +819,7 @@ mppe_decompress(void *arg, unsigned char
       /* good packet credit */
       state->sanity_errors >>= 1;

 @@ -578,7 +646,7 @@
   }

   /*
 -@@ -581,29 +765,23 @@ mppe_decompress(void *arg, unsigned char
 +@@ -581,29 +829,23 @@ mppe_decompress(void *arg, unsigned char
    * packet.  (How to do this?)
    */
   static void
 @@ -616,7 +684,7 @@
   /*
    * Procedures exported to if_ppp.c.
    */
 -@@ -623,34 +801,3 @@ struct compressor ppp_mppe = {
 +@@ -623,34 +865,3 @@ struct compressor ppp_mppe = {
       mppe_incomp,	/* incomp */
       mppe_comp_stats,	/* decomp_stat */
   };
 Index: patches/patch-lkm__mppe.c
 ===================================================================
 RCS file: patches/patch-lkm__mppe.c
 diff -N patches/patch-lkm__mppe.c
 --- /dev/null	1 Jan 1970 00:00:00 -0000
 +++ patches/patch-lkm__mppe.c	1 Jul 2013 15:59:30 -0000
 @@ -0,0 +1,105 @@
 +$NetBSD$
 +
 +--- lkm_mppe.c.orig	2013-07-01 03:39:07.000000000 +0000
 ++++ lkm_mppe.c
 +@@ -33,82 +33,33 @@
 + #include <sys/systm.h>
 + #include <sys/conf.h>
 + #include <sys/exec.h>
 +-#include <sys/lkm.h>
 ++#include <sys/module.h>
 ++#include <net/if.h>
 ++#include <net/ppp_defs.h>
 ++#include <net/if_ppp.h>
 + 
 + #include <sys/tty.h>
 + #include <sys/ttycom.h>
 + 
 +-MOD_MISC("mppe");
 +-
 + extern struct compressor ppp_mppe;
 + extern struct compressor *ppp_compressors[];
 + extern int mppe_in_use;
 + 
 +-int	mppe_lkmentry __P((struct lkm_table *, int, int));
 +-int	mppe_lkm_load __P((struct lkm_table *, int));
 +-
 +-int
 +-mppe_lkm_load(lkmtp, cmd)
 +-		struct lkm_table *lkmtp;
 +-		int cmd;
 +-{
 +-	int i;
 +-	for(i=0;i<7;i++) {
 +-		if (ppp_compressors[i] == NULL) {
 +-			ppp_compressors[i] = &ppp_mppe;
 +-			ppp_compressors[i+1] = NULL;
 +-			break;
 +-		}
 +-	}
 +-	if (i==7) {
 +-		printf("MPPE: no free compressor slots\n");
 +-		return ENODEV;
 +-	}
 +-
 +-	printf("MPPE: loaded into ppp at slot %d\n",i);
 +-
 +-	return 0;
 +-}
 +-
 +-int
 +-mppe_lkm_unload(lkmtp, cmd)
 +-		struct lkm_table *lkmtp;
 +-		int cmd;
 +-{
 +-	int i;
 +-	if (mppe_in_use) {
 +-		printf("MPPE: cannot unload lkm while in use (count=%d)\n",
 +-			mppe_in_use);
 +-		return EBUSY;
 +-	}
 +-	for(i=0;ppp_compressors[i];i++) {
 +-		if (ppp_compressors[i] == &ppp_mppe) break;
 +-	}
 +-	if (ppp_compressors[i] == NULL) {
 +-		printf("MPPE: cannot find mppe in ppp compressor slots\n");
 +-		return ENODEV;
 +-	}
 +-	printf("MPPE: unloaded from ppp at slot %d\n",i);
 +-	do {
 +-		ppp_compressors[i] = ppp_compressors[i+1];
 +-	} while(ppp_compressors[i++]);
 +-
 +-	return 0;
 +-}
 ++MODULE(MODULE_CLASS_MISC, mppe_lkm,NULL);
 + 
 +-int
 +-mppe_lkm_stat(lkmtp, cmd)
 +-		struct lkm_table *lkmtp;
 +-		int cmd;
 ++static int
 ++mppe_lkm_modcmd(modcmd_t cmd, void *arg)
 + {
 +-	printf("MPPE: use count %d\n",mppe_in_use);
 +-	return 0;
 ++	switch (cmd) {
 ++	case MODULE_CMD_INIT:
 ++		return ppp_register_compressor(&ppp_mppe, 1);
 ++	case MODULE_CMD_FINI:
 ++		return ppp_unregister_compressor(&ppp_mppe,1);
 ++        case MODULE_CMD_STAT:
 ++		return 0;
 ++	default:
 ++		return ENOTTY;
 ++        }
 ++	return ENOTTY;
 + }
 + 
 +-int
 +-mppe_lkmentry(lkmtp, cmd, ver)
 +-	struct lkm_table *lkmtp;
 +-	int cmd, ver;
 +-{
 +-	DISPATCH(lkmtp, cmd, ver, mppe_lkm_load,mppe_lkm_unload,mppe_lkm_stat);
 +-}

From: =?ISO-8859-1?Q?Egerv=E1ry_Gergely?= <gergely@egervary.hu>
To: gnats-bugs@NetBSD.org, pkg-manager@netbsd.org, 
 gnats-admin@netbsd.org, pkgsrc-bugs@netbsd.org
Cc: 
Subject: Re: pkg/47618
Date: Sun, 07 Jul 2013 16:13:51 +0200

 >  All,
 >  
 >  I am not proud of this patch, but it works for me on 6.99.22.  The kernel module
 >  does not get installed properly.  Instead of /stand/.../mppe/mppe.kmod it is
 >  installed in /usr/pkg/stand/.../mppe.kmod.  I had to copy it to the correct
 >  location and it worked.  Also, I included a full copy of the arc4 routines in
 >  the module.  I figured it was better than forcing everyone to include arc4 for
 >  just one module.  The patch follows:

 Thank you very much for your work.
 I can confirm this works good on my NetBSD-6.1 box.

 Package maintainers: please pull in this patch into pkgsrc. Thank you.

 -- 
 Gergely EGERVARY

NetBSD Home
NetBSD PR Database Search

(Contact us) $NetBSD: query-full-pr,v 1.39 2013/11/01 18:47:49 spz Exp $
$NetBSD: gnats_config.sh,v 1.8 2006/05/07 09:23:38 tsutsui Exp $
Copyright © 1994-2007 The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.