Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 17 May 2004 21:17:04 +0400
From:      Alexander Lunyov <lan_mailing@startatom.ru>
To:        freebsd-net@freebsd.org
Subject:   Re: ppp receiving wrong device number (cuaa10 instead of cuaaa, cuaa15 instead of cuaaf)
Message-ID:  <384220065.20040517211704@startatom.ru>
In-Reply-To: <1373993879.20040517152020@startatom.ru>
References:  <1373993879.20040517152020@startatom.ru>

next in thread | previous in thread | raw e-mail | index | archive | help
Hello Alexander,

Monday, May 17, 2004, 3:20:20 PM, you wrote:

     Wrong device name comes from tty_Create() function in tty.c:

  if (*p->name.full == '\0') {
    physical_SetDevice(p, ttyname(p->fd));
    log_Printf(LogDEBUG, "%s: Input is a tty (%s)\n",
               p->link.name, p->name.full);
  } else     

  [skip]

  I checked this - it's ttyname(3) who return /dev/cuaa10 instead of
  /dev/cuaaa. Why ttyname(3) is returning wrong device number? Device
  with such name doesn't even exist:

# ls -l /dev/cuaa10
ls: /dev/cuaa10: No such file or directory

  And all cuaa[0-v] devices are here:

# ls -l /dev/cuaa*
crw-rw----  1 uucp  dialer   28, 128  4 май  2003 /dev/cuaa0
crw-rw----  1 uucp  uucp     28, 129 17 май 17:10 /dev/cuaa1
crw-rw----  1 uucp  uucp     28, 130 17 май 16:54 /dev/cuaa2
crw-rw----  1 uucp  uucp     28, 131 17 май 20:30 /dev/cuaa3
crw-------  1 uucp  uucp     28, 132 17 май 16:42 /dev/cuaa4
crw-rw----  1 uucp  uucp     28, 133 17 май 13:07 /dev/cuaa5
crw-rw----  1 uucp  uucp     28, 134 17 май 18:15 /dev/cuaa6
crw-rw----  1 uucp  uucp     28, 135 17 май 17:10 /dev/cuaa7
crw-rw----  1 uucp  uucp     28, 136 17 май 16:47 /dev/cuaa8
crw-rw----  1 uucp  uucp     28, 137 17 май 13:07 /dev/cuaa9
crw-rw----  1 uucp  uucp     28, 138 17 май 20:51 /dev/cuaaa
crw-rw----  1 uucp  uucp     28, 139 17 май 16:43 /dev/cuaab
crw-rw----  1 uucp  uucp     28, 140 17 май 17:25 /dev/cuaac
crw-rw----  1 uucp  uucp     28, 141 17 май 17:26 /dev/cuaad
crw-------  1 uucp  uucp     28, 142 14 май 10:18 /dev/cuaae
crw-rw----  1 uucp  uucp     28, 143 17 май 17:22 /dev/cuaaf
crw-rw----  1 uucp  uucp     28, 144 17 май 20:41 /dev/cuaag
crw-rw----  1 uucp  uucp     28, 145 17 май 20:02 /dev/cuaah
crw-------  1 uucp  uucp     28, 146 14 май 11:51 /dev/cuaai
crw-rw----  1 uucp  uucp     28, 147 17 май 19:15 /dev/cuaaj
crw-rw----  1 uucp  uucp     28, 148 17 май 16:52 /dev/cuaak
crw-rw----  1 uucp  uucp     28, 149 17 май 13:07 /dev/cuaal
crw-rw----  1 uucp  uucp     28, 150 17 май 17:28 /dev/cuaam
crw-rw----  1 uucp  uucp     28, 151 17 май 17:33 /dev/cuaan
crw-rw----  1 uucp  uucp     28, 152 17 май 17:24 /dev/cuaao
crw-rw----  1 uucp  uucp     28, 153 23 окт  2002 /dev/cuaap
crw-rw----  1 uucp  uucp     28, 154 23 окт  2002 /dev/cuaaq
crw-rw----  1 uucp  uucp     28, 155 23 окт  2002 /dev/cuaar
crw-rw----  1 root  wheel    28, 156  9 окт  2002 /dev/cuaas
crw-rw----  1 root  wheel    28, 157  9 окт  2002 /dev/cuaat
crw-rw----  1 root  wheel    28, 158  9 окт  2002 /dev/cuaau
crw-rw----  1 root  wheel    28, 159  9 окт  2002 /dev/cuaav

  Maybe, this is not freebsd-net@ issue anymore? Which list should i go
  to with this?

