📄 pppoe-discovery.c
字号:
/* * Perform PPPoE discovery * * Copyright (C) 2000-2001 by Roaring Penguin Software Inc. * Copyright (C) 2004 Marco d'Itri <md@linux.it> * * This program may be distributed according to the terms of the GNU * General Public License, version 2 or (at your option) any later version. * */#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <errno.h>#include <string.h>#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; PPPoEConnection *conn; conn = malloc(sizeof(PPPoEConnection)); if (!conn) fatalSys("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); break; case 'C': conn->acName = xstrdup(optarg); break; case 'U': conn->useHostUniq = 1; break; case 'D': conn->debugFile = fopen(optarg, "w"); if (!conn->debugFile) { fprintf(stderr, "Could not open %s: %s\n", optarg, strerror(errno)); exit(1); } fprintf(conn->debugFile, "pppoe-discovery %s\n", VERSION); break; case 'I': conn->ifName = xstrdup(optarg); break; case 'A': /* this is the default */ break; case 'V': case 'h': usage(); exit(0); default: usage(); exit(1); } } /* default interface name */ if (!conn->ifName) conn->ifName = strdup("eth0"); conn->discoverySocket = -1; conn->sessionSocket = -1; conn->printACNames = 1; discovery(conn); 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"); fprintf(stderr, "\nVersion " VERSION "\n");}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -