Change my paulus@samba.org email address to paulus@ozlabs.org Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
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>
Use autoconf/automake to configure and make ppp This change brings in autoconf/automake scripts to configure the ppp project. Current change doesn't eliminate the previous build system, but the new script autogen.sh will overwrite configure, and generate the basic Makefile.in and Makefile files. Features can now be enabled by command line: * Microsoft Extensions, - MSCHAP - MPPE - MS LAN Manager support * IPXCP protocol * CBCP protocol * PAM support * EAP-TLS support * EAP-SRP support * Max session lifetime by byte count * Plugins * Packet activity filter support * Multilink * IPv6 support Control linkage with * OpenSSL (-lssl -lcrypto) * systemd (-lsystemd) * libatm (-latm) * libsrp (-lsrp) * pam (-lpam) Also, the configure script is made sensitive to features of OpenSSL. Like the presence or absence of DES, SHA, MD4 and MD5 crypto support. In the cases where either of these are missing, the support will be directly compiled into pppd and plugins. In addition, package maintainers can now control the installation paths with standard --prefix=, or --localstatedir=, or --sysconfdir= to configure. On top of that, they can now control the following directories: * runtime directory w/--with-runtime-dir * logfile directory w/--with-logfile-dir * plugin directory w/--with-plugin-dir In the case where automake isn't the right solution, namely: SunOS kernel module build, the original Makefile infrastructure is preserved and reused. Care was taken to only cosmetically touchup the source files in this change. This means: * Insert HAVE_CONFIG_H and include config.h in all .c files. * Change HAS_SHADOW to HAVE_SHADOW_H * Change HAVE_LOGWTMP to HAVE_UTMP_H * Introduce HAVE_CRYPT_H into the source code where appropriate * Added ifdef MPPE where appropriate * USE_SRP required a few changes as it didn't compile * Touchup some compile warning in pppstats directory on SunOS Introduced a new pppdconf.h file that exports the appropriate defines to a module that wants to provide a module that pppd can dynamically load. This will define/undef features like MPPE, CHAPMS such that the project doesn't have to guess what features pppd is compiled with. Signed-off-by: Eivind Næss <eivnaes@yahoo.com>
pppd: Combine get_first_ethernet() and get_if_hwaddr() into one function (#207) On all places is just needed hardware address for the first ethernet-style interface. So provide it by new get_first_ether_hwaddr() function. Signed-off-by: Pali Rohár <pali@kernel.org>
Convert to ANSI C This gets rid of the __P and __V macros that were used so that the code was in theory compilable by a K&R C compiler, and converts the function definitions to ANSI C style. In fact there were already quite a few function definitions in the ANSI C style, so it would not have been compilable by a K&R C compiler in fact. The Solaris and BSD kernel code modules have had __P removed but the function definitions have not been converted. There are some other minor changes here to remove warnings. Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
pppd: Don't free static string Commit fcb076c2 ("Various fixes for errors found by coverity static analysis (#109)", 2019-05-06) added statements to free the result returned from get_first_ethernet(). However, the result of get_first_ethernet() is not dynamically allocated, either on Linux or Solaris. Hence this removes the unnecessary (and dangerous) free() statements. Fixes: fcb076c2 ("Various fixes for errors found by coverity static analysis (#109)") Reported-by: Florian Kohnhäuser <florian@kohnhaeuser.com> Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
pppd: Fix `ifname` option in case of multilink (#105) Make pppd use the unit and not the interface name to get the bundle. pppd was looking for the default interface name (`pppX`) in the database to retreive the bundle id on which a new link should attach, and fails if the `ifname` option is used. Signed-off-by: Alexis Cellier <alexis.cellier@smile.fr>
Various fixes for errors found by coverity static analysis (#109) Fixes #108 Signed-off-by: Jaroslav Škarvada <jskarvad@redhat.com>
Fix authentication on second time around with multilink and persist Frédéric Brière reported that when using multilink and persist, pppd would fail to authenticate itself on the second and subsequent times of bringing up a bundle. The reason was that the doing_multilink and multilink_master flags never got reset when the first bundle was destroyed. This adds lines to mp_bundle_terminated to do that. Signed-off-by: Paul Mackerras <paulus@samba.org>
New version of TDB code, borrowed from samba.
Multilink improvements. This involved moving some logic from the main loop in main.c into link_required() and link_terminated() in auth.c and adding code to multilink.c. We now make a tdb entry with the list of pppd pids for all the links in the bundle, and the master pppd uses this to send a SIGHUP to each one when the bundle is terminated. We still have one pppd controlling both the bundle and the first link, but when that link goes down, assuming that other links still exist, the first link's pppd will clean up after that link but then stay running until all the links have disconnected. So it is possible to lose the first link without losing the bundle. This requires a small kernel patch which I will be sending to the kernel maintainers shortly.
Remove the requirement that redistributions in binary form reproduce the copyright conditions in documentation from my copyright notice. It still remains in CMU's and others' copyright notices.
Update copyrights. The new CMU copyright notice is from CMU and now explicitly allows modifications. I have an acknowledgement from ANU that the work I have done on pppd belongs to me and not to ANU, so I have changed the ANU copyright notices to reflect this. I have emails from Pedro Roque Marques, Tommi Komulainen and Eric Rosenquist giving me permission to change their copyright notices to be similar to the CMU notice.
move netif_set_mtu after set_ifunit so it can use ifname; remove a debug message
Separate out the setting of the interface MTU from the setting of lower level things like the asyncmap and proto/AC compression. Renamed ppp_send/recv_config to tty_send/recv_config. At this point we have a structure of channel operations and a pointer to the currently set (the_channel) which a plugin can override if desired.
fix kill() call, thanks to Andreas Hofmeister
fix allow-ip option, allow @login for secret meaning authenticate against login database, update to 2.4.0b5, update man page for multilink options, fix restoring device permissions
Move the tty-related stuff out to tty.c as far as possible.
allow peer to give endpoint even if we're not doing multilink; fix demand dialling where we ask for multilink and don't get it.
fixes for demand mode and multilink