LINUX.ORG.RU
ФорумAdmin

Как сопоставить ppp0 конкретному ttyS0


0

0

Имеется два модема, как заставить при использовании модема на ttyS1, поднимать всегда один интерфейс ну скажем всегда ppp3, а не тот что в данный момент свободен. Заранее спасибо.

anonymous

Нафига тебе такое извращение????

Только в скриптах pppd можно чего нибудь такое прописать. При подключении в скрипты передаются название девайса и интерфейса там ты их и сможеш сравнить и если не так как надо то hangup при следующем подключении возможно будет так как тебе надо.

anonymous
()

Есть така заплатка. Надо только поискать

anonymous
()

Я сам долго выяснял это дело ( в т.ч. в news comp.protocols.ppp и др.) и полноценного ответа так и не нашел.
Вот что выяснил:
1) Есть недокументированная опция unit n (какой N интерфейса приставивать) - см. options.c. В Linux игнорируется, 
но, говорят, работает в NetBSD (FreeBSD?)
2) При загрузке поднять ppp0 (опции persist, silent). Тогда ppp0 (м.б. down) всегда будет на ttyS0 - видимо,
из-за lock-файла.
3) Патч (сам не пробовал) для FreeBSD:
Eric Wick <eric.wick@gmx.de> wrote:
>if there is a dsl dialout and an analog dialin, is it possible to use
>static devices for the jobs? Normally the first used ppp becomes ppp0
>and the next will be ppp1.

One of my mods to FreeBSD 4.2 kernel

*** if_ppp.c.rel  Sun Jan 30 03:56:22 2000
--- if_ppp.c      Sun Feb 25 15:30:33 2001

*** 236,249 ****
--- 237,266 ----
  	if (sc->sc_xfer == pid) {
  	    sc->sc_xfer = 0;
  	    return sc;
  	}
+ 
+     /* Try to map the ttyN to pppN */
+     nppp = minor(dev) & 0x1f;
+     if ((major(dev) == 28) &&
+         (nppp < NPPP)      &&
+         (ppp_softc[nppp].sc_devp == NULL)) {
+       sc = &ppp_softc[nppp];
+     }
+     else {
+ 
      for (nppp = 0, sc = ppp_softc; nppp < NPPP; nppp++, sc++)
  	if (sc->sc_devp == NULL)
  	    break;
      if (nppp >= NPPP)
  	return NULL;
  
+     }
+ 
+     if (sc->sc_flags & SC_DEBUG)
+         printf("ppp: mapped dev %d %d -> ppp %d\n",
+                 major(dev), minor(dev), nppp);
+ 
      sc->sc_flags = 0;
      sc->sc_mru = PPP_MRU;
      sc->sc_relinq = NULL;
      bzero((char *)&sc->sc_stats, sizeof(sc->sc_stats));
***************

Pit
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.