aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/nat
AgeCommit message (Expand)AuthorFilesLines
2019-01-22NAT: ipfix call optimizationFilip Varga4-9/+10
2019-01-21NAT: VPP-1537 IPFIX per worker processingFilip Varga21-533/+545
2019-01-20buffers: don't init metadata, as it is already initializedDamjan Marion1-36/+0
2019-01-16NAT: Fixed issues with dropping reverse packets with output-feature.Dmitry Vakhrushev1-0/+32
2018-12-21NAT: fix coverity error 190176 (VPP-1474)Matus Fabian1-0/+2
2018-12-20NAT: total users and sessions gauges (VPP-1484)Matus Fabian10-9/+154
2018-12-18NAT44: nat44_add_del_lb_static_mapping enhancements (VPP-1514)Matus Fabian6-54/+447
2018-12-14NAT: counters (VPP-1484)Matus Fabian8-76/+362
2018-11-29NAT: syslog - sessions logging (VPP-1139)Matus Fabian11-2/+463
2018-11-23NAT44: improve expired sessions reuse (VPP-1503)Matus Fabian2-79/+65
2018-11-22NAT44: Apply transitory timeout on TCP RST (VPP-1494)Matus Fabian2-0/+9
2018-11-20NAT44: fix virtual fragmentation reassembly in forwarding mode (VPP-1501)Matus Fabian1-0/+8
2018-11-19NAT44: fix bug in TCP close with output-feature interface (VPP-1493)Matus Fabian4-4/+82
2018-11-14Remove c-11 memcpy checks from perf-critical codeDave Barach10-99/+92
2018-11-07NAT44: fix undesired dependency between static mapping and address from the p...Matus Fabian2-1/+9
2018-10-23c11 safe string handling supportDave Barach12-71/+71
2018-10-19NAT44: fix ICMP virtual fragmentation reassembly (VPP-1466)Matus Fabian4-63/+122
2018-10-19vppinfra: add atomic macros for __sync builtinsSirshak Das1-4/+4
2018-10-12NAT44: identity NAT fix (VPP-1441)Matus Fabian4-32/+118
2018-10-08NAT44: do not create session record for identity mapping (VPP-1439)Matus Fabian10-103/+233
2018-10-05NAT: convert remaining clib_warning to nat_log_*Juraj Sloboda4-30/+30
2018-10-02Update code to compute checksum for buffer chainsJuraj Sloboda2-6/+10
2018-10-01thread: Add show threads apiMohsin Kazmi1-1/+1
2018-09-26NAT44: endpoint-dependent mode session timeout improvement (VPP-1423)Matus Fabian2-0/+28
2018-09-25NAT44: fix nat44_o2i_ed_is_idle_session_cb (VPP-1424)Matus Fabian2-4/+1
2018-09-24NAT44: endpoint-dependent mode session timeout improvement (VPP-1423)Matus Fabian4-27/+63
2018-09-24Trivial: Clean up some typos.Paul Vinciguerra1-3/+3
2018-09-21NAT: Refactoring / Housekeeping (VPP-1415)Matus Fabian19-10848/+11482
2018-09-20NAT44 virtual fragmentation reassembly for endpoint-dependent mode (VPP-1325)Juraj Sloboda6-147/+1296
2018-09-19nat: free port_bitmapdongjuan1-0/+7
2018-09-13NAT: TCP MSS clampingMatus Fabian9-0/+236
2018-09-11nat: fix busy ports of each threaddongjuan1-4/+15
2018-09-06NAT: fix maximum out of order fragments (VPP-1399)Matus Fabian6-8/+38
2018-09-04NAT: add support for configurable port range (VPP-1346)Matus Fabian5-3/+310
2018-09-03NAT44: client-IP based session affinity for load-balancing (VPP-1297)Matus Fabian10-40/+524
2018-08-27NAT44: fix nat44_ed_not_translate_output_feature for multiple VRF (VPP-1404)Matus Fabian1-9/+15
2018-08-27cmake: Fix plugins .h includesMohsin Kazmi1-0/+4
2018-08-27NAT44: add support for session timeout (VPP-1272)Matus Fabian13-534/+684
2018-08-27cmake: add missing vat pluginsDamjan Marion1-0/+3
2018-08-25cmake: improve add_vpp_plugin macroDamjan Marion1-2/+5
2018-08-22NAT: update nat_show_config_reply API (VPP-1403)Matus Fabian3-1/+36
2018-08-17CMake as an alternative to autotools (experimental)Damjan Marion1-0/+41
2018-08-16VPP-1386: fix wrong ip address of hash key for creating user in unknown protocolshubing guo1-1/+1
2018-08-15Remove client_index field from replies in APIOndrej Fabry1-1/+0
2018-08-15NAT44: fix next_src_nat (VPP-1384)Matus Fabian1-6/+7
2018-08-15VPP-1387:foreach outside address vector to find correct index when free outsi...shubing guo3-21/+16
2018-08-15NAT44: fix bug in snat_interface_add_del (VPP-1380)Matus Fabian1-4/+4
2018-08-15NAT64: fix TCP session expire (VPP-1390)Matus Fabian2-7/+20
2018-08-11VPP-1381: Fix the incorrect if condition when delete session for static mappingshubing guo1-2/+2
2018-08-09NAT44: delete user with zero sessions (VPP-1282)Matus Fabian5-20/+52
an class="k">)/build \ $(PAPI_PYTHON_SRC_DIR)/vpp_papi.egg-info \ $(PAPI_PYTHON_SRC_DIR)/vpp_papi/__pycache__ PAPI_INSTALL_FLAGS=$(PIP_INSTALL_DONE) $(PIP_PATCH_DONE) $(PAPI_INSTALL_DONE) $(PIP_TOOLS_INSTALL_DONE): @rm -rf $(VENV_PATH) @mkdir -p $(VENV_RUN_DIR) @virtualenv $(VENV_PATH) -p $(PYTHON_INTERP) # pip version pinning @bash -c "source $(VENV_PATH)/bin/activate && \ $(PYTHON_INTERP) -m pip install pip===$(PIP_VERSION)" @bash -c "source $(VENV_PATH)/bin/activate && \ $(PYTHON_INTERP) -m pip install pip-tools===$(PIP_TOOLS_VERSION)" @touch $@ $(PYTHON_DEPENDS): $(PIP_TOOLS_INSTALL_DONE) requirements.txt @bash -c "source $(VENV_PATH)/bin/activate && \ CUSTOM_COMPILE_COMMAND='make test-refresh-deps (or update requirements.txt)' \ $(PYTHON_INTERP) -m piptools compile -q --generate-hashes requirements.txt --output-file $@" $(PIP_INSTALL_DONE): $(PYTHON_DEPENDS) @bash -c "source $(VENV_PATH)/bin/activate && \ $(PYTHON_INTERP) -m piptools sync $(PYTHON_DEPENDS)" @touch $@ $(PIP_PATCH_DONE): $(PIP_INSTALL_DONE) @echo --- patching --- @sleep 1 # Ensure python recompiles patched *.py files -> *.pyc for f in $(CURDIR)/patches/scapy-2.4.3/*.patch ; do \ echo Applying patch: $$(basename $$f) ; \ patch --forward -p1 -d $(SCAPY_SOURCE) < $$f ; \ retCode=$$?; \ [ $$retCode -gt 0 ] && exit $$retCode; \ done; \ touch $@ $(PAPI_INSTALL_DONE): $(PIP_PATCH_DONE) @bash -c "source $(VENV_PATH)/bin/activate && $(PYTHON_INTERP) -m pip install -e $(PAPI_PYTHON_SRC_DIR)" @touch $@ .PHONY: refresh-deps refresh-deps: clean-deps $(PYTHON_DEPENDS) .PHONY: clean-deps clean-deps: @rm -f $(PYTHON_DEPENDS) INTERN_PLUGIN_SRC_DIR=$(WS_ROOT)/src/plugins ifneq ($(EXTERN_PLUGIN_SRC_DIR),) PLUGIN_SRC_DIR=$(EXTERN_PLUGIN_SRC_DIR) else PLUGIN_SRC_DIR=$(INTERN_PLUGIN_SRC_DIR) endif define retest-func @env FORCE_FOREGROUND=$(FORCE_FOREGROUND) FAILED_DIR=$(FAILED_DIR) VENV_PATH=$(VENV_PATH) scripts/setsid_wrapper.sh $(FORCE_FOREGROUND) $(VENV_PATH)/bin/activate $(PYTHON_INTERP) $(PYTHON_PROFILE_OPTS) $(BUILD_TEST_SRC)/run_tests.py -d $(BUILD_TEST_SRC) $(UNITTEST_EXTRA_OPTS) || env FAILED_DIR=$(FAILED_DIR) COMPRESS_FAILED_TEST_LOGS=$(COMPRESS_FAILED_TEST_LOGS) scripts/compress_failed.sh endef .PHONY: sanity ifeq ($(SANITY),no) SANITY_IMPORT_VPP_PAPI_CMD=true SANITY_RUN_VPP_CMD=true else SANITY_IMPORT_VPP_PAPI_CMD=source $(VENV_PATH)/bin/activate && $(PYTHON_INTERP) $(BUILD_TEST_SRC)/sanity_import_vpp_papi.py SANITY_RUN_VPP_CMD=source $(VENV_PATH)/bin/activate && PYTHONPATH=$(BUILD_TEST_SRC) $(PYTHON_INTERP) $(BUILD_TEST_SRC)/sanity_run_vpp.py endif ifndef TEST_JOBS PARALLEL_ILLEGAL=0 else ifeq ($(FORCE_FOREGROUND),0) PARALLEL_ILLEGAL=0 else ifeq ($(TEST_JOBS),auto) PARALLEL_ILLEGAL=0 else ifeq ($(TEST_JOBS),1) PARALLEL_ILLEGAL=0 else PARALLEL_ILLEGAL=1 endif sanity: test-dep verify-no-running-vpp @sys_req/dev_shm_size.sh @bash -c "test $(PARALLEL_ILLEGAL) -eq 0 ||\ (echo \"*******************************************************************\" &&\ echo \"* Sanity check failed, TEST_JOBS is not 1 or 'auto' and DEBUG, STEP or PROFILE is set\" &&\ echo \"*******************************************************************\" &&\ false)" @bash -c "$(SANITY_IMPORT_VPP_PAPI_CMD) ||\ (echo \"*******************************************************************\" &&\ echo \"* Sanity check failed, cannot import vpp_papi\" &&\ echo \"* to debug: \" &&\ echo \"* 1. enter test shell: make test-shell\" &&\ echo \"* 2. execute debugger: gdb python -ex 'run sanity_import_vpp_papi.py'\" &&\ echo \"*******************************************************************\" &&\ false)" @bash -c "$(SANITY_RUN_VPP_CMD) ||\ (echo \"*******************************************************************\" &&\ echo \"* Sanity check failed, cannot run vpp\" &&\ echo \"*******************************************************************\" &&\ false)" .PHONY: ext-test-apps ext-test-apps: make -C ext test-apps $(BUILD_TEST_SRC): verify-env @mkdir -p $@ @for file in $(VPP_TEST_SRC); do if [ ! -e $(BUILD_TEST_SRC)/$$(basename $$file) ] ; then ln -s $$file $(BUILD_TEST_SRC) ; fi ; done $(FAILED_DIR): reset @mkdir -p $@ .PHONY: test-dep test-dep: $(BUILD_TEST_SRC) $(PAPI_INSTALL_DONE) $(FAILED_DIR) .PHONY: test test: test-dep ext-test-apps sanity $(call retest-func) .PHONY: retest retest: verify-env sanity $(FAILED_DIR) $(call retest-func) .PHONY: shell shell: test-dep @echo "source $(VENV_PATH)/bin/activate;\ cd $(BUILD_TEST_SRC);\ export PYTHONPATH=$(BUILD_TEST_SRC);\ export RND_SEED=$(RND_SEED);\ echo '***';\ echo PYTHONPATH=$(BUILD_TEST_SRC);\ echo RND_SEED=$(RND_SEED);\ echo VPP_BUILD_DIR=$(VPP_BUILD_DIR);\ echo VPP_BIN=$(VPP_BIN);\ echo VPP_PLUGIN_PATH=$(VPP_PLUGIN_PATH);\ echo VPP_TEST_PLUGIN_PATH=$(VPP_TEST_PLUGIN_PATH);\ echo VPP_INSTALL_PATH=$(VPP_INSTALL_PATH);\ echo EXTERN_TESTS=$(EXTERN_TESTS);\ echo EXTERN_PLUGINS=$(EXTERN_PLUGINS);\ echo EXTERN_COV_DIR=$(EXTERN_COV_DIR);\ echo LD_LIBRARY_PATH=$(LD_LIBRARY_PATH);\ echo '***';\ exec </dev/tty" | bash -i .PHONY: reset reset: @rm -f /dev/shm/vpp-unittest-* @rm -rf /tmp/vpp-unittest-* @rm -f /tmp/api_post_mortem.* @rm -rf $(FAILED_DIR) .PHONY: wipe wipe: reset @make -C ext clean @rm -rf $(VENV_PATH) @rm -rf $(patsubst %,%/__pycache__, $(VPP_TEST_DIRS) $(BUILD_TEST_SRC)) $(TEST_DOC_BR): @mkdir -p $@ @bash -c "source $(VENV_PATH)/bin/activate && \ $(PYTHON_INTERP) -m pip install sphinx sphinx-rtd-theme" @bash -c "source $(VENV_PATH)/bin/activate && make -C doc html" .PHONY: doc doc: $(BUILD_TEST_SRC) $(PIP_PATCH_DONE) $(TEST_DOC_BR) @echo @echo "Test Documentation URL: $(TEST_DOC_BR)/html/index.html" @echo "Run 'make test-wipe-doc test-doc' to rebuild the test docs" @echo .PHONY: wipe-doc wipe-doc: @rm -rf $(TEST_DOC_BR) $(BUILD_COV_DIR): @mkdir -p $@ .PHONY: cov cov: wipe-cov test-dep ext $(BUILD_COV_DIR) @lcov --zerocounters --directory $(VPP_BUILD_DIR) @test -z "$(EXTERN_COV_DIR)" || lcov --zerocounters --directory $(EXTERN_COV_DIR) $(call retest-func) @lcov --capture --directory $(VPP_BUILD_DIR) --output-file $(BUILD_COV_DIR)/coverage.info @test -z "$(EXTERN_COV_DIR)" || lcov --capture --directory $(EXTERN_COV_DIR) --output-file $(BUILD_COV_DIR)/extern-coverage.info @genhtml $(BUILD_COV_DIR)/coverage.info --output-directory $(BUILD_COV_DIR)/html @test -z "$(EXTERN_COV_DIR)" || genhtml $(BUILD_COV_DIR)/extern-coverage.info --output-directory $(BUILD_COV_DIR)/extern-html @echo @echo "Build finished. Code coverage report is in $(BUILD_COV_DIR)/html/index.html" @test -z "$(EXTERN_COV_DIR)" || echo "Code coverage report for out-of-tree objects is in $(BUILD_COV_DIR)/extern-html/index.html" .PHONY: wipe-cov wipe-cov: wipe @rm -rf $(BUILD_COV_DIR) .PHONY: wipe-papi wipe-papi: @rm -rf $(PAPI_INSTALL_DONE) $(PAPI_WIPE_DIST) .PHONY: wipe-all wipe-all: wipe wipe-papi wipe-doc wipe-cov @rm -rf $(TEST_BR) .PHONY: checkstyle checkstyle: $(BUILD_TEST_SRC) $(PIP_INSTALL_DONE) @bash -c "source $(VENV_PATH)/bin/activate &&\ $(PYTHON_INTERP) -m pip install pycodestyle" @bash -c "source $(VENV_PATH)/bin/activate &&\ pycodestyle --show-source --ignore=W504,E126,E241,E226,E305,E704,E741,E722 -v $(BUILD_TEST_SRC)/*.py ||\ (echo \"*******************************************************************\" &&\ echo \"* Test framework PEP8 compliance check FAILED \" &&\ echo \"*******************************************************************\" &&\ false)" @echo "*******************************************************************" @echo "* Test framework PEP8 compliance check passed" @echo "*******************************************************************" .PHONY: help help: @echo "Running tests:" @echo "" @echo " test - build and run (basic) functional tests" @echo " test-debug - build and run (basic) functional tests (debug build)" @echo " test-all - build and run functional and extended tests" @echo " test-all-debug - build and run functional and extended tests (debug build)" @echo " retest - run functional tests" @echo " retest-debug - run functional tests (debug build)" @echo " retest-all - run functional and extended tests" @echo " retest-all-debug - run functional and extended tests (debug build)" @echo " test-cov - generate code coverage report for test framework" @echo " test-gcov - build and run functional tests (gcov build)" @echo " test-wipe - wipe (temporary) files generated by unit tests" @echo " test-wipe-cov - wipe code coverage report for test framework" @echo " test-wipe-doc - wipe documentation for test framework" @echo " test-wipe-papi - rebuild vpp_papi sources" @echo " test-wipe-all - wipe (temporary) files generated by unit tests, docs, and coverage" @echo " test-shell - enter shell with test environment" @echo " test-shell-debug - enter shell with test environment (debug build)" @echo " test-checkstyle - check PEP8 compliance for test framework" @echo " test-refresh-deps - refresh the Python dependencies for the tests" @echo "" @echo "Arguments controlling test runs:" @echo " V=[0|1|2] - set test verbosity level" @echo " 0=ERROR, 1=INFO, 2=DEBUG" @echo " TEST_JOBS=[<n>|auto] - use <n> parallel processes for test execution or automatic discovery of maximum acceptable processes (default: 1)" @echo " CACHE_OUTPUT=[0|1] - cache VPP stdout/stderr and log as one block after test finishes (default: 1)" @echo " FAILFAST=[0|1] - fail fast if 1, complete all tests if 0" @echo " TIMEOUT=<timeout> - fail test suite if any single test takes longer than <timeout> (in seconds) to finish (default: 600)" @echo " RETRIES=<n> - retry failed tests <n> times" @echo " DEBUG=<type> - set VPP debugging kind" @echo " DEBUG=core - detect coredump and load it in gdb on crash" @echo " DEBUG=gdb - allow easy debugging by printing VPP PID" @echo " and waiting for user input before running" @echo " and tearing down a testcase" @echo " DEBUG=gdbserver - run gdb inside a gdb server, otherwise" @echo " same as above" @echo " STEP=[yes|no] - ease debugging by stepping through a testcase" @echo " SANITY=[yes|no] - perform sanity import of vpp-api/sanity vpp run before running tests (default: yes)" @echo " EXTENDED_TESTS=[1|y] - used by '[re]test-all' & '[re]test-all-debug' to run extended tests" @echo " TEST=<filter> - filter the set of tests:" @echo " by file-name - only run tests from specified file, e.g. TEST=test_bfd selects all tests from test_bfd.py" @echo " by file-suffix - same as file-name, but 'test_' is omitted e.g. TEST=bfd selects all tests from test_bfd.py" @echo " by wildcard - wildcard filter is <file>.<class>.<test function>, each can be replaced by '*'" @echo " e.g. TEST='test_bfd.*.*' is equivalent to above example of filter by file-name" @echo " TEST='bfd.*.*' is equivalent to above example of filter by file-suffix" @echo " TEST='bfd.BFDAPITestCase.*' selects all tests from test_bfd.py which are part of BFDAPITestCase class" @echo " TEST='bfd.BFDAPITestCase.test_add_bfd' selects a single test named test_add_bfd from test_bfd.py/BFDAPITestCase" @echo " TEST='*.*.test_add_bfd' selects all test functions named test_add_bfd from all files/classes" @echo "" @echo " VPP_ZOMBIE_NOCHECK=1 - skip checking for vpp (zombie) processes (CAUTION)" @echo " COREDUMP_SIZE=<size> - pass <size> as unix { coredump-size <size> } argument to vpp" @echo " e.g. COREDUMP_SIZE=4g" @echo " COREDUMP_SIZE=unlimited" @echo " COREDUMP_COMPRESS=1 - compress core files if not debugging them" @echo " EXTERN_TESTS=<path> - path to out-of-tree test_<name>.py files containing test cases" @echo " EXTERN_PLUGINS=<path> - path to out-of-tree plugins to be loaded by vpp under test" @echo " EXTERN_COV_DIR=<path> - path to out-of-tree prefix, where source, object and .gcda files can be found for coverage report" @echo "" @echo " PROFILE=1 - enable profiling of test framework via cProfile module" @echo " PROFILE_SORT_BY=opt - sort profiling report by opt - consult cProfile documentation for possible values (default: cumtime)" @echo " PROFILE_OUTPUT=file - output profiling info to file - use absolute path (default: stdout)" @echo "" @echo " TEST_DEBUG=1 - turn on debugging of the test framework itself (expert)" @echo "" @echo " SKIP_AARCH64=1 - skip tests that are failing on the ARM platorm in FD.io CI" @echo "" @echo " SOCKET=1 - Communicate with VPP over Unix domain socket instead of SHM" @echo "" @echo " RND_SEED=seed - Seed RND with given seed" @echo "" @echo "Creating test documentation" @echo " test-doc - generate documentation for test framework" @echo " test-wipe-doc - wipe documentation for test framework" @echo "" @echo "Creating test code coverage report" @echo " test-cov - generate code coverage report for test framework" @echo " test-wipe-cov - wipe code coverage report for test framework" @echo "" @echo "Verifying code-style" @echo " test-checkstyle - check PEP8 compliance" @echo ""