Имеется два модема, как заставить при использовании модема на ttyS1, поднимать всегда один интерфейс ну скажем всегда ppp3, а не тот что в данный момент свободен. Заранее спасибо.
Только в скриптах pppd можно чего нибудь такое прописать. При подключении в скрипты передаются название девайса и интерфейса там ты их и сможеш сравнить и если не так как надо то hangup при следующем подключении возможно будет так как тебе надо.
Я сам долго выяснял это дело ( в т.ч. в 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));
***************