pppd and "disconnect" option

Hello,

I found a problem with ppp daemon (QNX 4, TCP runtimes 4.24 and 4.25).
pppd with options “connect …” uses programs like chat for establishing
a connection. According to the documentation pppd supports the similar
option disconnect, but it does not work - if I send any of the signals
SIGINT, SIGHUP, SIGTERM to pppd, pppd invokes only the script
/etc/ppp/ip-down, but no script specified by disconnect option
(so if there is no ip-down, nothing is invoked).
Disconnect script is (or should be) used for clearing a X.25 call in PAD -
ppp is tunelled over X.25.

The general script ip-down can serve for this purpose only if there
is only one ppp profile (ip-down must run chat with redirection of
standard inputand output to the serial line), but I need several ppp
profiles (over different physical lines).

I cannot upgrade tcprt to 5.0 and I would prefer to work with
“pppd disconnect …”.

Thanks for answers.

Martin


Mgr. Martin Gazak, MicroStep-MIS
Ilkovicova 3, 841 04 Bratislava, Slovakia
Tel: +421 2 60291 816
e-mail:matog@microstep-mis.sk


Syslog record - pppd was invoked with options:
/dev/ser2
connect “/etc/ppp/peers/chat -v -V -f /etc/ppp/peers/dial_CISCO.chat”
disconnect “/etc/ppp/peers/chat -v -V -f /etc/ppp/peers/discon_CISCO.chat”
debug
local
-detach
crtscts
defaultroute
escape 10 # the ^P (=0x10) breaks the data transfer through X.25 PAD

ip-down script:
/etc/ppp/peers/chat -v -V -f /etc/ppp/peers/discon_CISCO.chat < /dev/ser2 > /dev/ser2

Dec 20 13:30:44 loc pppd[7823]: pppd 2.3.0 started by root, uid 0
Dec 20 13:30:44 loc pppd[7823]: Connecting with </etc/ppp/peers/chat -v -V -f /etc/ppp/peers/dial_CISCO.chat>
Dec 20 13:30:45 node<<25>> chat[9364]: timeout set to 5 seconds
Dec 20 13:30:45 node<<25>> chat[9364]: send (^J^M)
Dec 20 13:30:45 node<<25>> chat[9364]: expect ()
Dec 20 13:30:45 node<<25>> chat[9364]:
Dec 20 13:30:45 node<<25>> chat[9364]: ^M^M
Dec 20 13:30:45 node<<25>> chat[9364]: ^@^@^@^@

