]> git.ozlabs.org Git - ppp.git/log
ppp.git
13 months agoFurther updates to README for 2.5.0 release ppp-2.5.0
Paul Mackerras [Sat, 10 Dec 2022 03:26:12 +0000 (14:26 +1100)]
Further updates to README for 2.5.0 release

History from the 2.4.x series is moved to Changes-2.4.

Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
13 months agopppd/tty.c: Use unsigned constants for ACCM calculations
Paul Mackerras [Sat, 18 Mar 2023 08:44:13 +0000 (19:44 +1100)]
pppd/tty.c: Use unsigned constants for ACCM calculations

Use unsigned constants to avoid integer overflows when shifting, and
because xmit_accm[] is an array of unsigned values.

Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
13 months agoradius: Fix list traversal in rc_avpair_insert
Paul Mackerras [Sat, 18 Mar 2023 07:14:04 +0000 (18:14 +1100)]
radius: Fix list traversal in rc_avpair_insert

In rc_avpair_insert, if the list element "p" is non-NULL but not
actually in the list "a", we can end up with this_node being NULL and
being dereferenced.

By changing the while test to this_node->next we avoid having
this_node being NULL; the loop will terminate when this_node == p or
this_node->next == NULL, which is what we want.

Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
13 months agochat: Fix loop condition to avoid possible 1-byte buffer overrun
Paul Mackerras [Sat, 18 Mar 2023 06:34:07 +0000 (17:34 +1100)]
chat: Fix loop condition to avoid possible 1-byte buffer overrun

Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
13 months agopppdump: Remove compression functions from local copy of zlib
Paul Mackerras [Sat, 18 Mar 2023 06:32:20 +0000 (17:32 +1100)]
pppdump: Remove compression functions from local copy of zlib

