From: Pali Rohár Date: Thu, 31 Dec 2020 17:52:50 +0000 (+0100) Subject: Cleanup pppoe-discovery fatal functions X-Git-Tag: ppp-2.4.9~17^2 X-Git-Url: https://git.ozlabs.org/?p=ppp.git;a=commitdiff_plain;h=e712ba49ba8dd497958d415e988bf93008c8fbb4;hp=-c;ds=sidebyside Cleanup pppoe-discovery fatal functions Implement fatal() function as defined in pppd/pppd.h and use it instead of rp_fatal() and sysErr() functions. Signed-off-by: Pali Rohár --- e712ba49ba8dd497958d415e988bf93008c8fbb4 diff --git a/pppd/plugins/pppoe/pppoe-discovery.c b/pppd/plugins/pppoe/pppoe-discovery.c index 34b77e8..e41d286 100644 --- a/pppd/plugins/pppoe/pppoe-discovery.c +++ b/pppd/plugins/pppoe/pppoe-discovery.c @@ -130,7 +130,7 @@ openInterface(char const *ifname, UINT16_t type, unsigned char *hwaddr) 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"); } @@ -148,17 +148,11 @@ openInterface(char const *ifname, UINT16_t type, unsigned char *hwaddr) 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 %.16s is not Ethernet", ifname); } #endif if (NOT_UNICAST(hwaddr)) { - char buffer[256]; - sprintf(buffer, - "Interface %.16s has broadcast/multicast MAC address??", - ifname); - rp_fatal(buffer); + fatal("Interface %.16s has broadcast/multicast MAC address??", ifname); } } @@ -214,18 +208,18 @@ sendPacket(PPPoEConnection *conn, int sock, PPPoEPacket *pkt, int size) { #if defined(HAVE_STRUCT_SOCKADDR_LL) if (send(sock, pkt, size, 0) < 0) { - sysErr("send (sendPacket)"); + fatalSys("send (sendPacket)"); return -1; } #else 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)"); + fatalSys("sendto (sendPacket)"); return -1; } #endif @@ -247,7 +241,7 @@ int receivePacket(int sock, PPPoEPacket *pkt, int *size) { if ((*size = recv(sock, pkt, sizeof(PPPoEPacket), 0)) < 0) { - sysErr("recv (receivePacket)"); + fatalSys("recv (receivePacket)"); return -1; } return 0; @@ -746,9 +740,13 @@ int main(int argc, char *argv[]) exit(0); } -void rp_fatal(char const *str) +void fatal(char * fmt, ...) { - fprintf(stderr, "%s\n", str); + va_list ap; + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + va_end(ap); + fputc('\n', stderr); exit(1); } @@ -758,16 +756,11 @@ void fatalSys(char const *str) exit(1); } -void sysErr(char const *str) -{ - rp_fatal(str); -} - char *xstrdup(const char *s) { register char *ret = strdup(s); if (!ret) - sysErr("strdup"); + fatalSys("strdup"); return ret; } diff --git a/pppd/plugins/pppoe/pppoe.h b/pppd/plugins/pppoe/pppoe.h index e2dc2ff..4e19720 100644 --- a/pppd/plugins/pppoe/pppoe.h +++ b/pppd/plugins/pppoe/pppoe.h @@ -262,9 +262,6 @@ int openInterface(char const *ifname, UINT16_t type, unsigned char *hwaddr); int sendPacket(PPPoEConnection *conn, int sock, PPPoEPacket *pkt, int size); int receivePacket(int sock, PPPoEPacket *pkt, int *size); void fatalSys(char const *str); -void rp_fatal(char const *str); -void printErr(char const *str); -void sysErr(char const *str); void dumpPacket(FILE *fp, PPPoEPacket *packet, char const *dir); void dumpHex(FILE *fp, unsigned char const *buf, int len); int parsePacket(PPPoEPacket *packet, ParseFunc *func, void *extra);