Dec 20 13:30:45 node<<25>> chat[9364]: – got it
Dec 20 13:30:45 node<<25>> chat[9364]: send (call 42011612040011^M^M)
Dec 20 13:30:46 node<<25>> chat[9364]: expect (COM)
Dec 20 13:30:46 node<<25>> chat[9364]: call 42011612040011^M^M
Dec 20 13:30:46 node<<25>> chat[9364]: ^@^@^@^@COM
Dec 20 13:30:46 node<<25>> chat[9364]: – got it
Dec 20 13:30:46 loc pppd[7823]: Serial connection established.
Dec 20 13:30:47 loc pppd[7823]: Using interface ppp0
Dec 20 13:30:47 loc pppd[7823]: Connect: ppp0 <–> /dev/ser2
Dec 20 13:30:47 loc pppd[7823]: sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x404a4906> ]
Dec 20 13:30:47 loc pppd[7823]: fsm_sdata(LCP): Sent code 1, id 1.
Dec 20 13:30:47 loc pppd[7823]: Timeout 587a9b:5a17fc in 3 seconds.
Dec 20 13:30:47 loc pppd[7823]: LCP: sending Configure-Request, id 1
Dec 20 13:30:47 loc pppd[7823]: IO signal received
Dec 20 13:30:47 loc pppd[7823]: rcvd [LCP ConfReq id=0x1 <asyncmap 0xa0000> <magic 0x8ee752b> ]
Dec 20 13:30:47 loc pppd[7823]: fsm_rconfreq(LCP): Rcvd id 1.
Dec 20 13:30:47 loc pppd[7823]: lcp_reqci: rcvd ASYNCMAP
Dec 20 13:30:47 loc pppd[7823]: (a0000)
Dec 20 13:30:47 loc pppd[7823]: (NAK)
Dec 20 13:30:47 loc pppd[7823]: lcp_reqci: rcvd MAGICNUMBER
Dec 20 13:30:47 loc pppd[7823]: (8ee752b)
Dec 20 13:30:47 loc pppd[7823]: (ACK)
Dec 20 13:30:47 loc pppd[7823]: lcp_reqci: rcvd PCOMPRESSION
Dec 20 13:30:47 loc pppd[7823]: (ACK)
Dec 20 13:30:47 loc pppd[7823]: lcp_reqci: rcvd ACCOMPRESSION
Dec 20 13:30:47 loc pppd[7823]: (ACK)
Dec 20 13:30:47 loc pppd[7823]: lcp_reqci: returning CONFNAK.
Dec 20 13:30:47 loc pppd[7823]: sent [LCP ConfNak id=0x1 <asyncmap 0xb0000>]
Dec 20 13:30:47 loc pppd[7823]: fsm_sdata(LCP): Sent code 3, id 1.
Dec 20 13:30:47 loc pppd[7823]: IO signal received
Dec 20 13:30:47 loc pppd[7823]: rcvd [LCP ConfAck id=0x1 <asyncmap 0x0> <magic 0x404a4906> ]
Dec 20 13:30:47 loc pppd[7823]: fsm_rconfack(LCP): Rcvd id 1.
Dec 20 13:30:47 loc pppd[7823]: Untimeout 587a9b:5a17fc.
Dec 20 13:30:47 loc pppd[7823]: IO signal received
Dec 20 13:30:47 loc pppd[7823]: rcvd [LCP ConfReq id=0x2 <asyncmap 0xb0000> <magic 0x8ee752b> ]
Dec 20 13:30:47 loc pppd[7823]: fsm_rconfreq(LCP): Rcvd id 2.
Dec 20 13:30:47 loc pppd[7823]: lcp_reqci: rcvd ASYNCMAP
Dec 20 13:30:47 loc pppd[7823]: (b0000)
Dec 20 13:30:47 loc pppd[7823]: (ACK)
Dec 20 13:30:47 loc pppd[7823]: lcp_reqci: rcvd MAGICNUMBER
Dec 20 13:30:47 loc pppd[7823]: (8ee752b)
Dec 20 13:30:47 loc pppd[7823]: (ACK)
Dec 20 13:30:47 loc pppd[7823]: lcp_reqci: rcvd PCOMPRESSION
Dec 20 13:30:47 loc pppd[7823]: (ACK)
Dec 20 13:30:47 loc pppd[7823]: lcp_reqci: rcvd ACCOMPRESSION
Dec 20 13:30:47 loc pppd[7823]: (ACK)
Dec 20 13:30:47 loc pppd[7823]: lcp_reqci: returning CONFACK.
Dec 20 13:30:47 loc pppd[7823]: sent [LCP ConfAck id=0x2 <asyncmap 0xb0000> <magic 0x8ee752b> ]
Dec 20 13:30:47 loc pppd[7823]: fsm_sdata(LCP): Sent code 2, id 2.
Dec 20 13:30:47 loc pppd[7823]: Untimeout 587a9b:5a17fc.
Dec 20 13:30:47 loc pppd[7823]: sent [IPCP ConfReq id=0x1 <addr 192.168.142.25> <compress VJ 0f 01>]
Dec 20 13:30:47 loc pppd[7823]: fsm_sdata(IPCP): Sent code 1, id 1.
Dec 20 13:30:47 loc pppd[7823]: Timeout 587a9b:5a112c in 3 seconds.
Dec 20 13:30:47 loc pppd[7823]: IPCP: sending Configure-Request, id 1
Dec 20 13:30:48 loc pppd[7823]: IO signal received
Dec 20 13:30:48 loc pppd[7823]: rcvd [IPCP ConfReq id=0x1 <addr 192.168.145.100>]
Dec 20 13:30:48 loc pppd[7823]: fsm_rconfreq(IPCP): Rcvd id 1.
Dec 20 13:30:48 loc pppd[7823]: ipcp: received ADDR
Dec 20 13:30:48 loc pppd[7823]: (192.168.145.100)
Dec 20 13:30:48 loc pppd[7823]: (ACK)
Dec 20 13:30:48 loc pppd[7823]: ipcp: returning Configure-ACK
Dec 20 13:30:48 loc pppd[7823]: sent [IPCP ConfAck id=0x1 <addr 192.168.145.100>]
Dec 20 13:30:48 loc pppd[7823]: fsm_sdata(IPCP): Sent code 2, id 1.
Dec 20 13:30:48 loc pppd[7823]: IO signal received
Dec 20 13:30:48 loc pppd[7823]: rcvd [proto=0x8207] 01 01 00 04
Dec 20 13:30:48 loc pppd[7823]: Unsupported protocol (0x8207) received
Dec 20 13:30:48 loc pppd[7823]: sent [LCP ProtRej id=0x2 82 07 01 01 00 04]
Dec 20 13:30:48 loc pppd[7823]: fsm_sdata(LCP): Sent code 8, id 2.
Dec 20 13:30:48 loc pppd[7823]: IO signal received
Dec 20 13:30:48 loc pppd[7823]: rcvd [IPCP ConfRej id=0x1 <compress VJ 0f 01>]
Dec 20 13:30:48 loc pppd[7823]: fsm_rconfnakrej(IPCP): Rcvd id 1.
Dec 20 13:30:48 loc pppd[7823]: Untimeout 587a9b:5a112c.
Dec 20 13:30:48 loc pppd[7823]: sent [IPCP ConfReq id=0x2 <addr 192.168.142.25>]
Dec 20 13:30:48 loc pppd[7823]: fsm_sdata(IPCP): Sent code 1, id 2.
Dec 20 13:30:48 loc pppd[7823]: Timeout 587a9b:5a112c in 3 seconds.
Dec 20 13:30:48 loc pppd[7823]: IPCP: sending Configure-Request, id 2
Dec 20 13:30:48 loc pppd[7823]: IO signal received
Dec 20 13:30:48 loc pppd[7823]: rcvd [IPCP ConfNak id=0x2 <addr 192.168.141.40>]
Dec 20 13:30:48 loc pppd[7823]: fsm_rconfnakrej(IPCP): Rcvd id 2.
Dec 20 13:30:48 loc pppd[7823]: local IP address 192.168.141.40
Dec 20 13:30:48 loc pppd[7823]: Untimeout 587a9b:5a112c.
Dec 20 13:30:48 loc pppd[7823]: sent [IPCP ConfReq id=0x3 <addr 192.168.141.40>]
Dec 20 13:30:48 loc pppd[7823]: fsm_sdata(IPCP): Sent code 1, id 3.
Dec 20 13:30:48 loc pppd[7823]: Timeout 587a9b:5a112c in 3 seconds.
Dec 20 13:30:48 loc pppd[7823]: IPCP: sending Configure-Request, id 3
Dec 20 13:30:48 loc pppd[7823]: IO signal received
Dec 20 13:30:48 loc pppd[7823]: rcvd [IPCP ConfAck id=0x3 <addr 192.168.141.40>]
Dec 20 13:30:48 loc pppd[7823]: fsm_rconfack(IPCP): Rcvd id 3.
Dec 20 13:30:48 loc pppd[7823]: Untimeout 587a9b:5a112c.
Dec 20 13:30:48 loc pppd[7823]: ipcp: up
Dec 20 13:30:48 loc pppd[7823]: local IP address 192.168.141.40
Dec 20 13:30:48 loc pppd[7823]: remote IP address 192.168.145.100
Dec 20 13:30:48 loc pppd[7823]: Script /etc/ppp/ip-up started; pid = 7832
Dec 20 13:31:29 loc pppd[7823]: Terminating on signal 15.
Dec 20 13:31:29 loc pppd[7823]: ipcp: down
Dec 20 13:31:29 loc pppd[7823]: Script /etc/ppp/ip-down started; pid = 9382
Dec 20 13:31:29 loc pppd[7823]: sent [LCP TermReq id=0x3 “User request”]
Dec 20 13:31:29 loc pppd[7823]: fsm_sdata(LCP): Sent code 5, id 3.
Dec 20 13:31:29 loc pppd[7823]: Timeout 587a9b:5a17fc in 3 seconds.
Dec 20 13:31:29 loc pppd[7823]: Exit.
Dec 20 07:31:29 node<<25>> chat[9384]: timeout set to 10 seconds
Dec 20 07:31:29 node<<25>> chat[9384]: send (^Pclr^M)
Dec 20 07:31:29 node<<25>> chat[9384]: expect (CLR CONF)
Dec 20 07:31:29 node<<25>> chat[9384]: ^S^M
Dec 20 07:31:29 node<<25>> chat[9384]: ^@^@^@^@*^M
Dec 20 07:31:29 node<<25>> chat[9384]: ^@^@^@^@CLR CONF
Dec 20 07:31:29 node<<25>> chat[9384]: – got it
Dec 20 07:31:29 node<<25>> chat[9384]: send (^M)


