*
***********************************************************************/
-static char const RCSID[] =
-"$Id: plugin.c,v 1.17 2008/06/15 04:35:50 paulus Exp $";
-
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
conn->ifName = devnam;
conn->discoverySocket = -1;
conn->sessionSocket = -1;
- conn->discoveryTimeout = pppoe_padi_timeout;
- conn->discoveryAttempts = pppoe_padi_attempts;
return 1;
}
error("Failed to create PPPoE discovery socket: %m");
goto errout;
}
- discovery1(conn);
+ discovery1(conn, 0);
/* discovery1() may update conn->mtu and conn->mru */
lcp_allowoptions[0].mru = conn->mtu;
lcp_wantoptions[0].mru = conn->mru;
ppp_set_remote_number(remote_number);
ppp_script_setenv("MACREMOTE", remote_number, 0);
+ if (conn->actualACname)
+ ppp_script_setenv("ACNAME", conn->actualACname, 0);
if (connect(conn->sessionSocket, (struct sockaddr *) &sp,
sizeof(struct sockaddr_pppox)) < 0) {
sizeof(struct sockaddr_pppox)) < 0 && errno != EALREADY)
error("Failed to disconnect PPPoE socket: %d %m", errno);
close(conn->sessionSocket);
+ if (conn->discoverySocket < 0)
+ conn->discoverySocket =
+ openInterface(conn->ifName, Eth_PPPOE_Discovery, NULL);
if (conn->discoverySocket >= 0) {
sendPADT(conn, NULL);
close(conn->discoverySocket);
}
+ free(conn->actualACname);
+ conn->actualACname = NULL;
}
static void
/* Close socket */
close(fd);
if (r && doit) {
- strlcpy(devnam, cmd, MAXPATHLEN);
+ strlcpy(devnam, cmd, sizeof(devnam));
if (the_channel != &pppoe_channel) {
the_channel = &pppoe_channel;
ccp_allowoptions[0].bsd_compress = 0;
ccp_wantoptions[0].bsd_compress = 0;
+
+ conn->discoveryTimeout = pppoe_padi_timeout;
+ conn->discoveryAttempts = pppoe_padi_attempts;
}
struct channel pppoe_channel = {