[patch 12/14] cosmetic cleanup of the pppoe plugin

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Removed unnecessary braces, ifdefs, dead code not used by the plugin,
custom types and useless casts and switched to the usual pppd logging API.
I tried to be conservative in my changes, so there is still some space
for improvements and some refactoring.

There are no functionality changes. It tried to take care at not
introducing linuxisms, but I do not have a Solaris system to test the
code. I suspect that the Solaris DLPI code is bit-rotten anyway,
compiling it requires manually adjusting config.h and I doubt that
somebody ever bothered to try.

--- a/pppd/plugins/rp-pppoe/common.c
+++ b/pppd/plugins/rp-pppoe/common.c
@@ -18,10 +18,6 @@ static char const RCSID[] =
 
 #include "pppoe.h"
 
-#ifdef HAVE_SYSLOG_H
-#include <syslog.h>
-#endif
-
 #include <string.h>
 #include <errno.h>
 #include <stdlib.h>
@@ -50,17 +46,17 @@ parsePacket(PPPoEPacket *packet, ParseFu
     UINT16_t tagType, tagLen;
 
     if (packet->ver != 1) {
-	syslog(LOG_ERR, "Invalid PPPoE version (%d)", (int) packet->ver);
+	error("Invalid PPPoE version (%u)", packet->ver);
 	return -1;
     }
     if (packet->type != 1) {
-	syslog(LOG_ERR, "Invalid PPPoE type (%d)", (int) packet->type);
+	error("Invalid PPPoE type (%u)", packet->type);
 	return -1;
     }
 
     /* Do some sanity checks on packet */
     if (len > ETH_DATA_LEN - 6) { /* 6-byte overhead for PPPoE header */
-	syslog(LOG_ERR, "Invalid PPPoE packet length (%u)", len);
+	error("Invalid PPPoE packet length (%u)", len);
 	return -1;
     }
 
@@ -76,7 +72,7 @@ parsePacket(PPPoEPacket *packet, ParseFu
 	    return 0;
 	}
 	if ((curTag - packet->payload) + tagLen + TAG_HDR_SIZE > len) {
-	    syslog(LOG_ERR, "Invalid PPPoE tag length (%u)", tagLen);
+	    error("Invalid PPPoE tag length (%u)", tagLen);
 	    return -1;
 	}
 	func(tagType, tagLen, curTag+TAG_HDR_SIZE, extra);
@@ -105,17 +101,17 @@ findTag(PPPoEPacket *packet, UINT16_t ty
     UINT16_t tagType, tagLen;
 
     if (packet->ver != 1) {
-	syslog(LOG_ERR, "Invalid PPPoE version (%d)", (int) packet->ver);
+	error("Invalid PPPoE version (%u)", packet->ver);
 	return NULL;
     }
     if (packet->type != 1) {
-	syslog(LOG_ERR, "Invalid PPPoE type (%d)", (int) packet->type);
+	error("Invalid PPPoE type (%u)", packet->type);
 	return NULL;
     }
 
     /* Do some sanity checks on packet */
     if (len > ETH_DATA_LEN - 6) { /* 6-byte overhead for PPPoE header */
-	syslog(LOG_ERR, "Invalid PPPoE packet length (%u)", len);
+	error("Invalid PPPoE packet length (%u)", len);
 	return NULL;
     }
 
@@ -131,7 +127,7 @@ findTag(PPPoEPacket *packet, UINT16_t ty
 	    return NULL;
 	}
 	if ((curTag - packet->payload) + tagLen + TAG_HDR_SIZE > len) {
-	    syslog(LOG_ERR, "Invalid PPPoE tag length (%u)", tagLen);
+	    error("Invalid PPPoE tag length (%u)", tagLen);
 	    return NULL;
 	}
 	if (tagType == type) {
@@ -143,6 +139,7 @@ findTag(PPPoEPacket *packet, UINT16_t ty
     return NULL;
 }
 
+#ifdef unused
 /**********************************************************************
 *%FUNCTION: printErr
 *%ARGUMENTS:
@@ -158,6 +155,7 @@ printErr(char const *str)
     fprintf(stderr, "pppoe: %s\n", str);
     syslog(LOG_ERR, "%s", str);
 }
+#endif
 
 
 /**********************************************************************
@@ -172,7 +170,7 @@ strDup(char const *str)
 {
     char *copy = malloc(strlen(str)+1);
     if (!copy) {
-	rp_fatal("strdup failed");
+	fatal("strdup failed");
     }
     strcpy(copy, str);
     return copy;
@@ -467,9 +465,10 @@ sendPADT(PPPoEConnection *conn, char con
 	fprintf(conn->debugFile, "\n");
 	fflush(conn->debugFile);
     }
-    syslog(LOG_INFO,"Sent PADT");
+    info("Sent PADT");
 }
 
+#ifdef unused
 /**********************************************************************
 *%FUNCTION: parseLogErrs
 *%ARGUMENTS:
@@ -501,4 +500,5 @@ parseLogErrs(UINT16_t type, UINT16_t len
 	break;
     }
 }
+#endif
 
--- a/pppd/plugins/rp-pppoe/discovery.c
+++ b/pppd/plugins/rp-pppoe/discovery.c
@@ -13,10 +13,6 @@ static char const RCSID[] =
 
 #include "pppoe.h"
 
-#ifdef HAVE_SYSLOG_H
-#include <syslog.h>
-#endif
-
 #include <string.h>
 #include <stdlib.h>
 #include <errno.h>
@@ -167,24 +163,21 @@ parsePADOTags(UINT16_t type, UINT16_t le
 	if (conn->printACNames) {
 	    printf("Got a Service-Name-Error tag: %.*s\n", (int) len, data);
 	} else {
-	    syslog(LOG_ERR, "PADO: Service-Name-Error: %.*s", (int) len, data);
-	    exit(1);
+	    fatal("PADO: Service-Name-Error: %.*s", (int) len, data);
 	}
 	break;
     case TAG_AC_SYSTEM_ERROR:
 	if (conn->printACNames) {
 	    printf("Got a System-Error tag: %.*s\n", (int) len, data);
 	} else {
-	    syslog(LOG_ERR, "PADO: System-Error: %.*s", (int) len, data);
-	    exit(1);
+	    fatal("PADO: System-Error: %.*s", (int) len, data);
 	}
 	break;
     case TAG_GENERIC_ERROR:
 	if (conn->printACNames) {
 	    printf("Got a Generic-Error tag: %.*s\n", (int) len, data);
 	} else {
-	    syslog(LOG_ERR, "PADO: Generic-Error: %.*s", (int) len, data);
-	    exit(1);
+	    fatal("PADO: Generic-Error: %.*s", (int) len, data);
 	}
 	break;
     }
@@ -209,20 +202,14 @@ parsePADSTags(UINT16_t type, UINT16_t le
     PPPoEConnection *conn = (PPPoEConnection *) extra;
     switch(type) {
     case TAG_SERVICE_NAME:
-	syslog(LOG_DEBUG, "PADS: Service-Name: '%.*s'", (int) len, data);
+	dbglog("PADS: Service-Name: '%.*s'", (int) len, data);
 	break;
     case TAG_SERVICE_NAME_ERROR:
-	syslog(LOG_ERR, "PADS: Service-Name-Error: %.*s", (int) len, data);
-	fprintf(stderr, "PADS: Service-Name-Error: %.*s\n", (int) len, data);
-	exit(1);
+	fatal("PADS: Service-Name-Error: %.*s", (int) len, data);
     case TAG_AC_SYSTEM_ERROR:
-	syslog(LOG_ERR, "PADS: System-Error: %.*s", (int) len, data);
-	fprintf(stderr, "PADS: System-Error: %.*s\n", (int) len, data);
-	exit(1);
+	fatal("PADS: System-Error: %.*s", (int) len, data);
     case TAG_GENERIC_ERROR:
-	syslog(LOG_ERR, "PADS: Generic-Error: %.*s", (int) len, data);
-	fprintf(stderr, "PADS: Generic-Error: %.*s\n", (int) len, data);
-	exit(1);
+	fatal("PADS: Generic-Error: %.*s", (int) len, data);
     case TAG_RELAY_SESSION_ID:
 	conn->relayId.type = htons(type);
 	conn->relayId.length = htons(len);
@@ -336,7 +323,7 @@ waitForPADO(PPPoEConnection *conn, int t
 		if (r >= 0 || errno != EINTR) break;
 	    }
 	    if (r < 0) {
-		fatalSys("select (waitForPADO)");
+		fatal("waitForPADO: select: %m");
 	    }
 	    if (r == 0) return;        /* Timed out */
 	}
@@ -346,8 +333,7 @@ waitForPADO(PPPoEConnection *conn, int t
 
 	/* Check length */
 	if (ntohs(packet.length) + HDR_SIZE > len) {
-	    syslog(LOG_ERR, "Bogus PPPoE length field (%u)",
-		   (unsigned int) ntohs(packet.length));
+	    error("Bogus PPPoE length field (%u)", ntohs(packet.length));
 	    continue;
 	}
 
@@ -366,16 +352,16 @@ waitForPADO(PPPoEConnection *conn, int t
 
 	if (packet.code == CODE_PADO) {
 	    if (BROADCAST(packet.ethHdr.h_source)) {
-		printErr("Ignoring PADO packet from broadcast MAC address");
+		error("Ignoring PADO packet from broadcast MAC address");
 		continue;
 	    }
 	    parsePacket(&packet, parsePADOTags, &pc);
 	    if (!pc.seenACName) {
-		printErr("Ignoring PADO packet with no AC-Name tag");
+		error("Ignoring PADO packet with no AC-Name tag");
 		continue;
 	    }
 	    if (!pc.seenServiceName) {
-		printErr("Ignoring PADO packet with no Service-Name tag");
+		error("Ignoring PADO packet with no Service-Name tag");
 		continue;
 	    }
 	    conn->numPADOs++;
@@ -513,7 +499,7 @@ waitForPADS(PPPoEConnection *conn, int t
 		if (r >= 0 || errno != EINTR) break;
 	    }
 	    if (r < 0) {
-		fatalSys("select (waitForPADS)");
+		fatal("waitForPADS: select: %m");
 	    }
 	    if (r == 0) return;
 	}
@@ -523,8 +509,7 @@ waitForPADS(PPPoEConnection *conn, int t
 
 	/* Check length */
 	if (ntohs(packet.length) + HDR_SIZE > len) {
-	    syslog(LOG_ERR, "Bogus PPPoE length field (%u)",
-		   (unsigned int) ntohs(packet.length));
+	    error("Bogus PPPoE length field (%u)", ntohs(packet.length));
 	    continue;
 	}
 
@@ -556,11 +541,12 @@ waitForPADS(PPPoEConnection *conn, int t
     /* Don't bother with ntohs; we'll just end up converting it back... */
     conn->session = packet.session;
 
-    syslog(LOG_INFO, "PPP session is %d", (int) ntohs(conn->session));
+    info("PPP session is %d", ntohs(conn->session));
 
     /* RFC 2516 says session id MUST NOT be zero or 0xFFFF */
     if (ntohs(conn->session) == 0 || ntohs(conn->session) == 0xFFFF) {
-	syslog(LOG_ERR, "Access concentrator used a session value of %x -- the AC is violating RFC 2516", (unsigned int) ntohs(conn->session));
+	error("Access concentrator used a session value of 0x%x"
+	    " -- the AC is violating RFC 2516", ntohs(conn->session));
     }
 }
 
@@ -620,7 +606,7 @@ discovery(PPPoEConnection *conn)
 
     /* If we're only printing access concentrator names, we're done */
     if (conn->printACNames) {
-	die(0);
+	exit(0);
     }
 
     timeout = PADI_TIMEOUT;
--- a/pppd/plugins/rp-pppoe/if.c
+++ b/pppd/plugins/rp-pppoe/if.c
@@ -40,10 +40,6 @@ static char const RCSID[] =
 #include <sys/ioctl.h>
 #endif
 
-#ifdef HAVE_SYSLOG_H
-#include <syslog.h>
-#endif
-
 #include <errno.h>
 #include <stdlib.h>
 #include <string.h>
@@ -127,7 +123,7 @@ etherType(PPPoEPacket *packet)
 {
     UINT16_t type = (UINT16_t) ntohs(packet->ethHdr.h_proto);
     if (type != Eth_PPPOE_Discovery && type != Eth_PPPOE_Session) {
-	syslog(LOG_ERR, "Invalid ether type 0x%x", type);
+	error("Invalid ethernet type 0x%x", type);
     }
     return type;
 }
@@ -156,7 +152,7 @@ getHWaddr(int sock, char const *ifname, 
     ifc.ifc_len = sizeof(inbuf);
     ifc.ifc_buf = inbuf;
     if (ioctl(sock, SIOCGIFCONF, &ifc) < 0) {
-	fatalSys("SIOCGIFCONF");
+	fatal("SIOCGIFCONF: %m");
     }
     ifr = ifc.ifc_req;
     ifreq.ifr_name[0] = '\0';
@@ -172,9 +168,7 @@ getHWaddr(int sock, char const *ifname, 
 	        (sdl->sdl_alen == ETH_ALEN) &&
 		!strncmp(ifname, ifr->ifr_name, sizeof(ifr->ifr_name))) {
 		if (found) {
-		    char buffer[256];
-		    sprintf(buffer, "interface %.16s has more than one ethernet address", ifname);
-		    rp_fatal(buffer);
+		    fatal("interface %s has more than one ethernet address", ifname);
 		} else {
 		    found = 1;
 	            memcpy(hwaddr, LLADDR(sdl), ETH_ALEN);
@@ -183,9 +177,7 @@ getHWaddr(int sock, char const *ifname, 
 	}
     }
     if (!found) {
-	char buffer[256];
-        sprintf(buffer, "interface %.16s has no ethernet address", ifname);
-	rp_fatal(buffer);
+        fatal("interface %s has no ethernet address", ifname);
     }
 }
 
@@ -252,7 +244,7 @@ initFilter(int fd, UINT16_t type, unsign
       
       /* Apply the filter */
       if (ioctl(fd, BIOCSETF, &bpfProgram) < 0) {
-	fatalSys("ioctl(BIOCSETF)");
+	fatal("ioctl(BIOCSETF): %m");
       }
     }
 }
@@ -298,42 +290,36 @@ openInterface(char const *ifname, UINT16
     if (fd < 0) {
 	switch (errno) {
 	case EACCES:		/* permission denied */
-	    {
-		char buffer[256];
-		sprintf(buffer, "Cannot open %.32s -- pppoe must be run as root.", bpfName);
-		rp_fatal(buffer);
-	    }
+	    fatal("Cannot open %s -- pppoe must be run as root.", bpfName);
 	    break;
 	case EBUSY:
 	case ENOENT:		/* no such file */
 	    if (i == 0) {
-		rp_fatal("No /dev/bpf* devices (check your kernel configuration for BPF support)");
+		fatal("No /dev/bpf* devices (check your kernel configuration for BPF support)");
 	    } else {
-		rp_fatal("All /dev/bpf* devices are in use");
+		fatal("All /dev/bpf* devices are in use");
 	    }
 	    break;
 	}
-	fatalSys(bpfName);
+	fatal("%s: %m", bpfName);
     }
 
     if ((sock = socket(AF_LOCAL, SOCK_DGRAM, 0)) < 0) {
-	fatalSys("socket");
+	fatal("socket: %m");
     }
 
     /* Check that the interface is up */
     strncpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
     if (ioctl(sock, SIOCGIFFLAGS, &ifr) < 0) {
-	fatalSys("ioctl(SIOCGIFFLAGS)");
+	fatal("ioctl(SIOCGIFFLAGS): %m");
     }
     if ((ifr.ifr_flags & IFF_UP) == 0) {
-	char buffer[256];
-	sprintf(buffer, "Interface %.16s is not up\n", ifname);
-	rp_fatal(buffer);
+	fatal("Interface %s is not up", ifname);
     }
 
     /* Fill in hardware address and initialize the packet filter rules */
     if (hwaddr == NULL) {
-	rp_fatal("openInterface: no hwaddr arg.");
+	fatal("openInterface: no hwaddr arg.");
     }
     getHWaddr(sock, ifname, hwaddr);
     initFilter(fd, type, hwaddr);
@@ -342,58 +328,52 @@ openInterface(char const *ifname, UINT16
 #if !defined(__OpenBSD__)
     strncpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
     if (ioctl(sock, SIOCGIFMTU, &ifr) < 0) {
-	fatalSys("ioctl(SIOCGIFMTU)");
+	fatal("ioctl(SIOCGIFMTU): %m");
     }
     if (ifr.ifr_mtu < ETH_DATA_LEN) {
-	char buffer[256];
-	sprintf(buffer, "Interface %.16s has MTU of %d -- should be %d.  You may have serious connection problems.",
+	error("Interface %s has MTU of %d -- should be %d."
+		"  You may have serious connection problems.",
 		ifname, ifr.ifr_mtu, ETH_DATA_LEN);
-	printErr(buffer);
     }
 #endif
 
     /* done with the socket */
     if (close(sock) < 0) {
-	fatalSys("close");
+	fatal("close: %m");
     }
 
     /* Check the BPF version number */
     if (ioctl(fd, BIOCVERSION, &bpf_ver) < 0) {
-	fatalSys("ioctl(BIOCVERSION)");
+	fatal("ioctl(BIOCVERSION): %m");
     }
     if ((bpf_ver.bv_major != BPF_MAJOR_VERSION) ||
         (bpf_ver.bv_minor < BPF_MINOR_VERSION)) {
-	char buffer[256];
-	sprintf(buffer, "Unsupported BPF version: %d.%d (kernel: %d.%d)", 
+	fatal("Unsupported BPF version: %d.%d (kernel: %d.%d)",
 			BPF_MAJOR_VERSION, BPF_MINOR_VERSION,
 			bpf_ver.bv_major, bpf_ver.bv_minor);
-	rp_fatal(buffer);
     }
 
     /* allocate a receive packet buffer */
     if (ioctl(fd, BIOCGBLEN, &bpfLength) < 0) {
-	fatalSys("ioctl(BIOCGBLEN)");
+	fatal("ioctl(BIOCGBLEN): %m");
     }
     if (!(bpfBuffer = (unsigned char *) malloc(bpfLength))) {
-	rp_fatal("malloc");
+	fatal("malloc");
     }
 
     /* reads should return as soon as there is a packet available */
     optval = 1;
     if (ioctl(fd, BIOCIMMEDIATE, &optval) < 0) {
-	fatalSys("ioctl(BIOCIMMEDIATE)");
+	fatal("ioctl(BIOCIMMEDIATE): %m");
     }
 
     /* Bind the interface to the filter */
     strncpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
     if (ioctl(fd, BIOCSETIF, &ifr) < 0) {
-	char buffer[256];
-	sprintf(buffer, "ioctl(BIOCSETIF) can't select interface %.16s",
-		ifname);
-	rp_fatal(buffer);
+	fatal("ioctl(BIOCSETIF) can't select interface %s: %m", ifname);
     }
 
-    syslog(LOG_INFO, "Interface=%.16s HWaddr=%02X:%02X:%02X:%02X:%02X:%02X Device=%.32s Buffer size=%d",
+    info("Interface=%s HWaddr=%02X:%02X:%02X:%02X:%02X:%02X Device=%s Buffer size=%d",
 	   ifname, 
 	   hwaddr[0], hwaddr[1], hwaddr[2],
 	   hwaddr[3], hwaddr[4], hwaddr[5],
@@ -442,48 +422,41 @@ openInterface(char const *ifname, UINT16
     if ((fd = socket(domain, stype, htons(type))) < 0) {
 	/* Give a more helpful message for the common error case */
 	if (errno == EPERM) {
-	    rp_fatal("Cannot create raw socket -- pppoe must be run as root.");
+	    fatal("Cannot create raw socket -- pppoe must be run as root.");
 	}
-	fatalSys("socket");
+	fatal("cannot create the raw socket: %m");
     }
 
     if (setsockopt(fd, SOL_SOCKET, SO_BROADCAST, &optval, sizeof(optval)) < 0) {
-	fatalSys("setsockopt");
+	fatal("setsockopt(SOL_SOCKET, SO_BROADCAST): %m");
     }
 
     /* Fill in hardware address */
     if (hwaddr) {
 	strncpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
-	if (ioctl(fd, SIOCGIFHWADDR, &ifr) < 0) {
-	    fatalSys("ioctl(SIOCGIFHWADDR)");
-	}
+	if (ioctl(fd, SIOCGIFHWADDR, &ifr) < 0)
+	    fatal("ioctl(SIOCGIFHWADDR): %m");
 	memcpy(hwaddr, ifr.ifr_hwaddr.sa_data, ETH_ALEN);
 #ifdef ARPHRD_ETHER
 	if (ifr.ifr_hwaddr.sa_family != ARPHRD_ETHER) {
-	    char buffer[256];
-	    sprintf(buffer, "Interface %.16s is not Ethernet", ifname);
-	    rp_fatal(buffer);
+	    fatal("Interface %s is not Ethernet", ifname);
 	}
 #endif
 	if (NOT_UNICAST(hwaddr)) {
-	    char buffer[256];
-	    sprintf(buffer,
-		    "Interface %.16s has broadcast/multicast MAC address??",
+	    fatal("Interface %s has broadcast/multicast MAC address",
 		    ifname);
-	    rp_fatal(buffer);
 	}
     }
 
     /* Sanity check on MTU */
     strncpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
     if (ioctl(fd, SIOCGIFMTU, &ifr) < 0) {
-	fatalSys("ioctl(SIOCGIFMTU)");
+	fatal("ioctl(SIOCGIFMTU): %m");
     }
     if (ifr.ifr_mtu < ETH_DATA_LEN) {
-	char buffer[256];
-	sprintf(buffer, "Interface %.16s has MTU of %d -- should be %d.  You may have serious connection problems.",
+	error("Interface %s has MTU of %d -- should be %d."
+		"  You may have serious connection problems.",
 		ifname, ifr.ifr_mtu, ETH_DATA_LEN);
-	printErr(buffer);
     }
 
 #ifdef HAVE_STRUCT_SOCKADDR_LL
@@ -493,7 +466,7 @@ openInterface(char const *ifname, UINT16
 
     strncpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
     if (ioctl(fd, SIOCGIFINDEX, &ifr) < 0) {
-	fatalSys("ioctl(SIOCFIGINDEX): Could not get interface index");
+	fatal("ioctl(SIOCFIGINDEX): Could not get interface index: %m");
     }
     sa.sll_ifindex = ifr.ifr_ifindex;
 
@@ -503,7 +476,7 @@ openInterface(char const *ifname, UINT16
 
     /* We're only interested in packets on specified interface */
     if (bind(fd, (struct sockaddr *) &sa, sizeof(sa)) < 0) {
-	fatalSys("bind");
+	fatal("bind: %m");
     }
 
     return fd;
@@ -527,13 +500,11 @@ sendPacket(PPPoEConnection *conn, int so
 {
 #if defined(USE_BPF)
     if (write(sock, pkt, size) < 0) {
-	sysErr("write (sendPacket)");
-	return -1;
+	fatal("sendPacket: write: %m");
     }
 #elif defined(HAVE_STRUCT_SOCKADDR_LL)
     if (send(sock, pkt, size, 0) < 0) {
-	sysErr("send (sendPacket)");
-	return -1;
+	fatal("sendPacket: send: %m");
     }
 #else
 #ifdef USE_DLPI
@@ -577,12 +548,11 @@ sendPacket(PPPoEConnection *conn, int so
     struct sockaddr sa;
 
     if (!conn) {
-	rp_fatal("relay and server not supported on Linux 2.0 kernels");
+	fatal("relay and server not supported on Linux 2.0 kernels");
     }
     strcpy(sa.sa_data, conn->ifName);
     if (sendto(sock, pkt, size, 0, &sa, sizeof(sa)) < 0) {
-	sysErr("sendto (sendPacket)");
-	return -1;
+	fatal("sendPacket: sendto: %m");
     }
 #endif
 #endif
@@ -632,26 +602,24 @@ receivePacket(int sock, PPPoEPacket *pkt
     if (bpfSize <= 0) {
 	bpfOffset = 0;
 	if ((bpfSize = read(sock, bpfBuffer, bpfLength)) < 0) {
-	    sysErr("read (receivePacket)");
-	    return -1;
+	    fatal("receivePacket: read: %m");
 	}
     }
     if (bpfSize < sizeof(hdr)) {
-	syslog(LOG_ERR, "Truncated bpf packet header: len=%d", bpfSize);
+	error("Truncated bpf packet header: len=%d", bpfSize);
 	clearPacketHeader(pkt);		/* resets bpfSize and bpfOffset */
 	return 0;
     }
     memcpy(&hdr, bpfBuffer + bpfOffset, sizeof(hdr));
     if (hdr.bh_caplen != hdr.bh_datalen) {
-	syslog(LOG_ERR, "Truncated bpf packet: caplen=%d, datalen=%d",
+	error("Truncated bpf packet: caplen=%d, datalen=%d",
 	       hdr.bh_caplen, hdr.bh_datalen);
 	clearPacketHeader(pkt);		/* resets bpfSize and bpfOffset */
 	return 0;
     }
     seglen = hdr.bh_hdrlen + hdr.bh_caplen;
     if (seglen > bpfSize) {
-	syslog(LOG_ERR, "Truncated bpf packet: seglen=%d, bpfSize=%d",
-	       seglen, bpfSize);
+	error("Truncated bpf packet: seglen=%d, bpfSize=%d", seglen, bpfSize);
 	clearPacketHeader(pkt);		/* resets bpfSize and bpfOffset */
 	return 0;
     }
@@ -676,16 +644,14 @@ receivePacket(int sock, PPPoEPacket *pkt
 	data.len = 0; 
 	
 	if ((retval = getmsg(sock, NULL, &data, &flags)) < 0) {
-	    sysErr("read (receivePacket)");
-	    return -1;
+	    fatal("receivePacket: getmsg: %m");
 	}
 
 	*size = data.len; 
 
 #else
     if ((*size = recv(sock, pkt, sizeof(PPPoEPacket), 0)) < 0) {
-	sysErr("recv (receivePacket)");
-	return -1;
+	fatal("receivePacket: recv: %m");
     }
 #endif
 #endif
@@ -716,7 +682,7 @@ openInterface(char const *ifname, UINT16
     int ppa; 
 
     if(strlen(ifname) > PATH_MAX) {
-	rp_fatal("socket: string to long"); 
+	fatal("openInterface: interface name too long");
     }
 
     ppa = atoi(&ifname[strlen(ifname)-1]);
@@ -729,9 +695,9 @@ openInterface(char const *ifname, UINT16
     if (( fd = open(base_dev, O_RDWR)) < 0) {
 	/* Give a more helpful message for the common error case */
 	if (errno == EPERM) {
-	    rp_fatal("Cannot create raw socket -- pppoe must be run as root.");
+	    fatal("Cannot create raw socket -- pppoe must be run as root.");
 	}
-	fatalSys("socket");
+	fatal("open(%s): %m", base_dev);
     }
 
 /* rearranged order of DLPI code - delphys 20010803 */
@@ -747,17 +713,18 @@ openInterface(char const *ifname, UINT16
     dl_abssaplen = ABS(dlp->info_ack.dl_sap_length);
     dl_saplen = dlp->info_ack.dl_sap_length;
     if (ETHERADDRL != (dlp->info_ack.dl_addr_length - dl_abssaplen))
-	fatalSys("invalid destination physical address length");
+	fatal("invalid destination physical address length");
     dl_addrlen = dl_abssaplen + ETHERADDRL;
 
 /* ethernet address retrieved as part of DL_INFO_ACK - delphys 20010803 */
     memcpy(hwaddr, (u_char*)((char*)(dlp) + (int)(dlp->info_ack.dl_addr_offset)), ETHERADDRL);
 
     if ( strioctl(fd, DLIOCRAW, -1, 0, NULL) < 0 ) { 
-	fatalSys("DLIOCRAW"); 
+	fatal("DLIOCRAW: %m");
     }
 
-    if (ioctl(fd, I_FLUSH, FLUSHR) < 0) fatalSys("I_FLUSH");
+    if (ioctl(fd, I_FLUSH, FLUSHR) < 0)
+	fatal("I_FLUSH: %m");
 
     return fd;
 }
@@ -780,7 +747,7 @@ void dlpromisconreq(int fd, u_long level
         flags = 0;
 
         if (putmsg(fd, &ctl, (struct strbuf*) NULL, flags) < 0)
-                fatalSys("dlpromiscon:  putmsg");
+                fatal("dlpromiscon: putmsg: %m");
 
 }
 
@@ -799,7 +766,7 @@ void dlinforeq(int fd)
         flags = RS_HIPRI;
 
         if (putmsg(fd, &ctl, (struct strbuf*) NULL, flags) < 0)
-                fatalSys("dlinforeq:  putmsg");
+                fatal("dlinforeq: putmsg: %m");
 }
 
 void dlunitdatareq(int fd, u_char *addrp, int addrlen, u_long minpri, u_long maxpri, u_char *datap, int datalen)
@@ -827,7 +794,7 @@ void dlunitdatareq(int fd, u_char *addrp
         data.buf = (char *) datap;
 
         if (putmsg(fd, &ctl, &data, 0) < 0)
-                fatalSys("dlunitdatareq:  putmsg");
+                fatal("dlunitdatareq: putmsg: %m");
 }
 
 void dlinfoack(int fd, char *bufp)
@@ -847,18 +814,14 @@ void dlinfoack(int fd, char *bufp)
         expecting(DL_INFO_ACK, dlp);
 
         if (ctl.len < sizeof (dl_info_ack_t)) {
-		char buffer[256];
-		sprintf(buffer, "dlinfoack:  response ctl.len too short:  %d", ctl.len); 
-                rp_fatal(buffer); 
+		fatal("dlinfoack: response ctl.len too short: %d", ctl.len);
 	}
 
         if (flags != RS_HIPRI)
-                rp_fatal("dlinfoack:  DL_INFO_ACK was not M_PCPROTO");
+                fatal("dlinfoack: DL_INFO_ACK was not M_PCPROTO");
 
         if (ctl.len < sizeof (dl_info_ack_t)) {
-		char buffer[256];
-		sprintf(buffer, "dlinfoack:  short response ctl.len:  %d", ctl.len); 
-		rp_fatal(buffer); 
+		fatal("dlinfoack: short response ctl.len: %d", ctl.len);
 	}
 }
 
@@ -882,7 +845,7 @@ void dlbindreq(int fd, u_long sap, u_lon
         flags = 0;
 
         if (putmsg(fd, &ctl, (struct strbuf*) NULL, flags) < 0)
-                fatalSys("dlbindreq:  putmsg");
+                fatal("dlbindreq: putmsg: %m");
 }
 
 void dlattachreq(int fd, u_long ppa)
@@ -901,7 +864,7 @@ void dlattachreq(int fd, u_long ppa)
         flags = 0;
 
         if (putmsg(fd, &ctl, (struct strbuf*) NULL, flags) < 0)
-                fatalSys("dlattachreq:  putmsg");
+                fatal("dlattachreq: putmsg: %m");
 }
 
 void dlokack(int fd, char *bufp)
@@ -921,18 +884,14 @@ void dlokack(int fd, char *bufp)
         expecting(DL_OK_ACK, dlp);
 
         if (ctl.len < sizeof (dl_ok_ack_t)) { 
-		char buffer[256];
-		sprintf(buffer, "dlokack:  response ctl.len too short:  %d", ctl.len);
-		rp_fatal(buffer); 
+		fatal("dlokack: response ctl.len too short: %d", ctl.len);
 	}
 
         if (flags != RS_HIPRI)
-                rp_fatal("dlokack:  DL_OK_ACK was not M_PCPROTO");
+                fatal("dlokack: DL_OK_ACK was not M_PCPROTO");
 
         if (ctl.len < sizeof (dl_ok_ack_t)) {
-		char buffer[256]; 
-		sprintf(buffer, "dlokack:  short response ctl.len:  %d", ctl.len);
-		rp_fatal(buffer); 
+		fatal("dlokack: short response ctl.len: %d", ctl.len);
 	}
 }
 
@@ -953,12 +912,10 @@ void dlbindack(int fd, char *bufp)
         expecting(DL_BIND_ACK, dlp);
 
         if (flags != RS_HIPRI)
-                rp_fatal("dlbindack:  DL_OK_ACK was not M_PCPROTO");
+                fatal("dlbindack: DL_OK_ACK was not M_PCPROTO");
 
         if (ctl.len < sizeof (dl_bind_ack_t)) {
-		char buffer[256];
-		sprintf(buffer, "dlbindack:  short response ctl.len:  %d", ctl.len);
-		rp_fatal(buffer); 
+		fatal("dlbindack: short response ctl.len: %d", ctl.len);
 	}
 }
 
@@ -989,8 +946,7 @@ void strgetmsg(int fd, struct strbuf *ct
          */
         (void) signal(SIGALRM, sigalrm);
         if (alarm(MAXWAIT) < 0) {
-                (void) sprintf(errmsg, "%s:  alarm", caller);
-                fatalSys(errmsg);
+                fatal("%s: alarm", caller);
         }
 
         /*
@@ -998,61 +954,48 @@ void strgetmsg(int fd, struct strbuf *ct
          */
         *flagsp = 0;
         if ((rc = getmsg(fd, ctlp, datap, flagsp)) < 0) {
-                (void) sprintf(errmsg, "%s:  getmsg", caller);
-                fatalSys(errmsg);
+                fatal(errmsg, "%s: getmsg: %m", caller);
         }
 
         /*
          * Stop timer.
          */
         if (alarm(0) < 0) {
-                (void) sprintf(errmsg, "%s:  alarm", caller);
-                fatalSys(errmsg);
+                fatal("%s: alarm", caller);
         }
 
         /*
          * Check for MOREDATA and/or MORECTL.
          */
         if ((rc & (MORECTL | MOREDATA)) == (MORECTL | MOREDATA)) {
-		char buffer[256]; 
-		sprintf(buffer, "%s:  MORECTL|MOREDATA", caller);
-		rp_fatal(buffer);
+		fatal("%s: MORECTL|MOREDATA", caller);
 	}
                 
         if (rc & MORECTL) {
-		char buffer[256];
-		sprintf(buffer, "%s:  MORECTL", caller);
-		rp_fatal(buffer); 
+		fatal("%s: MORECTL", caller);
 	}
         
         if (rc & MOREDATA) {
-		char buffer[256]; 
-		sprintf(buffer, "%s:  MOREDATA", caller);
-		rp_fatal(buffer);
+		fatal("%s: MOREDATA", caller);
 	}
 
         /*
          * Check for at least sizeof (long) control data portion.
          */
         if (ctlp->len < sizeof (long)) {
-		char buffer[256]; 
-		sprintf(buffer, "getmsg:  control portion length < sizeof (long):  %d", ctlp->len);
-		rp_fatal(buffer); 
+		fatal("getmsg: control portion length < sizeof (long): %d", ctlp->len);
 	}
 }
 
 void sigalrm(int sig)
 {
-        (void) rp_fatal("sigalrm:  TIMEOUT");
+        fatal("sigalrm: TIMEOUT");
 }
 
 void expecting(int prim, union DL_primitives *dlp)
 {
         if (dlp->dl_primitive != (u_long)prim) {
-		char buffer[256]; 
-		sprintf(buffer, "expected %s got %s", dlprim(prim), dlprim(dlp->dl_primitive));
-		rp_fatal(buffer); 
-		exit(1); 
+		fatal("expected %s got %s", dlprim(prim), dlprim(dlp->dl_primitive));
 	}
 }
 
--- a/pppd/plugins/rp-pppoe/Makefile.linux
+++ b/pppd/plugins/rp-pppoe/Makefile.linux
@@ -28,8 +28,8 @@ COPTS=-O2 -g
 CFLAGS=$(COPTS) -I../../../include/linux
 all: rp-pppoe.so pppoe-discovery
 
-pppoe-discovery: libplugin.a pppoe-discovery.o
-	$(CC) -o pppoe-discovery pppoe-discovery.o libplugin.a
+pppoe-discovery: pppoe-discovery.o utils.o libplugin.a
+	$(CC) -o pppoe-discovery pppoe-discovery.o utils.o libplugin.a
 
 pppoe-discovery.o: pppoe-discovery.c
 	$(CC) $(CFLAGS) '-DVERSION="$(VERSION)"' -c -o pppoe-discovery.o pppoe-discovery.c
--- a/pppd/plugins/rp-pppoe/plugin.c
+++ b/pppd/plugins/rp-pppoe/plugin.c
@@ -35,7 +35,6 @@ static char const RCSID[] =
 #include "pppd/pathnames.h"
 
 #include <linux/types.h>
-#include <syslog.h>
 #include <sys/ioctl.h>
 #include <sys/types.h>
 #include <sys/socket.h>
@@ -173,10 +172,8 @@ PPPOEConnectDevice(void)
 	    (unsigned) conn->peerEth[5]);
 
     if (connect(conn->sessionSocket, (struct sockaddr *) &sp,
-		sizeof(struct sockaddr_pppox)) < 0) {
+		sizeof(struct sockaddr_pppox)) < 0)
 	fatal("Failed to connect PPPoE socket: %d %m", errno);
-	return -1;
-    }
 
     return conn->sessionSocket;
 }
@@ -320,11 +317,9 @@ plugin_init(void)
     }
 
     add_options(Options);
-
-    info("RP-PPPoE plugin version %s compiled against pppd %s",
-	 RP_VERSION, VERSION);
 }
 
+#ifdef unused
 /**********************************************************************
 *%FUNCTION: fatalSys
 *%ARGUMENTS:
@@ -378,6 +373,7 @@ sysErr(char const *str)
 {
     rp_fatal(str);
 }
+#endif
 
 void pppoe_check_options(void)
 {
--- a/pppd/plugins/rp-pppoe/pppoe-discovery.c
+++ b/pppd/plugins/rp-pppoe/pppoe-discovery.c
@@ -17,14 +17,8 @@
 
 #include "pppoe.h"
 
-char *xstrdup(const char *s);
 void usage(void);
 
-void die(int status)
-{
-	exit(status);
-}
-
 int main(int argc, char *argv[])
 {
     int opt;
@@ -32,17 +26,17 @@ int main(int argc, char *argv[])
 
     conn = malloc(sizeof(PPPoEConnection));
     if (!conn)
-	fatalSys("malloc");
+	fatal("malloc");
 
     memset(conn, 0, sizeof(PPPoEConnection));
 
     while ((opt = getopt(argc, argv, "I:D:VUAS:C:h")) > 0) {
 	switch(opt) {
 	case 'S':
-	    conn->serviceName = xstrdup(optarg);
+	    conn->serviceName = strDup(optarg);
 	    break;
 	case 'C':
-	    conn->acName = xstrdup(optarg);
+	    conn->acName = strDup(optarg);
 	    break;
 	case 'U':
 	    conn->useHostUniq = 1;
@@ -57,7 +51,7 @@ int main(int argc, char *argv[])
 	    fprintf(conn->debugFile, "pppoe-discovery %s\n", VERSION);
 	    break;
 	case 'I':
-	    conn->ifName = xstrdup(optarg);
+	    conn->ifName = strDup(optarg);
 	    break;
 	case 'A':
 	    /* this is the default */
@@ -74,7 +68,7 @@ int main(int argc, char *argv[])
 
     /* default interface name */
     if (!conn->ifName)
-	conn->ifName = strdup("eth0");
+	conn->ifName = strDup("eth0");
 
     conn->discoverySocket = -1;
     conn->sessionSocket = -1;
@@ -84,39 +78,6 @@ int main(int argc, char *argv[])
     exit(0);
 }
 
-void rp_fatal(char const *str)
-{
-    char buf[1024];
-
-    printErr(str);
-    sprintf(buf, "pppoe-discovery: %.256s", str);
-    exit(1);
-}
-
-void fatalSys(char const *str)
-{
-    char buf[1024];
-    int i = errno;
-
-    sprintf(buf, "%.256s: %.256s", str, strerror(i));
-    printErr(buf);
-    sprintf(buf, "pppoe-discovery: %.256s: %.256s", str, strerror(i));
-    exit(1);
-}
-
-void sysErr(char const *str)
-{
-    rp_fatal(str);
-}
-
-char *xstrdup(const char *s)
-{
-    register char *ret = strdup(s);
-    if (!ret)
-	sysErr("strdup");
-    return ret;
-}
-
 void usage(void)
 {
     fprintf(stderr, "Usage: pppoe-discovery [options]\n");
--- a/pppd/plugins/rp-pppoe/pppoe.h
+++ b/pppd/plugins/rp-pppoe/pppoe.h
@@ -307,12 +307,18 @@ void discovery(PPPoEConnection *conn);
 unsigned char *findTag(PPPoEPacket *packet, UINT16_t tagType,
 		       PPPoETag *tag);
 
+void dbglog(char *, ...);	/* log a debug message */
+void info(char *, ...);		/* log an informational message */
+void warn(char *, ...);		/* log a warning message */
+void error(char *, ...);	/* log an error message */
+void fatal(char *, ...);	/* log an error message and die(1) */
+
 #define SET_STRING(var, val) do { if (var) free(var); var = strDup(val); } while(0);
 
 #define CHECK_ROOM(cursor, start, len) \
 do {\
     if (((cursor)-(start))+(len) > MAX_PPPOE_PAYLOAD) { \
-        syslog(LOG_ERR, "Would create too-long packet"); \
+        error("Would create too-long packet"); \
         return; \
     } \
 } while(0)
--- /dev/null
+++ b/pppd/plugins/rp-pppoe/utils.c
@@ -0,0 +1,62 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <stdarg.h>
+#include <syslog.h>
+
+void dbglog(const char *fmt, ...)
+{
+    va_list ap;
+
+    va_start(ap, fmt);
+    vsyslog(LOG_DEBUG, fmt, ap);
+    vfprintf(stderr, fmt, ap);
+    fputs("\n", stderr);
+    va_end(ap);
+}
+
+void info(const char *fmt, ...)
+{
+    va_list ap;
+
+    va_start(ap, fmt);
+    vsyslog(LOG_INFO, fmt, ap);
+    vfprintf(stderr, fmt, ap);
+    fputs("\n", stderr);
+    va_end(ap);
+}
+
+void warn(const char *fmt, ...)
+{
+    va_list ap;
+
+    va_start(ap, fmt);
+    vsyslog(LOG_WARNING, fmt, ap);
+    vfprintf(stderr, fmt, ap);
+    fputs("\n", stderr);
+    va_end(ap);
+}
+
+void error(const char *fmt, ...)
+{
+    va_list ap;
+
+    va_start(ap, fmt);
+    vsyslog(LOG_ERR, fmt, ap);
+    vfprintf(stderr, fmt, ap);
+    fputs("\n", stderr);
+    va_end(ap);
+}
+
+void fatal(const char *fmt, ...)
+{
+    va_list ap;
+
+    va_start(ap, fmt);
+    vsyslog(LOG_ERR, fmt, ap);
+    vfprintf(stderr, fmt, ap);
+    fputs("\n", stderr);
+    va_end(ap);
+    exit(1);
+}
+

-- 
ciao,
Marco

-
To unsubscribe from this list: send the line "unsubscribe linux-ppp" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Audio Users]     [Linux for Hams]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Fedora Users]

  Powered by Linux