The last lines were logged by chat invoked from the ip-down script.
I do not know, why the time (hours) changed from 13 to 07.

I found finally some solution and in order to save your time, I answer
to myself:

Hello,

I found a problem with ppp daemon (QNX 4, TCP runtimes 4.24 and 4.25).
pppd with options “connect …” uses programs like chat for establishing
a connection. According to the documentation pppd supports the similar
option disconnect, but it does not work - if I send any of the signals
SIGINT, SIGHUP, SIGTERM to pppd, pppd invokes only the script
/etc/ppp/ip-down, but no script specified by disconnect option
(so if there is no ip-down, nothing is invoked).
Disconnect script is (or should be) used for clearing a X.25 call in PAD -
ppp is tunelled over X.25.

pppd invokes during the line disconnecting an /etc/ppp/ip-down script.
ip -down is invoked with 5 fixed parameters (an interface, a physical line,
a line speed, local and IP, the 6th parameter can be passed from
pppd using option “ipparam value” (undocumented in QNX port of pppd).

So instead of disconnect script one can use ip-down script.

Sorry for spending your time reading this.

Best regards,
Martin



\

Mgr. Martin Gazak, MicroStep-MIS
Ilkovicova 3, 841 04 Bratislava, Slovakia
Tel: +421 2 60291 816
e-mail:matog@microstep-mis.sk