€•NŒsphinx.addnodes”Œdocument”“”)�”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)�”}”(hhh]”(hŒ pending_xref”“”)�”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…”�”}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ*/translations/zh_CN/networking/ppp_generic”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)�”}”(hhh]”hŒChinese (Traditional)”…”�”}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ*/translations/zh_TW/networking/ppp_generic”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒItalian”…”�”}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ*/translations/it_IT/networking/ppp_generic”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒJapanese”…”�”}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ*/translations/ja_JP/networking/ppp_generic”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒKorean”…”�”}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ*/translations/ko_KR/networking/ppp_generic”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒPortuguese (Brazilian)”…”�”}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ*/translations/pt_BR/networking/ppp_generic”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒSpanish”…”�”}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ*/translations/sp_SP/networking/ppp_generic”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒcomment”“”)�”}”(hŒ SPDX-License-Identifier: GPL-2.0”h]”hŒ SPDX-License-Identifier: GPL-2.0”…”�”}”hh·sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1hµhhh²hh³ŒD/var/lib/git/docbuild/linux/Documentation/networking/ppp_generic.rst”h´KubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒ(PPP Generic Driver and Channel Interface”h]”hŒ(PPP Generic Driver and Channel Interface”…”�”}”(hhÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhhÊh²hh³hÇh´KubhŒ block_quote”“”)�”}”(hŒ/Paul Mackerras paulus@samba.org 7 Feb 2002 ”h]”(hŒ paragraph”“”)�”}”(hŒPaul Mackerras paulus@samba.org”h]”(hŒPaul Mackerras ”…”�”}”(hhåh²hh³Nh´NubhŒ reference”“”)�”}”(hŒpaulus@samba.org”h]”hŒpaulus@samba.org”…”�”}”(hhïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”Œmailto:paulus@samba.org”uh1híhhåubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´KhhßubhÞ)�”}”(hŒ 7 Feb 2002 ”h]”hä)�”}”(hŒ 7 Feb 2002”h]”hŒ 7 Feb 2002”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´K hjubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K hhßubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KhhÊh²hubhä)�”}”(hŒ‰The generic PPP driver in linux-2.4 provides an implementation of the functionality which is of use in any PPP implementation, including:”h]”hŒ‰The generic PPP driver in linux-2.4 provides an implementation of the functionality which is of use in any PPP implementation, including:”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´K hhÊh²hubhŒ bullet_list”“”)�”}”(hhh]”(hŒ list_item”“”)�”}”(hŒ&the network interface unit (ppp0 etc.)”h]”hä)�”}”(hj:h]”hŒ&the network interface unit (ppp0 etc.)”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Khj8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hj3h²hh³hÇh´Nubj7)�”}”(hŒ$the interface to the networking code”h]”hä)�”}”(hjQh]”hŒ$the interface to the networking code”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´KhjOubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hj3h²hh³hÇh´Nubj7)�”}”(hŒhPPP multilink: splitting datagrams between multiple links, and ordering and combining received fragments”h]”hä)�”}”(hŒhPPP multilink: splitting datagrams between multiple links, and ordering and combining received fragments”h]”hŒhPPP multilink: splitting datagrams between multiple links, and ordering and combining received fragments”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Khjfubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hj3h²hh³hÇh´Nubj7)�”}”(hŒ6the interface to pppd, via a /dev/ppp character device”h]”hä)�”}”(hj€h]”hŒ6the interface to pppd, via a /dev/ppp character device”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Khj~ubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hj3h²hh³hÇh´Nubj7)�”}”(hŒ$packet compression and decompression”h]”hä)�”}”(hj—h]”hŒ$packet compression and decompression”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Khj•ubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hj3h²hh³hÇh´Nubj7)�”}”(hŒ+TCP/IP header compression and decompression”h]”hä)�”}”(hj®h]”hŒ+TCP/IP header compression and decompression”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Khj¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hj3h²hh³hÇh´Nubj7)�”}”(hŒCdetecting network traffic for demand dialling and for idle timeouts”h]”hä)�”}”(hjÅh]”hŒCdetecting network traffic for demand dialling and for idle timeouts”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´KhjÃubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hj3h²hh³hÇh´Nubj7)�”}”(hŒsimple packet filtering ”h]”hä)�”}”(hŒsimple packet filtering”h]”hŒsimple packet filtering”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´KhjÚubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hj3h²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”Œbullet”Œ*”uh1j1h³hÇh´KhhÊh²hubhä)�”}”(hX3For sending and receiving PPP frames, the generic PPP driver calls on the services of PPP ``channels``. A PPP channel encapsulates a mechanism for transporting PPP frames from one machine to another. A PPP channel implementation can be arbitrarily complex internally but has a very simple interface with the generic PPP code: it merely has to be able to send PPP frames, receive PPP frames, and optionally handle ioctl requests. Currently there are PPP channel implementations for asynchronous serial ports, synchronous serial ports, and for PPP over ethernet.”h]”(hŒZFor sending and receiving PPP frames, the generic PPP driver calls on the services of PPP ”…”�”}”(hjúh²hh³Nh´NubhŒliteral”“”)�”}”(hŒ ``channels``”h]”hŒchannels”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjúubhXÍ. A PPP channel encapsulates a mechanism for transporting PPP frames from one machine to another. A PPP channel implementation can be arbitrarily complex internally but has a very simple interface with the generic PPP code: it merely has to be able to send PPP frames, receive PPP frames, and optionally handle ioctl requests. Currently there are PPP channel implementations for asynchronous serial ports, synchronous serial ports, and for PPP over ethernet.”…”�”}”(hjúh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´KhhÊh²hubhä)�”}”(hXThis architecture makes it possible to implement PPP multilink in a natural and straightforward way, by allowing more than one channel to be linked to each ppp network interface unit. The generic layer is responsible for splitting datagrams on transmit and recombining them on receive.”h]”hXThis architecture makes it possible to implement PPP multilink in a natural and straightforward way, by allowing more than one channel to be linked to each ppp network interface unit. The generic layer is responsible for splitting datagrams on transmit and recombining them on receive.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´K#hhÊh²hubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒPPP channel API”h]”hŒPPP channel API”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj*h²hh³hÇh´K+ubhä)�”}”(hŒ’See include/linux/ppp_channel.h for the declaration of the types and functions used to communicate between the generic PPP layer and PPP channels.”h]”hŒ’See include/linux/ppp_channel.h for the declaration of the types and functions used to communicate between the generic PPP layer and PPP channels.”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´K-hj*h²hubhä)�”}”(hŒdEach channel has to provide two functions to the generic PPP layer, via the ppp_channel.ops pointer:”h]”hŒdEach channel has to provide two functions to the generic PPP layer, via the ppp_channel.ops pointer:”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´K1hj*h²hubj2)�”}”(hhh]”(j7)�”}”(hXÃstart_xmit() is called by the generic layer when it has a frame to send. The channel has the option of rejecting the frame for flow-control reasons. In this case, start_xmit() should return 0 and the channel should call the ppp_output_wakeup() function at a later time when it can accept frames again, and the generic layer will then attempt to retransmit the rejected frame(s). If the frame is accepted, the start_xmit() function should return 1. ”h]”hä)�”}”(hXÂstart_xmit() is called by the generic layer when it has a frame to send. The channel has the option of rejecting the frame for flow-control reasons. In this case, start_xmit() should return 0 and the channel should call the ppp_output_wakeup() function at a later time when it can accept frames again, and the generic layer will then attempt to retransmit the rejected frame(s). If the frame is accepted, the start_xmit() function should return 1.”h]”hXÂstart_xmit() is called by the generic layer when it has a frame to send. The channel has the option of rejecting the frame for flow-control reasons. In this case, start_xmit() should return 0 and the channel should call the ppp_output_wakeup() function at a later time when it can accept frames again, and the generic layer will then attempt to retransmit the rejected frame(s). If the frame is accepted, the start_xmit() function should return 1.”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´K4hjZubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjWh²hh³hÇh´Nubj7)�”}”(hX:ioctl() provides an interface which can be used by a user-space program to control aspects of the channel's behaviour. This procedure will be called when a user-space program does an ioctl system call on an instance of /dev/ppp which is bound to the channel. (Usually it would only be pppd which would do this.) ”h]”hä)�”}”(hX9ioctl() provides an interface which can be used by a user-space program to control aspects of the channel's behaviour. This procedure will be called when a user-space program does an ioctl system call on an instance of /dev/ppp which is bound to the channel. (Usually it would only be pppd which would do this.)”h]”hX;ioctl() provides an interface which can be used by a user-space program to control aspects of the channel’s behaviour. This procedure will be called when a user-space program does an ioctl system call on an instance of /dev/ppp which is bound to the channel. (Usually it would only be pppd which would do this.)”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Kprivate_data field to point to a separate object for each open instance of /dev/ppp. In this way an effect similar to Solaris' clone open is obtained, allowing us to control an arbitrary number of PPP interfaces and channels without having to fill up /dev with hundreds of device names.”h]”hXeThe PPP generic layer exports a character device interface called /dev/ppp. This is used by pppd to control PPP interface units and channels. Although there is only one /dev/ppp, each open instance of /dev/ppp acts independently and can be attached either to a PPP unit or a PPP channel. This is achieved using the file->private_data field to point to a separate object for each open instance of /dev/ppp. In this way an effect similar to Solaris’ clone open is obtained, allowing us to control an arbitrary number of PPP interfaces and channels without having to fill up /dev with hundreds of device names.”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´KýhjÍh²hubhä)�”}”(hXãWhen /dev/ppp is opened, a new instance is created which is initially unattached. Using an ioctl call, it can then be attached to an existing unit, attached to a newly-created unit, or attached to an existing channel. An instance attached to a unit can be used to send and receive PPP control frames, using the read() and write() system calls, along with poll() if necessary. Similarly, an instance attached to a channel can be used to send and receive PPP frames on that channel.”h]”hXãWhen /dev/ppp is opened, a new instance is created which is initially unattached. Using an ioctl call, it can then be attached to an existing unit, attached to a newly-created unit, or attached to an existing channel. An instance attached to a unit can be used to send and receive PPP control frames, using the read() and write() system calls, along with poll() if necessary. Similarly, an instance attached to a channel can be used to send and receive PPP frames on that channel.”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MhjÍh²hubhä)�”}”(hXÈIn multilink terms, the unit represents the bundle, while the channels represent the individual physical links. Thus, a PPP frame sent by a write to the unit (i.e., to an instance of /dev/ppp attached to the unit) will be subject to bundle-level compression and to fragmentation across the individual links (if multilink is in use). In contrast, a PPP frame sent by a write to the channel will be sent as-is on that channel, without any multilink header.”h]”hXÈIn multilink terms, the unit represents the bundle, while the channels represent the individual physical links. Thus, a PPP frame sent by a write to the unit (i.e., to an instance of /dev/ppp attached to the unit) will be subject to bundle-level compression and to fragmentation across the individual links (if multilink is in use). In contrast, a PPP frame sent by a write to the channel will be sent as-is on that channel, without any multilink header.”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MhjÍh²hubhä)�”}”(hXA channel is not initially attached to any unit. In this state it can be used for PPP negotiation but not for the transfer of data packets. It can then be connected to a PPP unit with an ioctl call, which makes it available to send and receive data packets for that unit.”h]”hXA channel is not initially attached to any unit. In this state it can be used for PPP negotiation but not for the transfer of data packets. It can then be connected to a PPP unit with an ioctl call, which makes it available to send and receive data packets for that unit.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MhjÍh²hubhä)�”}”(hŒáThe ioctl calls which are available on an instance of /dev/ppp depend on whether it is unattached, attached to a PPP interface, or attached to a PPP channel. The ioctl calls which are available on an unattached instance are:”h]”hŒáThe ioctl calls which are available on an instance of /dev/ppp depend on whether it is unattached, attached to a PPP interface, or attached to a PPP channel. The ioctl calls which are available on an unattached instance are:”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MhjÍh²hubj2)�”}”(hhh]”(j7)�”}”(hX\PPPIOCNEWUNIT creates a new PPP interface and makes this /dev/ppp instance the "owner" of the interface. The argument should point to an int which is the desired unit number if >= 0, or -1 to assign the lowest unused unit number. Being the owner of the interface means that the interface will be shut down if this instance of /dev/ppp is closed. ”h]”hä)�”}”(hX[PPPIOCNEWUNIT creates a new PPP interface and makes this /dev/ppp instance the "owner" of the interface. The argument should point to an int which is the desired unit number if >= 0, or -1 to assign the lowest unused unit number. Being the owner of the interface means that the interface will be shut down if this instance of /dev/ppp is closed.”h]”hX_PPPIOCNEWUNIT creates a new PPP interface and makes this /dev/ppp instance the “ownerâ€� of the interface. The argument should point to an int which is the desired unit number if >= 0, or -1 to assign the lowest unused unit number. Being the owner of the interface means that the interface will be shut down if this instance of /dev/ppp is closed.”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M"hj'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hj$h²hh³hÇh´Nubj7)�”}”(hŒÃPPPIOCATTACH attaches this instance to an existing PPP interface. The argument should point to an int containing the unit number. This does not make this instance the owner of the PPP interface. ”h]”hä)�”}”(hŒÂPPPIOCATTACH attaches this instance to an existing PPP interface. The argument should point to an int containing the unit number. This does not make this instance the owner of the PPP interface.”h]”hŒÂPPPIOCATTACH attaches this instance to an existing PPP interface. The argument should point to an int containing the unit number. This does not make this instance the owner of the PPP interface.”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M)hj?ubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hj$h²hh³hÇh´Nubj7)�”}”(hŒ„PPPIOCATTCHAN attaches this instance to an existing PPP channel. The argument should point to an int containing the channel number. ”h]”hä)�”}”(hŒƒPPPIOCATTCHAN attaches this instance to an existing PPP channel. The argument should point to an int containing the channel number.”h]”hŒƒPPPIOCATTCHAN attaches this instance to an existing PPP channel. The argument should point to an int containing the channel number.”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M-hjWubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hj$h²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”jøjùuh1j1h³hÇh´M"hjÍh²hubhä)�”}”(hŒOThe ioctl calls available on an instance of /dev/ppp attached to a channel are:”h]”hŒOThe ioctl calls available on an instance of /dev/ppp attached to a channel are:”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M0hjÍh²hubj2)�”}”(hhh]”(j7)�”}”(hX PPPIOCCONNECT connects this channel to a PPP interface. The argument should point to an int containing the interface unit number. It will return an EINVAL error if the channel is already connected to an interface, or ENXIO if the requested interface does not exist. ”h]”hä)�”}”(hX PPPIOCCONNECT connects this channel to a PPP interface. The argument should point to an int containing the interface unit number. It will return an EINVAL error if the channel is already connected to an interface, or ENXIO if the requested interface does not exist.”h]”hX PPPIOCCONNECT connects this channel to a PPP interface. The argument should point to an int containing the interface unit number. It will return an EINVAL error if the channel is already connected to an interface, or ENXIO if the requested interface does not exist.”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M3hj†ubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjƒh²hh³hÇh´Nubj7)�”}”(hŒ¨PPPIOCDISCONN disconnects this channel from the PPP interface that it is connected to. It will return an EINVAL error if the channel is not connected to an interface. ”h]”hä)�”}”(hŒ§PPPIOCDISCONN disconnects this channel from the PPP interface that it is connected to. It will return an EINVAL error if the channel is not connected to an interface.”h]”hŒ§PPPIOCDISCONN disconnects this channel from the PPP interface that it is connected to. It will return an EINVAL error if the channel is not connected to an interface.”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M9hjžubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjƒh²hh³hÇh´Nubj7)�”}”(hX¹PPPIOCBRIDGECHAN bridges a channel with another. The argument should point to an int containing the channel number of the channel to bridge to. Once two channels are bridged, frames presented to one channel by ppp_input() are passed to the bridge instance for onward transmission. This allows frames to be switched from one channel into another: for example, to pass PPPoE frames into a PPPoL2TP session. Since channel bridging interrupts the normal ppp_input() path, a given channel may not be part of a bridge at the same time as being part of a unit. This ioctl will return an EALREADY error if the channel is already part of a bridge or unit, or ENXIO if the requested channel does not exist. ”h]”hä)�”}”(hX¸PPPIOCBRIDGECHAN bridges a channel with another. The argument should point to an int containing the channel number of the channel to bridge to. Once two channels are bridged, frames presented to one channel by ppp_input() are passed to the bridge instance for onward transmission. This allows frames to be switched from one channel into another: for example, to pass PPPoE frames into a PPPoL2TP session. Since channel bridging interrupts the normal ppp_input() path, a given channel may not be part of a bridge at the same time as being part of a unit. This ioctl will return an EALREADY error if the channel is already part of a bridge or unit, or ENXIO if the requested channel does not exist.”h]”hX¸PPPIOCBRIDGECHAN bridges a channel with another. The argument should point to an int containing the channel number of the channel to bridge to. Once two channels are bridged, frames presented to one channel by ppp_input() are passed to the bridge instance for onward transmission. This allows frames to be switched from one channel into another: for example, to pass PPPoE frames into a PPPoL2TP session. Since channel bridging interrupts the normal ppp_input() path, a given channel may not be part of a bridge at the same time as being part of a unit. This ioctl will return an EALREADY error if the channel is already part of a bridge or unit, or ENXIO if the requested channel does not exist.”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M=hj¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjƒh²hh³hÇh´Nubj7)�”}”(hŒ¯PPPIOCUNBRIDGECHAN performs the inverse of PPPIOCBRIDGECHAN, unbridging a channel pair. This ioctl will return an EINVAL error if the channel does not form part of a bridge. ”h]”hä)�”}”(hŒ®PPPIOCUNBRIDGECHAN performs the inverse of PPPIOCBRIDGECHAN, unbridging a channel pair. This ioctl will return an EINVAL error if the channel does not form part of a bridge.”h]”hŒ®PPPIOCUNBRIDGECHAN performs the inverse of PPPIOCBRIDGECHAN, unbridging a channel pair. This ioctl will return an EINVAL error if the channel does not form part of a bridge.”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MIhjÎubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjƒh²hh³hÇh´Nubj7)�”}”(hŒEAll other ioctl commands are passed to the channel ioctl() function. ”h]”hä)�”}”(hŒDAll other ioctl commands are passed to the channel ioctl() function.”h]”hŒDAll other ioctl commands are passed to the channel ioctl() function.”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MMhjæubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjƒh²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”jøjùuh1j1h³hÇh´M3hjÍh²hubhä)�”}”(hŒ\The ioctl calls that are available on an instance that is attached to an interface unit are:”h]”hŒ\The ioctl calls that are available on an instance that is attached to an interface unit are:”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MOhjÍh²hubj2)�”}”(hhh]”(j7)�”}”(hŒ„PPPIOCSMRU sets the MRU (maximum receive unit) for the interface. The argument should point to an int containing the new MRU value. ”h]”hä)�”}”(hŒƒPPPIOCSMRU sets the MRU (maximum receive unit) for the interface. The argument should point to an int containing the new MRU value.”h]”hŒƒPPPIOCSMRU sets the MRU (maximum receive unit) for the interface. The argument should point to an int containing the new MRU value.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MRhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjh²hh³hÇh´Nubj7)�”}”(hX`PPPIOCSFLAGS sets flags which control the operation of the interface. The argument should be a pointer to an int containing the new flags value. The bits in the flags value that can be set are: ================ ======================================== SC_COMP_TCP enable transmit TCP header compression SC_NO_TCP_CCID disable connection-id compression for TCP header compression SC_REJ_COMP_TCP disable receive TCP header decompression SC_CCP_OPEN Compression Control Protocol (CCP) is open, so inspect CCP packets SC_CCP_UP CCP is up, may (de)compress packets SC_LOOP_TRAFFIC send IP traffic to pppd SC_MULTILINK enable PPP multilink fragmentation on transmitted packets SC_MP_SHORTSEQ expect short multilink sequence numbers on received multilink fragments SC_MP_XSHORTSEQ transmit short multilink sequence nos. ================ ======================================== The values of these flags are defined in . Note that the values of the SC_MULTILINK, SC_MP_SHORTSEQ and SC_MP_XSHORTSEQ bits are ignored if the CONFIG_PPP_MULTILINK option is not selected. ”h]”(hä)�”}”(hŒÃPPPIOCSFLAGS sets flags which control the operation of the interface. The argument should be a pointer to an int containing the new flags value. The bits in the flags value that can be set are:”h]”hŒÃPPPIOCSFLAGS sets flags which control the operation of the interface. The argument should be a pointer to an int containing the new flags value. The bits in the flags value that can be set are:”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MUhj-ubhÞ)�”}”(hXo================ ======================================== SC_COMP_TCP enable transmit TCP header compression SC_NO_TCP_CCID disable connection-id compression for TCP header compression SC_REJ_COMP_TCP disable receive TCP header decompression SC_CCP_OPEN Compression Control Protocol (CCP) is open, so inspect CCP packets SC_CCP_UP CCP is up, may (de)compress packets SC_LOOP_TRAFFIC send IP traffic to pppd SC_MULTILINK enable PPP multilink fragmentation on transmitted packets SC_MP_SHORTSEQ expect short multilink sequence numbers on received multilink fragments SC_MP_XSHORTSEQ transmit short multilink sequence nos. ================ ======================================== ”h]”hŒtable”“”)�”}”(hhh]”hŒtgroup”“”)�”}”(hhh]”(hŒcolspec”“”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jMhjJubjN)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K(uh1jMhjJubhŒtbody”“”)�”}”(hhh]”(hŒrow”“”)�”}”(hhh]”(hŒentry”“”)�”}”(hhh]”hä)�”}”(hŒ SC_COMP_TCP”h]”hŒ SC_COMP_TCP”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M[hjoubah}”(h]”h ]”h"]”h$]”h&]”uh1jmhjjubjn)�”}”(hhh]”hä)�”}”(hŒ&enable transmit TCP header compression”h]”hŒ&enable transmit TCP header compression”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M[hj†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jmhjjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhhjeubji)�”}”(hhh]”(jn)�”}”(hhh]”hä)�”}”(hŒSC_NO_TCP_CCID”h]”hŒSC_NO_TCP_CCID”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M\hj¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1jmhj£ubjn)�”}”(hhh]”hä)�”}”(hŒ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jmhj$ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhhjeubeh}”(h]”h ]”h"]”h$]”h&]”uh1jchjJubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jHhjEubah}”(h]”h ]”h"]”h$]”h&]”uh1jChj?ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MZhj-ubhä)�”}”(hŒÐThe values of these flags are defined in . Note that the values of the SC_MULTILINK, SC_MP_SHORTSEQ and SC_MP_XSHORTSEQ bits are ignored if the CONFIG_PPP_MULTILINK option is not selected.”h]”hŒÐThe values of these flags are defined in . Note that the values of the SC_MULTILINK, SC_MP_SHORTSEQ and SC_MP_XSHORTSEQ bits are ignored if the CONFIG_PPP_MULTILINK option is not selected.”…”�”}”(hjt h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Mjhj-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hjh²hh³hÇh´Nubj7)�”}”(hXžPPPIOCGFLAGS returns the value of the status/control flags for the interface unit. The argument should point to an int where the ioctl will store the flags value. As well as the values listed above for PPPIOCSFLAGS, the following bits may be set in the returned value: ================ ========================================= SC_COMP_RUN CCP compressor is running SC_DECOMP_RUN CCP decompressor is running SC_DC_ERROR CCP decompressor detected non-fatal error SC_DC_FERROR CCP decompressor detected fatal error ================ ========================================= ”h]”(hä)�”}”(hXPPPIOCGFLAGS returns the value of the status/control flags for the interface unit. The argument should point to an int where the ioctl will store the flags value. As well as the values listed above for PPPIOCSFLAGS, the following bits may be set in the returned value:”h]”hXPPPIOCGFLAGS returns the value of the status/control flags for the interface unit. The argument should point to an int where the ioctl will store the flags value. As well as the values listed above for PPPIOCSFLAGS, the following bits may be set in the returned value:”…”�”}”(hjŒ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Mohjˆ ubhÞ)�”}”(hXj================ ========================================= SC_COMP_RUN CCP compressor is running SC_DECOMP_RUN CCP decompressor is running SC_DC_ERROR CCP decompressor detected non-fatal error SC_DC_FERROR CCP decompressor detected fatal error ================ ========================================= ”h]”jD)�”}”(hhh]”jI)�”}”(hhh]”(jN)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jMhj¡ ubjN)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K)uh1jMhj¡ ubjd)�”}”(hhh]”(ji)�”}”(hhh]”(jn)�”}”(hhh]”hä)�”}”(hŒ SC_COMP_RUN”h]”hŒ SC_COMP_RUN”…”�”}”(hjÁ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Muhj¾ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jmhj» ubjn)�”}”(hhh]”hä)�”}”(hŒCCP compressor is running”h]”hŒCCP compressor is running”…”�”}”(hjØ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MuhjÕ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jmhj» ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhhj¸ ubji)�”}”(hhh]”(jn)�”}”(hhh]”hä)�”}”(hŒ SC_DECOMP_RUN”h]”hŒ SC_DECOMP_RUN”…”�”}”(hjø h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Mvhjõ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jmhjò ubjn)�”}”(hhh]”hä)�”}”(hŒCCP decompressor is running”h]”hŒCCP decompressor is running”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Mvhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jmhjò ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhhj¸ ubji)�”}”(hhh]”(jn)�”}”(hhh]”hä)�”}”(hŒ SC_DC_ERROR”h]”hŒ SC_DC_ERROR”…”�”}”(hj/ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Mwhj, ubah}”(h]”h ]”h"]”h$]”h&]”uh1jmhj) ubjn)�”}”(hhh]”hä)�”}”(hŒ)CCP decompressor detected non-fatal error”h]”hŒ)CCP decompressor detected non-fatal error”…”�”}”(hjF h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MwhjC ubah}”(h]”h ]”h"]”h$]”h&]”uh1jmhj) ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhhj¸ ubji)�”}”(hhh]”(jn)�”}”(hhh]”hä)�”}”(hŒ SC_DC_FERROR”h]”hŒ SC_DC_FERROR”…”�”}”(hjf h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Mxhjc ubah}”(h]”h ]”h"]”h$]”h&]”uh1jmhj` ubjn)�”}”(hhh]”hä)�”}”(hŒ%CCP decompressor detected fatal error”h]”hŒ%CCP decompressor detected fatal error”…”�”}”(hj} h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Mxhjz ubah}”(h]”h ]”h"]”h$]”h&]”uh1jmhj` ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhhj¸ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jchj¡ ubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jHhjž ubah}”(h]”h ]”h"]”h$]”h&]”uh1jChjš ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mthjˆ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hjh²hh³hÇh´Nubj7)�”}”(hXÖPPPIOCSCOMPRESS sets the parameters for packet compression or decompression. The argument should point to a ppp_option_data structure (defined in ), which contains a pointer/length pair which should describe a block of memory containing a CCP option specifying a compression method and its parameters. The ppp_option_data struct also contains a ``transmit`` field. If this is 0, the ioctl will affect the receive path, otherwise the transmit path. ”h]”hä)�”}”(hXÕPPPIOCSCOMPRESS sets the parameters for packet compression or decompression. The argument should point to a ppp_option_data structure (defined in ), which contains a pointer/length pair which should describe a block of memory containing a CCP option specifying a compression method and its parameters. The ppp_option_data struct also contains a ``transmit`` field. If this is 0, the ioctl will affect the receive path, otherwise the transmit path.”h]”(hXnPPPIOCSCOMPRESS sets the parameters for packet compression or decompression. The argument should point to a ppp_option_data structure (defined in ), which contains a pointer/length pair which should describe a block of memory containing a CCP option specifying a compression method and its parameters. The ppp_option_data struct also contains a ”…”�”}”(hjº h²hh³Nh´Nubj)�”}”(hŒ ``transmit``”h]”hŒtransmit”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjº ubhŒ[ field. If this is 0, the ioctl will affect the receive path, otherwise the transmit path.”…”�”}”(hjº h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M{hj¶ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjh²hh³hÇh´Nubj7)�”}”(hŒdPPPIOCGUNIT returns, in the int pointed to by the argument, the unit number of this interface unit. ”h]”hä)�”}”(hŒcPPPIOCGUNIT returns, in the int pointed to by the argument, the unit number of this interface unit.”h]”hŒcPPPIOCGUNIT returns, in the int pointed to by the argument, the unit number of this interface unit.”…”�”•jC}”(hjä h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M„hjà ubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjh²hh³hÇh´Nubj7)�”}”(hXsPPPIOCSDEBUG sets the debug flags for the interface to the value in the int pointed to by the argument. Only the least significant bit is used; if this is 1 the generic layer will print some debug messages during its operation. This is only intended for debugging the generic PPP layer code; it is generally not helpful for working out why a PPP connection is failing. ”h]”hä)�”}”(hXrPPPIOCSDEBUG sets the debug flags for the interface to the value in the int pointed to by the argument. Only the least significant bit is used; if this is 1 the generic layer will print some debug messages during its operation. This is only intended for debugging the generic PPP layer code; it is generally not helpful for working out why a PPP connection is failing.”h]”hXrPPPIOCSDEBUG sets the debug flags for the interface to the value in the int pointed to by the argument. Only the least significant bit is used; if this is 1 the generic layer will print some debug messages during its operation. This is only intended for debugging the generic PPP layer code; it is generally not helpful for working out why a PPP connection is failing.”…”�”}”(hjü h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M‡hjø ubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjh²hh³hÇh´Nubj7)�”}”(hŒ^PPPIOCGDEBUG returns the debug flags for the interface in the int pointed to by the argument. ”h]”hä)�”}”(hŒ]PPPIOCGDEBUG returns the debug flags for the interface in the int pointed to by the argument.”h]”hŒ]PPPIOCGDEBUG returns the debug flags for the interface in the int pointed to by the argument.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MŽhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjh²hh³hÇh´Nubj7)�”}”(hXÚPPPIOCGIDLE returns the time, in seconds, since the last data packets were sent and received. The argument should point to a ppp_idle structure (defined in ). If the CONFIG_PPP_FILTER option is enabled, the set of packets which reset the transmit and receive idle timers is restricted to those which pass the ``active`` packet filter. Two versions of this command exist, to deal with user space expecting times as either 32-bit or 64-bit time_t seconds. ”h]”hä)�”}”(hXÙPPPIOCGIDLE returns the time, in seconds, since the last data packets were sent and received. The argument should point to a ppp_idle structure (defined in ). If the CONFIG_PPP_FILTER option is enabled, the set of packets which reset the transmit and receive idle timers is restricted to those which pass the ``active`` packet filter. Two versions of this command exist, to deal with user space expecting times as either 32-bit or 64-bit time_t seconds.”h]”(hXIPPPIOCGIDLE returns the time, in seconds, since the last data packets were sent and received. The argument should point to a ppp_idle structure (defined in ). If the CONFIG_PPP_FILTER option is enabled, the set of packets which reset the transmit and receive idle timers is restricted to those which pass the ”…”�”}”(hj, h²hh³Nh´Nubj)�”}”(hŒ ``active``”h]”hŒactive”…”�”}”(hj4 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj, ubhŒ† packet filter. Two versions of this command exist, to deal with user space expecting times as either 32-bit or 64-bit time_t seconds.”…”�”}”(hj, h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M‘hj( ubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjh²hh³hÇh´Nubj7)�”}”(hX®PPPIOCSMAXCID sets the maximum connection-ID parameter (and thus the number of connection slots) for the TCP header compressor and decompressor. The lower 16 bits of the int pointed to by the argument specify the maximum connection-ID for the compressor. If the upper 16 bits of that int are non-zero, they specify the maximum connection-ID for the decompressor, otherwise the decompressor's maximum connection-ID is set to 15. ”h]”hä)�”}”(hX­PPPIOCSMAXCID sets the maximum connection-ID parameter (and thus the number of connection slots) for the TCP header compressor and decompressor. The lower 16 bits of the int pointed to by the argument specify the maximum connection-ID for the compressor. If the upper 16 bits of that int are non-zero, they specify the maximum connection-ID for the decompressor, otherwise the decompressor's maximum connection-ID is set to 15.”h]”hX¯PPPIOCSMAXCID sets the maximum connection-ID parameter (and thus the number of connection slots) for the TCP header compressor and decompressor. The lower 16 bits of the int pointed to by the argument specify the maximum connection-ID for the compressor. If the upper 16 bits of that int are non-zero, they specify the maximum connection-ID for the decompressor, otherwise the decompressor’s maximum connection-ID is set to 15.”…”�”}”(hjV h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MšhjR ubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjh²hh³hÇh´Nubj7)�”}”(hXAPPPIOCSNPMODE sets the network-protocol mode for a given network protocol. The argument should point to an npioctl struct (defined in ). The ``protocol`` field gives the PPP protocol number for the protocol to be affected, and the ``mode`` field specifies what to do with packets for that protocol: ============= ============================================== NPMODE_PASS normal operation, transmit and receive packets NPMODE_DROP silently drop packets for this protocol NPMODE_ERROR drop packets and return an error on transmit NPMODE_QUEUE queue up packets for transmit, drop received packets ============= ============================================== At present NPMODE_ERROR and NPMODE_QUEUE have the same effect as NPMODE_DROP. ”h]”(hä)�”}”(hX?PPPIOCSNPMODE sets the network-protocol mode for a given network protocol. The argument should point to an npioctl struct (defined in ). The ``protocol`` field gives the PPP protocol number for the protocol to be affected, and the ``mode`` field specifies what to do with packets for that protocol:”h]”(hŒ¢PPPIOCSNPMODE sets the network-protocol mode for a given network protocol. The argument should point to an npioctl struct (defined in ). The ”…”�”}”(hjn h²hh³Nh´Nubj)�”}”(hŒ ``protocol``”h]”hŒprotocol”…”�”}”(hjv h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjn ubhŒN field gives the PPP protocol number for the protocol to be affected, and the ”…”�”}”(hjn h²hh³Nh´Nubj)�”}”(hŒ``mode``”h]”hŒmode”…”�”}”(hjˆ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjn ubhŒ; field specifies what to do with packets for that protocol:”…”�”}”(hjn h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M¢hjj ubhÞ)�”}”(hX‡============= ============================================== NPMODE_PASS normal operation, transmit and receive packets NPMODE_DROP silently drop packets for this protocol NPMODE_ERROR drop packets and return an error on transmit NPMODE_QUEUE queue up packets for transmit, drop received packets ============= ============================================== ”h]”jD)�”}”(hhh]”jI)�”}”(hhh]”(jN)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jMhj§ ubjN)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K.uh1jMhj§ ubjd)�”}”(hhh]”(ji)�”}”(hhh]”(jn)�”}”(hhh]”hä)�”}”(hŒ NPMODE_PASS”h]”hŒ NPMODE_PASS”…”�”}”(hjÇ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M©hjÄ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jmhjÁ ubjn)�”}”(hhh]”hä)�”}”(hŒ.normal operation, transmit and receive packets”h]”hŒ.normal operation, transmit and receive packets”…”�”}”(hjÞ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M©hjÛ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jmhjÁ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhhj¾ ubji)�”}”(hhh]”(jn)�”}”(hhh]”hä)�”}”(hŒ NPMODE_DROP”h]”hŒ NPMODE_DROP”…”�”}”(hjþ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Mªhjû ubah}”(h]”h ]”h"]”h$]”h&]”uh1jmhjø ubjn)�”}”(hhh]”hä)�”}”(hŒ'silently drop packets for this protocol”h]”hŒ'silently drop packets for this protocol”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´Mªhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jmhjø ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhhj¾ ubji)�”}”(hhh]”(jn)�”}”(hhh]”hä)�”}”(hŒ NPMODE_ERROR”h]”hŒ NPMODE_ERROR”…”�”}”(hj5 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M«hj2 ubah}”(h]”h ]”h"]”h$]”h&]”uh1jmhj/ ubjn)�”}”(hhh]”hä)�”}”(hŒ,drop packets and return an error on transmit”h]”hŒ,drop packets and return an error on transmit”…”�”}”(hjL h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M«hjI ubah}”(h]”h ]”h"]”h$]”h&]”uh1jmhj/ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhhj¾ ubji)�”}”(hhh]”(jn)�”}”(hhh]”hä)�”}”(hŒ NPMODE_QUEUE”h]”hŒ NPMODE_QUEUE”…”�”}”(hjl h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M¬hji ubah}”(h]”h ]”h"]”h$]”h&]”uh1jmhjf ubjn)�”}”(hhh]”hä)�”}”(hŒ4queue up packets for transmit, drop received packets”h]”hŒ4queue up packets for transmit, drop received packets”…”�”}”(hjƒ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M¬hj€ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jmhjf ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhhj¾ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jchj§ ubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jHhj¤ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jChj  ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M¨hjj ubhä)�”}”(hŒMAt present NPMODE_ERROR and NPMODE_QUEUE have the same effect as NPMODE_DROP.”h]”hŒMAt present NPMODE_ERROR and NPMODE_QUEUE have the same effect as NPMODE_DROP.”…”�”}”(hj¶ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M°hjj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hjh²hh³hÇh´Nubj7)�”}”(hX*PPPIOCGNPMODE returns the network-protocol mode for a given protocol. The argument should point to an npioctl struct with the ``protocol`` field set to the PPP protocol number for the protocol of interest. On return the ``mode`` field will be set to the network- protocol mode for that protocol. ”h]”hä)�”}”(hX)PPPIOCGNPMODE returns the network-protocol mode for a given protocol. The argument should point to an npioctl struct with the ``protocol`` field set to the PPP protocol number for the protocol of interest. On return the ``mode`` field will be set to the network- protocol mode for that protocol.”h]”(hŒPPPIOCGNPMODE returns the network-protocol mode for a given protocol. The argument should point to an npioctl struct with the ”…”�”}”(hjÎ h²hh³Nh´Nubj)�”}”(hŒ ``protocol``”h]”hŒprotocol”…”�”}”(hjÖ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÎ ubhŒS field set to the PPP protocol number for the protocol of interest. On return the ”…”�”}”(hjÎ h²hh³Nh´Nubj)�”}”(hŒ``mode``”h]”hŒmode”…”�”}”(hjè h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÎ ubhŒC field will be set to the network- protocol mode for that protocol.”…”�”}”(hjÎ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M³hjÊ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjh²hh³hÇh´Nubj7)�”}”(hX×PPPIOCSPASS and PPPIOCSACTIVE set the ``pass`` and ``active`` packet filters. These ioctls are only available if the CONFIG_PPP_FILTER option is selected. The argument should point to a sock_fprog structure (defined in ) containing the compiled BPF instructions for the filter. Packets are dropped if they fail the ``pass`` filter; otherwise, if they fail the ``active`` filter they are passed but they do not reset the transmit or receive idle timer. ”h]”hä)�”}”(hXÖPPPIOCSPASS and PPPIOCSACTIVE set the ``pass`` and ``active`` packet filters. These ioctls are only available if the CONFIG_PPP_FILTER option is selected. The argument should point to a sock_fprog structure (defined in ) containing the compiled BPF instructions for the filter. Packets are dropped if they fail the ``pass`` filter; otherwise, if they fail the ``active`` filter they are passed but they do not reset the transmit or receive idle timer.”h]”(hŒ&PPPIOCSPASS and PPPIOCSACTIVE set the ”…”�”}”(hj h²hh³Nh´Nubj)�”}”(hŒ``pass``”h]”hŒpass”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubhŒ and ”…”�”}”(hj h²hh³Nh´Nubj)�”}”(hŒ ``active``”h]”hŒactive”…”�”}”(hj$ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubhX packet filters. These ioctls are only available if the CONFIG_PPP_FILTER option is selected. The argument should point to a sock_fprog structure (defined in ) containing the compiled BPF instructions for the filter. Packets are dropped if they fail the ”…”�”}”(hj h²hh³Nh´Nubj)�”}”(hŒ``pass``”h]”hŒpass”…”�”}”(hj6 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubhŒ% filter; otherwise, if they fail the ”…”�”}”(hj h²hh³Nh´Nubj)�”}”(hŒ ``active``”h]”hŒactive”…”�”}”(hjH h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubhŒQ filter they are passed but they do not reset the transmit or receive idle timer.”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´M¹hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjh²hh³hÇh´Nubj7)�”}”(hXoPPPIOCSMRRU enables or disables multilink processing for received packets and sets the multilink MRRU (maximum reconstructed receive unit). The argument should point to an int containing the new MRRU value. If the MRRU value is 0, processing of received multilink fragments is disabled. This ioctl is only available if the CONFIG_PPP_MULTILINK option is selected. ”h]”hä)�”}”(hXnPPPIOCSMRRU enables or disables multilink processing for received packets and sets the multilink MRRU (maximum reconstructed receive unit). The argument should point to an int containing the new MRRU value. If the MRRU value is 0, processing of received multilink fragments is disabled. This ioctl is only available if the CONFIG_PPP_MULTILINK option is selected.”h]”hXnPPPIOCSMRRU enables or disables multilink processing for received packets and sets the multilink MRRU (maximum reconstructed receive unit). The argument should point to an int containing the new MRRU value. If the MRRU value is 0, processing of received multilink fragments is disabled. This ioctl is only available if the CONFIG_PPP_MULTILINK option is selected.”…”�”}”(hjj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MÁhjf ubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjh²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”jøjùuh1j1h³hÇh´MRhjÍh²hubhä)�”}”(hŒLast modified: 7-feb-2002”h]”hŒLast modified: 7-feb-2002”…”�”}”(hj„ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hãh³hÇh´MÈhjÍh²hubeh}”(h]”Œinterface-to-pppd”ah ]”h"]”Œinterface to pppd”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´Kûubeh}”(h]”Œ(ppp-generic-driver-and-channel-interface”ah ]”h"]”Œ(ppp generic driver and channel interface”ah$]”h&]”uh1hÈhhh²hh³hÇh´Kubeh}”(h]”h ]”h"]”h$]”h&]”Œsource”hÇuh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)�”}”(hÍNŒ generator”NŒ datestamp”NŒ source_link”NŒ source_url”NŒ toc_backlinks”jmŒfootnote_backlinks”KŒ sectnum_xform”KŒstrip_comments”NŒstrip_elements_with_classes”NŒ strip_classes”NŒ report_level”KŒ halt_level”KŒexit_status_level”KŒdebug”NŒwarning_stream”NŒ traceback”ˆŒinput_encoding”Œ utf-8-sig”Œinput_encoding_error_handler”Œstrict”Œoutput_encoding”Œutf-8”Œoutput_encoding_error_handler”jÄ Œerror_encoding”Œutf-8”Œerror_encoding_error_handler”Œbackslashreplace”Œ language_code”Œen”Œrecord_dependencies”NŒconfig”NŒ id_prefix”hŒauto_id_prefix”Œid”Œ dump_settings”NŒdump_internals”NŒdump_transforms”NŒdump_pseudo_xml”NŒexpose_internals”NŒstrict_visitor”NŒ_disable_config”NŒ_source”hÇŒ _destination”NŒ _config_files”]”Œ7/var/lib/git/docbuild/linux/Documentation/docutils.conf”aŒfile_insertion_enabled”ˆŒ raw_enabled”KŒline_length_limit”M'Œpep_references”NŒ pep_base_url”Œhttps://peps.python.org/”Œpep_file_url_template”Œpep-%04d”Œrfc_references”NŒ rfc_base_url”Œ&https://datatracker.ietf.org/doc/html/”Œ tab_width”KŒtrim_footnote_reference_space”‰Œsyntax_highlight”Œlong”Œ smart_quotes”ˆŒsmartquotes_locales”]”Œcharacter_level_inline_markup”‰Œdoctitle_xform”‰Œ docinfo_xform”KŒsectsubtitle_xform”‰Œ image_loading”Œlink”Œembed_stylesheet”‰Œcloak_email_addresses”ˆŒsection_self_link”‰Œenv”NubŒreporter”NŒindirect_targets”]”Œsubstitution_defs”}”Œsubstitution_names”}”Œrefnames”}”Œrefids”}”Œnameids”}”(jŸ jœ jLjIj�jšjÊjÇj— j” uŒ nametypes”}”(jŸ ‰jL‰j�‰jʉj— ‰uh}”(jœ hÊjIj*jšjOjÇj j” jÍuŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”…”R”Œparse_messages”]”Œtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nh²hub.