Skip to content

Commit

Permalink
mptcpd 0.1a: Initial alpha release.
Browse files Browse the repository at this point in the history
This is the initial (alpha) release of the Multipath TCP Daemon
"mptcpd".  It implements MPTCP path management in the user space by
providing a framework that bridges user defined path management
strategies - i.e. mptcpd plugins - with the Linux kernel side MPTCP
implementation over a generic netlink interface.

The generic netlink interface employed by the Multipath TCP Daemon is
based on an early proposal, and will be superseded by the interface
available in the MPTCP development kernel, i.e.:
            multipath-tcp/mptcp@4ea5dee

In addition to the kernel/user space path management bridging, the
Multipath TCP Daemon also monitors changes to local network interfaces
and addresses that path management strategies may choose to leverage.
Currently, network interfaces and addresses may be queried (pulled).
A network event notification mechanism for plugins is currently a
work-in-progress.

A single-subflow-per-interface - "sspi" - plugin is included in the
source distribution as a reference.   It enforces a single subflow per
network interface per MPTCP connection policy.  Available local
addresses are also sent to the kernel so that they may be advertised
to the peer through a MPTCP ADD_ADDR option.  The current
implementation depends on the remote peer to initiate subflows, which
may then be allowed or closed per this plugin's policy.  Explicitly
adding new subflows through this plugin is currently unsupported, but
is expected to be implemented in the future.
  • Loading branch information
Othman, Ossama committed Mar 28, 2019
0 parents commit c7e2201
Show file tree
Hide file tree
Showing 69 changed files with 11,021 additions and 0 deletions.
111 changes: 111 additions & 0 deletions .clang-format
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
Language: Cpp
# BasedOnStyle: LLVM
AccessModifierOffset: -2
AlignAfterOpenBracket: Align
AlignConsecutiveAssignments: true
AlignConsecutiveDeclarations: false
AlignEscapedNewlines: Right
AlignOperands: true
AlignTrailingComments: true
AllowAllParametersOfDeclarationOnNextLine: false
AllowShortBlocksOnASingleLine: false
AllowShortCaseLabelsOnASingleLine: false
AllowShortFunctionsOnASingleLine: Inline
AllowShortIfStatementsOnASingleLine: false
AllowShortLoopsOnASingleLine: false
AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: false
AlwaysBreakTemplateDeclarations: false
BinPackArguments: false
BinPackParameters: false
BraceWrapping:
AfterClass: true
AfterControlStatement: false
AfterEnum: false
AfterFunction: true
AfterNamespace: true
AfterObjCDeclaration: false
AfterStruct: true
AfterUnion: true
AfterExternBlock: false
BeforeCatch: false
BeforeElse: false
IndentBraces: false
SplitEmptyFunction: true
SplitEmptyRecord: true
SplitEmptyNamespace: true
BreakBeforeBinaryOperators: NonAssignment
BreakBeforeBraces: Custom
BreakBeforeInheritanceComma: false
BreakBeforeTernaryOperators: true
BreakConstructorInitializersBeforeComma: false
BreakConstructorInitializers: BeforeComma
BreakAfterJavaFieldAnnotations: false
BreakStringLiterals: true
ColumnLimit: 74
CommentPragmas: '^ IWYU pragma:'
CompactNamespaces: false
ConstructorInitializerAllOnOneLineOrOnePerLine: false
ConstructorInitializerIndentWidth: 8
ContinuationIndentWidth: 8
Cpp11BracedListStyle: false
DerivePointerAlignment: false
DisableFormat: false
ExperimentalAutoDetectBinPacking: false
FixNamespaceComments: true
ForEachMacros:
- foreach
- Q_FOREACH
- BOOST_FOREACH
IncludeBlocks: Preserve
IncludeCategories:
- Regex: '^"(llvm|llvm-c|clang|clang-c)/'
Priority: 2
- Regex: '^(<|"(gtest|gmock|isl|json)/)'
Priority: 3
- Regex: '.*'
Priority: 1
IncludeIsMainRegex: '(Test)?$'
IndentCaseLabels: false
#IndentPPDirectives: AfterHash
IndentWidth: 8
IndentWrappedFunctionNames: false
JavaScriptQuotes: Leave
JavaScriptWrapImports: true
KeepEmptyLinesAtTheStartOfBlocks: false
MacroBlockBegin: ''
MacroBlockEnd: ''
MaxEmptyLinesToKeep: 1
NamespaceIndentation: All
ObjCBlockIndentWidth: 2
ObjCSpaceAfterProperty: false
ObjCSpaceBeforeProtocolList: true
PenaltyBreakAssignment: 2
PenaltyBreakBeforeFirstCallParameter: 19
PenaltyBreakComment: 300
PenaltyBreakFirstLessLess: 120
PenaltyBreakString: 1000
PenaltyExcessCharacter: 1000000
PenaltyReturnTypeOnItsOwnLine: 60
PointerAlignment: Right
RawStringFormats:
- Delimiter: pb
Language: TextProto
BasedOnStyle: google
ReflowComments: true
SortIncludes: false
SortUsingDeclarations: true
SpaceAfterCStyleCast: true
SpaceAfterTemplateKeyword: false
SpaceBeforeAssignmentOperators: true
SpaceBeforeParens: ControlStatements
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 2
SpacesInAngles: false
SpacesInContainerLiterals: true
SpacesInCStyleCastParentheses: false
SpacesInParentheses: false
SpacesInSquareBrackets: false
Standard: Auto
TabWidth: 8
UseTab: Never
50 changes: 50 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
*.o
*.lo
*.la
*.so*
*.a
*~
*#*#
.#*
*.gcda
*.gcno
*-coverage*
aminclude_static.am
config.log
config.status
Makefile
Makefile.in
.deps
INSTALL
missing
aclocal.m4
ar-lib
autom4te.cache/
compile
configure
depcomp
install-sh
libtool
ltmain.sh
.libs
stamp*
config.*
config-private.h*
mptcpd-*/
*.tar.*
core*
etc/*.conf
src/mptcpd
src/mptcp.service
man/mptcpd.8
test-driver
tests/test-network-monitor
tests/test-plugin
tests/test-path-manager
tests/test-commands
tests/test-configuration
tests/test-cxx-build
tests/*.log
tests/*.trs
tests/test-suite.log
README
1 change: 1 addition & 0 deletions AUTHORS
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Ossama Othman <[email protected]>
12 changes: 12 additions & 0 deletions COPYING
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
The Multipath TCP Daemon program and library sources are licensed
under the 3-Clause BSD License. The full terms of the license are
available under:

LICENSES/COPYING.BSD

The `include/linux/mptcp_genl.h' header file is licensed under the GPL
2.0 license with the Linux system call exception. Full terms are
available under:

LICENSES/COPYING.GPL
LICENSES/Linux-syscall-note
2 changes: 2 additions & 0 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
See the NEWS files for change descriptions at a high level, and the git
log for low level descriptions.
Loading

0 comments on commit c7e2201

Please sign in to comment.