ports/68113: [REVIVE PORT] net/rp-pppoe: "The popular Roaring Penguin's PPPoE software"

Matthias Andree matthias.andree at gmx.de
Sat Jun 19 14:40:31 UTC 2004


>Number:         68113
>Category:       ports
>Synopsis:       [REVIVE PORT] net/rp-pppoe: "The popular Roaring Penguin's PPPoE software"
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Sat Jun 19 14:40:23 GMT 2004
>Closed-Date:
>Last-Modified:
>Originator:     Matthias Andree
>Release:        FreeBSD 5.2-CURRENT i386
>Organization:
>Environment:
System: FreeBSD merlin.emma.line.org 5.2-CURRENT FreeBSD 5.2-CURRENT #5: Mon May 31 02:31:02 CEST 2004
>Description:
This port used to exist but was moved into the attic. Now that I can
access my ISP with RP-PPPoE but not FreeBSD's native PPPoE, it is time to
revive this port.

Original description:
---------------------

PPPoE (Point-to-Point Protocol over Ethernet) is a protocol used
by many ADSL service providers. Roaring Penguin's PPPoE software
is a reliable program for connecting unix systems to PPPoE service
providers without requiring any kernel patches.

Note that this port has had little testing (it works on 5-CURRENT
to access T-Online in Germany from the client side) and the server side
is entirely untested.

WWW: http://www.roaringpenguin.com/pppoe/

Generated with FreeBSD Port Tools 0.50
>How-To-Repeat:
>Fix:

