|
|
@@ -0,0 +1,14 @@
|
|
|
+--- a/pppd/plugins/rp-pppoe/plugin.c
|
|
|
++++ b/pppd/plugins/rp-pppoe/plugin.c
|
|
|
+@@ -271,9 +271,8 @@ PPPOEDisconnectDevice(void)
|
|
|
+ sp.sa_addr.pppoe.sid = 0;
|
|
|
+ memcpy(sp.sa_addr.pppoe.dev, conn->ifName, IFNAMSIZ);
|
|
|
+ memcpy(sp.sa_addr.pppoe.remote, conn->peerEth, ETH_ALEN);
|
|
|
+- if (connect(conn->sessionSocket, (struct sockaddr *) &sp,
|
|
|
+- sizeof(struct sockaddr_pppox)) < 0)
|
|
|
+- error("Failed to disconnect PPPoE socket: %d %m", errno);
|
|
|
++ connect(conn->sessionSocket, (struct sockaddr *) &sp,
|
|
|
++ sizeof(struct sockaddr_pppox));
|
|
|
+ close(conn->sessionSocket);
|
|
|
+ sendPADT(conn, NULL);
|
|
|
+ if (conn->discoverySocket >= 0)
|