net: ppp: reset nextseq counter when enabling SC_MULTILINK
authorChristoph Schulz <develop@kristov.de>
Tue, 15 Jul 2014 09:51:03 +0000 (11:51 +0200)
committerDavid S. Miller <davem@davemloft.net>
Wed, 16 Jul 2014 05:52:35 +0000 (22:52 -0700)
If using a demand-dialled PPP unit for a PPP multilink master, the pppd
daemon needs to reset the sequence counter between two connections. This
allows the daemon to reuse the PPP unit instead of destroying and recreating
it. As there is no API to reset the counter, this patch resets the counter
whenever the SC_MULTILINK flag is set.

Signed-off-by: Christoph Schulz <develop@kristov.de>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ppp/ppp_generic.c

index 5c002b1ef169b95e576eb3b94ab23e366ff7e59e..c38ee903bd593e33f8deb1aec60a3b742285aa97 100644 (file)
@@ -661,6 +661,8 @@ static long ppp_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
                        break;
                ppp_lock(ppp);
                cflags = ppp->flags & ~val;
+               if (!(ppp->flags & SC_MULTILINK) && (val & SC_MULTILINK))
+                       ppp->nextseq = 0;
                ppp->flags = val & SC_FLAG_BITS;
                ppp_unlock(ppp);
                if (cflags & SC_CCP_OPEN)