--- rp-pppoe-3.5.shar begins here ---
# This is a shell archive.  Save it in a file, remove anything before
# this line, and then unpack it by entering "sh file".  Note, it may
# create directories; files and directories will be owned by you and
# have default permissions.
#
# This archive contains:
#
#	rp-pppoe
#	rp-pppoe/files
#	rp-pppoe/files/xpatch-src::pppoe.c
#	rp-pppoe/files/xpatch-src::pppoe.h
#	rp-pppoe/files/xpatch-src::pppoe-server.c
#	rp-pppoe/files/xpatch-src::pppoe-sniff.c
#	rp-pppoe/Makefile
#	rp-pppoe/distinfo
#	rp-pppoe/pkg-descr
#	rp-pppoe/pkg-plist
#
echo c - rp-pppoe
mkdir -p rp-pppoe > /dev/null 2>&1
echo c - rp-pppoe/files
mkdir -p rp-pppoe/files > /dev/null 2>&1
echo x - rp-pppoe/files/xpatch-src::pppoe.c
sed 's/^X//' >rp-pppoe/files/xpatch-src::pppoe.c << 'END-of-rp-pppoe/files/xpatch-src::pppoe.c'
X--- src/pppoe.c.orig	Thu Mar 22 02:50:33 2001
X+++ src/pppoe.c	Thu Mar 22 14:42:44 2001
X@@ -109,7 +109,7 @@
X * packet before passing it here.
X ***********************************************************************/
X void
X-sessionDiscoveryPacket(PPPoEPacket *packet)
X+sessionDiscoveryPacket(PPPoEConnection *conn, PPPoEPacket *packet)
X {
X     /* Sanity check */
X     if (packet->code != CODE_PADT) {
X@@ -117,7 +117,7 @@
X     }
X 
X     /* It's a PADT, all right.  Is it for us? */
X-    if (packet->session != Session) {
X+    if (packet->session != conn->session) {
X 	/* Nope, ignore it */
X 	return;
X     }
X@@ -222,9 +222,9 @@
X     /* check for buffered session data */
X     while (BPF_BUFFER_HAS_DATA) {
X 	if (conn->synchronous) {
X-	    syncReadFromEth(conn->sessionSocket, optClampMSS);
X+	    syncReadFromEth(conn, conn->sessionSocket, optClampMSS);
X 	} else {
X-	    asyncReadFromEth(conn->sessionSocket, optClampMSS);
X+	    asyncReadFromEth(conn, conn->sessionSocket, optClampMSS);
X 	}
X     }
X #endif
X@@ -642,7 +642,7 @@
X     /* Make sure this is a session packet before processing further */
X     type = etherType(&packet);
X     if (type == Eth_PPPOE_Discovery) {
X-	sessionDiscoveryPacket(&packet);
X+	sessionDiscoveryPacket(conn,&packet);
X     } else if (type != Eth_PPPOE_Session) {
X 	return;
X     }
X@@ -767,7 +767,7 @@
X     /* Make sure this is a session packet before processing further */
X     type = etherType(&packet);
X     if (type == Eth_PPPOE_Discovery) {
X-	sessionDiscoveryPacket(&packet);
X+	sessionDiscoveryPacket(conn,&packet);
X     } else if (type != Eth_PPPOE_Session) {
X 	return;
X     }
END-of-rp-pppoe/files/xpatch-src::pppoe.c
echo x - rp-pppoe/files/xpatch-src::pppoe.h
sed 's/^X//' >rp-pppoe/files/xpatch-src::pppoe.h << 'END-of-rp-pppoe/files/xpatch-src::pppoe.h'
X--- src/pppoe.h.orig	Thu Mar 22 14:43:00 2001
X+++ src/pppoe.h	Thu Mar 22 14:47:21 2001
X@@ -72,7 +72,8 @@
X #ifdef USE_BPF
X extern int bpfSize;
X struct PPPoEPacketStruct;
X-void sessionDiscoveryPacket(struct PPPoEPacketStruct *packet);
X+struct PPPoEConnectionStruct;
X+void sessionDiscoveryPacket(struct PPPoEConnectionStruct *conn, struct PPPoEPacketStruct *packet);
X #define BPF_BUFFER_IS_EMPTY (bpfSize <= 0)
X #define BPF_BUFFER_HAS_DATA (bpfSize > 0)
X #define ethhdr ether_header
END-of-rp-pppoe/files/xpatch-src::pppoe.h
echo x - rp-pppoe/files/xpatch-src::pppoe-server.c
sed 's/^X//' >rp-pppoe/files/xpatch-src::pppoe-server.c << 'END-of-rp-pppoe/files/xpatch-src::pppoe-server.c'
X--- src/pppoe-server.c.orig	Mon Feb  5 14:34:27 2001
X+++ src/pppoe-server.c	Thu Mar 22 17:56:25 2001
X@@ -47,6 +47,10 @@
X #include <sys/wait.h>
X #endif
X 
X+#ifdef HAVE_SYS_PARAM_H
X+#include <sys/param.h>
X+#endif
X+
X #include <signal.h>
X 
X /* Hack for daemonizing */
X@@ -1032,7 +1036,11 @@
X     char buffer[SMALLBUF];
X 
X     argv[0] = "pppd";
X+#if (defined(BSD) && (BSD >= 199103))
X+    argv[1] = "tty";
X+#else /* Not BSD, e.g., Linux || Solaris */
X     argv[1] = "pty";
X+#endif
X 
X     snprintf(buffer, SMALLBUF, "%s -I %s -e %d:%02x:%02x:%02x:%02x:%02x:%02x%s",
X 	     PPPOE_PATH, IfName,
END-of-rp-pppoe/files/xpatch-src::pppoe-server.c
echo x - rp-pppoe/files/xpatch-src::pppoe-sniff.c
sed 's/^X//' >rp-pppoe/files/xpatch-src::pppoe-sniff.c << 'END-of-rp-pppoe/files/xpatch-src::pppoe-sniff.c'
X--- src/pppoe-sniff.c.orig	Thu Mar 22 14:35:59 2001
X+++ src/pppoe-sniff.c	Thu Mar 22 14:49:39 2001
X@@ -33,6 +33,9 @@
X void dlokack(int fd, char *bufp);
X #endif
X 
X+/* function prototype */
X+void sysErr(char const *);
X+
X /* Default interface if no -I option given */
X #define DEFAULT_IF "eth0"
X 
X@@ -43,6 +46,23 @@
X 
X char *IfName = NULL;		/* Interface name */
X char *ServiceName = NULL;	/* Service name   */
X+
X+/**********************************************************************
X+*%FUNCTION: sysErr
X+*%ARGUMENTS:
X+* str -- error message
X+*%RETURNS:
X+* Nothing
X+*%DESCRIPTION:
X+* Prints a message plus the errno value to syslog.
X+***********************************************************************/
X+void
X+sysErr(char const *str)
X+{
X+    char buf[1024];
X+    sprintf(buf, "%.256s: %.256s", str, strerror(errno));
X+    printErr(buf);
X+}
X 
X /**********************************************************************
X *%FUNCTION: parsePADRTags
END-of-rp-pppoe/files/xpatch-src::pppoe-sniff.c
echo x - rp-pppoe/Makefile
sed 's/^X//' >rp-pppoe/Makefile << 'END-of-rp-pppoe/Makefile'
X# New ports collection makefile for:	popular pppd pppoe client
X# Date created:		22 Mar 2001
X# Whom:			Mario Sergio Fujikawa Ferreira <liouxFreeBSD.org>
X#
X# $FreeBSD: ports/net/rp-pppoe/Makefile,v 1.3 2002/09/01 16:07:51 dwcjr Exp $
X#
X
XPORTNAME=	rp-pppoe
XPORTVERSION=	3.5
XCATEGORIES=	net
XMASTER_SITES=	http://www.roaringpenguin.com/products/rp-pppoe/
X
XMAINTAINER=	matthias.andree at gmx.de
XCOMMENT=	"The popular Roaring Penguin's PPPoE software"
X
X#BROKEN=	Does not work well with FreeBSD\'s pppd, yet.\
X#	Need help to be fixed
X
XUSE_REINPLACE=	yes
XGNU_CONFIGURE=	yes
XUSE_GMAKE=	yes
XCONFIGURE_WRKSRC=	${WRKSRC}/src
XBUILD_WRKSRC=	${WRKSRC}/src
X
XMAN5=	pppoe.conf.5
XMAN8=	adsl-connect.8 adsl-setup.8 adsl-start.8 adsl-status.8 \
X	adsl-stop.8 pppoe-relay.8 pppoe-server.8 pppoe.8
X
XCONFIG_FILES=	firewall-masq firewall-standalone pap-secrets \
X		pppoe-server-options pppoe.conf
XDOC_FILES=	CHANGES HOW-TO-CONNECT KERNEL-MODE-PPPOE LICENSE \
X		PROBLEMS
XSCRIPT_FILES=	adsl-connect adsl-init adsl-setup adsl-start \
X		adsl-status adsl-stop
X
Xpost-patch:
X	@${REINPLACE_CMD} -e "s!/etc/ppp!${PREFIX}/etc/ppp!g" ${WRKSRC}/man/*
X	@${REINPLACE_CMD} -e 's!/etc/ppp!$$(prefix)/etc/ppp!g' \
X		${WRKSRC}/src/Makefile.in
X.for file in adsl-connect adsl-init adsl-setup adsl-start
X	@${REINPLACE_CMD} -e 's!/etc/+ppp!$${prefix}/etc/ppp!g' \
X		${WRKSRC}/scripts/${file}.in
X.endfor
X	@${REINPLACE_CMD} -e 's!pty!tty!g' ${WRKSRC}/scripts/adsl-connect.in
X	@${REINPLACE_CMD} -e 's!/var/lock/subsys/adsl!/var/tmp/rp_pppoe_adsl!g' \
X		${WRKSRC}/scripts/adsl-init.in
X.for f in adsl-status adsl-stop.in
X	@${REINPLACE_CMD} -e "s!/etc/ppp!${PREFIX}/etc/ppp!g" \
X		${WRKSRC}/scripts/${f}
X.endfor
X
Xdo-install:
X# Binaries
X.for f in pppoe pppoe-server
X	@${INSTALL_PROGRAM} ${BUILD_WRKSRC}/${f} ${PREFIX}/sbin
X.endfor
X# Configurations
X	@${MKDIR} ${PREFIX}/etc/ppp
X.for f in ${CONFIG_FILES}
X	@${INSTALL_DATA} ${WRKSRC}/configs/${f} \
X		${PREFIX}/etc/ppp/${f}.sample
X.endfor
X.if !exists(${PREFIX}/etc/ppp/pppoe.conf)
X	${INSTALL_SCRIPT} ${PREFIX}/etc/ppp/pppoe.conf.sample \
X		${PREFIX}/etc/ppp/pppoe.conf
X.endif
X# Manual pages
X	@${INSTALL_MAN} ${WRKSRC}/man/${MAN5} ${PREFIX}/man/man5
X.for f in ${MAN8}
X	@${INSTALL_MAN} ${WRKSRC}/man/${f} ${PREFIX}/man/man8
X.endfor
X# Scripts
X.for f in ${SCRIPT_FILES}
X	@${INSTALL_SCRIPT} ${WRKSRC}/scripts/${f} ${PREFIX}/sbin
X.endfor
X# Documentation
X.ifndef (NOPORTDOCS)
X	@${MKDIR} ${PREFIX}/share/doc/${PORTNAME}
X	@${INSTALL_DATA} ${WRKSRC}/doc/* ${PREFIX}/share/doc/${PORTNAME}
X.endif /* NOPORTDOCS */
X
X.include <bsd.port.mk>
END-of-rp-pppoe/Makefile
echo x - rp-pppoe/distinfo
sed 's/^X//' >rp-pppoe/distinfo << 'END-of-rp-pppoe/distinfo'
XMD5 (rp-pppoe-3.5.tar.gz) = 97972f8f8f6a3ab9b7070333a6a29c4b
XSIZE (rp-pppoe-3.5.tar.gz) = 189321
END-of-rp-pppoe/distinfo
echo x - rp-pppoe/pkg-descr
sed 's/^X//' >rp-pppoe/pkg-descr << 'END-of-rp-pppoe/pkg-descr'
XPPPoE (Point-to-Point Protocol over Ethernet) is a protocol used
Xby many ADSL service providers. Roaring Penguin's PPPoE software
Xis a reliable program for connecting unix systems to PPPoE service
Xproviders without requiring any kernel patches.
X
XNote that this port has had little testing (it works on 5-CURRENT
Xto access T-Online in Germany from the client side) and the server side
Xis entirely untested.
X
XWWW: http://www.roaringpenguin.com/pppoe/
END-of-rp-pppoe/pkg-descr
echo x - rp-pppoe/pkg-plist
sed 's/^X//' >rp-pppoe/pkg-plist << 'END-of-rp-pppoe/pkg-plist'
Xsbin/adsl-connect
Xsbin/adsl-init
Xsbin/adsl-setup
Xsbin/adsl-start
Xsbin/adsl-status
Xsbin/adsl-stop
Xsbin/pppoe
Xsbin/pppoe-server
X%%PORTDOCS%%%%DOCSDIR%%/CHANGES
X%%PORTDOCS%%%%DOCSDIR%%/HOW-TO-CONNECT
X%%PORTDOCS%%%%DOCSDIR%%/KERNEL-MODE-PPPOE
X%%PORTDOCS%%%%DOCSDIR%%/LICENSE
X%%PORTDOCS%%%%DOCSDIR%%/PROBLEMS
X%%PORTDOCS%%@dirrm %%DOCSDIR%%
Xetc/ppp/firewall-masq.sample
Xetc/ppp/firewall-standalone.sample
Xetc/ppp/pap-secrets.sample
Xetc/ppp/pppoe-server-options.sample
X at unexec if cmp -s %D/etc/ppp/pppoe.conf.sample %D/etc/ppp/pppoe.conf ; then rm %D/etc/ppp/pppoe.conf ; fi
Xetc/ppp/pppoe.conf.sample
X at unexec rmdir %D/etc/ppp 2>/dev/null || echo "If you are permanently removing pppoe, you should also ``rm -Rf ${PKG_PREFIX}/etc/ppp'' removing any configuration and password files left." | /usr/bin/fmt
END-of-rp-pppoe/pkg-plist
exit
--- rp-pppoe-3.5.shar ends here ---

>Release-Note:
>Audit-Trail:
>Unformatted:



More information about the freebsd-ports-bugs mailing list