They aren't used (pppdump only needs decompression), and removing the
unused code avoids getting reports from automated tools about possible
errors in the unused code.

Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
13 months agoCI: add automatic tests, enable ASAN build&test (#399)
Ilya Shipitsin [Fri, 17 Mar 2023 23:23:43 +0000 (00:23 +0100)]
CI: add automatic tests, enable ASAN build&test (#399)

* CI: add automatic tests, enable ASAN build&test

Signed-off-by: Ilya Shipitsin <chipitsine@gmail.com>
13 months agoMerge pull request #409 from enaess/conf-fixes
Paul Mackerras [Fri, 17 Mar 2023 23:22:33 +0000 (10:22 +1100)]
Merge pull request #409 from enaess/conf-fixes

Additional fixes for various configure options (less frequently used) that broke

13 months agoFix compilation without ipv6cp support (#408)
Eivind Næss [Fri, 17 Mar 2023 22:52:33 +0000 (15:52 -0700)]
Fix compilation without ipv6cp support (#408)

You can't reference variables that aren't included in the compile.

Add #ifdef PPP_WITH_IPV6CP in the get_notifier_by_type function.

Signed-off-by: Eivind Næss <eivnaes@yahoo.com>
13 months agoAdd a --with-system-ca-path <path-to-ca-directory> option to configure (#406)
Eivind Næss [Fri, 17 Mar 2023 22:50:30 +0000 (15:50 -0700)]
Add a --with-system-ca-path <path-to-ca-directory> option to configure (#406)

Allow distributions to specify a default CA path. Fix for github issue #405.

Signed-off-by: Eivind Næss <eivnaes@yahoo.com>
13 months agoMerge pull request #404 from enaess/stdbool
Paul Mackerras [Fri, 17 Mar 2023 22:47:17 +0000 (09:47 +1100)]
Merge pull request #404 from enaess/stdbool

Removes autotools include guards for stdbool.h and friends

13 months agoradius plugin: add fclose operation to fix file pointer not closed after use (#401)
Bmo [Fri, 17 Mar 2023 22:20:43 +0000 (06:20 +0800)]
radius plugin: add fclose operation to fix file pointer not closed after use (#401)

Signed-off-by: Wei Xing <skyxwwalker@gmail.com>
Co-authored-by: Wei Xing <skyxwwalker@gmail.com>
13 months agoAdding 'extern "C" {' and '}' declarations to exported header files
Eivind Næss [Sat, 4 Mar 2023 05:47:11 +0000 (05:47 +0000)]
Adding 'extern "C" {' and '}' declarations to exported header files

Signed-off-by: Eivind Næss <eivnaes@yahoo.com>
13 months agoShould not require third party project to define HAVE_HEADER_H
Eivind Næss [Sat, 4 Mar 2023 03:03:16 +0000 (03:03 +0000)]
Should not require third party project to define HAVE_HEADER_H

Signed-off-by: Eivind Næss <eivnaes@yahoo.com>
13 months agoCompiling with --enable-mslanman is broken
Eivind Næss [Fri, 10 Mar 2023 00:20:03 +0000 (00:20 +0000)]
Compiling with --enable-mslanman is broken

Correcting the call to DesEncrypt() where needed.

Signed-off-by: Eivind Næss <eivnaes@yahoo.com>
13 months agoAdditional fixes for broken build
Eivind Næss [Thu, 9 Mar 2023 23:59:19 +0000 (23:59 +0000)]
Additional fixes for broken build

This change fixes the build when
- ./configure is run with --disable-plugins
- ./configure is run with --disable-peap --disable-eaptls
     --disable-microsoft-extensions

The latter disables the MPPE encryption too, but <pppd/crypto.h> is
still needed.

Signed-off-by: Eivind Næss <eivnaes@yahoo.com>
13 months agoFixing a few more memory leaks in chat.c
Robert Bartel [Sat, 11 Mar 2023 22:38:42 +0000 (22:38 +0000)]
Fixing a few more memory leaks in chat.c

Running Valgrind memcheck tool on chat.c while communicating with a
modem found additional memory leaks. These fixes plumb those.

Signed-off-by: Robert Bartel <r.bartel@gmx.net>
Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
13 months agoFixing buffer overflow issue in chat.c
Robert Bartel [Fri, 10 Mar 2023 18:31:52 +0000 (18:31 +0000)]
Fixing buffer overflow issue in chat.c

There were two issues here, the report_buffer is too small to hold the
value, and accessing the memory outside its bounds. The following fixes
was made:
- Expand the size of report_buffer to 4096 from 256, this is to account
  for handling of really long GSM USSD report strings
- Make sure to not to access memory outside the bounds of the buffer

Signed-off-by: Robert Bartel <r.bartel@gmx.net>
Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
13 months agoFix several issues uncovered by Coverity (#397)
Eivind Næss [Thu, 16 Mar 2023 23:13:25 +0000 (16:13 -0700)]
Fix several issues uncovered by Coverity (#397)

* Fix for coverity issue 436265, we should cap copy to size of destination buffer

Signed-off-by: Eivind Næss <eivnaes@yahoo.com>
* Fix for coverity issue 436262, llv6_ntoa() returns a pointer to a buffer that can be up to 64 bytes long; likely not a problem, but this will quiet coverity

Signed-off-by: Eivind Næss <eivnaes@yahoo.com>
* Fix for coverity issue 436251, not freeing path in the normal flow of the code

Signed-off-by: Eivind Næss <eivnaes@yahoo.com>
* Fixing coverity issue #436258, Digest maybe uninitialized in some paths of this code

Signed-off-by: Eivind Næss <eivnaes@yahoo.com>
* Fix for coverity issue 436254, forgot to free 's' before returning from the function?

Signed-off-by: Eivind Næss <eivnaes@yahoo.com>
* Fixing coverity issue #436251, memory leak in put_string() function

Signed-off-by: Eivind Næss <eivnaes@yahoo.com>
* Fixing coverity issue 436215, should copy at most sizeof(devname) bytes

Signed-off-by: Eivind Næss <eivnaes@yahoo.com>
* Fixing coverity issue #436203, if no authentication (or no accounting) server was found, we still need to free the allocated local instance

Signed-off-by: Eivind Næss <eivnaes@yahoo.com>
* Fixing coverity issue #436171, use of uninitialized variable

Signed-off-by: Eivind Næss <eivnaes@yahoo.com>
* Use of signed vs unsigned variable in printf for MD4Update

Signed-off-by: Eivind Næss <eivnaes@yahoo.com>
* Fixing coverity issue #436182, fixing possible buffer overrun in handling of PW_CLASS attribute

Signed-off-by: Eivind Næss <eivnaes@yahoo.com>
* Fixing coverity issue #436156

Signed-off-by: Eivind Næss <eivnaes@yahoo.com>
* Compile errors

Signed-off-by: Eivind Næss <eivnaes@yahoo.com>
[paulus@ozlabs.org - Squashed to avoid breaking bisection]

Signed-off-by: Eivind Næss <eivnaes@yahoo.com>
Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
13 months agoMerge pull request #386 from enaess/ppp-release
Paul Mackerras [Fri, 10 Mar 2023 03:35:29 +0000 (14:35 +1100)]
Merge pull request #386 from enaess/ppp-release

Few more changes before 2.5.0 release

13 months agopppd: Should check name, not ifname in ppp_set_ifname (#396)
Eivind Næss [Fri, 10 Mar 2023 01:48:49 +0000 (17:48 -0800)]
pppd: Should check name, not ifname in ppp_set_ifname (#396)

Signed-off-by: Eivind Næss <eivnaes@yahoo.com>
13 months agoFix out-of-bounds accesses to ZPasswordHash arrays (#395)
Eivind Næss [Mon, 6 Mar 2023 07:03:13 +0000 (23:03 -0800)]
Fix out-of-bounds accesses to ZPasswordHash arrays (#395)

* Add 'const' parameter to input arguments in crypto_ms.*

* Round ZPasswordHash buffers up to 24 bytes, as the DES MakeKey() function
  accesses ZPasswordHash[21]

Closes github issue #392

[paulus@ozlabs.org - tidied up headline and commit message]

Signed-off-by: Eivind Næss <eivnaes@yahoo.com>
14 months agoDisable building the plugins with static libraries (.a) files
Eivind Næss [Mon, 30 Jan 2023 16:39:15 +0000 (08:39 -0800)]
Disable building the plugins with static libraries (.a) files

Signed-off-by: Eivind Næss <eivnaes@yahoo.com>
14 months agoAdding copyright text to a few more header files.
Eivind Næss [Sat, 21 Jan 2023 22:44:16 +0000 (14:44 -0800)]
Adding copyright text to a few more header files.

Signed-off-by: Eivind Næss <eivnaes@yahoo.com>
14 months agoAdd LICENSE.* for GPLv2 and BSD licenses covered by this project
Eivind Næss [Sat, 21 Jan 2023 22:34:41 +0000 (14:34 -0800)]
Add LICENSE.* for GPLv2 and BSD licenses covered by this project

Signed-off-by: Eivind Næss <eivnaes@yahoo.com>
14 months agoInitial update of README for the 2.5.0 release. Additional review + additions by...
Eivind Næss [Sat, 21 Jan 2023 22:26:09 +0000 (14:26 -0800)]
Initial update of README for the 2.5.0 release. Additional review + additions by Paul Mackerras

Signed-off-by: Eivind Næss <eivnaes@yahoo.com>
14 months agoUpdate of PLUGINS documentation
Eivind Næss [Sat, 21 Jan 2023 22:25:17 +0000 (14:25 -0800)]
Update of PLUGINS documentation

Signed-off-by: Eivind Næss <eivnaes@yahoo.com>
14 months agoHeader file reorganization and cleaning up the public API for pppd version 2.5.0...
Eivind Næss [Sat, 21 Jan 2023 06:12:58 +0000 (22:12 -0800)]
Header file reorganization and cleaning up the public API for pppd version 2.5.0 (#379)

This commit does several things, being a squash-and-merge of a series
of changes; squashed in order not to break bisection.

* Clean up pppd.h, moving declarations that should only be accessed by
  pppd code (not by users of pppd) to a new pppd-private.h.  Also,
  other parts of pppd.h were moved to multilink.h, chap.h, eap.h,
  eui64.h, and a new options.h.

* Provide an API for access to data that is needed by plugins (in no
  particular order):
  - ifname
  - ifunit
  - remote_name
  - remote_number
  - peer_authname
  - status (now called "code" internally)
  - phase
  - doing_multilink
  - multilink_master
  - idle_time_limit
  - link_connect_time
  - max_connect_time
  - link_stats
  - ipparam
  - hostname
  - got_sigterm
  - got_sigusr2
  - got_sighup
  - session_number
  - maxoctets
  - maxoctets_dir
  - debug
  - persist
  - devnam
  - modem
  - peer_authname
  - sync_serial

* Update the version number to 2.5.0.

* Detect availability of stddef.h and stdarg.h.

* Rename some headers:
  - pppcrypt.c/h to crypto_ms.c/h
  - ppp-crypto.c/h to crypto.c/h
  - ppp-crypto-priv.h to crypto-priv.h
  - chap-new.c/h to chap.c/h

* Remove chap-md5.h, crypto-priv.h, eap-tls.h, etc. from the list of
  header files to be installed.

* Provide typedefs for the hook functions.

* Provide a typedef for the "phase" variable.

* Provide a typedef for the link statistics array.

* Remove the option_t typedef.

* Rename the following functions by adding a "ppp_" prefix (with the
  intention that these are a "public" API for use by plugins):
  - option_error
  - add_options
  - int_option,
  - options_from_file
  - script_setenv
  - bad_ip_adrs,
  - netif_get/set_mtu (renamed to ppp_get/set_mtu)
  - get_time
  - timeout
  - untimeout
  - safe_fork
  - sys_close
  - set_session_number
  - update_link_stats (renamed to ppp_get_link_stats)
  - add_notifier (renamed to ppp_add_notify)
  - remove_notifier (renamed to ppp_del_notify)
  - generic_[dis]establish_ppp (to ppp_generic_[dis]establish)

* Rename ppp_devnam to ppp_devname.

* Rename ppp_available() to ppp_check_kernel_support().

* Use unsigned char instead of u_char, unsigned short instead of
  u_short, uint32_t instead of u_int32_t.

* Add const to some declarations

* Update comments

* Change the interface for notifiers to use an enum to identify which
  notifier is to be modified.

* Provide an API for getting the path to a file, with an enum to
  identify different types of file.

* Link plugins with the -DPLUGIN flag

[paulus@ozlabs.org - wrote commit message]

Signed-off-by: Eivind Næss <eivnaes@yahoo.com>
Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
15 months agoUpdate DFS's legal name and email address to correct values. (#381)
Dianne Skoll [Thu, 12 Jan 2023 03:07:58 +0000 (22:07 -0500)]
Update DFS's legal name and email address to correct values. (#381)

Signed-off-by: Dianne Skoll <dianne@skoll.ca>
15 months agofix typo (#384)
lilinjie [Thu, 12 Jan 2023 03:07:09 +0000 (03:07 +0000)]
fix typo (#384)

Signed-off-by: lilinjie <lilinjie@uniontech.com>
15 months agoMerge pull request #378 from jkroonza/radius-admin-reset
Paul Mackerras [Sat, 31 Dec 2022 06:03:15 +0000 (17:03 +1100)]
Merge pull request #378 from jkroonza/radius-admin-reset

radius: distinguish between User-Request and Admin-Reset.

16 months agoradius: distinguish between User-Request and Admin-Reset.
Jaco Kroon [Fri, 16 Dec 2022 19:09:31 +0000 (21:09 +0200)]
radius: distinguish between User-Request and Admin-Reset.

For the purposes of our definition:

User-Request - remote side hanging up.
Admin-Reset - local side hanging up.

Reasoning is that typically radius will be used to authentication
dial-in users, so if the pppd gets killed locally, that's not the User
(client) requesting hangup, but rather the local administrator (be that
a manual kill, or as a result of a CoA/Disconnect).

Signed-off-by: Jaco Kroon <jaco@uls.co.za>
16 months agopppd: Fix spurious LCP echo failures with lcp-echo-adaptive option
Paul Mackerras [Mon, 5 Dec 2022 06:33:48 +0000 (17:33 +1100)]
pppd: Fix spurious LCP echo failures with lcp-echo-adaptive option

If the lcp-echo-adaptive option is specified, it means that seeing
received traffic on the link is considered to be an indication that
the link is working.  Hence, this resets the count of missing LCP
echo-replies to 0 when traffic is seen.  Without this, occasional
echo failures interspersed with link traffic can accumulate and end up
causing a disconnection even when the link is working correctly.

Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
16 months agochat: Improve signal handling
Paul Mackerras [Sat, 26 Nov 2022 07:18:03 +0000 (18:18 +1100)]
chat: Improve signal handling

This improves the way that signals are handled in chat.

First, signal handlers should not be calling functions which are not
async-signal-safe; doing so incurs the possibility of deadlock.  Thus
we can't call fatal() in signal handlers; instead we set 'fatalsig',
which functions both as a flag and as an indication of which signal
occurred, and check that at various points (basically after any
operation which might block) using the new function checksigs().

Secondly, using sigaction rather than signal() means that we can
control whether calls such as read() get restarted after a signal, and
whether the signal disposition gets reset when the signal is
delivered.  That simplifies sigalrm(); we no longer need to
re-register the handler, and we don't need the kludge of setting stdin
to non-blocking mode in order to get the read() in get_char() to
return.

This also removes a #ifdef ultrix since ultrix is no longer supported.

Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
18 months agoMerge pull request #370 from Chocobo1/systemd
Paul Mackerras [Sat, 8 Oct 2022 03:19:08 +0000 (14:19 +1100)]
Merge pull request #370 from Chocobo1/systemd

Fix libsystemd detection

Merged despite bogus signoff in the commits being merged, since the changes are trivial.

Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
18 months agoAdd `enable-systemd` flag to CI
Chocobo1 [Sun, 25 Sep 2022 08:53:43 +0000 (16:53 +0800)]
Add `enable-systemd` flag to CI

And update package indexes, otherwise apt-get might not find the package.

Signed-off-by: Chocobo1 <Chocobo1@users.noreply.github.com>
19 months agoFix libsystemd detection
Chocobo1 [Mon, 19 Sep 2022 18:25:55 +0000 (02:25 +0800)]
Fix libsystemd detection

1. Use uppercase for `prefix` parameter
   `SYSTEMD_CFLAGS` is used elsewhere so `prefix` cannot be lowercase.
   https://autotools.info/pkgconfig/pkg_check_modules.html

2. The module name should be `libsystemd`
   Previously it will result in the following compile error when building pppd/auth.c:
   > /usr/bin/ld: pppd-auth.o: undefined reference to symbol 'sd_notify@@LIBSYSTEMD_209'
   > /usr/bin/ld: /usr/lib/libsystemd.so.0: error adding symbols: DSO missing from command line

   This is due to missing `-lsystemd-daemon` flag which is provided by `libsystemd-daemon-devel`
   package on Debian or `systemd-libs` on ArchLinux. And the proper .pc file in the package is
   `libsystemd` not `systemd`.
   https://stackoverflow.com/a/38303241

Signed-off-by: Chocobo1 <Chocobo1@users.noreply.github.com>
19 months agoMerge pull request #366 from pali/rtnetlink-register
Paul Mackerras [Fri, 9 Sep 2022 02:07:20 +0000 (12:07 +1000)]
Merge pull request #366 from pali/rtnetlink-register

pppd: Retry registering interface when on rtnetlink -EBUSY error

19 months agoMerge pull request #365 from enaess/ppp-options
Paul Mackerras [Fri, 9 Sep 2022 02:06:37 +0000 (12:06 +1000)]
Merge pull request #365 from enaess/ppp-options

Add option to show all options (show-options)

19 months agoMerge pull request #362 from enaess/ppp-crypto
Paul Mackerras [Fri, 9 Sep 2022 02:05:36 +0000 (12:05 +1000)]
Merge pull request #362 from enaess/ppp-crypto

Create an new API that allows us to abstract the use of the standard crypto functions

20 months agoAdding back DesEncrypt/DesDecrypt functions as they are a special incarnation DES...
Eivind Næss [Sat, 13 Aug 2022 21:59:08 +0000 (14:59 -0700)]
Adding back DesEncrypt/DesDecrypt functions as they are a special incarnation DES w.r.t. RFC2759

Signed-off-by: Eivind Næss <eivnaes@yahoo.com>
20 months agoAdd option to show all options (show-options), and fixing up the version text to...
Eivind Næss [Mon, 15 Aug 2022 16:07:55 +0000 (09:07 -0700)]
Add option to show all options (show-options), and fixing up the version text to include copyright and package name from autotools.

Signed-off-by: Eivind Næss <eivnaes@yahoo.com>
20 months agopppd: Retry registering interface when on rtnetlink -EBUSY error
Pali Rohár [Sat, 7 Aug 2021 17:48:01 +0000 (19:48 +0200)]
pppd: Retry registering interface when on rtnetlink -EBUSY error

Due to workaround in kernel module ppp_generic.ko in function
ppp_nl_newlink(), kernel may return -EBUSY error to prevent possible
mutex deadlock. In this case userspace needs to retry its request.

Proper way would be to fix kernel module to order requests and mutex
locking, so prevent deadlock in kernel and so never return this error to
userspace. Until it happens we need retry code in userspace.

Signed-off-by: Pali Rohár <pali@kernel.org>
20 months agoMerge pull request #361 from pali/rtnetlink-deduplicate
Paul Mackerras [Thu, 18 Aug 2022 23:19:14 +0000 (09:19 +1000)]
Merge pull request #361 from pali/rtnetlink-deduplicate

pppd: De-duplicate Linux rtnetlink code

20 months agoFixing up the srp compilation to work without SHA1Init() and DesEncrypt()
Eivind Næss [Wed, 10 Aug 2022 16:30:09 +0000 (09:30 -0700)]
Fixing up the srp compilation to work without SHA1Init() and DesEncrypt()

Signed-off-by: Eivind Næss <eivnaes@yahoo.com>
20 months agoReduce the clutter by defining the MD4/MD5/SHA digest lengths in one place. Avoid...
Eivind Næss [Mon, 8 Aug 2022 15:51:54 +0000 (08:51 -0700)]
Reduce the clutter by defining the MD4/MD5/SHA digest lengths in one place. Avoid using these variables in function descriptors.

Signed-off-by: Eivind Næss <eivnaes@yahoo.com>
20 months agopppd: De-duplicate also rtnetlink code in get_ppp_stats_rtnetlink()
Pali Rohár [Wed, 10 Aug 2022 16:58:16 +0000 (18:58 +0200)]
pppd: De-duplicate also rtnetlink code in get_ppp_stats_rtnetlink()

Move reading of rtnelink response code from get_ppp_stats_rtnetlink() to
one common rtnetlink function rtnetlink_msg() and use it.

Signed-off-by: Pali Rohár <pali@kernel.org>
20 months agoCreate a new API to abstract the crypto functions used by pppd.
Eivind Næss [Wed, 3 Aug 2022 15:46:28 +0000 (08:46 -0700)]
Create a new API to abstract the crypto functions used by pppd.

This re-introduces the missing DES encryption functions copied from Openssl 3.0 project. Incorporates a new API for performing MD4/MD5/SHA and encryption using DES-ECB mode.

Unit tests are included for respective digest/encryption functions using this new API. With this change, you can pass configure --without-openssl to use the internally provided functions. If you do have openssl, then it will default to use these functions. This also provides a framework to allow other vendors to provide crypto.

This closes #333, partially addresses #242 (except the pkcs11 engine support). Word has it that openssl is working on support for this, and the libp11 / opensc project are inclined not to support this.

Signed-off-by: Eivind Næss <eivnaes@yahoo.com>
20 months agopppd: De-duplicate Linux rtnetlink code
Pali Rohár [Sat, 31 Jul 2021 18:50:12 +0000 (20:50 +0200)]
pppd: De-duplicate Linux rtnetlink code

Move common code for sending rtnetlink message into the new
send_rtnetlink_msg() function.

Signed-off-by: Pali Rohár <pali@kernel.org>
20 months agoMerge pull request #358 from enaess/ppp-autotools
Paul Mackerras [Tue, 9 Aug 2022 09:42:51 +0000 (19:42 +1000)]
Merge pull request #358 from enaess/ppp-autotools

PPP autotools

20 months agopppd: Fix check for incomplete ppp_stats nlmsgerr structure (#356)
pali [Tue, 9 Aug 2022 09:22:33 +0000 (11:22 +0200)]
pppd: Fix check for incomplete ppp_stats nlmsgerr structure (#356)

Response structure is incomplete when returned length is less than required
structure length.

Signed-off-by: Pali Rohár <pali@kernel.org>
20 months agopppd: Workaround for generating ppp unit id on Linux (#355)
pali [Tue, 9 Aug 2022 09:20:15 +0000 (11:20 +0200)]
pppd: Workaround for generating ppp unit id on Linux (#355)

Linux kernel has nasty bug / feature. If PPPIOCNEWUNIT is called with
negative ppp unit id (which is default option when command line argument
"unit" is not specified; and tells kernel to choose some free ppp unit id)
and the lowest unused/free ppp unit id is present in some existing network
interface name prefixed by "ppp" string then this PPPIOCNEWUNIT ioctl
fails. In this case kernel is basically unable to create a new ppp
interface via PPPIOCNEWUNIT ioctl when user does not specify some unused
and non-conflicted unit id.

Linux kernel should be fixed to choose usable ppp unit id when was
requested via PPPIOCNEWUNIT parameter -1.

Until this happens, add a workaround for pppd to help choosing some random
ppp unit id when kernel returns this error.

Simple test case (run on system when there is no ppp interface):

    sudo ./pppd ifname ppp1 nodefaultroute noauth nolock local nodetach pty "./pppd nodefaultroute noauth nolock local nodetach notty"

Second pppd process without this patch prints into syslog following error:

    pppd 2.4.10-dev started by pali, uid 0
    Couldn't create new ppp unit: File exists
    Exit.

With this patch it falls back to random ppp unit id and succeeds:

    pppd 2.4.10-dev started by pali, uid 0
    Using interface ppp1361
    Connect: ppp1361 <--> /dev/pts/14
    ...

Signed-off-by: Pali Rohár <pali@kernel.org>
20 months agoci: Update the Solaris GitHub action to use macOS 12 instead of macOS 10.15. (#359)
Adrien RICCIARDI [Tue, 9 Aug 2022 09:17:17 +0000 (11:17 +0200)]
ci: Update the Solaris GitHub action to use macOS 12 instead of macOS 10.15. (#359)

As macOS 10.15 support will be removed soon.

Signed-off-by: RICCIARDI-Adrien <adrien.ricciardi@hotmail.fr>
20 months agoFix warning messages on autoreconf (especially with a newer autoconf)
Eivind Næss [Sat, 30 Jul 2022 21:42:05 +0000 (14:42 -0700)]
Fix warning messages on autoreconf (especially with a newer autoconf)

Signed-off-by: Eivind Næss <eivnaes@yahoo.com>
20 months agoLet ./configure control the paths for pppd
Eivind Næss [Sat, 30 Jul 2022 21:33:15 +0000 (14:33 -0700)]
Let ./configure control the paths for pppd

This was previously done by specifying an overriding value for _ROOT_PATH. With this change, this variable is now gone.
Instead, pathnames.h will use the SYSCONFDIR and LOCALSTATEDIR to resolve these paths. These directories is already controlled by
configure.

Package maintainers should be aware though that this may change their current configuration. The convential ./configure way is to
specify:
   ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var/run --with-plugin-dir=/usr/lib/pppd/2.4.10

If one omit the --sysconfdir option, then the default location is by ${prefix}/etc which may not be what you want.

Signed-off-by: Eivind Næss <eivnaes@yahoo.com>
20 months agopppd: Fix duplicate nameserver in resolv.conf (#337)
Vlados Korneev [Fri, 5 Aug 2022 04:18:09 +0000 (11:18 +0700)]
pppd: Fix duplicate nameserver in resolv.conf (#337)

Signed-off-by: Vlados Korneev <allaods97@gmail.com>
20 months agoMerge pull request #354 from pali/register-with-name
Paul Mackerras [Fri, 5 Aug 2022 04:10:40 +0000 (14:10 +1000)]
Merge pull request #354 from pali/register-with-name

pppd: Add support for registering ppp interface via Linux rtnetlink API

20 months agopppd: Fix compilation on Linux when IPV6 is disabled (#360)
Paul Mackerras [Fri, 5 Aug 2022 04:06:33 +0000 (14:06 +1000)]
pppd: Fix compilation on Linux when IPV6 is disabled (#360)

This rearranges the PPP_WITH_IPV6CP guards added in commit
80b8744eb42c ("Changing INET6 to PPP_WITH_IPV6CP and adding configure
option", 2021-08-06) so that we (a) always include the rtnetlink
headers, since we need them for get_ppp_stats_rtnetlink(), and (b)
don't include eui64.h unless we have IPV6 support.

Fixes: 80b8744eb42c ("Changing INET6 to PPP_WITH_IPV6CP and adding configure option")
Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
20 months agopppdump: Avoid out-of-range access to packet buffer
Paul Mackerras [Thu, 4 Aug 2022 02:23:08 +0000 (12:23 +1000)]
pppdump: Avoid out-of-range access to packet buffer

This fixes a potential vulnerability where data is written to spkt.buf
and rpkt.buf without a check on the array index.  To fix this, we
check the array index (pkt->cnt) before storing the byte or
incrementing the count.  This also means we no longer have a potential
signed integer overflow on the increment of pkt->cnt.

Fortunately, pppdump is not used in the normal process of setting up a
PPP connection, is not installed setuid-root, and is not invoked
automatically in any scenario that I am aware of.

Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
20 months agoMerge pull request #349 from enaess/ppp-autotools
Paul Mackerras [Mon, 25 Jul 2022 01:20:11 +0000 (11:20 +1000)]
Merge pull request #349 from enaess/ppp-autotools

Cleaning up header files and updating defines

21 months agoRemoving option to configure PPP_WITH_MAXOCTETS, helps clean up the code and it can...
Eivind Næss [Fri, 15 Jul 2022 22:21:27 +0000 (15:21 -0700)]
Removing option to configure PPP_WITH_MAXOCTETS, helps clean up the code and it can be controlled via config options. It does nothing by default

Signed-off-by: Eivind Næss <eivnaes@yahoo.com>
21 months agoFix build for when --without-[srp|atm|pcap|pam]=no, the value would be "no" and not...
Eivind Næss [Fri, 15 Jul 2022 14:46:43 +0000 (07:46 -0700)]
Fix build for when --without-[srp|atm|pcap|pam]=no, the value would be "no" and not empty in that case

Signed-off-by: Eivind Næss <eivnaes@yahoo.com>
21 months agoThe use of <net/ppp_defs.h> isn't guranteed to exist on Linux (e.g. uclibc, buildroot...
Eivind Næss [Tue, 31 May 2022 03:50:55 +0000 (20:50 -0700)]
The use of <net/ppp_defs.h> isn't guranteed to exist on Linux (e.g. uclibc, buildroot, others)

The one provided by glibc simply includes <linux/ppp_defs.h>. This include is still needed on SunOS

Signed-off-by: Eivind Næss <eivnaes@yahoo.com>
21 months agoNeed to use the /include directory for SunOS
Eivind Næss [Tue, 31 May 2022 03:20:24 +0000 (20:20 -0700)]
Need to use the /include directory for SunOS

Signed-off-by: Eivind Næss <eivnaes@yahoo.com>
21 months agoAdding propper include guard to header files, renaming to PPP_<FILE>_H for consistency
Eivind Næss [Mon, 30 May 2022 20:53:24 +0000 (13:53 -0700)]
Adding propper include guard to header files, renaming to PPP_<FILE>_H for consistency

Signed-off-by: Eivind Næss <eivnaes@yahoo.com>
21 months agoFor Linux, use the Linux / Glibc based defines instead of included headers
Eivind Næss [Mon, 30 May 2022 05:14:08 +0000 (22:14 -0700)]
For Linux, use the Linux / Glibc based defines instead of included headers

This is to ensure compatibility with the OS you are compiling against and that
headers are maintained in upstream projects.

- Moved PPP_EAP and PPP_ECP into respective header files in lieu of not currently
  existing in the linux/ppp_defs.h

- Unchained the top-level ${topsrc_dir}/include, this folder is included for
  prosterity and may continue to exist on github, but in the future eliminated from
  distribution

- Bogus upstream file in glibc for <net/if_ppp.h>, its content should be replaced
  with a simple include to <linux/ppp-ioctl.h>. The lack of an appropriate ifreq
  structure with ppp_stats or ppp_comp_stats, implementet that inline (and tested).

- Updated instances where PPP_FCS() macro would expand the fcstab, while PPP_GOODFCS
  and PPP_INITFCS is provided in <linux/ppp_defs.h>, the latter is tied to a lookup
  table. It's used in two places, so add the PPP_FCS macro where applicable.

Signed-off-by: Eivind Næss <eivnaes@yahoo.com>
21 months agoFixup in merge/rebase, had to remove duplicate use of pppdconf.h
Eivind Næss [Sat, 16 Oct 2021 19:49:53 +0000 (12:49 -0700)]
Fixup in merge/rebase, had to remove duplicate use of pppdconf.h

Signed-off-by: Eivind Næss <eivnaes@yahoo.com>
21 months agoCleanup in pppd/pppd.h, eliminate unecessary headers
Eivind Næss [Mon, 13 Sep 2021 15:17:17 +0000 (08:17 -0700)]
Cleanup in pppd/pppd.h, eliminate unecessary headers

This removes the need to include the following heades in pppd.h

<limits.h>, this is included where needed (main.c). The number of groups already retrieved is stored in the "int ngroups" variable.
<sys/params.h>, use MAXPATHLEN where needed
<net/if.h>, such that the value of IFNAMSIZ doesn't have to be declared to include <pppd/pppd.h>

Signed-off-by: Eivind Næss <eivnaes@yahoo.com>
21 months agoFix include paths for plugins to use the public API of pppd
Eivind Næss [Tue, 10 Aug 2021 23:38:45 +0000 (16:38 -0700)]
Fix include paths for plugins to use the public API of pppd

This change does a few different things.
 * Projects that needs #include "config.h" should use a config.h.in for the project generated by configure in the project's local directory.
 * All projects will use #include <pppd/pppd.h>, and Makefile will add -I${top_srcdir} to the appropriate *_CPPFLAGS variable.
 * The inclusion of <pppd/pppdconf.h> will set the presidence for all features enabled/disabled in pppd
 * Plugins will now need to use PPPD_VERSION as it conflicts with VERSION from config.h generated by autotools for third party packages

Currently, only pppoe require the use of config.h to correctly set the defines for which header files and so on was detected by configure

Other projects only needed to include <pppd/pppd.h> (and maybe a few other header files), a future change will fixup <pppd/pppd.h> to include features as needed such that it's the only needed include for a plugin. This will avoid littering the code with #ifdef/#endif constructs.

BREAKING CHANGE!

pppd/pppd.h no longer provide VERSION, third party packages are required to switch to use PPPD_VERSION. This is to avoid conflict with a source package's own VERSION as set by autotools / config.h. Also, the use of PPP_VERSION conflicts with public header files from Glibc/Linux kernel.

Example:

   char pppd_version[] = PPPD_VERSION;

pppd will load plugins, and also look for the symbol "pppd_version" to validate that the plugin was built for the current version of pppd.

Signed-off-by: Eivind Næss <eivnaes@yahoo.com>
21 months agoRemoving patchlevel.h
Eivind Næss [Sat, 7 Aug 2021 21:15:01 +0000 (14:15 -0700)]
Removing patchlevel.h

The significance of this headerfile has now been reduced as pppd now provides
pppd.pc (pkgconfig) and autotools to configure the project. Other projects can
now also configure the correct path variable:

   e.g. /usr/lib/x86_64-linux-gnu/pppd/2.4.10/...

To both consider the architecture and version via pkg-tool. The only consideration
would be the missing DATE directive. But I am less worried about that as the entire
release process has now been changed with the introduction of autotools.

Also fixing up pppd/pppdconf.h.in to remove quotes around the defines

Signed-off-by: Eivind Næss <eivnaes@yahoo.com>
21 months agoUpdate configure.ac to use AS_IF() and correct use of paranthesis
Eivind Næss [Tue, 10 Aug 2021 13:50:18 +0000 (06:50 -0700)]
Update configure.ac to use AS_IF() and correct use of paranthesis

Signed-off-by: Eivind Næss <eivnaes@yahoo.com>
21 months agoconfigure.ac: include systemd support in summary
Sam James [Sun, 8 Aug 2021 06:07:25 +0000 (07:07 +0100)]
configure.ac: include systemd support in summary

Signed-off-by: Sam James <sam@gentoo.org>
21 months agoconfigure.ac, pppd/Makefile.am: use pkg-config to link against systemd
Sam James [Sun, 8 Aug 2021 06:07:18 +0000 (07:07 +0100)]
configure.ac, pppd/Makefile.am: use pkg-config to link against systemd

Signed-off-by: Sam James <sam@gentoo.org>
21 months agoconfigure.ac: minor phrasing tidy ups in output
Sam James [Sun, 8 Aug 2021 05:36:58 +0000 (06:36 +0100)]
configure.ac: minor phrasing tidy ups in output

Signed-off-by: Sam James <sam@gentoo.org>
21 months agoconfigure.ac: use consistent x${VAR} = x${VALUE} test
Sam James [Sun, 8 Aug 2021 05:36:58 +0000 (06:36 +0100)]
configure.ac: use consistent x${VAR} = x${VALUE} test

May as well do it the same way throughout.

Signed-off-by: Sam James <sam@gentoo.org>
21 months agoFixing up quotation of AC_DEFINE macro
Eivind Næss [Sat, 7 Aug 2021 21:11:43 +0000 (14:11 -0700)]
Fixing up quotation of AC_DEFINE macro

The resulting pppd/config.h will now display a unquoted comment before the define which is consistent with other defines created by autotools.

Signed-off-by: Eivind Næss <eivnaes@yahoo.com>
21 months agoChanging USE_SRP to PPP_WITH_SRP for consistency
Eivind Næss [Mon, 30 May 2022 20:04:59 +0000 (13:04 -0700)]
Changing USE_SRP to PPP_WITH_SRP for consistency

Signed-off-by: Eivind Næss <eivnaes@yahoo.com>
21 months agoChanging USE_PAM to PPP_WITH_PAM for consistency.
Eivind Næss [Sat, 7 Aug 2021 21:52:39 +0000 (14:52 -0700)]
Changing USE_PAM to PPP_WITH_PAM for consistency.

Signed-off-by: Eivind Næss <eivnaes@yahoo.com>
21 months agoChanging defines for USE_PEAP to PPP_WITH_PEAP for consistency
Eivind Næss [Sat, 16 Oct 2021 19:28:01 +0000 (12:28 -0700)]
Changing defines for USE_PEAP to PPP_WITH_PEAP for consistency

Signed-off-by: Eivind Næss <eivnaes@yahoo.com>
21 months agoChanging MAXOCTETS to PPP_WITH_MAXOCTETS
Eivind Næss [Sat, 7 Aug 2021 21:48:20 +0000 (14:48 -0700)]
Changing MAXOCTETS to PPP_WITH_MAXOCTETS

Though, this could be renamed to PPP_WITH_SESSION_LIMITS; I don't know

Signed-off-by: Eivind Næss <eivnaes@yahoo.com>
21 months agoChanging the define USE_EAPTLS to PPP_WITH_EAPTLS for consistency
Eivind Næss [Sat, 7 Aug 2021 21:41:32 +0000 (14:41 -0700)]
Changing the define USE_EAPTLS to PPP_WITH_EAPTLS for consistency

Signed-off-by: Eivind Næss <eivnaes@yahoo.com>
21 months agoChanging PPP_FILTER to PPP_WITH_FILTER for consistency.
Eivind Næss [Fri, 6 Aug 2021 23:52:33 +0000 (16:52 -0700)]
Changing PPP_FILTER to PPP_WITH_FILTER for consistency.

Signed-off-by: Eivind Næss <eivnaes@yahoo.com>
21 months agoChanging PLUGIN to PPP_WITH_PLUGINS for consistency
Eivind Næss [Fri, 6 Aug 2021 23:46:43 +0000 (16:46 -0700)]
Changing PLUGIN to PPP_WITH_PLUGINS for consistency

Signed-off-by: Eivind Næss <eivnaes@yahoo.com>
21 months agoChanging CBCP_SUPPORT define to PPP_WITH_CBCP to be consistent.
Eivind Næss [Fri, 6 Aug 2021 23:37:10 +0000 (16:37 -0700)]
Changing CBCP_SUPPORT define to PPP_WITH_CBCP to be consistent.

Signed-off-by: Eivind Næss <eivnaes@yahoo.com>
21 months agoChanging USE_TDB to PPP_WITH_TDB to be consistent.
Eivind Næss [Fri, 6 Aug 2021 23:33:00 +0000 (16:33 -0700)]
Changing USE_TDB to PPP_WITH_TDB to be consistent.

Signed-off-by: Eivind Næss <eivnaes@yahoo.com>
21 months agoChanging HAVE_MULTILINK to PPP_WITH_MULTILINK
Eivind Næss [Fri, 6 Aug 2021 23:28:19 +0000 (16:28 -0700)]
Changing HAVE_MULTILINK to PPP_WITH_MULTILINK

To be consistent with other options / defines.

Signed-off-by: Eivind Næss <eivnaes@yahoo.com>
21 months agoChanging defines for CHAPMS, MSLANMAN, MPPE to prefix with PPP_WITH_*
Eivind Næss [Fri, 6 Aug 2021 17:06:17 +0000 (10:06 -0700)]
Changing defines for CHAPMS, MSLANMAN, MPPE to prefix with PPP_WITH_*

To avoid bleeding over to third party projects. They are all
defined and exported by pppdconf.h either way. These projects
will stil have a consistent view of how pppd was compiled.

Signed-off-by: Eivind Næss <eivnaes@yahoo.com>
21 months agoChanging INET6 to PPP_WITH_IPV6CP and adding configure option
Eivind Næss [Fri, 6 Aug 2021 16:14:02 +0000 (09:14 -0700)]
Changing INET6 to PPP_WITH_IPV6CP and adding configure option

Based on feedback on PR #296, the option ipv6-support seems inconsistent
with the existing ipxcp option. Futhermore, the #define has been renamed
to avoid bleeding into third party projects.

pppdconf.h is already distributed and will define or undefine the
PPP_WITH_IPV6CP define.

Signed-off-by: Eivind Næss <eivnaes@yahoo.com>
21 months agopppd: Add support for registering ppp interface via Linux rtnetlink API
Pali Rohár [Sat, 9 Jul 2022 11:40:24 +0000 (13:40 +0200)]
pppd: Add support for registering ppp interface via Linux rtnetlink API

pppd currently creates ppp network interface via PPPIOCNEWUNIT ioctl API.
This API creates a new ppp network interface named "ppp<unit_id>". If user
supply option "ifname" with custom network name then pppd calls SIOCSIFNAME
ioctl to rename "ppp<unit_id>" to custom name immediately after successful
PPPIOCNEWUNIT ioctl call. If custom name is already registered then
SIOCSIFNAME ioctl fails and pppd close current channel (which destroy also
network interface).

This has side effect that in the first few miliseconds interface has
different name as what user supplied.

Tools like systemd, udev or NetworkManager are trying to query
interface attributes based on interface name immediately when new
network interface is created.

But if interface is renamed immediately after creation then these tools
fails. For example when running pppd with option "ifname ppp-wan" following
error is reported by systemd / udev into dmesg log:

    [   35.718732] PPP generic driver version 2.4.2
    [   35.793914] NET: Registered protocol family 24
    [   35.889924] systemd-udevd[1852]: link_config: autonegotiation is unset or enabled, the speed and duplex are not writable.
    [   35.901450] ppp-wan: renamed from ppp0
    [   35.930332] systemd-udevd[1852]: link_config: could not get ethtool features for ppp0
    [   35.939473] systemd-udevd[1852]: Could not set offload features of ppp0: No such device

There is an easy way to fix this issue: Use new rtnetlink API.

Via rtnetlink API it is possible to create ppp network interface with
custom ifname atomically. Just it is not possible to specify custom ppp
unit id.

So use new rtnetlink API when user requested custom ifname without custom
ppp unit id. This will avoid system issues with interface renaming as ppp
interface is directly registered with specified final name.

This has also advantage that if requested interface name already exists
then pppd fail during registering of networking interface and not during
renaming network interface which happens after successful registration.

If user supply custom ppp unit id then it is required to use old ioctl API
as currently it is the only API which allows specifying ppp unit id.

When user does not specify custom ifname stay also with old ioctl API.
There is currently a bug in kernel which cause that when empty interface is
specified in rtnetlink message for creating ppp interface then kernel
creates ppp interface but with pseudo-random name, not derived from ppp
unit id. And therefore it is not possible to retrieve what is the name of
newly created network interface. So when user does not specify interface
name via "ifname" option (which means that want from kernel to choose some
"free" interface name) it is needed to use old ioctl API which do it
correctly for now.

Signed-off-by: Pali Rohár <pali@kernel.org>
21 months agoAdd SECURITY.md
Paul Mackerras [Sat, 9 Jul 2022 10:22:45 +0000 (20:22 +1000)]
Add SECURITY.md

Bare-bones for now, will elaborate.

Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
21 months agopppd/eap-tls.c: fix build with libressl (#338)
Fabrice Fontaine [Mon, 4 Jul 2022 08:07:03 +0000 (10:07 +0200)]
pppd/eap-tls.c: fix build with libressl (#338)

Fix the following build failure with libressl:

eap-tls.c: In function 'ssl_msg_callback':
eap-tls.c:1284:10: error: 'SSL3_RT_HEADER' undeclared (first use in this function); did you mean 'SSL3_RT_ALERT'?
 1284 |     case SSL3_RT_HEADER:
      |          ^~~~~~~~~~~~~~
      |          SSL3_RT_ALERT

Fixes:
 - http://autobuild.buildroot.org/results/7d721833bddf73531fa03b0a626511af6826d0df

Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
21 months agopppd: Add dummy noipx option
Paul Mackerras [Mon, 4 Jul 2022 07:37:31 +0000 (17:37 +1000)]
pppd: Add dummy noipx option

Add "noipx" as an option that does nothing to avoid breaking
installations that have "noipx" in /etc/ppp/defaults or wherever.
(The IPX-related options were removed by commit c2881a6b71a3 ("pppd:
Drop linux IPX support (#326)", 2022-01-13)).

Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
21 months agopppd/auth: Pass ipparam to auth-up and auth-down scripts
Jaco Kroon [Tue, 17 May 2022 08:05:27 +0000 (10:05 +0200)]
pppd/auth: Pass ipparam to auth-up and auth-down scripts

ipparam is the only way a system administrator has of passing arbitrary
information from options files to scripts, and this may be useful during
auth-up in particular.  (If upstream pppd had support for an auth-fail
script, it could be useful there too.)

Signed-off-by: Jaco Kroon <jaco@uls.co.za>
Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
2 years agopppd/eap: Fix bug causing incorrect response length (#334)
Eivind Næss [Thu, 3 Feb 2022 22:28:22 +0000 (14:28 -0800)]
pppd/eap: Fix bug causing incorrect response length (#334)

Need to update the esp->ea_client.ea_namelen variable. A plugin can override the
name of the user, and the variable is passed onto the eap_chap2_response generating
the wrong response length.

Signed-off-by: Eivind Næss <eivnaes@yahoo.com>
2 years agopppd: Drop linux IPX support (#326)
Richard Purdie [Thu, 13 Jan 2022 06:48:14 +0000 (06:48 +0000)]
pppd: Drop linux IPX support (#326)

The 5.15 Linux kernel has removed ipx support, along with the userspace
visible header. This support wasn't very well maintained in the kernel
for several years so drop the support from ppp as well since this won't
be usable in future.

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2 years agopppd: Allow use of additional Bnnn constants (#325)
pali [Thu, 13 Jan 2022 06:42:53 +0000 (07:42 +0100)]
pppd: Allow use of additional Bnnn constants (#325)

These constants are supported by Linux kernel on SPARC architecture.

Signed-off-by: Pali Rohár <pali@kernel.org>
2 years agoExpand byte count statistics to 64 bits (#298)
Jaco Kroon [Thu, 13 Jan 2022 06:38:04 +0000 (08:38 +0200)]
Expand byte count statistics to 64 bits (#298)

* Add Gigawords to radius packets where applicable.

IMPORTANT NOTE:  The ioctl() only supports 32-bit counters.  In order t
obtain 64-bit counters, these are now pulled in from sysfs (it's assumed
to be mounted on /sys which I'm assuming is standard).

It is unknown whether sysfs will be available everywhere, as such, keep
the ioctl() method in place, but attempt to detect wrap-overs.

If the sysfs mechanism fails, fail back to the ioctl().

Given maximum data rates, the intervals between calling this needs to be
such that no more than 4GB (2^32) bytes are sent or received in any
given interval.  Mostly important for radius plugin where data
accounting may be in effect.

Towards this, a timer interval on 25 seconds is set to force a ioctl()
poll irrespective of the rate of stats update calls.  This may be
important for especially radius that needs to provide interim-update
intervals, if the interim updates is too long and the counters could
wrap-over twice in a single interval.  At 25 seconds we should detect
all wraps up to an effective data rate of 1.37Gbps, which for my
purposes is adequate.

Possible downsides, 4 files are opened, read and closed every time
statistics is requested.  This results in 12 system calls every single
time statistics is required, compared to 1 for the ioctl.  Efficiency is
unknown, but as a rule of thumb fewer system calls are better, this is
however not a critical path in my opinion, so should not be a problem.
If required I can run a few benchmarks using gettimeofday() to measure
actual impact.

Signed-off-by: Jaco Kroon <jaco@uls.co.za>
* Use netlink if possible to obtain 64-bit stats.

This uses two system calls per round.

This should be preferred where available.  It seems the RTM_GETSTATS was
only added from 2016 some point (4.7.0 as per pali), which is in my
opinion old, but given experience with certain embedded systems does
need to be supported.

Signed-off-by: Jaco Kroon <jaco@uls.co.za>
Co-authored-by: Jaco Kroon <jaco@iewc.co.za>
2 years agoMerge pull request #328 from pali/ipv6
Paul Mackerras [Wed, 12 Jan 2022 09:41:33 +0000 (20:41 +1100)]
Merge pull request #328 from pali/ipv6

ipv6cp: Add support for new ipv6cp-noremote, ipv6cp-nosend and ipv6cp-use-remotenumber options

2 years agoMerge pull request #330 from pali/pppoe-discovery
Paul Mackerras [Mon, 10 Jan 2022 04:06:21 +0000 (15:06 +1100)]
Merge pull request #330 from pali/pppoe-discovery

pppoe-discovery: Do not set eth0 as default interface and valide all cmdline options

2 years agoImproved Buildroot CI build speed by providing precompiled Buildroot images. (#332)
Adrien RICCIARDI [Sat, 8 Jan 2022 01:27:43 +0000 (02:27 +0100)]
Improved Buildroot CI build speed by providing precompiled Buildroot images. (#332)

Signed-off-by: RICCIARDI-Adrien <adrien.ricciardi@hotmail.fr>
2 years agopppoe-discovery: Remove duplicate and unused includes
Pali Rohár [Tue, 21 Dec 2021 17:10:27 +0000 (18:10 +0100)]
pppoe-discovery: Remove duplicate and unused includes

Some of specified include header files in pppoe-discovery.c are duplicate
and some of them are unused. Remove all these include lines which are not
needed.

Signed-off-by: Pali Rohár <pali@kernel.org>