X-Git-Url: https://git.ozlabs.org/?a=blobdiff_plain;f=pppd%2Fplugins%2Frp-pppoe%2Fdiscovery.c;h=498ed0a6cbc5723cc6dd4cc503a22b5dfa1eebe2;hb=97a4e67df7a9c196440f4644beba7a6801c7ebe4;hp=e05b77301ee35d186ba4feb96f3ef3ab121762e7;hpb=5d490c4106f4a34864c980b925e183cf3bf575e2;p=ppp.git diff --git a/pppd/plugins/rp-pppoe/discovery.c b/pppd/plugins/rp-pppoe/discovery.c index e05b773..498ed0a 100644 --- a/pppd/plugins/rp-pppoe/discovery.c +++ b/pppd/plugins/rp-pppoe/discovery.c @@ -9,7 +9,7 @@ ***********************************************************************/ static char const RCSID[] = -"$Id: discovery.c,v 1.2 2004/01/13 04:03:58 paulus Exp $"; +"$Id: discovery.c,v 1.4 2005/03/22 10:22:32 paulus Exp $"; #include "pppoe.h" @@ -365,8 +365,8 @@ waitForPADO(PPPoEConnection *conn, int timeout) if (!packetIsForMe(conn, &packet)) continue; if (packet.code == CODE_PADO) { - if (NOT_UNICAST(packet.ethHdr.h_source)) { - printErr("Ignoring PADO packet from non-unicast MAC address"); + if (BROADCAST(packet.ethHdr.h_source)) { + printErr("Ignoring PADO packet from broadcast MAC address"); continue; } parsePacket(&packet, parsePADOTags, &pc); @@ -592,10 +592,6 @@ discovery(PPPoEConnection *conn) /* Skip discovery? */ if (conn->skipDiscovery) { conn->discoveryState = STATE_SESSION; - if (conn->killSession) { - sendPADT(conn, "RP-PPPoE: Session killed manually"); - exit(0); - } return; } @@ -603,6 +599,8 @@ discovery(PPPoEConnection *conn) padiAttempts++; if (padiAttempts > MAX_PADI_ATTEMPTS) { warn("Timeout waiting for PADO packets"); + close(conn->discoverySocket); + conn->discoverySocket = -1; return; } sendPADI(conn); @@ -622,8 +620,7 @@ discovery(PPPoEConnection *conn) /* If we're only printing access concentrator names, we're done */ if (conn->printACNames) { - printf("--------------------------------------------------\n"); - exit(0); + die(0); } timeout = PADI_TIMEOUT; @@ -631,6 +628,8 @@ discovery(PPPoEConnection *conn) padrAttempts++; if (padrAttempts > MAX_PADI_ATTEMPTS) { warn("Timeout waiting for PADS packets"); + close(conn->discoverySocket); + conn->discoverySocket = -1; return; } sendPADR(conn);