-
Notifications
You must be signed in to change notification settings - Fork 37
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add SlirpService for Ethernet over BLE
- Loading branch information
Showing
159 changed files
with
23,264 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
|
||
# For more information about using CMake with Android Studio, read the | ||
# documentation: https://d.android.com/studio/projects/add-native-code.html. | ||
# For more examples on how to use CMake, see https://github.com/android/ndk-samples. | ||
|
||
# Sets the minimum CMake version required for this project. | ||
cmake_minimum_required(VERSION 3.22.1) | ||
|
||
# Declares the project name. The project name can be accessed via ${ PROJECT_NAME}, | ||
# Since this is the top level CMakeLists.txt, the project name is also accessible | ||
# with ${CMAKE_PROJECT_NAME} (both CMake variables are in-sync within the top level | ||
# build script scope). | ||
project("sync") | ||
|
||
add_subdirectory(libslirp) | ||
|
||
# Creates and names a library, sets it as either STATIC | ||
# or SHARED, and provides the relative paths to its source code. | ||
# You can define multiple libraries, and CMake builds them for you. | ||
# Gradle automatically packages shared libraries with your APK. | ||
# | ||
# In this top level CMakeLists.txt, ${CMAKE_PROJECT_NAME} is used to define | ||
# the target library name; in the sub-module's CMakeLists.txt, ${PROJECT_NAME} | ||
# is preferred for the same purpose. | ||
# | ||
# In order to load a library into your app from Java/Kotlin, you must call | ||
# System.loadLibrary() and pass the name of the library defined here; | ||
# for GameActivity/NativeActivity derived applications, the same library name must be | ||
# used in the AndroidManifest.xml file. | ||
add_library(${CMAKE_PROJECT_NAME} SHARED | ||
# List C/C++ source files with relative paths to this CMakeLists.txt. | ||
sync.cpp) | ||
|
||
# Specifies libraries CMake should link to your target library. You | ||
# can link libraries from various origins, such as libraries defined in this | ||
# build script, prebuilt third-party libraries, or Android system libraries. | ||
target_link_libraries(${CMAKE_PROJECT_NAME} | ||
slirp | ||
android | ||
log) | ||
|
||
target_compile_options(${CMAKE_PROJECT_NAME} PRIVATE | ||
-fvisibility=hidden) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,58 @@ | ||
# https://clang.llvm.org/docs/ClangFormat.html | ||
# https://clang.llvm.org/docs/ClangFormatStyleOptions.html | ||
--- | ||
Language: Cpp | ||
AlignAfterOpenBracket: Align | ||
AlignConsecutiveAssignments: false # although we like it, it creates churn | ||
AlignConsecutiveDeclarations: false | ||
AlignEscapedNewlinesLeft: true | ||
AlignOperands: true | ||
AlignTrailingComments: false # churn | ||
AllowAllParametersOfDeclarationOnNextLine: true | ||
AllowShortBlocksOnASingleLine: false | ||
AllowShortCaseLabelsOnASingleLine: false | ||
AllowShortFunctionsOnASingleLine: None | ||
AllowShortIfStatementsOnASingleLine: false | ||
AllowShortLoopsOnASingleLine: false | ||
AlwaysBreakAfterReturnType: None # AlwaysBreakAfterDefinitionReturnType is taken into account | ||
AlwaysBreakBeforeMultilineStrings: false | ||
BinPackArguments: true | ||
BinPackParameters: true | ||
BraceWrapping: | ||
AfterControlStatement: false | ||
AfterEnum: false | ||
AfterFunction: true | ||
AfterStruct: false | ||
AfterUnion: false | ||
BeforeElse: false | ||
IndentBraces: false | ||
BreakBeforeBinaryOperators: None | ||
BreakBeforeBraces: Custom | ||
BreakBeforeTernaryOperators: false | ||
BreakStringLiterals: true | ||
ColumnLimit: 80 | ||
ContinuationIndentWidth: 4 | ||
Cpp11BracedListStyle: false | ||
DerivePointerAlignment: false | ||
DisableFormat: false | ||
IndentCaseLabels: false | ||
IndentWidth: 4 | ||
IndentWrappedFunctionNames: false | ||
KeepEmptyLinesAtTheStartOfBlocks: false | ||
MacroBlockBegin: '.*_BEGIN$' # only PREC_BEGIN ? | ||
MacroBlockEnd: '.*_END$' | ||
MaxEmptyLinesToKeep: 2 | ||
PointerAlignment: Right | ||
ReflowComments: true | ||
SortIncludes: false | ||
SpaceAfterCStyleCast: false | ||
SpaceBeforeAssignmentOperators: true | ||
SpaceBeforeParens: ControlStatements | ||
SpaceInEmptyParentheses: false | ||
SpacesBeforeTrailingComments: 1 | ||
SpacesInContainerLiterals: true | ||
SpacesInParentheses: false | ||
SpacesInSquareBrackets: false | ||
Standard: Auto | ||
UseTab: Never | ||
... |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
*.[aod] | ||
*.gcda | ||
*.gcno | ||
*.gcov | ||
*.lib | ||
*.obj | ||
/build/ | ||
/TAGS | ||
/cscope* | ||
/src/libslirp-version.h | ||
/tags |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,110 @@ | ||
image: fedora:latest | ||
|
||
variables: | ||
DEPS: meson ninja-build | ||
gcc libasan liblsan libubsan pkg-config glib2-devel | ||
mingw64-gcc mingw64-pkg-config mingw64-glib2 | ||
clang-analyzer git-core | ||
|
||
before_script: | ||
- dnf install -y $DEPS | ||
- git fetch --tags https://gitlab.freedesktop.org/slirp/libslirp.git | ||
- git describe | ||
|
||
build: | ||
script: | ||
- meson --werror build || (cat build/meson-logs/meson-log.txt && exit 1) | ||
- ninja -C build | ||
- (cd build && meson test) || (cat build/meson-logs/testlog.txt && exit 1) | ||
- ninja -C build scan-build | ||
|
||
build-asan: | ||
script: | ||
- CFLAGS=-fsanitize=address meson --werror build || (cat build/meson-logs/meson-log.txt && exit 1) | ||
- ninja -C build | ||
- (cd build && ASAN_OPTIONS=detect_leaks=0 meson test) || (cat build/meson-logs/testlog.txt && exit 1) | ||
|
||
build-lsan: | ||
script: | ||
- CFLAGS=-fsanitize=leak meson --werror build || (cat build/meson-logs/meson-log.txt && exit 1) | ||
- ninja -C build | ||
- (cd build && meson test) || (cat build/meson-logs/testlog.txt && exit 1) | ||
|
||
build-usan: | ||
script: | ||
- CFLAGS=-fsanitize=undefined meson --werror build || (cat build/meson-logs/meson-log.txt && exit 1) | ||
- ninja -C build | ||
- (cd build && meson test) || (cat build/meson-logs/testlog.txt && exit 1) | ||
|
||
fuzz: | ||
parallel: | ||
matrix: | ||
- TARGET: [arp, ip-header, udp, udp-h, tftp, dhcp, icmp, tcp, tcp-h, ndp, ip6-header, udp6, udp6-h, tftp6, icmp6, tcp6, tcp6-h] | ||
script: | ||
- CC=clang CXX=clang++ meson build -Dllvm-fuzz=true || (cat build/meson-logs/meson-log.txt && exit 1) | ||
- ninja -C build | ||
- build/fuzzing/fuzz-$TARGET -seed=1234 -runs=1000000 fuzzing/IN_$TARGET | ||
artifacts: | ||
when: on_failure | ||
paths: | ||
- crash-* | ||
- leak-* | ||
- oom-* | ||
- timeout-* | ||
|
||
build-mingw64: | ||
script: | ||
- (mkdir buildw && cd buildw && mingw64-meson --werror) || (cat buildw/meson-logs/meson-log.txt && exit 1) | ||
- ninja -C buildw | ||
|
||
Coverity: | ||
only: | ||
refs: | ||
- master | ||
- coverity | ||
script: | ||
- dnf update -y | ||
- dnf install -y curl clang | ||
- curl -o /tmp/cov-analysis-linux64.tgz https://scan.coverity.com/download/linux64 | ||
--form project=$COVERITY_SCAN_PROJECT_NAME --form token=$COVERITY_SCAN_TOKEN | ||
- tar xfz /tmp/cov-analysis-linux64.tgz | ||
- CC=clang meson build | ||
- cov-analysis-linux64-*/bin/cov-build --dir cov-int ninja -C build | ||
- tar cfz cov-int.tar.gz cov-int | ||
- curl https://scan.coverity.com/builds?project=$COVERITY_SCAN_PROJECT_NAME | ||
--form token=$COVERITY_SCAN_TOKEN --form email=$GITLAB_USER_EMAIL | ||
--form [email protected] --form version="`git describe --tags`" | ||
--form description="`git describe --tags` / $CI_COMMIT_TITLE / $CI_COMMIT_REF_NAME:$CI_PIPELINE_ID " | ||
|
||
integration-slirp4netns: | ||
variables: | ||
SLIRP4NETNS_VERSION: "v1.1.12" | ||
# Consumed by `make benchmark` | ||
BENCHMARK_IPERF3_DURATION: "10" | ||
script: | ||
# Install libslirp | ||
- meson build | ||
- ninja -C build install | ||
# Register the path of libslirp.so.0 | ||
- echo /usr/local/lib64 >/etc/ld.so.conf.d/libslirp.conf | ||
- ldconfig | ||
# Install the dependencies of slirp4netns and its test suite | ||
# TODO: install udhcpc for `slirp4netns/tests/test-slirp4netns-dhcp.sh` (currently skipped, due to lack of udhcpc) | ||
- dnf install -y autoconf automake findutils iperf3 iproute iputils jq libcap-devel libseccomp-devel nmap-ncat util-linux | ||
# Check whether the runner environment is configured correctly | ||
- unshare -rn true || (echo Make sure you have relaxed seccomp and appamor && exit 1) | ||
- unshare -rn ip tap add tap0 mode tap || (echo Make sure you have /dev/net/tun && exit 1) | ||
# Install slirp4netns | ||
- git clone https://github.com/rootless-containers/slirp4netns -b "${SLIRP4NETNS_VERSION}" | ||
- cd slirp4netns | ||
- ./autogen.sh | ||
- ./configure | ||
- make | ||
- make install | ||
- slirp4netns --version | ||
# Run slirp4netns integration test | ||
- make distcheck || (cat $(find . -name 'test-suite.log' ) && exit 1) | ||
# Run benchmark test to ensure that libslirp can actually handle packets, with several MTU configurations | ||
- make benchmark MTU=1500 | ||
- make benchmark MTU=512 | ||
- make benchmark MTU=65520 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
[gitpublishprofile "default"] | ||
base = master | ||
to = [email protected] |
Oops, something went wrong.