lp:mptcpd

Created by Matthieu Baerts and last modified
Get this branch:
bzr branch lp:mptcpd

Related bugs

Related blueprints

Branch information

Owner:
Matthieu Baerts
Project:
mptcpd
Status:
Development

Import details

Import Status: Failed

This branch is an import of the HEAD branch of the Git repository at https://git.launchpad.net/mptcpd.

The import has been suspended because it failed 5 or more times in succession.

Last successful import was .

Import started on juju-1e3bde-prod-lp-code-import-14 and finished taking 5 seconds — see the log
Import started on juju-1e3bde-prod-lp-code-import-13 and finished taking 5 seconds — see the log
Import started on juju-1e3bde-prod-lp-code-import-13 and finished taking 5 seconds — see the log
Import started on juju-1e3bde-prod-lp-code-import-12 and finished taking 10 seconds — see the log

Recent revisions

142. By Ossama Othman <email address hidden>

Expand mptcpd plugin framework code coverage (#224)

* tests: Force plugin name-to-ops lookup failure.

Force plugin name-to-ops lookup to fail in the test-plugin unit test
to excercise additional error paths.

* tests: Verify NULL plugin directory handling.

* tests: Add test case for plugin with NULL name.

* tests: Add test for plugin missing needed symbol.

* tests: Add test case for failed plugin init.

Verify that mptcpd gracefully handles case where the plugin "init"
function fails, i.e. returns a non-zero value.

* tests: Verify network monitoring NULL plugin args.

* tests: Add noop network monitoring functions.

Add network monitoring related callbacks to the noop test plugin.

* tests: Reduce test plugin argument clutter.

The number of arguments passed when running plugin operation dispatch
tests is large and a bit sloppy. Move the arguments used in the
plugin operation dispatch tests to the new "plugin_call_args" struct
to reduce clutter and make the code more manageable.

* tests: Run network monitor plugin op dispatch.

141. By Ossama Othman <email address hidden>

src: Fix gcc 12 link error. (#226)

Declare inline functions with the static storage class to address
"undefined reference" link-time errors that occur when building mptcpd
with gcc-12.

Co-authored-by: Mat Martineau <email address hidden>

140. By Matthieu Baerts

mptcp: uapi: fix SPDX License comment (#225)

The license is written just below and clearly mention:

    GNU General Public License (...) either version 2 of the License,
    *or (at your option) any later version*.

This is the GPL-2.0+, not GPL-2.0.

This is sync with upstream (mptcp.org), see:

    commit d8f3b283b485 ("mptcp: uapi: fix SPDX License comment")

Reported-by: Thorsten Alteholz <email address hidden>
Signed-off-by: Matthieu Baerts <email address hidden>

139. By Ossama Othman <email address hidden>

Allow loopback network interface monitoring. (#220)

* network_monitor: Allow loopback monitoring.

Add a new mptcpd_nm_monitor_loopback() function that allows the user
to enable monitoring of loopback network interfaces. Monitoring of
loopback network interfaces is meant primarily for testing purposes.
Mptcpd will retain the previous behavior of only monitoring
non-loopback network interfaces by default.

* tests: Enable loopback interface monitoring.

Enable loopback network interface monitoring to allow the
test-network-monitor unit test to succeed in cases where non-loopback
interfaces are unavailable, such as in a sandboxed environment.

Fixes #208.

Co-authored-by: Mat Martineau <email address hidden>

138. By Ossama Othman <email address hidden>

configure: Improve MPTCP kernel detection. (#218)

Detect a MPTCP capable kernel through the "enabled" file in
`/proc/sys/net/mptcp' rather than the <linux/mptcp.h> header alone if
the user hasn't chosen a specific MPTCP kernel, i.e. "upstream" or
"multipath-tcp.org". This allows mptcpd to be configured for the
multipath-tcp.org kernel by default if that kernel is at detected at
configure-time rather than always falling back on the upstream
kernel.

Previously, the `configure' script would by default fallback on the
upstream kernel support instead of the multipath-tcp.org kernel when
run on a distro using the latter.

137. By Matthieu Baerts

doxygen: disable HTML_TIMESTAMP (#219)

This timestamp causes issues for the "Reproducible Builds" project[1-2].

In Debian, it is then recommended to disable this timestamp by default.

Because these packages are linked to a tagged version, the timestamp is
not an important info to keep.

[1] https://reproducible-builds.org/
[2] https://wiki.debian.org/ReproducibleBuilds/TimestampsInDocumentationGeneratedByDoxygen

Signed-off-by: Matthieu Baerts <email address hidden>

136. By Matthieu Baerts

Skip test-start-stop on non-MPTCP kernels. (#216)

* tests: skip test-start-stop when 'sudo' cannot be used

Without 'sudo', mptcpd was started but the exit status was not checked.

So probably best to skip the test than marking it as PASS but not
checking anything.

* tests: skip test-start-stop if not supporting MPTCP

Without MPTCP, the sysctl commands fail and mptcpd always returns an
error because the kernel doesn't support MPTCP.

In other words, the test fails without MPTCP support, best to skip it.

135. By Ossama Othman <email address hidden>

Skip some tests on non-MPTCP kernels. (#215)

* tests: Add MPTCP kernel check C function.

* tests: Skip some tests on non-MPTCP kernels.

The mptcpd unit tests test-commands, test-path-manager and
test-mptcpwrap require a MPTCP capable kernel to run. Make those
tests return with an exit status (77) that causes the Automake test
driver script, i.e. `test-driver' to treat the tests as skipped. This
allows the test suite to succeed when MPTCP is not available in the
kernel.

The test summary from a `make check' run would look similar to the
following when run on a non-MPTCP capable kernel:

 ...
 PASS: test-network-monitor
 SKIP: test-path-manager
 SKIP: test-commands
 PASS: test-configuration
 ...
 SKIP: test-mptcpwrap
 =========================================================================
 Testsuite summary for mptcpd 0.9
 =========================================================================
 # TOTAL: 17
 # PASS: 14
 # SKIP: 3
 # XFAIL: 0
 # FAIL: 0
 # XPASS: 0
 # ERROR: 0
 =========================================================================

Fixes #204.

134. By Ossama Othman <email address hidden>

NEWS: Correct typo.

133. By Ossama Othman <email address hidden>

mptcpd 0.9

- mptcpd
    - Several security hardening fixes were made including missing
      hardening flags for the `mptcpize' program and compile-time
      hardening (e.g. _FORTIFY_SOURCE) that was inadvertently disabled
      in some cases.

    - Systemd based start of mptcpd has been delayed until the
      multi-user environment is fully operational.

    - mptcpd will only support one kernel at run-time. The kernel may
      be selected through the new "--with-kernel" `configure' script
      option, e.g. "./configure --with-kernel=upstream". Supported
      kernels are "upstream" and "multipath-tcp.org". The `configure'
      script will attempt to automatically detect the kernel, and
      fallback on the upstream kernel if it cannot do so.

    - mptcpd_addr_info is now an opaque structure. Field accessor
      functions were added to the <mptcpd/addr_info.h> header,
      accordingly.

    - Address filtering based on default route availability was
      implemented in the mptcpd network monitor through a new
      "check_route" mptcpd command line option notify flag,
      e.g. --notify-flags=check_route.

    - mptcpd initialization order issues were addressed to ensure that
      the internal mptcpd state is stable and consistent prior to
      invoking user provided callbacks such as "pm_ready".

    - A "complete" callback parameter was added to
      mptcpd_kpm_get_addr() and mptcpd_kpm_dump_addr() to allow the
      user to be notified when these asynchronous calls complete.
      This is particularly useful for the case where no results are
      available, which consequently prevents the "results" callback
      from being called.

    - The mptcpd_kpm_add_addr() function no longer ignores the port
      parameter.

    - A new command line option "--load-plugins" was added to allow
      the user to specify which mptcpd plugins to load instead loading
      all plugins.

    - ELL >= 0.30 is now required.

    - The mptcpd unit test suite was expanded to further improve code
      coverage.

- mptcpize
    - mptcpize will now hijack socket() calls that specify the
      IPPROTO_IP protocol.

    - An issue that prevented mptcpize from updating systemd unit
      files on a different filesystem was corrected.

    - The libmptcpwrap library is now installed in ${libdir}/mptcpize
      instead of ${libdir}/mptcpd to differentiate it from mptcpd
      plugins.

Branch metadata

Branch format:
Branch format 7
Repository format:
Bazaar repository format 2a (needs bzr 1.16 or later)
This branch contains Public information 
Everyone can see this information.

Subscribers