AL>   We have a gateway for our inner clients, it is FreeBSD-4.8R-p14,
AL>   three Cronyx Omega PCI multiport cards (24 ports in sum), mgetty
AL>   listening on all those ports, and when user connects, mgetty run
AL>   exppp (enchanced ppp incarnation, http://shs.sumy.ua).
AL>   Freeradius handles authentication and accounting. When i've enable
AL>   freeradius module rlm_ippool (ip addresses pooling module), dialup
AL>   users start receiving error "server have not assign ip address"
AL>   after connecting on some telephone numbers (not all, just some
AL>   numbers), and when i dig some further, i found, that freeradius in
AL>   such cases did not receive NAS-Port-Id attribute from exppp.
AL>   Freeradius receive standard request, but without one attribute, in
AL>   example:

AL>        Service-Type = Framed-User
AL>        User-Name = "bpv89"
AL>        Framed-Protocol = PPP
AL>        CHAP-Password = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
AL>        CHAP-Challenge = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
AL>        NAS-Identifier = "zeus.domain.ru"
AL>        NAS-Port-Type = Async  

AL>   Then i started to watch for ppp connections. And i found strange thing. Look
AL>   at this (ppp log):

AL>  Phase: Using interface: tun9
AL>  Phase: deflink: Created in closed state
AL>  Command: default: set radius /etc/radius.conf
AL>  Command: default: set dns 192.168.33.127
AL>  Command: default: set local_ip 62.33.65.0/24
AL>  Warning: Add local net: 62.33.65.0/24
AL>  Command: default: accept dns
AL>  Command: default: enable lqr
AL>  Command: default: enable pap
AL>  Command: default: enable chap
AL>  Command: default: enable mschap
AL>  Command: default: enable mschapv2
AL>  Command: default: set rad_alive 20
AL>  Command: default: disable acfcomp protocomp
AL>  Command: default: deny acfcomp
AL>  Command: dialup: set timeout 900
AL>  Command: dialup: set mru 576
AL>  Command: dialup: set mtu 576
AL>  Phase: PPP Started (direct mode).
AL>  Phase: bundle: Establish
AL>  Phase: deflink: closed -> opening
AL>  Phase: deflink: Connected!
AL>  Phase: deflink: opening -> carrier
>> Phase: deflink: /dev/cuaa15: CD detected *** (1)
AL>  Phase: deflink: carrier -> lcp
AL>  Phase: bundle: Authenticate
AL>  Phase: deflink: his = none, mine = CHAP 0x05
AL>  Phase: Chap Output: CHALLENGE
AL>  Phase: Chap Input: RESPONSE (16 bytes from rim74)
>> Error: NAS-Port-Id borken: -1 *** (2)
AL>  Phase: Radius: Request sent
AL>  Phase: Radius(auth): ACCEPT received
AL>  Phase:  Octets limit 292770808
AL>  Phase: Chap Output: SUCCESS
AL>  Phase: deflink: lcp -> open
AL>  Phase: bundle: Network

AL>  Then disconnection occures - freeradius didn't deliver ip address for
AL>  this connection.
 
AL>  (1) - But mgetty said that modem connects to /dev/cuaaf port! Where
AL>  did come digit 15 from? This situation (decimal port number instead
AL>  of hex) can also be seen on ports cuaa10 (cuaaa), cuaa11 (cuaab),
AL>  cuaa12 (cuaac) etc till cuaa15 - port cuaag always comes in hex.

AL>  (2) - This is my debug entry, that i insert in radius.c. Original
AL>  code:

AL>  if ((slot = physical_Slot(p)) >= 0)
AL>    if (rad_put_int(rad, RAD_NAS_PORT, slot) != 0) {
AL>      log_Printf(LogERROR, "rad_put: rad_put_int: %s\n", rad_strerror(rad));
AL>      rad_close(rad);
AL>      return 0;
AL>    }

AL>  I've added debug 'else' for first 'if' (2). Thus physical_Slot() from
AL>  physical.c returning '-1'. In physical.c:

AL> int
AL> physical_Slot(struct physical *p)
AL> {
AL>  if (p->handler && p->handler->slot)
AL>    return (*p->handler->slot)(p);

AL>  return -1;
AL> }

AL>  And p->handler is coming from tty.c (if i'm not missed the trail)

AL> in tty_iov2device():

AL>    memcpy(&dev->dev, &basettydevice, sizeof dev->dev);

AL>    physical_SetupStack(p, dev->dev.name, PHYSICAL_NOFORCE);
AL>    if (dev->Timer.state != TIMER_STOPPED) {
AL>      dev->Timer.state = TIMER_STOPPED;
AL>      p->handler = &dev->dev;       /* For the benefit of StartTimer */
AL>      tty_StartTimer(p);
AL>    }
AL>    return &dev->dev;

AL>  And i don't know where should i dig further. Must be some place,
AL>  where hex numbers returns as decimal, but i don't know, where is it.

-- 
Best regards,
 Alexander                            mailto:lan_mailing@startatom.ru



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?384220065.20040517211704>