Uploaded image for project: 'fli4l'
  1. fli4l
  2. FFL-858

Linux 3.15 erlaubt pppd nicht, einen Filter zu setzen oder zu entfernen

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 3.10.0
    • Fix Version/s: 3.10.1
    • Component/s: kernel_3_15, ppp
    • Labels:
      None
    • Environment:

      Kernel 3.15.x

      Description

      Der pppd versucht in set_filters() (sys-linux.c), den pass-filter und den active-filter im Kernel zu setzen, auch wenn die Filter gar nicht vom Benutzer initialisiert (d.h. die Datenstruktur via pcap_compile() gefüllt) wurden. Das hat früher funktioniert (indem der Kernel die "leeren", d.h. nicht initialisierten Filter ignoriert hat), jetzt aber nicht mehr, weil der Kernel mehr Plausibilitätsprüfungen durchführt. Daher erscheint bei Dial-on-Demand-PPP-Verbindungen mit Kernel 3.15.x die Meldung

      Jun 18 08:34:28 sandbox local2.err pppd[14448]: Couldn't set pass-filter in kernel: Invalid argument
      

      (siehe auch FFL-855). Schlimmer wiegt jedoch: Wird der pass-filter jedoch nicht erfolgreich gesetzt, versucht pppd gar nicht erst, den active-filter zu setzen, der für das Auflegen bei Inaktivität zuständig ist:

      	if (ioctl(ppp_dev_fd, PPPIOCSPASS, &fp) < 0) {
      		if (errno == ENOTTY)
      			warn("kernel does not support PPP filtering");
      		else
      			error("Couldn't set pass-filter in kernel: %m");
      		return 0;
      	}
      

      (man beachte das return 0;). Somit werden Dial-on-Demand-Verbindungen nicht mehr abgebaut, wenn z.B. der fli4l von außen angepingt wird.

        Attachments

          Activity

            People

            Assignee:
            kristov Christoph Schulz
            Reporter:
            kristov Christoph Schulz
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Dates

              Created:
              Updated:
              Resolved: