├── extras ├── vpp_config │ ├── __init__.py │ ├── data │ │ ├── cloud-config.iso │ │ ├── 80-vpp.conf.template │ │ └── auto-config.yaml │ ├── scripts │ │ └── requirements.txt │ └── setup.cfg ├── hs-test │ ├── resources │ │ ├── envoy │ │ │ ├── envoy.log │ │ │ └── vcl.conf │ │ ├── curl │ │ │ ├── write_out_upload │ │ │ ├── write_out_download │ │ │ ├── write_out_upload_connect │ │ │ └── write_out_download_connect │ │ └── nginx │ │ │ ├── html │ │ │ └── index.html │ │ │ └── vcl.conf │ ├── script │ │ ├── nginx_server_entrypoint.sh │ │ ├── nginx_ldp.sh │ │ └── build_curl.sh │ ├── topo-containers │ │ ├── 2containers.yaml │ │ ├── singleCpuPinning.yaml │ │ └── 2peerVethLdp.yaml │ ├── topo-network │ │ ├── tap.yaml │ │ ├── 2taps.yaml │ │ ├── ns.yaml │ │ └── 2peerVeth.yaml │ ├── docker │ │ ├── Dockerfile.envoy │ │ ├── Dockerfile.curl │ │ ├── Dockerfile.nginx │ │ └── Dockerfile.nginx-server │ ├── vars │ ├── tools │ │ └── http_server │ │ │ └── http_server.go │ └── mem_leak_test.go ├── vagrant │ ├── .gitignore │ └── env.sh ├── scripts │ ├── fts.py │ ├── build_static_vppctl.sh │ ├── pci-nic-bind-to-kernel │ └── patches │ │ └── macos_build_externals.patch ├── selinux │ └── vpp-custom.if ├── apps │ ├── .gitignore │ ├── bootstrap │ └── configure.ac ├── strongswan │ ├── configs │ │ ├── initiator │ │ │ ├── ipsec.secrets │ │ │ └── ipsec.conf │ │ ├── responder │ │ │ ├── ipsec.secrets │ │ │ └── ipsec.conf │ │ ├── responder_nat │ │ │ ├── ipsec.secrets │ │ │ └── ipsec.conf │ │ ├── responder_vrf │ │ │ ├── ipsec.secrets │ │ │ ├── ipsec1.conf │ │ │ └── ipsec2.conf │ │ ├── responder_keepalive │ │ │ ├── ipsec.secrets │ │ │ └── ipsec.conf │ │ └── strongswan.conf │ ├── test_initiator.sh │ ├── test_responder.sh │ ├── test_responder_nat.sh │ ├── test_responder_vrf.sh │ ├── vpp_sswan │ │ ├── docker │ │ │ ├── scripts │ │ │ │ ├── init.sh │ │ │ │ └── run_vpp.sh │ │ │ ├── configs │ │ │ │ ├── vpp.conf │ │ │ │ └── startup.conf │ │ │ └── exposedockernetns.sh │ │ └── kernel-vpp.conf │ ├── test_responder_keepalive.sh │ ├── run.sh │ └── README.rst ├── gomemif │ └── migrated.txt ├── libmemif │ ├── test │ │ ├── CMakeLists.txt │ │ ├── suite_main │ │ │ └── CMakeLists.txt │ │ └── suite_socket │ │ │ └── CMakeLists.txt │ ├── docs │ │ └── architecture.png │ └── dockerfile ├── packetforge │ ├── parsegraph │ │ ├── .gitattributes │ │ ├── edges │ │ │ ├── mac_after_gre.json │ │ │ ├── mac_after_nvgre.json │ │ │ ├── mac_after_vxlan.json │ │ │ ├── ip_after_gtppsc.json │ │ │ ├── ipv6_after_gtppsc.json │ │ │ ├── ah_after_ipv4.json │ │ │ ├── gtpc_after_udp.json │ │ │ ├── gtpu_after_udp.json │ │ │ ├── pfcp_after_udp.json │ │ │ ├── tcp_after_ipv4.json │ │ │ ├── esp_after_ipv4.json │ │ │ ├── icmp_after_ipv4.json │ │ │ ├── ipv4_after_ipv4.json │ │ │ ├── ipv6_after_ipv4.json │ │ │ ├── sctp_after_ipv4.json │ │ │ ├── udp_after_ipv4.json │ │ │ ├── gre_after_ipv4.json │ │ │ ├── ipv4_after_gre.json │ │ │ ├── ipv6_after_gre.json │ │ │ ├── sctp_after_ipv6.json │ │ │ ├── ip_after_gtpu.json │ │ │ ├── ipv4_after_geneve.json │ │ │ ├── ipv4_after_macvlan.json │ │ │ ├── ipv4_after_vxlangpe.json │ │ │ ├── ipv6_after_geneve.json │ │ │ ├── ipv6_after_macvlan.json │ │ │ ├── ipv6_after_vxlangpe.json │ │ │ ├── mac_after_geneve.json │ │ │ ├── mac_after_vxlangpe.json │ │ │ ├── arpv4_after_macvlan.json │ │ │ ├── l2tpv2_after_udp.json │ │ │ ├── tunnel_after_udp.json │ │ │ ├── ah_after_ipv6.json │ │ │ ├── tcp_after_ipv6.json │ │ │ ├── esp_after_ipv6.json │ │ │ ├── ipv4_after_ipv6.json │ │ │ ├── ipv6_after_ipv6.json │ │ │ ├── udp_after_ipv6.json │ │ │ ├── gre_after_ipv6.json │ │ │ ├── icmpv6_after_ipv6.json │ │ │ ├── ipv6srh_after_ipv6.json │ │ │ ├── vlan_after_macvlan.json │ │ │ └── gtppsc_after_gtpu.json │ │ └── nodes │ │ │ ├── esp.json │ │ │ ├── icmp.json │ │ │ ├── icmpv6.json │ │ │ ├── payload.json │ │ │ ├── sctp.json │ │ │ ├── mac.json │ │ │ ├── udp.json │ │ │ └── ah.json │ ├── StringFormat.py │ └── InputFormat.py ├── deprecated │ └── vom │ │ └── vom │ │ └── .clang-format ├── gmod │ └── configure.ac ├── vcl-ldpreload │ └── test │ │ └── common │ │ └── vpp_docker.conf ├── vpp_stats_fs │ ├── go.mod │ └── Makefile ├── configs │ ├── http │ │ ├── startup.cfg │ │ └── setup.http │ └── static_http │ │ └── setup.http ├── docker │ ├── run │ │ ├── Dockerfile.centos7 │ │ ├── Dockerfile.bionic │ │ └── Dockerfile.xenial │ └── build │ │ ├── Dockerfile.centos7 │ │ ├── Dockerfile.bionic │ │ └── Dockerfile.xenial ├── gdb │ ├── gdb_cmdfile.vpp │ ├── gdb_cmdfile.vcl_client │ └── gdb_cmdfile.vcl_server ├── pg │ └── ip6_simple.pg ├── vpptop │ └── Makefile ├── snap │ └── prep ├── bpf │ └── Makefile └── rpm │ └── opensuse │ └── Dockerfile ├── src ├── vat │ ├── types.c │ ├── ip_types_api.c │ └── protocols.def ├── vpp │ ├── api │ │ ├── vat.h │ │ └── api_format.c │ └── conf │ │ └── 80-vpp.conf ├── tools │ ├── vppapigen │ │ ├── vppapigen │ │ └── vppapigen_crc.py │ ├── appimage │ │ ├── vpp.png │ │ └── vpp.desktop │ ├── perftool │ │ ├── new.cpel │ │ └── new.elog │ └── g2 │ │ └── FEATURE.yaml ├── vpp-api │ ├── python │ │ ├── vpp_papi │ │ │ └── tests │ │ │ │ ├── __init__.py │ │ │ │ └── test_macaddress.py │ │ ├── pyproject.toml │ │ └── setup.cfg │ └── lua │ │ └── examples │ │ ├── lute │ │ └── script.lute │ │ └── cli │ │ └── README.md ├── plugins │ ├── lisp │ │ ├── lisp-gpe │ │ │ ├── lisp_types_api.c │ │ │ ├── lisp_types_api.h │ │ │ └── FEATURE.yaml │ │ └── lisp-cp │ │ │ └── FEATURE.yaml │ ├── srv6-mobile │ │ ├── extra │ │ │ ├── requirements.txt │ │ │ └── startup.conf.j2 │ │ └── FEATURE.yaml │ ├── nat │ │ ├── pnat │ │ │ ├── .clang-format │ │ │ └── tests │ │ │ │ └── missing_rule.def │ │ └── extras │ │ │ ├── nat_dynamic │ │ │ └── trex_cfg.yaml │ ├── bpf_trace_filter │ │ ├── bpf_trace_filter.rst │ │ └── FEATURE.yaml │ ├── l2tp │ │ └── FEATURE.yaml │ ├── dma_intel │ │ ├── CMakeLists.txt │ │ └── format.c │ ├── af_xdp │ │ └── FEATURE.yaml │ ├── rdma │ │ └── FEATURE.yaml │ ├── pvti │ │ └── FEATURE.yaml │ ├── nsim │ │ └── FEATURE.yaml │ ├── bufmon │ │ └── FEATURE.yaml │ ├── hsi │ │ └── FEATURE.yaml │ ├── igmp │ │ └── FEATURE.yaml │ ├── srtp │ │ └── FEATURE.yaml │ ├── gtpu │ │ └── FEATURE.yaml │ ├── lldp │ │ └── FEATURE.yaml │ ├── pppoe │ │ └── FEATURE.yaml │ ├── srmpls │ │ └── FEATURE.yaml │ ├── srv6-ad │ │ └── FEATURE.yaml │ ├── srv6-as │ │ └── FEATURE.yaml │ ├── tracenode │ │ └── FEATURE.yaml │ ├── npt66 │ │ └── CMakeLists.txt │ ├── vhost │ │ ├── plugin.c │ │ └── FEATURE.yaml │ ├── af_packet │ │ └── plugin.c │ ├── arping │ │ └── FEATURE.yaml │ ├── vxlan │ │ └── plugin.c │ ├── lacp │ │ └── FEATURE.yaml │ ├── osi │ │ └── FEATURE.yaml │ ├── srv6-am │ │ └── FEATURE.yaml │ ├── crypto_ipsecmb │ │ └── FEATURE.yaml │ ├── lb │ │ └── FEATURE.yaml │ ├── dev_armada │ │ ├── plugin.c │ │ └── musdk.h │ ├── srv6-ad-flow │ │ └── FEATURE.yaml │ ├── ip_session_redirect │ │ └── FEATURE.yaml │ ├── prom │ │ └── FEATURE.yaml │ ├── quic │ │ └── FEATURE.yaml │ ├── wireguard │ │ └── FEATURE.yaml │ ├── dev_iavf │ │ └── CMakeLists.txt │ ├── tlsopenssl │ │ └── FEATURE.yaml │ ├── adl │ │ └── FEATURE.yaml │ ├── dev_ena │ │ ├── CMakeLists.txt │ │ └── ena_defs.h │ ├── nsh │ │ └── FEATURE.yaml │ ├── crypto_openssl │ │ ├── FEATURE.yaml │ │ └── crypto_openssl.h │ ├── vmxnet3 │ │ └── FEATURE.yaml │ ├── dhcp │ │ └── FEATURE.yaml │ ├── crypto_native │ │ └── FEATURE.yaml │ ├── netmap │ │ ├── FEATURE.yaml │ │ └── plugin.c │ ├── flowprobe │ │ ├── FEATURE.yaml │ │ └── flowprobe_plugin_doc.rst │ ├── gre │ │ └── FEATURE.yaml │ ├── vrrp │ │ ├── CMakeLists.txt │ │ └── setup.pg │ ├── cnat │ │ └── cnat_maglev.h │ ├── l3xc │ │ └── FEATURE.yaml │ ├── mactime │ │ └── FEATURE.yaml │ ├── svs │ │ └── FEATURE.yaml │ ├── map │ │ └── FEATURE.yaml │ ├── http │ │ └── http_content_types.h │ └── http_static │ │ └── FEATURE.yaml ├── vnet │ ├── adj │ │ └── .clang-format │ ├── fib │ │ └── .clang-format │ ├── mfib │ │ └── .clang-format │ ├── pg │ │ ├── example.script │ │ └── FEATURE.yaml │ ├── dev │ │ ├── mgmt.h │ │ └── process.h │ ├── tunnel │ │ └── FEATURE.yaml │ ├── hash │ │ └── FEATURE.yaml │ ├── vxlan-gpe │ │ └── FEATURE.yaml │ ├── arp │ │ └── FEATURE.yaml │ ├── bfd │ │ └── FEATURE.yaml │ ├── ip-neighbor │ │ └── FEATURE.yaml │ ├── udp │ │ └── FEATURE.yaml │ ├── mpls │ │ └── FEATURE.yaml │ ├── classify │ │ └── FEATURE.yaml │ ├── ipsec │ │ └── FEATURE.yaml │ ├── devices │ │ ├── tap │ │ │ └── FEATURE.yaml │ │ └── pipe │ │ │ └── FEATURE.yaml │ ├── bonding │ │ └── FEATURE.yaml │ ├── bier │ │ └── FEATURE.yaml │ ├── qos │ │ └── FEATURE.yaml │ ├── gso │ │ └── FEATURE.yaml │ ├── ip6-nd │ │ └── FEATURE.yaml │ ├── feature │ │ └── FEATURE.yaml │ └── tls │ │ └── FEATURE.yaml ├── cmake │ └── platform │ │ ├── cn913x.cmake │ │ ├── octeon9.cmake │ │ └── octeon10.cmake ├── scripts │ ├── vnet │ │ ├── dhcp │ │ │ ├── left-ping-target.sh │ │ │ └── dhcpd.conf │ │ ├── uri │ │ │ ├── dpdk_setup.cli │ │ │ ├── tap_setup.cli │ │ │ └── afp_setup.cli │ │ ├── probe6 │ │ ├── tcp-test │ │ ├── probe4 │ │ ├── leftpeer │ │ │ ├── leftpeer-classify6 │ │ │ ├── leftpeer-classifyl2 │ │ │ ├── leftpeer-l3vxlan.conf │ │ │ ├── leftpeer-classify │ │ │ ├── leftpeer.script │ │ │ ├── leftpeer-ioam.conf │ │ │ └── leftpeer-vxlan.conf │ │ ├── mpls-o-ethernet │ │ │ ├── pg │ │ │ ├── single.conf │ │ │ └── rightpeer.conf │ │ ├── rightpeer │ │ │ ├── rightpeer-l3vxlan.conf │ │ │ ├── rightpeer.script │ │ │ ├── rightpeer-vxlan.conf │ │ │ ├── rightpeer-ioam.conf │ │ │ ├── rightpeer-mpls.conf │ │ │ └── rightpeer-lisp.conf │ │ ├── icmp6 │ │ ├── icmp │ │ ├── speed │ │ ├── sr │ │ │ └── sr_mpls │ │ ├── pcap │ │ ├── tcp │ │ ├── rpf │ │ ├── udp │ │ ├── arp4 │ │ ├── arp6 │ │ ├── mpls-o-gre │ │ │ ├── leftpeer.conf │ │ │ └── rightpeer.conf │ │ ├── arp4-mpls │ │ ├── vlan │ │ ├── tf-ucs-1 │ │ ├── ige │ │ └── srp │ └── host-stack │ │ └── convert_evt ├── pkg │ └── debian │ │ ├── vpp.preinst │ │ ├── changelog.in │ │ ├── vpp.postinst │ │ └── copyright ├── examples │ └── sample-plugin │ │ └── CMakeLists.txt ├── vlibapi │ └── FEATURE.yaml ├── vlib │ ├── unix │ │ └── FEATURE.yaml │ ├── stats │ │ └── format.c │ └── FEATURE_trace.yaml └── vlibmemory │ └── FEATURE.yaml ├── test ├── scapy_handlers │ └── __init__.py ├── asfframework.py ├── asf │ ├── README │ └── test_api_client.py ├── sanity_import_vpp_papi.py ├── scripts │ ├── git_pull_or_clean.sh │ └── setsid_wrapper.sh ├── test_result_code.py ├── vrf.py ├── vpp_papi_exceptions.py └── patches │ ├── scapy-2.4 │ └── defragment.patch │ ├── scapy-2.3.3 │ └── vxlan.patch │ ├── scapy-2.4.3 │ ├── cdp.patch │ └── issue42580.patch │ └── scapy-2.4.5 │ └── cdp.patch ├── docs ├── developer │ ├── corefeatures │ │ ├── mtu.rst │ │ ├── gso.rst │ │ ├── hash.rst │ │ ├── punt.rst │ │ ├── bfd_doc.rst │ │ ├── ipsec.rst │ │ ├── stats.rst │ │ ├── policer.rst │ │ ├── span_doc.rst │ │ ├── sr │ │ │ ├── sr_doc.rst │ │ │ ├── sr_mpls.rst │ │ │ ├── sr_policy.rst │ │ │ ├── sr_localsid.rst │ │ │ ├── sr_steering.rst │ │ │ └── index.rst │ │ ├── reassembly.rst │ │ ├── selinux_doc.rst │ │ ├── sylog_doc.rst │ │ ├── tx_queue.rst │ │ ├── ipfix_doc.rst │ │ ├── fib │ │ │ ├── prerequisites.rst │ │ │ ├── index.rst │ │ │ └── thedatamodel.rst │ │ └── index.rst │ ├── extras │ │ ├── snap.rst │ │ ├── hs_test.rst │ │ ├── vpptop.rst │ │ ├── strongswan.rst │ │ ├── vpp_config.rst │ │ ├── vpp_if_stats.rst │ │ ├── vpp_stats_fs.rst │ │ ├── vcl_ldpreload.rst │ │ └── index.rst │ ├── corearchitecture │ │ ├── mem.rst │ │ ├── buildsystem │ │ │ ├── mainmakefile.rst │ │ │ └── index.rst │ │ ├── multiarch │ │ │ └── index.rst │ │ └── index.rst │ ├── plugins │ │ ├── cnat.rst │ │ ├── lcp.rst │ │ ├── http.rst │ │ ├── lacp.rst │ │ ├── lb.rst │ │ ├── lldp.rst │ │ ├── map_lw4o6.rst │ │ ├── mdata.rst │ │ ├── pnat.rst │ │ ├── quic.rst │ │ ├── srtp.rst │ │ ├── dhcp6_pd.rst │ │ ├── ioam.rst │ │ ├── nat64.rst │ │ ├── wireguard.rst │ │ ├── bufmon_doc.rst │ │ ├── dev_armada.rst │ │ ├── acl_multicore.rst │ │ ├── acl_hash_lookup.rst │ │ ├── acl_lookup_context.rst │ │ ├── flowprobe.rst │ │ ├── nat44_ed_doc.rst │ │ ├── nat44_ei_ha.rst │ │ ├── srv6 │ │ │ ├── ad_plugin_doc.rst │ │ │ ├── am_plugin_doc.rst │ │ │ ├── as_plugin_doc.rst │ │ │ ├── runner_doc.rst │ │ │ ├── mobile_plugin_doc.rst │ │ │ ├── ad_flow_plugin_doc.rst │ │ │ ├── srv6_sample_localsid_doc.rst │ │ │ └── index.rst │ │ ├── bpf_trace_filter.rst │ │ └── ip_session_redirect_doc.rst │ ├── devicedrivers │ │ ├── avf.rst │ │ ├── rdma.rst │ │ ├── af_xdp.rst │ │ ├── vmxnet3.rst │ │ └── index.rst │ ├── plugindoc │ │ ├── handoffdemo.rst │ │ ├── sample_plugin_doc.rst │ │ └── index.rst │ └── build-run-debug │ │ └── index.rst ├── _images │ ├── libmemif_architecture.png │ ├── g21.jpg │ ├── g22.jpg │ ├── g23.jpg │ ├── g24.jpg │ ├── g25.jpg │ ├── g26.jpg │ ├── g27.jpg │ ├── g28.jpg │ ├── g29.jpg │ ├── trex.png │ ├── fib20fig1.png │ ├── fib20fig10.png │ ├── fib20fig11.png │ ├── fib20fig2.png │ ├── fib20fig3.png │ ├── fib20fig4.png │ ├── fib20fig5.png │ ├── fib20fig6.png │ ├── fib20fig7.png │ ├── fib20fig8.png │ ├── fib20fig9.png │ ├── iperf3fig1.png │ ├── rtdWebpage.png │ ├── vhost-topo.png │ ├── Features1804.png │ ├── ForkButtons.png │ ├── SNAT_Topology.jpg │ ├── VNET_Features.png │ ├── VPP_Layering.png │ ├── buildVerRTD.png │ ├── contiv-arch.png │ ├── ip-neighbor.png │ ├── ip4-2n-iacl.png │ ├── ip4-3n-oacl.png │ ├── issuePullReq.png │ ├── passedBuild.png │ ├── showRemotes.png │ ├── usernameFork.png │ ├── authreadthedocs.png │ ├── examplePullReq.png │ ├── importReadDocs.png │ ├── showBothRemotes.png │ ├── Switching_Topology.jpg │ ├── contiv-networking.png │ ├── createNewPullReq.png │ ├── importRTDManually.png │ ├── policer-1r2c-aware.png │ ├── policer-1r2c-blind.png │ ├── policer-1r3c-aware.png │ ├── policer-1r3c-blind.png │ ├── policer-2r3c-aware.png │ ├── policer-2r3c-blind.png │ ├── ip4-acl-features-ndr.png │ ├── policer-1r2c-bucket.png │ ├── policer-1r3c-bucket.png │ ├── policer-2r3c-bucket.png │ ├── quic_plugin_echo_flow.png │ ├── Create_Interface_Topology.jpg │ ├── VPP_App_as_a_vSwitch_x201.jpg │ ├── quic_plugin_datastructures.png │ ├── build-a-fast-network-stack-terminal.png │ ├── build-a-fast-network-stack-terminal-2.png │ ├── build-a-fast-network-stack-terminal-3.png │ ├── Connecting_two_vpp_instances_with_memif.png │ ├── VPP_sample_data_plane_management_agent_x260.jpg │ ├── VPP_and_ovsdpdk_tested_on_haswellx86_platform.jpg │ ├── Vpp_performance_barchart_ndr_rates_l2-nic-to-nic.jpg │ ├── VPP_App_as_vSwitch_with_local_programmability_x260.jpg │ ├── VPP_custom_application_packet_processing_graph.280.jpg │ ├── VPP_Packet_Processing_Layer_In_Network_Stack_Overview.jpg │ ├── VPP_performance_barchart_ndr_rates_l2-nic-to-VM.small.jpg │ └── VPP_as_vSwitch_or_vRouter_supporting_remote_programmability_x260.jpg ├── interfacing │ ├── binapi │ │ ├── vpp_api_language.rst │ │ ├── vpp_api_module.rst │ │ ├── writing_api_handlers.rst │ │ └── index.rst │ ├── libmemif │ │ ├── libmemif_doc.rst │ │ ├── examples_doc.rst │ │ ├── gettingstarted_doc.rst │ │ └── buildinstructions_doc.rst │ ├── rust │ │ └── index.rst │ ├── c │ │ └── index.rst │ └── cpp │ │ └── api_example │ │ └── Makefile ├── _static │ ├── fdio_logo.png │ ├── fd-io_red_white.png │ └── css │ │ └── rules.css ├── README ├── aboutvpp │ ├── releasenotes │ │ ├── index.rst │ │ ├── v17.01.1.rst │ │ ├── v18.01.1.rst │ │ ├── v18.01.2.rst │ │ ├── v19.01.1.rst │ │ ├── v19.01.2.rst │ │ ├── v19.01.3.rst │ │ ├── v19.04.1.rst │ │ ├── v19.04.2.rst │ │ ├── v19.04.3.rst │ │ ├── v19.08.3.rst │ │ ├── v20.05.1.rst │ │ ├── v21.10.1.rst │ │ ├── v22.06.1.rst │ │ └── v22.10.1.rst │ └── supported.rst ├── usecases │ ├── vhost │ │ ├── xmlexample.rst │ │ └── index.rst │ ├── simpleperf │ │ └── index.rst │ ├── ikev2 │ │ └── index.rst │ ├── vppcloud │ │ ├── automatingthedeployment.rst │ │ └── index.rst │ ├── containers │ │ └── index.rst │ ├── contiv │ │ └── index.rst │ └── vpp_testbench │ │ └── src │ │ └── Dockerfile.vpp_testbench.dockerignore ├── gettingstarted │ └── troubleshooting │ │ └── index.rst ├── docsignore ├── _scripts │ └── prepare-for-site.sh └── cli-reference │ └── interface │ └── index.rst ├── .gitreview ├── .clang-tidy └── .github └── workflows └── close_prs.yml /extras/vpp_config/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/vat/types.c: -------------------------------------------------------------------------------- 1 | ../vpp/api/types.c -------------------------------------------------------------------------------- /src/vpp/api/vat.h: -------------------------------------------------------------------------------- 1 | ../../vat/vat.h -------------------------------------------------------------------------------- /test/scapy_handlers/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /extras/hs-test/resources/envoy/envoy.log: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /extras/vagrant/.gitignore: -------------------------------------------------------------------------------- 1 | .vagrant/ 2 | -------------------------------------------------------------------------------- /src/tools/vppapigen/vppapigen: -------------------------------------------------------------------------------- 1 | vppapigen.py -------------------------------------------------------------------------------- /test/asfframework.py: -------------------------------------------------------------------------------- 1 | asf/asfframework.py -------------------------------------------------------------------------------- /extras/scripts/fts.py: -------------------------------------------------------------------------------- 1 | ../../src/scripts/fts.py -------------------------------------------------------------------------------- /extras/selinux/vpp-custom.if: -------------------------------------------------------------------------------- 1 | ## 2 | VPP service. -------------------------------------------------------------------------------- /src/vat/ip_types_api.c: -------------------------------------------------------------------------------- 1 | ../vnet/ip/ip_types_api.c -------------------------------------------------------------------------------- /src/vat/protocols.def: -------------------------------------------------------------------------------- 1 | ../vnet/ip/protocols.def -------------------------------------------------------------------------------- /src/vpp-api/python/vpp_papi/tests/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/vpp/api/api_format.c: -------------------------------------------------------------------------------- 1 | ../../vat/api_format.c -------------------------------------------------------------------------------- /test/asf/README: -------------------------------------------------------------------------------- 1 | A Scapy Free (ASF) Test Framework -------------------------------------------------------------------------------- /extras/apps/.gitignore: -------------------------------------------------------------------------------- 1 | .deps 2 | .dirstamp 3 | 4 | -------------------------------------------------------------------------------- /docs/developer/corefeatures/mtu.rst: -------------------------------------------------------------------------------- 1 | ../../../src/vnet/mtu.rst -------------------------------------------------------------------------------- /docs/developer/extras/snap.rst: -------------------------------------------------------------------------------- 1 | ../../../extras/snap/README.rst -------------------------------------------------------------------------------- /extras/apps/bootstrap: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | autoreconf -fis 4 | -------------------------------------------------------------------------------- /docs/developer/corearchitecture/mem.rst: -------------------------------------------------------------------------------- 1 | ../../../src/vpp/mem/mem.rst -------------------------------------------------------------------------------- /docs/developer/corefeatures/gso.rst: -------------------------------------------------------------------------------- 1 | ../../../src/vnet/gso/gso.rst -------------------------------------------------------------------------------- /docs/developer/corefeatures/hash.rst: -------------------------------------------------------------------------------- 1 | ../../../src/vnet/hash/hash.rst -------------------------------------------------------------------------------- /docs/developer/corefeatures/punt.rst: -------------------------------------------------------------------------------- 1 | ../../../src/vnet/ip/punt.rst -------------------------------------------------------------------------------- /docs/developer/extras/hs_test.rst: -------------------------------------------------------------------------------- 1 | ../../../extras/hs-test/README.rst -------------------------------------------------------------------------------- /docs/developer/extras/vpptop.rst: -------------------------------------------------------------------------------- 1 | ../../../extras/vpptop/README.rst -------------------------------------------------------------------------------- /docs/developer/plugins/cnat.rst: -------------------------------------------------------------------------------- 1 | ../../../src/plugins/cnat/cnat.rst -------------------------------------------------------------------------------- /docs/developer/plugins/lcp.rst: -------------------------------------------------------------------------------- 1 | ../../../src/plugins/linux-cp/lcp.rst -------------------------------------------------------------------------------- /extras/strongswan/configs/initiator/ipsec.secrets: -------------------------------------------------------------------------------- 1 | : PSK 'Vpp123' 2 | -------------------------------------------------------------------------------- /extras/strongswan/configs/responder/ipsec.secrets: -------------------------------------------------------------------------------- 1 | : PSK 'Vpp123' 2 | -------------------------------------------------------------------------------- /docs/developer/corefeatures/bfd_doc.rst: -------------------------------------------------------------------------------- 1 | ../../../src/vnet/bfd/bfd_doc.rst -------------------------------------------------------------------------------- /docs/developer/corefeatures/ipsec.rst: -------------------------------------------------------------------------------- 1 | ../../../src/vnet/ipsec/ipsec.rst -------------------------------------------------------------------------------- /docs/developer/corefeatures/stats.rst: -------------------------------------------------------------------------------- 1 | ../../../src/vpp/stats/stats.rst -------------------------------------------------------------------------------- /docs/developer/devicedrivers/avf.rst: -------------------------------------------------------------------------------- 1 | ../../../src/plugins/avf/README.rst -------------------------------------------------------------------------------- /docs/developer/extras/strongswan.rst: -------------------------------------------------------------------------------- 1 | ../../../extras/strongswan/README.rst -------------------------------------------------------------------------------- /docs/developer/extras/vpp_config.rst: -------------------------------------------------------------------------------- 1 | ../../../extras/vpp_config/README.rst -------------------------------------------------------------------------------- /docs/developer/plugins/http.rst: -------------------------------------------------------------------------------- 1 | ../../../src/plugins/http/http_plugin.rst -------------------------------------------------------------------------------- /docs/developer/plugins/lacp.rst: -------------------------------------------------------------------------------- 1 | ../../../src/plugins/lacp/lacp_doc.rst -------------------------------------------------------------------------------- /docs/developer/plugins/lb.rst: -------------------------------------------------------------------------------- 1 | ../../../src/plugins/lb/lb_plugin_doc.rst -------------------------------------------------------------------------------- /docs/developer/plugins/lldp.rst: -------------------------------------------------------------------------------- 1 | ../../../src/plugins/lldp/lldp_doc.rst -------------------------------------------------------------------------------- /docs/developer/plugins/map_lw4o6.rst: -------------------------------------------------------------------------------- 1 | ../../../src/plugins/map/map_doc.rst -------------------------------------------------------------------------------- /docs/developer/plugins/mdata.rst: -------------------------------------------------------------------------------- 1 | ../../../src/plugins/mdata/mdata_doc.rst -------------------------------------------------------------------------------- /docs/developer/plugins/pnat.rst: -------------------------------------------------------------------------------- 1 | ../../../src/plugins/nat/pnat/pnat.rst -------------------------------------------------------------------------------- /docs/developer/plugins/quic.rst: -------------------------------------------------------------------------------- 1 | ../../../src/plugins/quic/quic_plugin.rst -------------------------------------------------------------------------------- /docs/developer/plugins/srtp.rst: -------------------------------------------------------------------------------- 1 | ../../../src/plugins/srtp/srtp_plugin.rst -------------------------------------------------------------------------------- /extras/strongswan/configs/responder_nat/ipsec.secrets: -------------------------------------------------------------------------------- 1 | : PSK 'Vpp123' 2 | -------------------------------------------------------------------------------- /extras/strongswan/configs/responder_vrf/ipsec.secrets: -------------------------------------------------------------------------------- 1 | : PSK 'Vpp123' 2 | -------------------------------------------------------------------------------- /src/plugins/lisp/lisp-gpe/lisp_types_api.c: -------------------------------------------------------------------------------- 1 | ../lisp-cp/lisp_types_api.c -------------------------------------------------------------------------------- /src/plugins/lisp/lisp-gpe/lisp_types_api.h: -------------------------------------------------------------------------------- 1 | ../lisp-cp/lisp_types_api.h -------------------------------------------------------------------------------- /.gitreview: -------------------------------------------------------------------------------- 1 | [gerrit] 2 | host=gerrit.fd.io 3 | port=29418 4 | project=vpp 5 | -------------------------------------------------------------------------------- /docs/developer/corefeatures/policer.rst: -------------------------------------------------------------------------------- 1 | ../../../src/vnet/policer/policer.rst -------------------------------------------------------------------------------- /docs/developer/corefeatures/span_doc.rst: -------------------------------------------------------------------------------- 1 | ../../../src/vnet/span/span_doc.rst -------------------------------------------------------------------------------- /docs/developer/corefeatures/sr/sr_doc.rst: -------------------------------------------------------------------------------- 1 | ../../../../src/vnet/srv6/sr_doc.rst -------------------------------------------------------------------------------- /docs/developer/devicedrivers/rdma.rst: -------------------------------------------------------------------------------- 1 | ../../../src/plugins/rdma/rdma_doc.rst -------------------------------------------------------------------------------- /docs/developer/extras/vpp_if_stats.rst: -------------------------------------------------------------------------------- 1 | ../../../extras/vpp_if_stats/README.rst -------------------------------------------------------------------------------- /docs/developer/extras/vpp_stats_fs.rst: -------------------------------------------------------------------------------- 1 | ../../../extras/vpp_stats_fs/README.rst -------------------------------------------------------------------------------- /docs/developer/plugins/dhcp6_pd.rst: -------------------------------------------------------------------------------- 1 | ../../../src/plugins/dhcp/dhcp6_pd_doc.rst -------------------------------------------------------------------------------- /docs/developer/plugins/ioam.rst: -------------------------------------------------------------------------------- 1 | ../../../src/plugins/ioam/ioam_plugin_doc.rst -------------------------------------------------------------------------------- /docs/developer/plugins/nat64.rst: -------------------------------------------------------------------------------- 1 | ../../../src/plugins/nat/nat64/nat64_doc.rst -------------------------------------------------------------------------------- /docs/developer/plugins/wireguard.rst: -------------------------------------------------------------------------------- 1 | ../../../src/plugins/wireguard/README.rst -------------------------------------------------------------------------------- /extras/strongswan/configs/responder_keepalive/ipsec.secrets: -------------------------------------------------------------------------------- 1 | : PSK 'Vpp123' 2 | -------------------------------------------------------------------------------- /src/plugins/srv6-mobile/extra/requirements.txt: -------------------------------------------------------------------------------- 1 | docker 2 | jinja2 3 | scapy 4 | -------------------------------------------------------------------------------- /src/vnet/adj/.clang-format: -------------------------------------------------------------------------------- 1 | DisableFormat: true 2 | SortIncludes: false 3 | -------------------------------------------------------------------------------- /src/vnet/fib/.clang-format: -------------------------------------------------------------------------------- 1 | DisableFormat: true 2 | SortIncludes: false 3 | -------------------------------------------------------------------------------- /src/vnet/mfib/.clang-format: -------------------------------------------------------------------------------- 1 | DisableFormat: true 2 | SortIncludes: false 3 | -------------------------------------------------------------------------------- /docs/_images/libmemif_architecture.png: -------------------------------------------------------------------------------- 1 | ../../extras/libmemif/docs/architecture.png -------------------------------------------------------------------------------- /docs/developer/corefeatures/reassembly.rst: -------------------------------------------------------------------------------- 1 | ../../../src/vnet/ip/reass/reassembly.rst -------------------------------------------------------------------------------- /docs/developer/corefeatures/selinux_doc.rst: -------------------------------------------------------------------------------- 1 | ../../../extras/selinux/selinux_doc.rst -------------------------------------------------------------------------------- /docs/developer/corefeatures/sr/sr_mpls.rst: -------------------------------------------------------------------------------- 1 | ../../../../src/plugins/srmpls/sr_doc.rst -------------------------------------------------------------------------------- /docs/developer/corefeatures/sr/sr_policy.rst: -------------------------------------------------------------------------------- 1 | ../../../../src/vnet/srv6/sr_policy.rst -------------------------------------------------------------------------------- /docs/developer/corefeatures/sylog_doc.rst: -------------------------------------------------------------------------------- 1 | ../../../src/vnet/syslog/sylog_doc.rst -------------------------------------------------------------------------------- /docs/developer/corefeatures/tx_queue.rst: -------------------------------------------------------------------------------- 1 | ../../../src/vnet/interface/tx_queue.rst -------------------------------------------------------------------------------- /docs/developer/devicedrivers/af_xdp.rst: -------------------------------------------------------------------------------- 1 | ../../../src/plugins/af_xdp/af_xdp_doc.rst -------------------------------------------------------------------------------- /docs/developer/devicedrivers/vmxnet3.rst: -------------------------------------------------------------------------------- 1 | ../../../src/plugins/vmxnet3/README.rst -------------------------------------------------------------------------------- /docs/developer/extras/vcl_ldpreload.rst: -------------------------------------------------------------------------------- 1 | ../../../extras/vcl-ldpreload/README.rst -------------------------------------------------------------------------------- /docs/developer/plugins/bufmon_doc.rst: -------------------------------------------------------------------------------- 1 | ../../../src/plugins/bufmon/bufmon_doc.rst -------------------------------------------------------------------------------- /docs/developer/plugins/dev_armada.rst: -------------------------------------------------------------------------------- 1 | ../../../src/plugins/dev_armada/README.rst -------------------------------------------------------------------------------- /docs/interfacing/binapi/vpp_api_language.rst: -------------------------------------------------------------------------------- 1 | ../../../src/tools/vppapigen/VPPAPI.rst -------------------------------------------------------------------------------- /docs/interfacing/binapi/vpp_api_module.rst: -------------------------------------------------------------------------------- 1 | ../../../src/vpp-api/vapi/vapi_doc.rst -------------------------------------------------------------------------------- /docs/interfacing/binapi/writing_api_handlers.rst: -------------------------------------------------------------------------------- 1 | ../../../src/vlibapi/api_doc.rst -------------------------------------------------------------------------------- /docs/interfacing/libmemif/libmemif_doc.rst: -------------------------------------------------------------------------------- 1 | ../../../extras/libmemif/libmemif_doc.rst -------------------------------------------------------------------------------- /docs/developer/corefeatures/ipfix_doc.rst: -------------------------------------------------------------------------------- 1 | ../../../src/vnet/ipfix-export/ipfix_doc.rst -------------------------------------------------------------------------------- /docs/developer/corefeatures/sr/sr_localsid.rst: -------------------------------------------------------------------------------- 1 | ../../../../src/vnet/srv6/sr_localsid.rst -------------------------------------------------------------------------------- /docs/developer/corefeatures/sr/sr_steering.rst: -------------------------------------------------------------------------------- 1 | ../../../../src/vnet/srv6/sr_steering.rst -------------------------------------------------------------------------------- /docs/developer/plugins/acl_multicore.rst: -------------------------------------------------------------------------------- 1 | ../../../src/plugins/acl/acl_multicore_doc.rst -------------------------------------------------------------------------------- /docs/_images/g21.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adventureloop/vpp/HEAD/docs/_images/g21.jpg -------------------------------------------------------------------------------- /docs/_images/g22.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adventureloop/vpp/HEAD/docs/_images/g22.jpg -------------------------------------------------------------------------------- /docs/_images/g23.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adventureloop/vpp/HEAD/docs/_images/g23.jpg -------------------------------------------------------------------------------- /docs/_images/g24.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adventureloop/vpp/HEAD/docs/_images/g24.jpg -------------------------------------------------------------------------------- /docs/_images/g25.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adventureloop/vpp/HEAD/docs/_images/g25.jpg -------------------------------------------------------------------------------- /docs/_images/g26.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adventureloop/vpp/HEAD/docs/_images/g26.jpg -------------------------------------------------------------------------------- /docs/_images/g27.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adventureloop/vpp/HEAD/docs/_images/g27.jpg -------------------------------------------------------------------------------- /docs/_images/g28.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adventureloop/vpp/HEAD/docs/_images/g28.jpg -------------------------------------------------------------------------------- /docs/_images/g29.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adventureloop/vpp/HEAD/docs/_images/g29.jpg -------------------------------------------------------------------------------- /docs/developer/plugindoc/handoffdemo.rst: -------------------------------------------------------------------------------- 1 | ../../../src/examples/handoffdemo/handoffdemo.rst -------------------------------------------------------------------------------- /docs/developer/plugins/acl_hash_lookup.rst: -------------------------------------------------------------------------------- 1 | ../../../src/plugins/acl/acl_hash_lookup_doc.rst -------------------------------------------------------------------------------- /docs/developer/plugins/acl_lookup_context.rst: -------------------------------------------------------------------------------- 1 | ../../../src/plugins/acl/acl_lookup_context.rst -------------------------------------------------------------------------------- /docs/developer/plugins/flowprobe.rst: -------------------------------------------------------------------------------- 1 | ../../../src/plugins/flowprobe/flowprobe_plugin_doc.rst -------------------------------------------------------------------------------- /docs/developer/plugins/nat44_ed_doc.rst: -------------------------------------------------------------------------------- 1 | ../../../src/plugins/nat/nat44-ed/nat44_ed_doc.rst -------------------------------------------------------------------------------- /docs/developer/plugins/nat44_ei_ha.rst: -------------------------------------------------------------------------------- 1 | ../../../src/plugins/nat/nat44-ei/nat44_ei_ha_doc.rst -------------------------------------------------------------------------------- /docs/interfacing/libmemif/examples_doc.rst: -------------------------------------------------------------------------------- 1 | ../../../extras/libmemif/examples/examples_doc.rst -------------------------------------------------------------------------------- /docs/_images/trex.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adventureloop/vpp/HEAD/docs/_images/trex.png -------------------------------------------------------------------------------- /docs/developer/plugins/srv6/ad_plugin_doc.rst: -------------------------------------------------------------------------------- 1 | ../../../../src/plugins/srv6-ad/ad_plugin_doc.rst -------------------------------------------------------------------------------- /docs/developer/plugins/srv6/am_plugin_doc.rst: -------------------------------------------------------------------------------- 1 | ../../../../src/plugins/srv6-am/am_plugin_doc.rst -------------------------------------------------------------------------------- /docs/developer/plugins/srv6/as_plugin_doc.rst: -------------------------------------------------------------------------------- 1 | ../../../../src/plugins/srv6-as/as_plugin_doc.rst -------------------------------------------------------------------------------- /docs/developer/plugins/srv6/runner_doc.rst: -------------------------------------------------------------------------------- 1 | ../../../../src/plugins/srv6-mobile/extra/runner_doc.rst -------------------------------------------------------------------------------- /extras/hs-test/script/nginx_server_entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | nginx -c /nginx.conf 4 | -------------------------------------------------------------------------------- /docs/developer/plugindoc/sample_plugin_doc.rst: -------------------------------------------------------------------------------- 1 | ../../../src/examples/sample-plugin/sample_plugin_doc.rst -------------------------------------------------------------------------------- /docs/developer/plugins/bpf_trace_filter.rst: -------------------------------------------------------------------------------- 1 | ../../../src/plugins/bpf_trace_filter/bpf_trace_filter.rst -------------------------------------------------------------------------------- /docs/interfacing/libmemif/gettingstarted_doc.rst: -------------------------------------------------------------------------------- 1 | ../../../extras/libmemif/docs/gettingstarted_doc.rst -------------------------------------------------------------------------------- /extras/gomemif/migrated.txt: -------------------------------------------------------------------------------- 1 | Gomemif has been migrated to GoVPP repository https://github.com/FDio/govpp -------------------------------------------------------------------------------- /extras/libmemif/test/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_subdirectory(suite_socket) 2 | add_subdirectory(suite_main) 3 | -------------------------------------------------------------------------------- /src/plugins/nat/pnat/.clang-format: -------------------------------------------------------------------------------- 1 | SortIncludes: false 2 | BasedOnStyle: LLVM 3 | IndentWidth: 4 4 | -------------------------------------------------------------------------------- /docs/_images/fib20fig1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adventureloop/vpp/HEAD/docs/_images/fib20fig1.png -------------------------------------------------------------------------------- /docs/_images/fib20fig10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adventureloop/vpp/HEAD/docs/_images/fib20fig10.png -------------------------------------------------------------------------------- /docs/_images/fib20fig11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adventureloop/vpp/HEAD/docs/_images/fib20fig11.png -------------------------------------------------------------------------------- /docs/_images/fib20fig2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adventureloop/vpp/HEAD/docs/_images/fib20fig2.png -------------------------------------------------------------------------------- /docs/_images/fib20fig3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adventureloop/vpp/HEAD/docs/_images/fib20fig3.png -------------------------------------------------------------------------------- /docs/_images/fib20fig4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adventureloop/vpp/HEAD/docs/_images/fib20fig4.png -------------------------------------------------------------------------------- /docs/_images/fib20fig5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adventureloop/vpp/HEAD/docs/_images/fib20fig5.png -------------------------------------------------------------------------------- /docs/_images/fib20fig6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adventureloop/vpp/HEAD/docs/_images/fib20fig6.png -------------------------------------------------------------------------------- /docs/_images/fib20fig7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adventureloop/vpp/HEAD/docs/_images/fib20fig7.png -------------------------------------------------------------------------------- /docs/_images/fib20fig8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adventureloop/vpp/HEAD/docs/_images/fib20fig8.png -------------------------------------------------------------------------------- /docs/_images/fib20fig9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adventureloop/vpp/HEAD/docs/_images/fib20fig9.png -------------------------------------------------------------------------------- /docs/_images/iperf3fig1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adventureloop/vpp/HEAD/docs/_images/iperf3fig1.png -------------------------------------------------------------------------------- /docs/_images/rtdWebpage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adventureloop/vpp/HEAD/docs/_images/rtdWebpage.png -------------------------------------------------------------------------------- /docs/_images/vhost-topo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adventureloop/vpp/HEAD/docs/_images/vhost-topo.png -------------------------------------------------------------------------------- /docs/_static/fdio_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adventureloop/vpp/HEAD/docs/_static/fdio_logo.png -------------------------------------------------------------------------------- /docs/developer/plugins/srv6/mobile_plugin_doc.rst: -------------------------------------------------------------------------------- 1 | ../../../../src/plugins/srv6-mobile/mobile_plugin_doc.rst -------------------------------------------------------------------------------- /docs/interfacing/libmemif/buildinstructions_doc.rst: -------------------------------------------------------------------------------- 1 | ../../../extras/libmemif/docs/buildinstructions_doc.rst -------------------------------------------------------------------------------- /src/tools/appimage/vpp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adventureloop/vpp/HEAD/src/tools/appimage/vpp.png -------------------------------------------------------------------------------- /src/tools/perftool/new.cpel: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adventureloop/vpp/HEAD/src/tools/perftool/new.cpel -------------------------------------------------------------------------------- /src/tools/perftool/new.elog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adventureloop/vpp/HEAD/src/tools/perftool/new.elog -------------------------------------------------------------------------------- /docs/_images/Features1804.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adventureloop/vpp/HEAD/docs/_images/Features1804.png -------------------------------------------------------------------------------- /docs/_images/ForkButtons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adventureloop/vpp/HEAD/docs/_images/ForkButtons.png -------------------------------------------------------------------------------- /docs/_images/SNAT_Topology.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adventureloop/vpp/HEAD/docs/_images/SNAT_Topology.jpg -------------------------------------------------------------------------------- /docs/_images/VNET_Features.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adventureloop/vpp/HEAD/docs/_images/VNET_Features.png -------------------------------------------------------------------------------- /docs/_images/VPP_Layering.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adventureloop/vpp/HEAD/docs/_images/VPP_Layering.png -------------------------------------------------------------------------------- /docs/_images/buildVerRTD.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adventureloop/vpp/HEAD/docs/_images/buildVerRTD.png -------------------------------------------------------------------------------- /docs/_images/contiv-arch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adventureloop/vpp/HEAD/docs/_images/contiv-arch.png -------------------------------------------------------------------------------- /docs/_images/ip-neighbor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adventureloop/vpp/HEAD/docs/_images/ip-neighbor.png -------------------------------------------------------------------------------- /docs/_images/ip4-2n-iacl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adventureloop/vpp/HEAD/docs/_images/ip4-2n-iacl.png -------------------------------------------------------------------------------- /docs/_images/ip4-3n-oacl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adventureloop/vpp/HEAD/docs/_images/ip4-3n-oacl.png -------------------------------------------------------------------------------- /docs/_images/issuePullReq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adventureloop/vpp/HEAD/docs/_images/issuePullReq.png -------------------------------------------------------------------------------- /docs/_images/passedBuild.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adventureloop/vpp/HEAD/docs/_images/passedBuild.png -------------------------------------------------------------------------------- /docs/_images/showRemotes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adventureloop/vpp/HEAD/docs/_images/showRemotes.png -------------------------------------------------------------------------------- /docs/_images/usernameFork.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adventureloop/vpp/HEAD/docs/_images/usernameFork.png -------------------------------------------------------------------------------- /docs/developer/plugins/srv6/ad_flow_plugin_doc.rst: -------------------------------------------------------------------------------- 1 | ../../../../src/plugins/srv6-ad-flow/ad_flow_plugin_doc.rst -------------------------------------------------------------------------------- /extras/hs-test/topo-containers/2containers.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | containers: 3 | - name: "server" 4 | - name: "client" -------------------------------------------------------------------------------- /extras/strongswan/test_initiator.sh: -------------------------------------------------------------------------------- 1 | . topos/basic.sh 2 | 3 | TC_DIR=initiator 4 | 5 | run_initiator_test 6 | -------------------------------------------------------------------------------- /extras/strongswan/test_responder.sh: -------------------------------------------------------------------------------- 1 | . topos/basic.sh 2 | 3 | TC_DIR=responder 4 | 5 | run_responder_test 6 | -------------------------------------------------------------------------------- /docs/_images/authreadthedocs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adventureloop/vpp/HEAD/docs/_images/authreadthedocs.png -------------------------------------------------------------------------------- /docs/_images/examplePullReq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adventureloop/vpp/HEAD/docs/_images/examplePullReq.png -------------------------------------------------------------------------------- /docs/_images/importReadDocs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adventureloop/vpp/HEAD/docs/_images/importReadDocs.png -------------------------------------------------------------------------------- /docs/_images/showBothRemotes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adventureloop/vpp/HEAD/docs/_images/showBothRemotes.png -------------------------------------------------------------------------------- /docs/_static/fd-io_red_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adventureloop/vpp/HEAD/docs/_static/fd-io_red_white.png -------------------------------------------------------------------------------- /docs/developer/plugins/ip_session_redirect_doc.rst: -------------------------------------------------------------------------------- 1 | ../../../src/plugins/ip_session_redirect/ip_session_redirect_doc.rst -------------------------------------------------------------------------------- /extras/packetforge/parsegraph/.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /extras/strongswan/test_responder_nat.sh: -------------------------------------------------------------------------------- 1 | . topos/basic.sh 2 | 3 | TC_DIR=responder_nat 4 | 5 | run_responder_test 6 | -------------------------------------------------------------------------------- /test/sanity_import_vpp_papi.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | """ sanity check script """ 4 | import vpp_papi 5 | -------------------------------------------------------------------------------- /docs/_images/Switching_Topology.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adventureloop/vpp/HEAD/docs/_images/Switching_Topology.jpg -------------------------------------------------------------------------------- /docs/_images/contiv-networking.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adventureloop/vpp/HEAD/docs/_images/contiv-networking.png -------------------------------------------------------------------------------- /docs/_images/createNewPullReq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adventureloop/vpp/HEAD/docs/_images/createNewPullReq.png -------------------------------------------------------------------------------- /docs/_images/importRTDManually.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adventureloop/vpp/HEAD/docs/_images/importRTDManually.png -------------------------------------------------------------------------------- /docs/_images/policer-1r2c-aware.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adventureloop/vpp/HEAD/docs/_images/policer-1r2c-aware.png -------------------------------------------------------------------------------- /docs/_images/policer-1r2c-blind.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adventureloop/vpp/HEAD/docs/_images/policer-1r2c-blind.png -------------------------------------------------------------------------------- /docs/_images/policer-1r3c-aware.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adventureloop/vpp/HEAD/docs/_images/policer-1r3c-aware.png -------------------------------------------------------------------------------- /docs/_images/policer-1r3c-blind.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adventureloop/vpp/HEAD/docs/_images/policer-1r3c-blind.png -------------------------------------------------------------------------------- /docs/_images/policer-2r3c-aware.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adventureloop/vpp/HEAD/docs/_images/policer-2r3c-aware.png -------------------------------------------------------------------------------- /docs/_images/policer-2r3c-blind.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adventureloop/vpp/HEAD/docs/_images/policer-2r3c-blind.png -------------------------------------------------------------------------------- /extras/strongswan/test_responder_vrf.sh: -------------------------------------------------------------------------------- 1 | . topos/2_init.sh 2 | 3 | TC_DIR=responder_vrf 4 | 5 | run_responder_test 6 | -------------------------------------------------------------------------------- /docs/_images/ip4-acl-features-ndr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adventureloop/vpp/HEAD/docs/_images/ip4-acl-features-ndr.png -------------------------------------------------------------------------------- /docs/_images/policer-1r2c-bucket.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adventureloop/vpp/HEAD/docs/_images/policer-1r2c-bucket.png -------------------------------------------------------------------------------- /docs/_images/policer-1r3c-bucket.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adventureloop/vpp/HEAD/docs/_images/policer-1r3c-bucket.png -------------------------------------------------------------------------------- /docs/_images/policer-2r3c-bucket.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adventureloop/vpp/HEAD/docs/_images/policer-2r3c-bucket.png -------------------------------------------------------------------------------- /extras/libmemif/docs/architecture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adventureloop/vpp/HEAD/extras/libmemif/docs/architecture.png -------------------------------------------------------------------------------- /docs/_images/quic_plugin_echo_flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adventureloop/vpp/HEAD/docs/_images/quic_plugin_echo_flow.png -------------------------------------------------------------------------------- /docs/developer/plugins/srv6/srv6_sample_localsid_doc.rst: -------------------------------------------------------------------------------- 1 | ../../../../src/examples/srv6-sample-localsid/srv6_sample_localsid_doc.rst -------------------------------------------------------------------------------- /extras/vpp_config/data/cloud-config.iso: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adventureloop/vpp/HEAD/extras/vpp_config/data/cloud-config.iso -------------------------------------------------------------------------------- /src/vpp-api/python/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["setuptools>=61.0"] 3 | build-backend = "setuptools.build_meta" 4 | -------------------------------------------------------------------------------- /docs/_images/Create_Interface_Topology.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adventureloop/vpp/HEAD/docs/_images/Create_Interface_Topology.jpg -------------------------------------------------------------------------------- /docs/_images/VPP_App_as_a_vSwitch_x201.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adventureloop/vpp/HEAD/docs/_images/VPP_App_as_a_vSwitch_x201.jpg -------------------------------------------------------------------------------- /extras/packetforge/parsegraph/edges/mac_after_gre.json: -------------------------------------------------------------------------------- 1 | { 2 | "type" : "edge", 3 | "start" : "gre", 4 | "end" : "mac" 5 | } 6 | -------------------------------------------------------------------------------- /src/cmake/platform/cn913x.cmake: -------------------------------------------------------------------------------- 1 | 2 | set(VPP_PLATFORM_CACHE_LINE_SIZE 64) 3 | set(VPP_PLATFORM_MARCH_FLAGS -march=armv8-a+crc+crypto) 4 | -------------------------------------------------------------------------------- /src/scripts/vnet/dhcp/left-ping-target.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # to obtain dhcp address from leftpeer 4 | dhclient -d -v eth1 5 | -------------------------------------------------------------------------------- /docs/_images/quic_plugin_datastructures.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adventureloop/vpp/HEAD/docs/_images/quic_plugin_datastructures.png -------------------------------------------------------------------------------- /extras/packetforge/parsegraph/edges/mac_after_nvgre.json: -------------------------------------------------------------------------------- 1 | { 2 | "type" : "edge", 3 | "start" : "nvgre", 4 | "end" : "mac" 5 | } 6 | -------------------------------------------------------------------------------- /extras/packetforge/parsegraph/edges/mac_after_vxlan.json: -------------------------------------------------------------------------------- 1 | { 2 | "type" : "edge", 3 | "start" : "vxlan", 4 | "end" : "mac" 5 | } 6 | -------------------------------------------------------------------------------- /docs/developer/corearchitecture/buildsystem/mainmakefile.rst: -------------------------------------------------------------------------------- 1 | Introduction to the top-level Makefile 2 | ====================================== 3 | -------------------------------------------------------------------------------- /extras/hs-test/script/nginx_ldp.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # shellcheck disable=SC2068 4 | $1 -v && LD_PRELOAD=$LDP $@ > /proc/1/fd/1 2>&1 5 | -------------------------------------------------------------------------------- /extras/packetforge/parsegraph/edges/ip_after_gtppsc.json: -------------------------------------------------------------------------------- 1 | { 2 | "type" : "edge", 3 | "start" : "gtppsc", 4 | "end" : "ipv4" 5 | } 6 | -------------------------------------------------------------------------------- /extras/packetforge/parsegraph/edges/ipv6_after_gtppsc.json: -------------------------------------------------------------------------------- 1 | { 2 | "type" : "edge", 3 | "start" : "gtppsc", 4 | "end" : "ipv6" 5 | } 6 | -------------------------------------------------------------------------------- /src/vpp-api/lua/examples/lute/script.lute: -------------------------------------------------------------------------------- 1 | shell s1 2 | expect s1 $ 3 | run s1 echo testing123 4 | expect s1 $ 5 | run s1 echo done 6 | quit 7 | 8 | -------------------------------------------------------------------------------- /extras/deprecated/vom/vom/.clang-format: -------------------------------------------------------------------------------- 1 | 2 | BasedOnStyle: mozilla 3 | AlwaysBreakAfterReturnType: TopLevelDefinitions 4 | BinPackParameters: false 5 | -------------------------------------------------------------------------------- /src/pkg/debian/vpp.preinst: -------------------------------------------------------------------------------- 1 | #!/bin/sh -e 2 | 3 | # Add the vpp group 4 | groupadd -f -r vpp 5 | start-stop-daemon --stop --exec /usr/bin/vpp || true 6 | -------------------------------------------------------------------------------- /docs/_images/build-a-fast-network-stack-terminal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adventureloop/vpp/HEAD/docs/_images/build-a-fast-network-stack-terminal.png -------------------------------------------------------------------------------- /extras/gmod/configure.ac: -------------------------------------------------------------------------------- 1 | AC_INIT(gmod, 1.0) 2 | LT_INIT 3 | AM_INIT_AUTOMAKE 4 | AM_SILENT_RULES([yes]) 5 | 6 | AC_PROG_CC 7 | 8 | AC_OUTPUT([Makefile]) 9 | -------------------------------------------------------------------------------- /src/pkg/debian/changelog.in: -------------------------------------------------------------------------------- 1 | vpp (@VPP_VERSION@) unstable; urgency=low 2 | 3 | * no description 4 | 5 | -- fd.io VPP @TIMESTAMP@ 6 | 7 | -------------------------------------------------------------------------------- /docs/_images/build-a-fast-network-stack-terminal-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adventureloop/vpp/HEAD/docs/_images/build-a-fast-network-stack-terminal-2.png -------------------------------------------------------------------------------- /docs/_images/build-a-fast-network-stack-terminal-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adventureloop/vpp/HEAD/docs/_images/build-a-fast-network-stack-terminal-3.png -------------------------------------------------------------------------------- /docs/_images/Connecting_two_vpp_instances_with_memif.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adventureloop/vpp/HEAD/docs/_images/Connecting_two_vpp_instances_with_memif.png -------------------------------------------------------------------------------- /extras/hs-test/resources/curl/write_out_upload: -------------------------------------------------------------------------------- 1 | Upload size: %{size_upload} bytes\nUpload speed: %{speed_upload} bytes per second\nPUT response code: %{response_code}\n -------------------------------------------------------------------------------- /extras/hs-test/resources/nginx/html/index.html: -------------------------------------------------------------------------------- 1 | 2 | nginx docker with quic 3 | 4 |

Greetings!

5 | 6 |
7 | -------------------------------------------------------------------------------- /extras/vcl-ldpreload/test/common/vpp_docker.conf: -------------------------------------------------------------------------------- 1 | create host-interface name vpp1 2 | set int state host-vpp1 up 3 | set int ip address host-vpp1 172.17.0.123/24 4 | -------------------------------------------------------------------------------- /docs/README: -------------------------------------------------------------------------------- 1 | If you want to build a VPP documentation source, please refer to the VPP user documentation: 2 | https://fd.io/docs/vpp/master/contributing/writingdocs.html 3 | -------------------------------------------------------------------------------- /docs/_images/VPP_sample_data_plane_management_agent_x260.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adventureloop/vpp/HEAD/docs/_images/VPP_sample_data_plane_management_agent_x260.jpg -------------------------------------------------------------------------------- /docs/_images/VPP_and_ovsdpdk_tested_on_haswellx86_platform.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adventureloop/vpp/HEAD/docs/_images/VPP_and_ovsdpdk_tested_on_haswellx86_platform.jpg -------------------------------------------------------------------------------- /extras/hs-test/resources/curl/write_out_download: -------------------------------------------------------------------------------- 1 | Download size: %{size_download} bytes\nDownload speed: %{speed_download} bytes per second\nGET response code: %{response_code}\n -------------------------------------------------------------------------------- /docs/_images/Vpp_performance_barchart_ndr_rates_l2-nic-to-nic.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adventureloop/vpp/HEAD/docs/_images/Vpp_performance_barchart_ndr_rates_l2-nic-to-nic.jpg -------------------------------------------------------------------------------- /src/cmake/platform/octeon9.cmake: -------------------------------------------------------------------------------- 1 | 2 | set(VPP_PLATFORM_CACHE_LINE_SIZE 128) 3 | set(VPP_PLATFORM_MARCH_FLAGS -march=armv8.2-a+crc+crypto) 4 | set(VPP_PLATFORM_BUFFER_ALIGN 128) 5 | -------------------------------------------------------------------------------- /src/scripts/vnet/uri/dpdk_setup.cli: -------------------------------------------------------------------------------- 1 | set int state GigabitEthernet1b/0/0 up 2 | set int ip address GigabitEthernet1b/0/0 6.0.1.1/24 3 | trace add dpdk-input 10 4 | session enable 5 | -------------------------------------------------------------------------------- /test/scripts/git_pull_or_clean.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | CMD='git clean -dfX */' 3 | 4 | if git pull | grep -v 'Already up-to-date.' 5 | then 6 | echo "Executing $CMD" 7 | $CMD 8 | fi 9 | -------------------------------------------------------------------------------- /.clang-tidy: -------------------------------------------------------------------------------- 1 | Checks: "-*,\ 2 | misc-*,\ 3 | bugprone-*,\ 4 | -bugprone-reserved-identifier,\ 5 | -performance-*,\ 6 | clang-analyzer-*,\ 7 | -clang-analyzer-valist.Uninitialized,\ 8 | " 9 | -------------------------------------------------------------------------------- /docs/_images/VPP_App_as_vSwitch_with_local_programmability_x260.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adventureloop/vpp/HEAD/docs/_images/VPP_App_as_vSwitch_with_local_programmability_x260.jpg -------------------------------------------------------------------------------- /docs/_images/VPP_custom_application_packet_processing_graph.280.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adventureloop/vpp/HEAD/docs/_images/VPP_custom_application_packet_processing_graph.280.jpg -------------------------------------------------------------------------------- /src/scripts/vnet/probe6: -------------------------------------------------------------------------------- 1 | ethernet create-interfaces 2 | set int state fake-eth0 up 3 | set int ip address fake-eth0 2000::1/64 4 | comment { ip probe fake-eth0 2000::1 } 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/scripts/vnet/uri/tap_setup.cli: -------------------------------------------------------------------------------- 1 | tap connect tap0 address 6.0.1.2/24 2 | set int ip addr tap-0 6.0.1.1/24 3 | set int state tap-0 up 4 | trace add tapcli-rx 10 5 | session enable 6 | -------------------------------------------------------------------------------- /docs/_images/VPP_Packet_Processing_Layer_In_Network_Stack_Overview.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adventureloop/vpp/HEAD/docs/_images/VPP_Packet_Processing_Layer_In_Network_Stack_Overview.jpg -------------------------------------------------------------------------------- /docs/_images/VPP_performance_barchart_ndr_rates_l2-nic-to-VM.small.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adventureloop/vpp/HEAD/docs/_images/VPP_performance_barchart_ndr_rates_l2-nic-to-VM.small.jpg -------------------------------------------------------------------------------- /src/cmake/platform/octeon10.cmake: -------------------------------------------------------------------------------- 1 | 2 | set(VPP_PLATFORM_CACHE_LINE_SIZE 64) 3 | set(VPP_PLATFORM_MARCH_FLAGS -march=armv8.3-a+crypto+sve2-bitperm) 4 | set(VPP_PLATFORM_BUFFER_ALIGN 128) 5 | -------------------------------------------------------------------------------- /src/scripts/vnet/tcp-test: -------------------------------------------------------------------------------- 1 | int create-ethernet 2 | set int ip address fake-eth0 1.2.3.4/24 3 | set int state fake-eth0 up 4 | ip route 1.2.3.5/32 via local 5 | trace add tuntap-rx 100 6 | 7 | -------------------------------------------------------------------------------- /src/scripts/vnet/uri/afp_setup.cli: -------------------------------------------------------------------------------- 1 | create host-interface name vpp1 2 | set int state host-vpp1 up 3 | set int ip address host-vpp1 6.0.1.1/24 4 | trace add af-packet-input 10 5 | session enable 6 | -------------------------------------------------------------------------------- /extras/strongswan/vpp_sswan/docker/scripts/init.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | echo "Initialization Image" 4 | 5 | git clone https://github.com/FDio/vpp.git ./vpp 6 | 7 | cd vpp 8 | yes | make install-dep 9 | -------------------------------------------------------------------------------- /extras/vpp_config/scripts/requirements.txt: -------------------------------------------------------------------------------- 1 | certifi==2020.4.5.1 2 | chardet==3.0.4 3 | distro==1.5.0 4 | idna==2.9 5 | pkg-resources==0.0.0 6 | PyYAML==5.3.1 7 | requests==2.23.0 8 | urllib3==1.25.9 9 | -------------------------------------------------------------------------------- /src/vnet/pg/example.script: -------------------------------------------------------------------------------- 1 | packet-generator new { \ 2 | name x \ 3 | limit 1 \ 4 | node ethernet-input \ 5 | data { IP: 1.2.3 -> 4.5.6 incrementing 100 } \ 6 | } 7 | -------------------------------------------------------------------------------- /extras/strongswan/vpp_sswan/kernel-vpp.conf: -------------------------------------------------------------------------------- 1 | kernel-vpp { 2 | 3 | # Whether to load the plugin. Can also be an integer to increase the 4 | # priority of this plugin. 5 | load = yes 6 | 7 | } 8 | -------------------------------------------------------------------------------- /docs/_images/VPP_as_vSwitch_or_vRouter_supporting_remote_programmability_x260.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adventureloop/vpp/HEAD/docs/_images/VPP_as_vSwitch_or_vRouter_supporting_remote_programmability_x260.jpg -------------------------------------------------------------------------------- /extras/hs-test/resources/curl/write_out_upload_connect: -------------------------------------------------------------------------------- 1 | Upload size: %{size_upload} bytes\nUpload speed: %{speed_upload} bytes per second\nCONNECT response code: %{http_connect}\nPUT response code: %{response_code}\n -------------------------------------------------------------------------------- /extras/hs-test/resources/envoy/vcl.conf: -------------------------------------------------------------------------------- 1 | vcl { 2 | rx-fifo-size 400000 3 | tx-fifo-size 400000 4 | app-scope-global 5 | use-mq-eventfd 6 | app-socket-api /tmp/vpp-envoy/var/run/app_ns_sockets/default 7 | } 8 | -------------------------------------------------------------------------------- /extras/hs-test/topo-network/tap.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | devices: 3 | - name: "htaphost" 4 | type: "tap" 5 | ip4: 6 | network: 1 7 | peer: 8 | name: "" 9 | ip4: 10 | network: 1 11 | -------------------------------------------------------------------------------- /extras/vpp_stats_fs/go.mod: -------------------------------------------------------------------------------- 1 | module stats_fs 2 | 3 | go 1.16 4 | 5 | require ( 6 | git.fd.io/govpp.git v0.3.6-0.20210601140839-da95997338b7 // indirect 7 | github.com/hanwen/go-fuse/v2 v2.1.0 // indirect 8 | ) 9 | -------------------------------------------------------------------------------- /docs/aboutvpp/releasenotes/index.rst: -------------------------------------------------------------------------------- 1 | .. _release_notes: 2 | 3 | Release notes 4 | ============= 5 | 6 | .. toctree:: 7 | :maxdepth: 2 8 | 9 | v24.06 10 | v24.02 11 | v23.10 12 | past 13 | -------------------------------------------------------------------------------- /extras/configs/http/startup.cfg: -------------------------------------------------------------------------------- 1 | unix { 2 | interactive 3 | poll-sleep-usec 500 4 | startup-config /scratch/vpp-http/extras/http/setup.http 5 | } 6 | 7 | tls { 8 | use-test-cert-in-ca 9 | } 10 | -------------------------------------------------------------------------------- /extras/packetforge/StringFormat.py: -------------------------------------------------------------------------------- 1 | import enum 2 | 3 | 4 | class StringFormat(enum.Enum): 5 | mac = 0 6 | ipv4 = 1 7 | ipv6 = 2 8 | u8 = 3 9 | u16 = 4 10 | u32 = 5 11 | u64 = 6 12 | -------------------------------------------------------------------------------- /extras/hs-test/resources/curl/write_out_download_connect: -------------------------------------------------------------------------------- 1 | Download size: %{size_download} bytes\nDownload speed: %{speed_download} bytes per second\nCONNECT response code: %{http_connect}\nGET response code: %{response_code}\n -------------------------------------------------------------------------------- /extras/hs-test/script/build_curl.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | wget https://github.com/stunnel/static-curl/releases/download/8.5.0/curl-static-amd64-8.5.0.tar.xz 4 | tar -xvf ./curl-static-amd64-8.5.0.tar.xz 5 | cp curl /usr/bin/curl -------------------------------------------------------------------------------- /extras/strongswan/test_responder_keepalive.sh: -------------------------------------------------------------------------------- 1 | . topos/basic.sh 2 | 3 | TC_DIR=responder_keepalive 4 | 5 | config_topo 6 | initiate_from_sswan 7 | 8 | test_ping 9 | sleep 30 10 | test_ping 11 | 12 | unconf_topo 13 | -------------------------------------------------------------------------------- /extras/vagrant/env.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | export VPP_VAGRANT_DISTRO="ubuntu1804" 4 | export VPP_VAGRANT_NICS=2 5 | export VPP_VAGRANT_VMCPU=4 6 | export VPP_VAGRANT_VMRAM=4096 7 | export VPP_VAGRANT_POST_BUILD=install 8 | -------------------------------------------------------------------------------- /src/plugins/bpf_trace_filter/bpf_trace_filter.rst: -------------------------------------------------------------------------------- 1 | BPF Trace Filter Function 2 | ============================ 3 | This plugin provides a trace filter function that relies on a BPF interpreter to select which packets 4 | must be traced. -------------------------------------------------------------------------------- /extras/apps/configure.ac: -------------------------------------------------------------------------------- 1 | AC_INIT(apps, 1.0) 2 | LT_INIT 3 | AM_INIT_AUTOMAKE 4 | AM_SILENT_RULES([yes]) 5 | AC_PREFIX_DEFAULT([/usr]) 6 | 7 | AC_PROG_CC 8 | 9 | AC_OUTPUT([Makefile]) 10 | 11 | AC_CONFIG_MACRO_DIR([m4]) 12 | -------------------------------------------------------------------------------- /extras/packetforge/InputFormat.py: -------------------------------------------------------------------------------- 1 | import enum 2 | 3 | 4 | class InputFormat(enum.Enum): 5 | mac = 0 6 | ipv4 = 1 7 | ipv6 = 2 8 | u8 = 3 9 | u16 = 4 10 | u32 = 5 11 | u64 = 6 12 | bytearray = 7 13 | -------------------------------------------------------------------------------- /src/scripts/vnet/dhcp/dhcpd.conf: -------------------------------------------------------------------------------- 1 | # add at the bottom 2 | 3 | subnet 192.168.0.0 netmask 255.255.0.0 { 4 | range 192.168.1.10 192.168.1.254; 5 | option routers 192.168.1.1; 6 | default-lease-time 15; 7 | max-lease-time 15; 8 | } 9 | -------------------------------------------------------------------------------- /docs/developer/devicedrivers/index.rst: -------------------------------------------------------------------------------- 1 | .. _devicedrivers: 2 | 3 | ============== 4 | Device drivers 5 | ============== 6 | 7 | 8 | 9 | .. toctree:: 10 | :maxdepth: 1 11 | 12 | avf 13 | rdma 14 | vmxnet3 15 | af_xdp 16 | -------------------------------------------------------------------------------- /docs/interfacing/binapi/index.rst: -------------------------------------------------------------------------------- 1 | .. _vpp_binapi: 2 | 3 | ============== 4 | The binary API 5 | ============== 6 | 7 | .. toctree:: 8 | :maxdepth: 2 9 | 10 | vpp_api_module 11 | vpp_api_language 12 | writing_api_handlers 13 | -------------------------------------------------------------------------------- /src/plugins/l2tp/FEATURE.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: L2TPv3 3 | maintainer: unmaintained 4 | features: 5 | - L2TPv3 over IPv6 6 | description: "An initial and incomplete implementation of L2TPv3 (RFC3931)." 7 | state: experimental 8 | properties: [API, CLI] 9 | -------------------------------------------------------------------------------- /src/plugins/srv6-mobile/extra/startup.conf.j2: -------------------------------------------------------------------------------- 1 | unix { 2 | nodaemon 3 | cli-no-pager 4 | cli-listen 0.0.0.0:5002 5 | } 6 | plugins { 7 | plugin dpdk_plugin.so { 8 | disable 9 | } 10 | } 11 | cpu { 12 | workers 2 13 | } 14 | 15 | -------------------------------------------------------------------------------- /src/plugins/bpf_trace_filter/FEATURE.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: BPF Trace Filter 3 | maintainer: Mohammed Hawari 4 | features: 5 | - BPF Trace Filtering 6 | description: "BPF Trace Filtering" 7 | state: experimental 8 | properties: [CLI, API] 9 | -------------------------------------------------------------------------------- /src/plugins/dma_intel/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: Apache-2.0 2 | # Copyright(c) 2022 Cisco Systems, Inc. 3 | 4 | add_vpp_plugin(dma_intel 5 | SOURCES 6 | dsa.c 7 | format.c 8 | main.c 9 | 10 | SUPPORTED_OS_LIST Linux 11 | ) 12 | -------------------------------------------------------------------------------- /extras/docker/run/Dockerfile.centos7: -------------------------------------------------------------------------------- 1 | FROM centos:7.3.1611 2 | ARG REPO=release 3 | RUN curl -s https://packagecloud.io/install/repositories/fdio/${REPO}/script.rpm.sh | bash 4 | RUN yum -y install vpp vpp-plugins 5 | CMD ["/usr/bin/vpp","-c","/etc/vpp/startup.conf"] -------------------------------------------------------------------------------- /extras/gdb/gdb_cmdfile.vpp: -------------------------------------------------------------------------------- 1 | echo \n\n====== gdb_cmdfile.vpp ======\n 2 | 3 | # Here are some interesting vpp-api breakpoints... 4 | # Uncomment them out to set during gdb init. 5 | # 6 | #b vl_api_connect_sock_t_handler 7 | #b vl_api_connect_sock_reply_t_handler 8 | -------------------------------------------------------------------------------- /extras/pg/ip6_simple.pg: -------------------------------------------------------------------------------- 1 | 2 | packet-generator new { 3 | name x 4 | limit 5 5 | size 128-128 6 | interface local0 7 | node ip6-lookup 8 | data { 9 | ICMP: db00::1 -> db00::2 10 | incrementing 30 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/tools/appimage/vpp.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Name=VPP 3 | Exec=vpp %F 4 | Icon=vpp 5 | Type=Application 6 | Categories=Network; 7 | Comment=Vector Packet Processor 8 | Name[en]=VPP 9 | Terminal=false 10 | StartupNotify=true 11 | NoDisplay=false 12 | -------------------------------------------------------------------------------- /src/vnet/dev/mgmt.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: Apache-2.0 2 | * Copyright (c) 2023 Cisco Systems, Inc. 3 | */ 4 | 5 | #ifndef _VNET_DEV_MGMT_H_ 6 | #define _VNET_DEV_MGMT_H_ 7 | 8 | #include 9 | 10 | #endif /* _VNET_DEV_MGMT_H_ */ 11 | -------------------------------------------------------------------------------- /docs/developer/corefeatures/sr/index.rst: -------------------------------------------------------------------------------- 1 | .. _corefeature_sr: 2 | 3 | =============== 4 | Segment routing 5 | =============== 6 | 7 | .. toctree:: 8 | :maxdepth: 1 9 | 10 | sr_doc 11 | sr_localsid 12 | sr_mpls 13 | sr_policy 14 | sr_steering -------------------------------------------------------------------------------- /extras/configs/static_http/setup.http: -------------------------------------------------------------------------------- 1 | set term pag off 2 | create tap host-if-name lstack host-ip4-addr 192.168.10.2/24 3 | set int ip address tap0 192.168.10.1/24 4 | set int state tap0 up 5 | 6 | http static server www-root /tmp/www uri tcp://0.0.0.0/80 cache-size 1m 7 | -------------------------------------------------------------------------------- /src/vpp-api/lua/examples/cli/README.md: -------------------------------------------------------------------------------- 1 | This is a small experiment to have a wrapper CLI which can call both API functions as well as debug CLI. 2 | 3 | To facilitate tab completion and help, the API call names are broken up with spaces replacing the underscores. 4 | 5 | 6 | -------------------------------------------------------------------------------- /extras/packetforge/parsegraph/edges/ah_after_ipv4.json: -------------------------------------------------------------------------------- 1 | { 2 | "type" : "edge", 3 | "start" : "ipv4", 4 | "end" : "ah", 5 | "actions" : [ 6 | { 7 | "dst" : "start.protocol", 8 | "src" : "51" 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /extras/packetforge/parsegraph/edges/gtpc_after_udp.json: -------------------------------------------------------------------------------- 1 | { 2 | "type" : "edge", 3 | "start" : "udp", 4 | "end" : "gtpc", 5 | "actions" : [ 6 | { 7 | "dst" : "start.dst", 8 | "src" : "2123" 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /extras/packetforge/parsegraph/edges/gtpu_after_udp.json: -------------------------------------------------------------------------------- 1 | { 2 | "type" : "edge", 3 | "start" : "udp", 4 | "end" : "gtpu", 5 | "actions" : [ 6 | { 7 | "dst" : "start.dst", 8 | "src" : "2152" 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /extras/packetforge/parsegraph/edges/pfcp_after_udp.json: -------------------------------------------------------------------------------- 1 | { 2 | "type" : "edge", 3 | "start" : "udp", 4 | "end" : "pfcp", 5 | "actions" : [ 6 | { 7 | "dst" : "start.dst", 8 | "src" : "8805" 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /extras/packetforge/parsegraph/edges/tcp_after_ipv4.json: -------------------------------------------------------------------------------- 1 | { 2 | "type" : "edge", 3 | "start" : "ipv4", 4 | "end" : "tcp", 5 | "actions" : [ 6 | { 7 | "dst" : "start.protocol", 8 | "src" : "6" 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /src/vnet/dev/process.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: Apache-2.0 2 | * Copyright (c) 2023 Cisco Systems, Inc. 3 | */ 4 | 5 | #ifndef _VNET_DEV_PROCESS_H_ 6 | #define _VNET_DEV_PROCESS_H_ 7 | 8 | #include 9 | 10 | #endif /* _VNET_DEV_PROCESS_H_ */ 11 | -------------------------------------------------------------------------------- /docs/interfacing/rust/index.rst: -------------------------------------------------------------------------------- 1 | .. _rustvpp: 2 | 3 | =============== 4 | Rust api client 5 | =============== 6 | 7 | The VPP Rust API client is in alpha stage 8 | You can read more in `this blog post `_ 9 | -------------------------------------------------------------------------------- /extras/packetforge/parsegraph/edges/esp_after_ipv4.json: -------------------------------------------------------------------------------- 1 | { 2 | "type" : "edge", 3 | "start" : "ipv4", 4 | "end" : "esp", 5 | "actions" : [ 6 | { 7 | "dst" : "start.protocol", 8 | "src" : "50" 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /extras/packetforge/parsegraph/edges/icmp_after_ipv4.json: -------------------------------------------------------------------------------- 1 | { 2 | "type" : "edge", 3 | "start" : "ipv4", 4 | "end" : "icmp", 5 | "actions" : [ 6 | { 7 | "dst" : "start.protocol", 8 | "src" : "1" 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /extras/packetforge/parsegraph/edges/ipv4_after_ipv4.json: -------------------------------------------------------------------------------- 1 | { 2 | "type" : "edge", 3 | "start" : "ipv4", 4 | "end" : "ipv4", 5 | "actions" : [ 6 | { 7 | "dst" : "start.protocol", 8 | "src" : "4" 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /extras/packetforge/parsegraph/edges/ipv6_after_ipv4.json: -------------------------------------------------------------------------------- 1 | { 2 | "type" : "edge", 3 | "start" : "ipv4", 4 | "end" : "ipv6", 5 | "actions" : [ 6 | { 7 | "dst" : "start.protocol", 8 | "src" : "41" 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /extras/packetforge/parsegraph/edges/sctp_after_ipv4.json: -------------------------------------------------------------------------------- 1 | { 2 | "type" : "edge", 3 | "start" : "ipv4", 4 | "end" : "sctp", 5 | "actions" : [ 6 | { 7 | "dst" : "start.protocol", 8 | "src" : "132" 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /extras/packetforge/parsegraph/edges/udp_after_ipv4.json: -------------------------------------------------------------------------------- 1 | { 2 | "type" : "edge", 3 | "start" : "ipv4", 4 | "end" : "udp", 5 | "actions" : [ 6 | { 7 | "dst" : "start.protocol", 8 | "src" : "17" 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /src/vnet/tunnel/FEATURE.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: Tunnel Infra 3 | maintainer: Neale Ranns 4 | features: 5 | - Common types and functions for IP tunnels 6 | 7 | description: "Tunnel Infrastructure" 8 | state: production 9 | properties: [API, CLI, MULTITHREAD] 10 | -------------------------------------------------------------------------------- /extras/packetforge/parsegraph/edges/gre_after_ipv4.json: -------------------------------------------------------------------------------- 1 | { 2 | "type" : "edge", 3 | "start" : "ipv4", 4 | "end" : "gre,nvgre", 5 | "actions" : [ 6 | { 7 | "dst" : "start.protocol", 8 | "src" : "47" 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /extras/packetforge/parsegraph/edges/ipv4_after_gre.json: -------------------------------------------------------------------------------- 1 | { 2 | "type" : "edge", 3 | "start" : "gre", 4 | "end" : "ipv4", 5 | "actions" : [ 6 | { 7 | "dst" : "start.protocoltype", 8 | "src" : "0x0800" 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /extras/packetforge/parsegraph/edges/ipv6_after_gre.json: -------------------------------------------------------------------------------- 1 | { 2 | "type" : "edge", 3 | "start" : "gre", 4 | "end" : "ipv6", 5 | "actions" : [ 6 | { 7 | "dst" : "start.protocoltype", 8 | "src" : "0x86dd" 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /extras/packetforge/parsegraph/edges/sctp_after_ipv6.json: -------------------------------------------------------------------------------- 1 | { 2 | "type" : "edge", 3 | "start" : "ipv6", 4 | "end" : "sctp", 5 | "actions" : [ 6 | { 7 | "dst" : "start.nextheader", 8 | "src" : "132" 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /src/vnet/hash/FEATURE.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: Hash infrastructure 3 | maintainer: Mohsin Kazmi , Damjan Marion 4 | features: 5 | - Ethernet 6 | - IP 7 | description: "Hash infrastructure" 8 | state: development 9 | properties: [CLI] 10 | -------------------------------------------------------------------------------- /src/vpp-api/python/vpp_papi/tests/test_macaddress.py: -------------------------------------------------------------------------------- 1 | import unittest 2 | from vpp_papi import MACAddress 3 | 4 | 5 | class TestMacAddress(unittest.TestCase): 6 | def test_eq(self): 7 | mac = "11:22:33:44:55:66" 8 | self.assertEqual(MACAddress(mac), MACAddress(mac)) 9 | -------------------------------------------------------------------------------- /docs/interfacing/c/index.rst: -------------------------------------------------------------------------------- 1 | .. _cvpp: 2 | 3 | ============ 4 | C api client 5 | ============ 6 | 7 | You can find a good example on how to build a binary API client in C here : 8 | 9 | `src/vpp-api/vapi/vapi_c_test.c <__REPOSITORY_URL__/src/vpp-api/vapi/vapi_c_test.c>`_ 10 | 11 | -------------------------------------------------------------------------------- /extras/configs/http/setup.http: -------------------------------------------------------------------------------- 1 | set term pag off 2 | create tap host-if-name lstack host-ip4-addr 192.168.10.2/24 3 | set int ip address tap0 192.168.10.1/24 4 | set int state tap0 up 5 | 6 | http static server url-handlers www-root uri tcp://0.0.0.0/1234 cache-size 10m fifo-size 2048 7 | -------------------------------------------------------------------------------- /extras/hs-test/docker/Dockerfile.envoy: -------------------------------------------------------------------------------- 1 | FROM envoyproxy/envoy-contrib:v1.31-latest 2 | 3 | RUN chmod go+r /etc/envoy/envoy.yaml 4 | RUN chown envoy:envoy /dev/stdout /dev/stderr 5 | 6 | ENTRYPOINT ["/bin/sh", "-c", "envoy --log-format [%t][%l][%g:%#]%_ --concurrency 2 -c /etc/envoy/envoy.yaml"] -------------------------------------------------------------------------------- /extras/packetforge/parsegraph/edges/ip_after_gtpu.json: -------------------------------------------------------------------------------- 1 | { 2 | "type" : "edge", 3 | "start" : "gtpu", 4 | "end" : "ipv4,ipv6", 5 | "actions" : [ 6 | { 7 | "dst" : "start.messagetype", 8 | "src" : "0xff" 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /extras/packetforge/parsegraph/edges/ipv4_after_geneve.json: -------------------------------------------------------------------------------- 1 | { 2 | "type" : "edge", 3 | "start" : "geneve", 4 | "end" : "ipv4", 5 | "actions" : [ 6 | { 7 | "dst" : "start.protocoltype", 8 | "src" : "0x0800" 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /extras/packetforge/parsegraph/edges/ipv4_after_macvlan.json: -------------------------------------------------------------------------------- 1 | { 2 | "type" : "edge", 3 | "start" : "mac,vlan", 4 | "end" : "ipv4", 5 | "actions" : [ 6 | { 7 | "dst" : "start.ethertype", 8 | "src" : "0x0800" 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /extras/packetforge/parsegraph/edges/ipv4_after_vxlangpe.json: -------------------------------------------------------------------------------- 1 | { 2 | "type" : "edge", 3 | "start" : "vxlangpe", 4 | "end" : "ipv4", 5 | "actions" : [ 6 | { 7 | "dst" : "start.nextprotocol", 8 | "src" : "1" 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /extras/packetforge/parsegraph/edges/ipv6_after_geneve.json: -------------------------------------------------------------------------------- 1 | { 2 | "type" : "edge", 3 | "start" : "geneve", 4 | "end" : "ipv6", 5 | "actions" : [ 6 | { 7 | "dst" : "start.protocoltype", 8 | "src" : "0x86dd" 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /extras/packetforge/parsegraph/edges/ipv6_after_macvlan.json: -------------------------------------------------------------------------------- 1 | { 2 | "type" : "edge", 3 | "start" : "mac,vlan", 4 | "end" : "ipv6", 5 | "actions" : [ 6 | { 7 | "dst" : "start.ethertype", 8 | "src" : "0x86dd" 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /extras/packetforge/parsegraph/edges/ipv6_after_vxlangpe.json: -------------------------------------------------------------------------------- 1 | { 2 | "type" : "edge", 3 | "start" : "vxlangpe", 4 | "end" : "ipv6", 5 | "actions" : [ 6 | { 7 | "dst" : "start.nextprotocol", 8 | "src" : "2" 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /extras/packetforge/parsegraph/edges/mac_after_geneve.json: -------------------------------------------------------------------------------- 1 | { 2 | "type" : "edge", 3 | "start" : "geneve", 4 | "end" : "mac", 5 | "actions" : [ 6 | { 7 | "dst" : "start.protocoltype", 8 | "src" : "0x6558" 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /extras/packetforge/parsegraph/edges/mac_after_vxlangpe.json: -------------------------------------------------------------------------------- 1 | { 2 | "type" : "edge", 3 | "start" : "vxlangpe", 4 | "end" : "mac", 5 | "actions" : [ 6 | { 7 | "dst" : "start.nextprotocol", 8 | "src" : "3" 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /src/plugins/af_xdp/FEATURE.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: AF_XDP device driver 3 | maintainer: Benoît Ganne 4 | features: 5 | - AF_XDP driver for Linux kernel 5.4+ 6 | description: "AF_XDP device driver support" 7 | state: experimental 8 | properties: [CLI, STATS, MULTITHREAD, API] 9 | -------------------------------------------------------------------------------- /src/plugins/rdma/FEATURE.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: rdma device driver 3 | maintainer: Benoît Ganne 4 | features: 5 | - rdma driver for Mellanox ConnectX-4/5 adapters 6 | description: "rdma device driver support" 7 | state: production 8 | properties: [API, CLI, STATS, MULTITHREAD] 9 | -------------------------------------------------------------------------------- /docs/developer/plugindoc/index.rst: -------------------------------------------------------------------------------- 1 | .. _add_new_plugin: 2 | 3 | ============================== 4 | Adding a new plugin or feature 5 | ============================== 6 | 7 | 8 | .. toctree:: 9 | :maxdepth: 2 10 | 11 | add_plugin 12 | sample_plugin_doc 13 | handoffdemo 14 | -------------------------------------------------------------------------------- /docs/usecases/vhost/xmlexample.rst: -------------------------------------------------------------------------------- 1 | .. _xmlexample01: 2 | 3 | The XML File 4 | ------------ 5 | 6 | An example of a file that could be used with the virsh create command. 7 | 8 | .. literalinclude:: iperf-vm.xml 9 | :language: XML 10 | :emphasize-lines: 5-9, 42-49, 74-81 11 | 12 | -------------------------------------------------------------------------------- /extras/packetforge/parsegraph/edges/arpv4_after_macvlan.json: -------------------------------------------------------------------------------- 1 | { 2 | "type" : "edge", 3 | "start" : "mac,vlan", 4 | "end" : "arpv4", 5 | "actions" : [ 6 | { 7 | "dst" : "start.ethertype", 8 | "src" : "0x0806" 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /extras/packetforge/parsegraph/edges/l2tpv2_after_udp.json: -------------------------------------------------------------------------------- 1 | { 2 | "type" : "edge", 3 | "start" : "udp", 4 | "end" : "l2tpv2ctl,l2tpv2data", 5 | "actions" : [ 6 | { 7 | "dst" : "start.dst", 8 | "src" : "1701" 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /extras/vpp_config/setup.cfg: -------------------------------------------------------------------------------- 1 | [bdist_wheel] 2 | # This flag says that the code is written to work on both Python 2 and Python 3 | # 3. If at all possible, it is good practice to do this. If you cannot, you 4 | # will need to generate wheels for each Python version that you support. 5 | universal=1 6 | -------------------------------------------------------------------------------- /src/plugins/nat/pnat/tests/missing_rule.def: -------------------------------------------------------------------------------- 1 | [ 2 | ( 3 | "hit missing rule", 4 | IP(src='1.1.1.1', dst='123.123.123.123')/UDP(chksum=0, sport=80, dport=6871), 5 | IP(src='1.1.1.1', dst='123.123.123.123')/UDP(chksum=0, sport=80, dport=6871), 6 | 0 7 | ), 8 | ] 9 | -------------------------------------------------------------------------------- /src/plugins/pvti/FEATURE.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: Packet Vector Tunnel 3 | maintainer: Andrew Yourtchenko 4 | features: 5 | - support inner MTU up to ~8K over standard 1280..1500 MTU substrate 6 | description: "Large MTU Tunnels" 7 | state: development 8 | properties: [API, CLI] 9 | -------------------------------------------------------------------------------- /src/vpp-api/python/setup.cfg: -------------------------------------------------------------------------------- 1 | [bdist_wheel] 2 | # This flag says that the code is written to work on both Python 2 and Python 3 | # 3. If at all possible, it is good practice to do this. If you cannot, you 4 | # will need to generate wheels for each Python version that you support. 5 | universal=1 6 | -------------------------------------------------------------------------------- /extras/packetforge/parsegraph/edges/tunnel_after_udp.json: -------------------------------------------------------------------------------- 1 | { 2 | "type" : "edge", 3 | "start" : "udp", 4 | "end" : "geneve,vxlan,vxlangpe", 5 | "actions" : [ 6 | { 7 | "dst" : "start.dst", 8 | "src" : "end.udpport" 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /src/plugins/nsim/FEATURE.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: Network Delay Simulator 3 | maintainer: Dave Barach 4 | features: 5 | - Network delay and loss fraction simulator 6 | description: "Introduces configurable network delay and loss" 7 | state: production 8 | properties: [CLI, MULTITHREAD] 9 | -------------------------------------------------------------------------------- /docs/usecases/simpleperf/index.rst: -------------------------------------------------------------------------------- 1 | .. _simpleperf: 2 | 3 | ************************ 4 | VPP with Iperf3 and TRex 5 | ************************ 6 | 7 | .. toctree:: 8 | :maxdepth: 2 9 | 10 | iperf3 11 | iperf31 12 | trex 13 | trex1 14 | trex2 15 | trex3 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /extras/hs-test/vars: -------------------------------------------------------------------------------- 1 | export VPP_WS=../../ 2 | 3 | export HST_LDPRELOAD=${VPP_WS}/build-root/build-vpp-native/vpp/lib/x86_64-linux-gnu/libvcl_ldpreload.so 4 | export PATH=${VPP_WS}/build-root/build-vpp-native/vpp/bin:$PATH 5 | 6 | export UBUNTU_VERSION=$(lsb_release -rs) 7 | export HST_EXTENDED_TESTS=false 8 | -------------------------------------------------------------------------------- /extras/packetforge/parsegraph/edges/ah_after_ipv6.json: -------------------------------------------------------------------------------- 1 | { 2 | "type" : "edge", 3 | "start" : "ipv6,ipv6srh,ipv6crh16,ipv6crh32", 4 | "end" : "ah", 5 | "actions" : [ 6 | { 7 | "dst" : "start.nextheader", 8 | "src" : "51" 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /extras/packetforge/parsegraph/edges/tcp_after_ipv6.json: -------------------------------------------------------------------------------- 1 | { 2 | "type" : "edge", 3 | "start" : "ipv6,ipv6srh,ipv6crh16,ipv6crh32", 4 | "end" : "tcp", 5 | "actions" : [ 6 | { 7 | "dst" : "start.nextheader", 8 | "src" : "6" 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /src/plugins/bufmon/FEATURE.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: Buffers monitoring plugin 3 | maintainer: Benoît Ganne 4 | features: 5 | - monitor buffer utilization in VPP graph nodes 6 | description: "monitor buffer utilization in VPP graph nodes" 7 | state: production 8 | properties: [CLI, MULTITHREAD] 9 | -------------------------------------------------------------------------------- /src/plugins/hsi/FEATURE.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: HSI (Host Stack Intercept) 3 | maintainer: Florin Coras 4 | features: 5 | - Host stack intercept feature 6 | description: "Feature that enables selective punting of flows to the host stack" 7 | state: experimental 8 | properties: [MULTITHREAD] 9 | -------------------------------------------------------------------------------- /src/vnet/vxlan-gpe/FEATURE.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: VxLAN-GPE 3 | maintainer: Hongjun Ni 4 | features: 5 | - VxLAN-GPE decapsulation 6 | - VxLAN-GPE encapsulation 7 | 8 | description: "VxLAN-GPE tunnel handling" 9 | state: production 10 | properties: [API, CLI, MULTITHREAD] 11 | -------------------------------------------------------------------------------- /extras/hs-test/resources/nginx/vcl.conf: -------------------------------------------------------------------------------- 1 | vcl { 2 | heapsize 64M 3 | segment-size 4000000000 4 | add-segment-size 4000000000 5 | rx-fifo-size 4000000 6 | tx-fifo-size 4000000 7 | event-queue-size 100000 8 | use-mq-eventfd 9 | app-socket-api /tmp/nginx/var/run/app_ns_sockets/default 10 | } 11 | -------------------------------------------------------------------------------- /extras/packetforge/parsegraph/edges/esp_after_ipv6.json: -------------------------------------------------------------------------------- 1 | { 2 | "type" : "edge", 3 | "start" : "ipv6,ipv6srh,ipv6crh16,ipv6crh32", 4 | "end" : "esp", 5 | "actions" : [ 6 | { 7 | "dst" : "start.nextheader", 8 | "src" : "50" 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /extras/packetforge/parsegraph/edges/ipv4_after_ipv6.json: -------------------------------------------------------------------------------- 1 | { 2 | "type" : "edge", 3 | "start" : "ipv6,ipv6srh,ipv6crh16,ipv6crh32", 4 | "end" : "ipv4", 5 | "actions" : [ 6 | { 7 | "dst" : "start.nextheader", 8 | "src" : "4" 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /extras/packetforge/parsegraph/edges/ipv6_after_ipv6.json: -------------------------------------------------------------------------------- 1 | { 2 | "type" : "edge", 3 | "start" : "ipv6,ipv6srh,ipv6crh16,ipv6crh32", 4 | "end" : "ipv6", 5 | "actions" : [ 6 | { 7 | "dst" : "start.nextheader", 8 | "src" : "41" 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /extras/packetforge/parsegraph/edges/udp_after_ipv6.json: -------------------------------------------------------------------------------- 1 | { 2 | "type" : "edge", 3 | "start" : "ipv6,ipv6srh,ipv6crh16,ipv6crh32", 4 | "end" : "udp", 5 | "actions" : [ 6 | { 7 | "dst" : "start.nextheader", 8 | "src" : "17" 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /docs/developer/corearchitecture/multiarch/index.rst: -------------------------------------------------------------------------------- 1 | .. _multiarch: 2 | 3 | Multi-architecture support 4 | ========================== 5 | 6 | This reference guide describes how to use the vpp multi-architecture support scheme 7 | 8 | .. toctree:: 9 | :maxdepth: 1 10 | 11 | nodefns 12 | arbfns 13 | -------------------------------------------------------------------------------- /docs/developer/corefeatures/fib/prerequisites.rst: -------------------------------------------------------------------------------- 1 | .. _prerequisites: 2 | 3 | Prerequisites 4 | ------------- 5 | 6 | This section describes some prerequisite topics and nomenclature that are 7 | foundational to understanding the FIB architecture. 8 | 9 | .. toctree:: 10 | 11 | graphs 12 | prefixes 13 | -------------------------------------------------------------------------------- /extras/packetforge/parsegraph/edges/gre_after_ipv6.json: -------------------------------------------------------------------------------- 1 | { 2 | "type" : "edge", 3 | "start" : "ipv6,ipv6srh,ipv6crh16,ipv6crh32", 4 | "end" : "gre,nvgre", 5 | "actions" : [ 6 | { 7 | "dst" : "start.nextheader", 8 | "src" : "47" 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /extras/packetforge/parsegraph/edges/icmpv6_after_ipv6.json: -------------------------------------------------------------------------------- 1 | { 2 | "type" : "edge", 3 | "start" : "ipv6,ipv6srh,ipv6crh16,ipv6crh32", 4 | "end" : "icmpv6", 5 | "actions" : [ 6 | { 7 | "dst" : "start.nextheader", 8 | "src" : "58" 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /extras/packetforge/parsegraph/edges/ipv6srh_after_ipv6.json: -------------------------------------------------------------------------------- 1 | { 2 | "type" : "edge", 3 | "start" : "ipv6,ipv6srh,ipv6crh16,ipv6crh32", 4 | "end" : "ipv6srh", 5 | "actions" : [ 6 | { 7 | "dst" : "start.nextheader", 8 | "src" : "43" 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /docs/aboutvpp/releasenotes/v17.01.1.rst: -------------------------------------------------------------------------------- 1 | Release notes for VPP 17.01.1 2 | ============================= 3 | 4 | This is bug fix release. 5 | 6 | For the full list of fixed issues please refer to: 7 | 8 | - fd.io `JIRA `__ 9 | - git `commit log `__ 10 | -------------------------------------------------------------------------------- /docs/aboutvpp/releasenotes/v18.01.1.rst: -------------------------------------------------------------------------------- 1 | Release notes for VPP 18.01.1 2 | ============================= 3 | 4 | This is bug fix release. 5 | 6 | For the full list of fixed issues please refer to: 7 | 8 | - fd.io `JIRA `__ 9 | - git `commit log `__ 10 | -------------------------------------------------------------------------------- /docs/aboutvpp/releasenotes/v18.01.2.rst: -------------------------------------------------------------------------------- 1 | Release notes for VPP 18.01.2 2 | ============================= 3 | 4 | This is bug fix release. 5 | 6 | For the full list of fixed issues please refer to: 7 | 8 | - fd.io `JIRA `__ 9 | - git `commit log `__ 10 | -------------------------------------------------------------------------------- /docs/aboutvpp/releasenotes/v19.01.1.rst: -------------------------------------------------------------------------------- 1 | Release notes for VPP 19.01.1 2 | ============================= 3 | 4 | This is bug fix release. 5 | 6 | For the full list of fixed issues please refer to: 7 | 8 | - fd.io `JIRA `__ 9 | - git `commit log `__ 10 | -------------------------------------------------------------------------------- /docs/aboutvpp/releasenotes/v19.01.2.rst: -------------------------------------------------------------------------------- 1 | Release notes for VPP 19.01.2 2 | ============================= 3 | 4 | This is bug fix release. 5 | 6 | For the full list of fixed issues please refer to: 7 | 8 | - fd.io `JIRA `__ 9 | - git `commit log `__ 10 | -------------------------------------------------------------------------------- /docs/aboutvpp/releasenotes/v19.01.3.rst: -------------------------------------------------------------------------------- 1 | Release notes for VPP 19.01.3 2 | ============================= 3 | 4 | This is bug fix release. 5 | 6 | For the full list of fixed issues please refer to: 7 | 8 | - fd.io `JIRA `__ 9 | - git `commit log `__ 10 | -------------------------------------------------------------------------------- /docs/aboutvpp/releasenotes/v19.04.1.rst: -------------------------------------------------------------------------------- 1 | Release notes for VPP 19.04.1 2 | ============================= 3 | 4 | This is bug fix release. 5 | 6 | For the full list of fixed issues please refer to: 7 | 8 | - fd.io `JIRA `__ 9 | - git `commit log `__ 10 | -------------------------------------------------------------------------------- /docs/aboutvpp/releasenotes/v19.04.2.rst: -------------------------------------------------------------------------------- 1 | Release notes for VPP 19.04.2 2 | ============================= 3 | 4 | This is bug fix release. 5 | 6 | For the full list of fixed issues please refer to: 7 | 8 | - fd.io `JIRA `__ 9 | - git `commit log `__ 10 | -------------------------------------------------------------------------------- /docs/aboutvpp/releasenotes/v19.04.3.rst: -------------------------------------------------------------------------------- 1 | Release notes for VPP 19.04.3 2 | ============================= 3 | 4 | This is bug fix release. 5 | 6 | For the full list of fixed issues please refer to: 7 | 8 | - fd.io `JIRA `__ 9 | - git `commit log `__ 10 | -------------------------------------------------------------------------------- /docs/aboutvpp/releasenotes/v19.08.3.rst: -------------------------------------------------------------------------------- 1 | Release notes for VPP 19.08.3 2 | ============================= 3 | 4 | This is bug fix release. 5 | 6 | For the full list of fixed issues please refer to: 7 | 8 | - fd.io `JIRA `__ 9 | - git `commit log `__ 10 | -------------------------------------------------------------------------------- /docs/aboutvpp/releasenotes/v20.05.1.rst: -------------------------------------------------------------------------------- 1 | Release notes for VPP 20.05.1 2 | ============================= 3 | 4 | This is bug fix release. 5 | 6 | For the full list of fixed issues please refer to: 7 | 8 | - fd.io `JIRA `__ 9 | - git `commit log `__ 10 | -------------------------------------------------------------------------------- /docs/aboutvpp/releasenotes/v21.10.1.rst: -------------------------------------------------------------------------------- 1 | Release notes for VPP 21.10.1 2 | ============================= 3 | 4 | This is bug fix release. 5 | 6 | For the full list of fixed issues please refer to: 7 | 8 | - fd.io `JIRA `_ 9 | - git `commit log `_ 10 | -------------------------------------------------------------------------------- /docs/developer/extras/index.rst: -------------------------------------------------------------------------------- 1 | .. _vpp_extras: 2 | 3 | =============== 4 | VPP extra tools 5 | =============== 6 | 7 | .. toctree:: 8 | :maxdepth: 2 9 | 10 | snap 11 | strongswan 12 | vpp_config 13 | vpp_if_stats 14 | vpp_stats_fs 15 | vpptop 16 | vcl_ldpreload 17 | hs_test 18 | -------------------------------------------------------------------------------- /extras/hs-test/topo-containers/singleCpuPinning.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | volumes: 3 | - volume: &shared-vol 4 | host-dir: "$HST_VOLUME_DIR/shared-vol" 5 | 6 | containers: 7 | - name: "vpp" 8 | volumes: 9 | - <<: *shared-vol 10 | container-dir: "/tmp/vpp" 11 | is-default-work-dir: true 12 | -------------------------------------------------------------------------------- /extras/scripts/build_static_vppctl.sh: -------------------------------------------------------------------------------- 1 | #/bin/env bash 2 | set -eu 3 | 4 | src=$(realpath $(dirname $0)/../..)/src 5 | 6 | ${CC:-cc} \ 7 | -Wall \ 8 | -Werror \ 9 | -O2 \ 10 | -flto \ 11 | -static \ 12 | -D STATIC_VPPCTL \ 13 | -I ${src} \ 14 | -g \ 15 | ${src}/vpp/app/vppctl.c \ 16 | -o vppctl 17 | 18 | -------------------------------------------------------------------------------- /src/pkg/debian/vpp.postinst: -------------------------------------------------------------------------------- 1 | #!/bin/sh -e 2 | 3 | # try to set the required values now. This may or may not work. 4 | # Allow for a nerd knob to skip this, e.g. during the container installs 5 | if [ -z "${VPP_INSTALL_SKIP_SYSCTL}" ] 6 | then 7 | sysctl --system 8 | fi 9 | 10 | #DEBHELPER# 11 | 12 | exit 0 13 | -------------------------------------------------------------------------------- /src/plugins/igmp/FEATURE.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: Internet Group Management Protocol 3 | maintainer: Neale Ranns 4 | features: 5 | - IGMPv3 only. 6 | 7 | description: "An implementation of the Internet Group Management Protocol (IGMP)" 8 | state: production 9 | properties: [API, CLI, MULTITHREAD] 10 | -------------------------------------------------------------------------------- /src/pkg/debian/copyright: -------------------------------------------------------------------------------- 1 | Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ 2 | Upstream-Name: optional. 3 | Upstream-Contact: optional. 4 | Source: optional. 5 | Disclaimer: optional. 6 | Comment: optional. 7 | License: Apache-2.0 8 | Copyright: 2015 Cisco and/or its affiliates and others. 9 | 10 | -------------------------------------------------------------------------------- /src/plugins/srtp/FEATURE.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: SRTP (Secure Real-time Transport Protocol) 3 | maintainer: Florin Coras 4 | features: 5 | - SRTP transport protocol implementation 6 | description: "SRTP transport protocol implementation based on libsrtp2" 7 | state: experimental 8 | properties: [MULTITHREAD] 9 | -------------------------------------------------------------------------------- /src/scripts/vnet/probe4: -------------------------------------------------------------------------------- 1 | ethernet create-interfaces 2 | set int state fake-eth0 up 3 | set int ip address fake-eth0 1.0.0.1/24 4 | comment { error } 5 | comment { ip probe fake-eth0 1.0.0.1 } 6 | comment { ip probe fake-eth0 1.2.3.4 } 7 | comment { error } 8 | comment { ip probe fake-eth0 1.0.0.2 } 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /src/vnet/arp/FEATURE.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: Address Resolution Protocol 3 | maintainer: Neale Ranns 4 | features: 5 | - ARP responder 6 | 7 | description: "An implementation of the Address resolution protocol (ARP) as described in RFC826" 8 | state: production 9 | properties: [API, CLI, MULTITHREAD] 10 | -------------------------------------------------------------------------------- /src/vnet/bfd/FEATURE.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bidirectional Forwarding Detection 3 | maintainer: Klement Sekera 4 | features: 5 | - BFD protocol implementation 6 | description: "An implementation of Bidirectional Forwarding Detection (BFD)." 7 | state: production 8 | properties: [API, CLI, STATS, MULTITHREAD] 9 | -------------------------------------------------------------------------------- /docs/developer/build-run-debug/index.rst: -------------------------------------------------------------------------------- 1 | .. _build_run_debug: 2 | 3 | ======================= 4 | Build, Run & Debug 5 | ======================= 6 | 7 | .. toctree:: 8 | :maxdepth: 1 9 | 10 | building 11 | running_vpp 12 | testing_vpp 13 | gdb_examples 14 | cross_compile_macos 15 | code_coverage 16 | -------------------------------------------------------------------------------- /src/plugins/gtpu/FEATURE.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: GPRS Tunneling Protocol 3 | maintainer: Hongjun Ni 4 | features: 5 | - GTPU decapsulation 6 | - GTPU encapsulation 7 | 8 | description: "An implementation of the GPRS Tunnelling Protocol" 9 | state: production 10 | properties: [API, CLI, MULTITHREAD] 11 | -------------------------------------------------------------------------------- /src/plugins/lldp/FEATURE.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: Link Layer Discovery Protocol 3 | maintainer: Klement Sekera 4 | features: 5 | - link layer discovery protocol implementation 6 | description: "Link Layer Discovery Protocol (LLDP) implementation" 7 | state: production 8 | properties: [API, CLI, STATS, MULTITHREAD] 9 | -------------------------------------------------------------------------------- /src/plugins/pppoe/FEATURE.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: PPPoE 3 | maintainer: Hongjun Ni 4 | features: 5 | - PPPoE Control Plane packet dispatch 6 | - PPPoE decapsulation 7 | - PPPoE encapsulation 8 | 9 | description: "PPP over Ethernet" 10 | state: production 11 | properties: [API, CLI, MULTITHREAD] 12 | -------------------------------------------------------------------------------- /extras/packetforge/parsegraph/nodes/esp.json: -------------------------------------------------------------------------------- 1 | { 2 | "type" : "node", 3 | "name" : "esp", 4 | "layout" : [ 5 | { 6 | "name" : "spi", 7 | "size" : "32" 8 | }, 9 | { 10 | "name" : "sequencenumber", 11 | "size" : "32" 12 | } 13 | ] 14 | } 15 | -------------------------------------------------------------------------------- /extras/vpptop/Makefile: -------------------------------------------------------------------------------- 1 | # Manage VPPTop 2 | 3 | .PHONY: install 4 | install: 5 | @ cd ../../ && $(MAKE) json-api-files 6 | @./vpptop.sh install 7 | 8 | .PHONY: start 9 | start: 10 | @./vpptop.sh start 11 | 12 | .PHONY: cleanup 13 | cleanup: 14 | @./vpptop.sh cleanup 15 | 16 | .PHONY: help 17 | help: 18 | @./vpptop.sh help -------------------------------------------------------------------------------- /src/plugins/srmpls/FEATURE.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: Segment Routing for MPLS 3 | maintainer: Pablo Camarillo 4 | features: 5 | - SR Policy support 6 | - Automated steering (SR steering based on NextHop/Color) 7 | description: "SR-MPLS" 8 | state: production 9 | properties: [API, CLI, MULTITHREAD] 10 | -------------------------------------------------------------------------------- /src/plugins/srv6-ad/FEATURE.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: SRv6 - Service Chaining Dynamic Proxy 3 | maintainer: Francois Clad 4 | features: 5 | - SRv6 - dynamic service chaining proxy (draft-ietf-spring-sr-service-programming-01) 6 | description: "SRv6 dynamic proxy" 7 | state: production 8 | properties: [CLI, MULTITHREAD] 9 | -------------------------------------------------------------------------------- /src/plugins/srv6-as/FEATURE.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: SRv6 - Service Chaining Static Proxy 3 | maintainer: Francois Clad 4 | features: 5 | - SRv6 - static service chaining proxy (draft-ietf-spring-sr-service-programming-01) 6 | description: "SRv6 static proxy" 7 | state: production 8 | properties: [CLI, MULTITHREAD] 9 | -------------------------------------------------------------------------------- /src/plugins/tracenode/FEATURE.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: Trace node 3 | maintainer: Maxime Peim 4 | features: 5 | - allow trace filtering on encapsulated (inner) packets 6 | description: "Allow tracing on IP feature arc. Encapsulated packets can then be traced and filtered." 7 | state: experimental 8 | properties: [CLI, API] 9 | -------------------------------------------------------------------------------- /src/scripts/vnet/leftpeer/leftpeer-classify6: -------------------------------------------------------------------------------- 1 | classify table mask l3 ip6 src buckets 2 miss-next local 2 | set ip6 classify intfc GigabitEthernet2/2/0 table-index 0 3 | set int ip address GigabitEthernet2/2/0 db01::1/64 4 | set int state GigabitEthernet2/2/0 up 5 | classify session hit-next local table-index 0 match l3 ip6 src db01::2 6 | -------------------------------------------------------------------------------- /src/plugins/npt66/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: Apache-2.0 2 | # Copyright(c) 2023 Cisco Systems, Inc. 3 | 4 | add_vpp_plugin(npt66 5 | SOURCES 6 | npt66.c 7 | npt66_api.c 8 | npt66_cli.c 9 | npt66_node.c 10 | 11 | 12 | MULTIARCH_SOURCES 13 | npt66_node.c 14 | 15 | API_FILES 16 | npt66.api 17 | ) 18 | -------------------------------------------------------------------------------- /src/plugins/vhost/plugin.c: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: Apache-2.0 2 | * Copyright (c) 2022 Cisco Systems, Inc. 3 | */ 4 | 5 | #include 6 | #include 7 | #include 8 | 9 | VLIB_PLUGIN_REGISTER () = { 10 | .version = VPP_BUILD_VER, 11 | .description = "Vhost-User", 12 | }; 13 | -------------------------------------------------------------------------------- /docs/developer/plugins/srv6/index.rst: -------------------------------------------------------------------------------- 1 | .. _dplugins_srv6: 2 | 3 | ============ 4 | SRv6 Plugins 5 | ============ 6 | 7 | .. toctree:: 8 | :maxdepth: 2 9 | 10 | ad_flow_plugin_doc 11 | ad_plugin_doc 12 | am_plugin_doc 13 | as_plugin_doc 14 | mobile_plugin_doc 15 | runner_doc 16 | srv6_sample_localsid_doc 17 | -------------------------------------------------------------------------------- /src/plugins/af_packet/plugin.c: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: Apache-2.0 2 | * Copyright (c) 2022 Cisco Systems, Inc. 3 | */ 4 | 5 | #include 6 | #include 7 | #include 8 | 9 | VLIB_PLUGIN_REGISTER () = { 10 | .version = VPP_BUILD_VER, 11 | .description = "af-packet", 12 | }; 13 | -------------------------------------------------------------------------------- /src/plugins/arping/FEATURE.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: arping command 3 | maintainer: Steven Luong 4 | features: 5 | - arping command to send either gratuitous or ARP request to the remote 6 | - support both IPv4 and IPv6 7 | description: "arping command" 8 | state: production 9 | properties: [API, CLI, STATS, MULTITHREAD] 10 | -------------------------------------------------------------------------------- /src/plugins/vxlan/plugin.c: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: Apache-2.0 2 | * Copyright (c) 2022 Cisco Systems, Inc. 3 | */ 4 | 5 | #include 6 | #include 7 | #include 8 | 9 | VLIB_PLUGIN_REGISTER () = { 10 | .version = VPP_BUILD_VER, 11 | .description = "VxLan Tunnels", 12 | }; 13 | -------------------------------------------------------------------------------- /extras/snap/prep: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -eu 4 | 5 | cd ../../build-root 6 | echo "make distclean..." 7 | make distclean > /dev/null 2>&1 8 | # make sure we don't trip over a symbolic link later 9 | rm -f .ccache 10 | cd ../ 11 | echo "construct source tarball..." 12 | tar -zcf extras/snap/vpp.tgz --exclude=extras/snap/vpp.tgz . 13 | exit 0 14 | -------------------------------------------------------------------------------- /src/plugins/lacp/FEATURE.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: Link Aggregation Control Protocol 3 | maintainer: Steven Luong 4 | features: 5 | - Support LACP version 1 specification including marker protocol 6 | description: "Link Aggregation Control Protocol implementation (LACP)" 7 | state: production 8 | properties: [API, CLI, STATS, MULTITHREAD] 9 | -------------------------------------------------------------------------------- /src/plugins/osi/FEATURE.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: OSI plugin 3 | maintainer: 4 | - community 5 | features: 6 | - Adds support for OSI protocols (SAP types) 7 | - Registered as input protocol for PPP, HDLC, and LLC 8 | missing: 9 | - No tests for this feature currently exist 10 | description: "" 11 | state: experimental 12 | -------------------------------------------------------------------------------- /src/plugins/srv6-am/FEATURE.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: SRv6 - Service Chaining Masquerading Proxy 3 | maintainer: Francois Clad 4 | features: 5 | - SRv6 - masquerading service chaining proxy (draft-ietf-spring-sr-service-programming-01) 6 | description: "SRv6 masquerading proxy" 7 | state: production 8 | properties: [CLI, MULTITHREAD] 9 | -------------------------------------------------------------------------------- /src/vnet/ip-neighbor/FEATURE.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: IP Neighbour Database 3 | maintainer: Neale Ranns 4 | features: 5 | - IP protocol independent Database of Neighbours (aka peers) 6 | - limits on number of peers, recycling and aging 7 | 8 | description: "" 9 | state: production 10 | properties: [API, CLI, MULTITHREAD] 11 | -------------------------------------------------------------------------------- /docs/gettingstarted/troubleshooting/index.rst: -------------------------------------------------------------------------------- 1 | .. _troubleshooting: 2 | 3 | ############### 4 | Troubleshooting 5 | ############### 6 | 7 | This chapter describes some of the many techniques used to troubleshoot and diagnose 8 | problem with FD.io VPP implementations. 9 | 10 | .. toctree:: 11 | 12 | cpuusage 13 | sanitizer 14 | mem 15 | -------------------------------------------------------------------------------- /src/plugins/crypto_ipsecmb/FEATURE.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: IPSec crypto engine provided by Intel IPSecMB library 3 | maintainer: Neale Ranns 4 | features: 5 | - SHA(1, 224, 256, 384, 512) 6 | - CBC(128, 192, 256) 7 | - GCM(128, 192, 256) 8 | 9 | description: "" 10 | state: production 11 | properties: [API, CLI, MULTITHREAD] 12 | -------------------------------------------------------------------------------- /src/plugins/lb/FEATURE.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: Load Balancer 3 | maintainer: Pfister , Hongjun Ni 4 | features: 5 | - GRE tunnel mode 6 | - NAT mode 7 | - L3DSR mode 8 | - Consistent Hash 9 | - Connection Track 10 | 11 | description: "" 12 | state: production 13 | properties: [API, CLI, MULTITHREAD] 14 | -------------------------------------------------------------------------------- /src/plugins/dev_armada/plugin.c: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: Apache-2.0 2 | * Copyright (c) 2023 Cisco Systems, Inc. 3 | */ 4 | 5 | #include 6 | #include 7 | #include 8 | 9 | VLIB_PLUGIN_REGISTER () = { 10 | .version = VPP_BUILD_VER, 11 | .description = "Marvell Armada Drivers", 12 | }; 13 | -------------------------------------------------------------------------------- /src/plugins/srv6-ad-flow/FEATURE.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: SRv6 - Service Chaining Flow-based Dynamic Proxy 3 | maintainer: Francois Clad 4 | features: 5 | - SRv6 - flow-based dynamic service chaining proxy (draft-ietf-spring-sr-service-programming-01) 6 | description: "SRv6 flow-based dynamic proxy" 7 | state: production 8 | properties: [CLI] 9 | -------------------------------------------------------------------------------- /src/plugins/ip_session_redirect/FEATURE.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: IP session redirect 3 | maintainer: Benoît Ganne 4 | features: 5 | - use the classifier ACL infrastructure to redirect sessions via arbitrary 6 | fib paths 7 | description: "IP session redirect plugin" 8 | state: experimental 9 | properties: [CLI, STATS, MULTITHREAD, API] 10 | -------------------------------------------------------------------------------- /extras/gdb/gdb_cmdfile.vcl_client: -------------------------------------------------------------------------------- 1 | echo \n\n====== gdb_cmdfile.vcl_client ======\n 2 | 3 | # Here are some interesting VCL breakpoints... 4 | # Uncomment them out to set during gdb init. 5 | # 6 | #b vppcom_session_connect 7 | #b vppcom_session_write 8 | #b vppcom_session_read 9 | #b vl_api_connect_sock_t_handler 10 | #b vl_api_connect_session_reply_t_handler 11 | -------------------------------------------------------------------------------- /extras/gdb/gdb_cmdfile.vcl_server: -------------------------------------------------------------------------------- 1 | echo \n\n====== gdb_cmdfile.vcl_server ======\n 2 | 3 | # Here are some interesting VCL breakpoints... 4 | # Uncomment them out to set during gdb init. 5 | # 6 | #b vppcom_session_accept 7 | #b vppcom_session_write 8 | #b vppcom_session_read 9 | #b vl_api_connect_sock_t_handler 10 | #b vl_api_connect_session_reply_t_handler 11 | -------------------------------------------------------------------------------- /extras/hs-test/topo-network/2taps.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | devices: 3 | - name: "hstcln" 4 | type: "tap" 5 | ip4: 6 | network: 1 7 | peer: 8 | name: "" 9 | ip4: 10 | network: 1 11 | - name: "hstsrv" 12 | type: "tap" 13 | ip4: 14 | network: 2 15 | peer: 16 | name: "" 17 | ip4: 18 | network: 2 19 | -------------------------------------------------------------------------------- /src/plugins/prom/FEATURE.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: Prom (Prometheus Exporter) 3 | maintainer: Florin Coras 4 | features: 5 | - Stats scraper 6 | - Prometheus exporter 7 | description: "HTTP static server url handler that scrapes stats and exports 8 | them in Prometheus format" 9 | state: experimental 10 | properties: [MULTITHREAD] 11 | -------------------------------------------------------------------------------- /extras/libmemif/test/suite_main/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.0) 2 | 3 | set (This MemifMainTest) 4 | 5 | set (Sources 6 | memif_main_test.c) 7 | 8 | add_executable(${This} ${Sources}) 9 | 10 | target_link_libraries(${This} PUBLIC 11 | unity 12 | memif 13 | ) 14 | 15 | add_test( 16 | NAME ${This} 17 | COMMAND ${This} 18 | ) 19 | -------------------------------------------------------------------------------- /src/scripts/vnet/leftpeer/leftpeer-classifyl2: -------------------------------------------------------------------------------- 1 | set int ip address GigabitEthernet2/2/0 192.168.1.1/24 2 | set int state GigabitEthernet2/2/0 up 3 | 4 | classify table mask l3 ip4 src buckets 2 l2-miss-next ethernet 5 | 6 | classify session advance 14 l2-hit-next ip4 table-index 0 match l3 ip4 src 192.168.1.2 7 | 8 | set int l2 class intfc GigabitEthernet2/2/0 ip4-table 0 9 | -------------------------------------------------------------------------------- /src/scripts/vnet/mpls-o-ethernet/pg: -------------------------------------------------------------------------------- 1 | packet-generator new { \ 2 | name x \ 3 | limit 1 \ 4 | node mpls-ethernet-input \ 5 | size 68-68 \ 6 | data { \ 7 | hex 0x0001e1ff4500004000000000400177ba010000020200000208007a6e000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f2021222324252627 \ 8 | } \ 9 | } 10 | -------------------------------------------------------------------------------- /src/scripts/vnet/rightpeer/rightpeer-l3vxlan.conf: -------------------------------------------------------------------------------- 1 | set int ip address GigabitEthernet2/4/0 6.0.4.1/24 2 | set int state GigabitEthernet2/4/0 up 3 | 4 | comment { tunnel to leftpeer on vlan 101 } 5 | set int ip address GigabitEthernet2/3/0 6.0.3.3/24 6 | set int state GigabitEthernet2/3/0 up 7 | 8 | vxlan tunnel src 6.0.3.3 peer 6.0.3.1 vni 123 adj 6.0.2.0/24 9 | 10 | -------------------------------------------------------------------------------- /src/vnet/udp/FEATURE.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: User Datagram Protocol 3 | maintainer: Florin Coras 4 | features: 5 | - host stack integration via session layer 6 | - standalone per port dispatcher for tunneling protocols 7 | description: "User Datagram Protocol (UDP) implementation" 8 | state: production 9 | properties: [API, CLI, STATS, MULTITHREAD] 10 | -------------------------------------------------------------------------------- /test/test_result_code.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python3 2 | 3 | from enum import IntEnum, auto, unique 4 | 5 | 6 | @unique 7 | class TestResultCode(IntEnum): 8 | PASS = auto() 9 | FAIL = auto() 10 | ERROR = auto() 11 | SKIP = auto() 12 | TEST_RUN = auto() 13 | SKIP_CPU_SHORTAGE = auto() 14 | EXPECTED_FAIL = auto() 15 | UNEXPECTED_PASS = auto() 16 | -------------------------------------------------------------------------------- /extras/libmemif/test/suite_socket/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.0) 2 | 3 | set (This MemifSocketTest) 4 | 5 | set (Sources 6 | memif_socket_test.c) 7 | 8 | add_executable(${This} ${Sources}) 9 | 10 | target_link_libraries(${This} PUBLIC 11 | unity 12 | memif 13 | ) 14 | 15 | add_test( 16 | NAME ${This} 17 | COMMAND ${This} 18 | ) 19 | -------------------------------------------------------------------------------- /src/plugins/quic/FEATURE.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: QUIC Protocol 3 | maintainer: Aloys Augustin 4 | features: 5 | - host stack integration via session layer 6 | - "based on the Quicly library: https://github.com/h2o/quicly" 7 | description: "IETF QUIC Protocol implementation" 8 | state: experimental 9 | properties: [API, CLI, STATS, MULTITHREAD] 10 | 11 | -------------------------------------------------------------------------------- /src/plugins/wireguard/FEATURE.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: Wireguard protocol 3 | maintainer: Artem Glazychev 4 | features: 5 | - "based on wireguard-openbsd implementation: https://git.zx2c4.com/wireguard-openbsd" 6 | - creating secure VPN-tunnel 7 | description: "Wireguard protocol implementation" 8 | state: development 9 | properties: [API, CLI] 10 | -------------------------------------------------------------------------------- /src/vnet/mpls/FEATURE.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: Multi-Protocol Label Switching 3 | maintainer: Neale Ranns 4 | features: 5 | - Label imposition/disposition - pipe and uniform mode 6 | - Tunnels - unidirectional 7 | 8 | description: "An implementation of Multi-Protocol Label Switching (MPLS)" 9 | state: production 10 | properties: [API, CLI, MULTITHREAD] 11 | -------------------------------------------------------------------------------- /extras/strongswan/configs/strongswan.conf: -------------------------------------------------------------------------------- 1 | charon { 2 | load_modular = yes 3 | plugins { 4 | include strongswan.d/charon/*.conf 5 | } 6 | filelog { 7 | /tmp/charon.log { 8 | time_format = %b %e %T 9 | ike_name = yes 10 | append = no 11 | default = 2 12 | flush_line = yes 13 | } 14 | } 15 | } 16 | include strongswan.d/*.conf 17 | -------------------------------------------------------------------------------- /src/plugins/dev_iavf/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: Apache-2.0 2 | # Copyright(c) 2022 Cisco Systems, Inc. 3 | 4 | add_vpp_plugin(dev_iavf 5 | SOURCES 6 | adminq.c 7 | counters.c 8 | format.c 9 | iavf.c 10 | port.c 11 | queue.c 12 | rx_node.c 13 | tx_node.c 14 | virtchnl.c 15 | 16 | MULTIARCH_SOURCES 17 | rx_node.c 18 | tx_node.c 19 | ) 20 | 21 | -------------------------------------------------------------------------------- /src/plugins/tlsopenssl/FEATURE.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: TLS OpenSSL 3 | maintainer: Florin Coras , Ping Yu 4 | features: 5 | - OpenSSL engine for TLS 6 | - TLS Async framework 7 | - Enable QAT for crypto offload 8 | description: "TLS OpenSSL plugin for VPP host stack" 9 | state: experimental 10 | properties: [API, CLI, STATS, MULTITHREAD] 11 | 12 | -------------------------------------------------------------------------------- /src/plugins/adl/FEATURE.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: ADL 3 | maintainer: Dave Barach 4 | features: 5 | - v4, v6 non-default FIB src-address lookup 6 | - Drop packets which don't hit a receive adjacency 7 | - Not widely used 8 | 9 | description: "A very simple / fast source-address allow/deny list feature" 10 | state: experimental 11 | properties: [API, CLI, MULTITHREAD] 12 | -------------------------------------------------------------------------------- /src/plugins/dev_ena/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # SPDX-License-Identifier: Apache-2.0 2 | # Copyright(c) 2022 Cisco Systems, Inc. 3 | 4 | add_vpp_plugin(dev_ena 5 | SOURCES 6 | aq.c 7 | aenq.c 8 | ena.c 9 | format.c 10 | format_aq.c 11 | port.c 12 | queue.c 13 | rx_node.c 14 | tx_node.c 15 | reg.c 16 | 17 | MULTIARCH_SOURCES 18 | rx_node.c 19 | tx_node.c 20 | ) 21 | 22 | -------------------------------------------------------------------------------- /src/scripts/vnet/icmp6: -------------------------------------------------------------------------------- 1 | packet-generator new { \ 2 | name x \ 3 | limit 1 \ 4 | node ip6-input \ 5 | size 64-64 \ 6 | data { \ 7 | ICMP6: ::1 -> ::2 \ 8 | ICMP echo_request \ 9 | incrementing 100 \ 10 | } \ 11 | } 12 | 13 | tr add pg-input 100 14 | ip route ::1/128 via local 15 | ip route ::2/128 via local 16 | -------------------------------------------------------------------------------- /docs/docsignore: -------------------------------------------------------------------------------- 1 | # This is a list of ignored documentation files 2 | # in VPP. Not linking these files in ./docs won't 3 | # trigger an error in ./extra/scripts/check_documentation.sh 4 | extras/deprecated/dpdk-hqos/qos_doc.md 5 | extras/deprecated/dpdk-ipsec/dpdk_crypto_ipsec_doc.md 6 | src/vpp-api/lua/README.md 7 | src/vpp-api/lua/examples/cli/README.md 8 | src/vpp-api/lua/examples/lute/README.md 9 | -------------------------------------------------------------------------------- /src/plugins/nsh/FEATURE.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: NSH 3 | maintainer: Hongjun Ni , Vengada 4 | features: 5 | - NSH Classifier 6 | - NSH Forwarder 7 | - NSH SF 8 | - NSH Proxy 9 | - NSH OAM 10 | - NSH Metadata 11 | - Requires vxlan_plugin.so to run 12 | 13 | description: "NSH for SFC" 14 | state: production 15 | properties: [API, CLI, MULTITHREAD] 16 | -------------------------------------------------------------------------------- /src/scripts/vnet/icmp: -------------------------------------------------------------------------------- 1 | packet-generator new { \ 2 | name x \ 3 | limit 1 \ 4 | node ip4-input \ 5 | size 64-64 \ 6 | data { \ 7 | ICMP: 1.2.3.4 -> 5.6.7.8 \ 8 | ICMP echo_request \ 9 | incrementing 100 \ 10 | } \ 11 | } 12 | 13 | tr add pg-input 100 14 | ip route 5.6.7.8/32 via local 15 | ip route 1.2.3.4/32 via local 16 | -------------------------------------------------------------------------------- /src/scripts/vnet/speed: -------------------------------------------------------------------------------- 1 | packet-generator new { \ 2 | name x \ 3 | limit 1 \ 4 | node ip4-input \ 5 | size 50-50 \ 6 | data { \ 7 | ICMP: 1.2.3.4 -> 5.6.7.8 \ 8 | ICMP echo_request \ 9 | incrementing 100 \ 10 | } \ 11 | } 12 | 13 | tr add pg-input 100 14 | ip route 5.6.7.8/32 via pg/stream-0 000102030405060708090a0b0c0d 15 | -------------------------------------------------------------------------------- /src/scripts/vnet/sr/sr_mpls: -------------------------------------------------------------------------------- 1 | set interface mpls local0 enable 2 | sr mpls policy add bsid 20001 next 16001 next 16002 next 16003 3 | sr mpls steer l3 a::/112 via sr policy bsid 20001 4 | 5 | loop create 6 | set int state loop0 up 7 | 8 | set int ip address loop0 11.0.0.1/24 9 | set ip neighbor loop0 11.0.0.2 00:00:11:aa:bb:cc 10 | 11 | mpls local-label 16001 via 11.0.0.2 loop0 out-label 16001 12 | -------------------------------------------------------------------------------- /extras/packetforge/parsegraph/edges/vlan_after_macvlan.json: -------------------------------------------------------------------------------- 1 | { 2 | "type" : "edge", 3 | "start" : "mac,vlan", 4 | "end" : "vlan", 5 | "actions" : [ 6 | { 7 | "dst" : "start.ethertype", 8 | "src" : "end.tpid" 9 | }, 10 | { 11 | "dst" : "end.ethertype", 12 | "src" : "start.ethertype" 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /extras/strongswan/vpp_sswan/docker/configs/vpp.conf: -------------------------------------------------------------------------------- 1 | create host-interface name docker_1_eth2 2 | lcp create host-docker_1_eth2 host-if eth2 3 | set interface state host-docker_1_eth2 up 4 | set interface ip address host-docker_1_eth2 192.168.0.2/24 5 | 6 | create host-interface name docker_1a_eth1 7 | set interface state host-docker_1a_eth1 up 8 | set interface ip address host-docker_1a_eth1 192.168.200.1/24 9 | -------------------------------------------------------------------------------- /src/plugins/crypto_openssl/FEATURE.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: IPSec crypto engine provided by Openssl library 3 | maintainer: Damjan Marion 4 | features: 5 | - SHA(1, 224, 256, 384, 512) 6 | - CBC(128, 192, 256) 7 | - GCM(128, 192, 256) 8 | - CTR(128, 192, 256) 9 | - DES, 3DES 10 | - MD5 11 | 12 | description: "" 13 | state: production 14 | properties: [API, CLI, MULTITHREAD] 15 | -------------------------------------------------------------------------------- /src/plugins/srv6-mobile/FEATURE.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: SRv6 Mobile 3 | maintainer: Tetsuya Murakami 4 | features: 5 | - GTP4.D 6 | - GTP4.E 7 | - GTP6.D 8 | - GTP6.D.Di 9 | - GTP6.E 10 | description: "SRv6 Mobile End Functions. GTP4.D, GTP4.E, 11 | GTP6.D, GTP6.D.Di and GTP6.E are supported." 12 | state: production 13 | properties: [API, CLI, MULTITHREAD] 14 | -------------------------------------------------------------------------------- /src/plugins/vmxnet3/FEATURE.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: vmxnet3 device driver 3 | maintainer: Steven Luong 4 | features: 5 | - vmxnet3 device driver to connect to ESXi server, VMWare Fusion, and VMWare 6 | Workstation 7 | - Supports GSO. It was tested on ESXi 6.7 8 | description: "vmxnet3 device driver support" 9 | state: production 10 | properties: [API, CLI, STATS, MULTITHREAD] 11 | -------------------------------------------------------------------------------- /docs/developer/corearchitecture/buildsystem/index.rst: -------------------------------------------------------------------------------- 1 | .. _buildsystem: 2 | 3 | Build System 4 | ============ 5 | 6 | This guide describes the vpp build system in detail. As of this writing, 7 | the build systems uses a mix of make / Makefiles, cmake, and ninja to 8 | achieve excellent build performance. 9 | 10 | .. toctree:: 11 | 12 | mainmakefile 13 | cmakeandninja 14 | buildrootmakefile 15 | -------------------------------------------------------------------------------- /docs/developer/corearchitecture/index.rst: -------------------------------------------------------------------------------- 1 | .. _corearchitecture: 2 | 3 | ================= 4 | Core Architecture 5 | ================= 6 | 7 | .. toctree:: 8 | :maxdepth: 1 9 | 10 | softwarearchitecture 11 | infrastructure 12 | vlib 13 | vnet 14 | featurearcs 15 | buffer_metadata 16 | multiarch/index 17 | bihash 18 | buildsystem/index 19 | mem 20 | multi_thread 21 | 22 | -------------------------------------------------------------------------------- /docs/usecases/ikev2/index.rst: -------------------------------------------------------------------------------- 1 | .. _ikev2: 2 | 3 | IKEv2 with VPP 4 | ============== 5 | 6 | This sections describes some of the ways to establish IKEv2 connection 7 | between two VPP instances or VPP and strongSwan. It covers scenarios in 8 | which VPP is the IKEv2 responder (and strongSwan initiator) and vice versa. 9 | 10 | .. toctree:: 11 | 12 | vpp_resp_sswan_init 13 | vpp_init_sswan_resp 14 | 2_vpp 15 | -------------------------------------------------------------------------------- /extras/packetforge/parsegraph/nodes/icmp.json: -------------------------------------------------------------------------------- 1 | { 2 | "type" : "node", 3 | "name" : "icmp", 4 | "layout" : [ 5 | { 6 | "name" : "type", 7 | "size" : "8" 8 | }, 9 | { 10 | "name" : "code", 11 | "size" : "8" 12 | }, 13 | { 14 | "name" : "checksum", 15 | "size" : "16" 16 | } 17 | ] 18 | } 19 | -------------------------------------------------------------------------------- /extras/packetforge/parsegraph/nodes/icmpv6.json: -------------------------------------------------------------------------------- 1 | { 2 | "type" : "node", 3 | "name" : "icmpv6", 4 | "layout" : [ 5 | { 6 | "name" : "type", 7 | "size" : "8" 8 | }, 9 | { 10 | "name" : "code", 11 | "size" : "8" 12 | }, 13 | { 14 | "name" : "checksum", 15 | "size" : "16" 16 | } 17 | ] 18 | } 19 | -------------------------------------------------------------------------------- /src/scripts/vnet/pcap: -------------------------------------------------------------------------------- 1 | packet-generator new { \ 2 | name x \ 3 | limit 1 \ 4 | node ethernet-input \ 5 | pcap /home/eliot/pcap-data/ISIS_level1_adjacency.cap \ 6 | } 7 | 8 | packet-generator new { \ 9 | name y \ 10 | limit 1 \ 11 | node hdlc-input \ 12 | pcap /home/eliot/pcap-data/ISIS_p2p_adjacency.cap \ 13 | } 14 | 15 | tr add pg-input 10 16 | 17 | -------------------------------------------------------------------------------- /test/scripts/setsid_wrapper.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | cmd=$1 4 | force_foreground=$2 5 | shift 6 | shift 7 | 8 | if [[ "$force_foreground" == "1" ]] 9 | then 10 | setsid $cmd $force_foreground $* 11 | else 12 | setsid $cmd $force_foreground $* & 13 | pid=$! 14 | trap "echo setsid_wrapper.sh: got signal, killing child pid ${pid}; kill ${pid}; sleep .1;" SIGINT SIGTERM 15 | wait ${pid} 16 | exit $? 17 | fi 18 | -------------------------------------------------------------------------------- /src/plugins/dhcp/FEATURE.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: Dynamic Host Configuration Protocol 3 | maintainer: Dave Barach , Neale Ranns 4 | features: 5 | - DHCP client (v4/v6) 6 | - DHCPv6 prefix delegation 7 | - DHCP Proxy / Option 82 8 | 9 | description: "An implementation of the Dynamic Host Configuration Protocol (DHCP) client" 10 | state: production 11 | properties: [API, CLI, MULTITHREAD] 12 | -------------------------------------------------------------------------------- /src/vnet/classify/FEATURE.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: Classify 3 | maintainer: Dave Barach 4 | features: 5 | - Swiss-army-knife mask-match engine for classifying packets 6 | - Uses 128-bit SIMD vector operations for performance 7 | - Many use-cases, including packet trace / pcap capture filtration 8 | description: "Mask / match packet classifier" 9 | state: production 10 | properties: [API, CLI, MULTITHREAD] 11 | -------------------------------------------------------------------------------- /src/vnet/ipsec/FEATURE.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: IP Security 3 | maintainer: Neale Ranns 4 | features: 5 | - IPSec (https://tools.ietf.org/html/rfc4301) 6 | - Authentication Header (https://tools.ietf.org/html/rfc4302) 7 | - Encapsulating Security Payload (https://tools.ietf.org/html/rfc4303) 8 | 9 | description: "An implementation of IPSec" 10 | state: production 11 | properties: [API, CLI, MULTITHREAD] 12 | -------------------------------------------------------------------------------- /src/examples/sample-plugin/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.5) 2 | 3 | project(sample-plugin) 4 | 5 | set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) 6 | set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) 7 | 8 | find_package(VPP) 9 | 10 | add_subdirectory(sample) 11 | 12 | add_vpp_packaging( 13 | NAME "sample-plugin" 14 | VENDOR "fd.io" 15 | DESCRIPTION "VPP Sample Plugin" 16 | ) 17 | -------------------------------------------------------------------------------- /extras/strongswan/vpp_sswan/docker/scripts/run_vpp.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | cd /root/vpp/ 4 | make run-release STARTUP_CONF=/root/vpp/extras/strongswan/vpp_sswan/docker/configs/startup.conf & 5 | 6 | sleep 5 7 | 8 | sudo systemctl restart strongswan.service 9 | 10 | sleep 2 11 | 12 | echo "### Checking connections between VPP and Strongswan" 13 | /root/vpp/build-root/build-vpp-native/vpp/bin/vppctl -s /run/vpp/cli.sock sh api client 14 | -------------------------------------------------------------------------------- /extras/vpp_stats_fs/Makefile: -------------------------------------------------------------------------------- 1 | 2 | # Build vpp_stats_fs 3 | 4 | .PHONY: install 5 | install: 6 | @./install.sh install 7 | 8 | .PHONY: start 9 | start: 10 | @./install.sh start 11 | 12 | .PHONY: clean 13 | clean: 14 | @./install.sh clean 15 | 16 | .PHONY: help 17 | help: 18 | @./install.sh help 19 | 20 | .PHONY: force-unmount 21 | force-unmount: 22 | @./install.sh unmount 23 | 24 | .PHONY: stop 25 | stop: 26 | @./install.sh stop -------------------------------------------------------------------------------- /src/plugins/crypto_native/FEATURE.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: IPSec crypto engine provided by native implementation 3 | maintainer: Damjan Marion 4 | features: 5 | - CBC(128, 192, 256) 6 | - GCM(128, 192, 256) 7 | - CTR(128, 192, 256) 8 | - SHA(224, 256) 9 | - HMAC-SHA(224, 256) 10 | 11 | description: "An implementation of a native crypto-engine" 12 | state: production 13 | properties: [API, CLI, MULTITHREAD] 14 | -------------------------------------------------------------------------------- /docs/_scripts/prepare-for-site.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | if [ ! -d "docs" ]; then 4 | echo "This script is meant to be run from the root directory" 5 | exit 1; 6 | fi 7 | 8 | for f in $(find ./docs -type l) 9 | do 10 | target=$(readlink $f) 11 | rm $f 12 | cp $(dirname $f)/$target $(dirname $f)/$(basename $target) 13 | echo "Replaced symlink $f" 14 | done 15 | 16 | echo "Cleaning doc build directory" 17 | make docs-clean 18 | 19 | -------------------------------------------------------------------------------- /extras/docker/build/Dockerfile.centos7: -------------------------------------------------------------------------------- 1 | # Run from top of vpp repo with command: 2 | # docker build -f extras/docker/build/Dockerfile.centos7 . 3 | FROM centos:7.3.1611 4 | ARG REPO=master 5 | COPY . /vpp 6 | WORKDIR /vpp 7 | RUN curl -s https://packagecloud.io/install/repositories/fdio/${REPO}/script.rpm.sh | bash 8 | RUN yum install -y vpp-dpdk-devel make sudo 9 | RUN UNATTENDED=y make install-dep 10 | RUN make pkg-rpm 11 | CMD ["/bin/bash"] -------------------------------------------------------------------------------- /src/scripts/vnet/leftpeer/leftpeer-l3vxlan.conf: -------------------------------------------------------------------------------- 1 | comment { tunnel to rightpeer 6.0.3.3 on vlan 101 } 2 | 3 | set int ip address GigabitEthernet2/3/0 6.0.3.1/24 4 | set int state GigabitEthernet2/3/0 up 5 | 6 | comment { configure lc2 eth1 at e.g. 6.0.2.2/24 } 7 | 8 | set int ip address GigabitEthernet2/2/0 6.0.2.1/24 9 | set int state GigabitEthernet2/2/0 up 10 | 11 | vxlan tunnel src 6.0.3.1 peer 6.0.3.3 vni 123 adj 6.0.4.4/24 12 | 13 | -------------------------------------------------------------------------------- /extras/docker/run/Dockerfile.bionic: -------------------------------------------------------------------------------- 1 | FROM ubuntu:bionic 2 | ARG DEBIAN_FRONTEND=noninteractive 3 | ARG REPO=release 4 | RUN apt-get update 5 | RUN apt-get -y install curl 6 | RUN curl -s https://packagecloud.io/install/repositories/fdio/${REPO}/script.deb.sh | bash 7 | RUN apt-get update 8 | RUN apt-get -y install vpp vpp-plugins 9 | RUN apt-get -y purge curl 10 | RUN apt-get -y clean 11 | CMD ["/usr/bin/vpp","-c","/etc/vpp/startup.conf"] 12 | 13 | -------------------------------------------------------------------------------- /extras/docker/run/Dockerfile.xenial: -------------------------------------------------------------------------------- 1 | FROM ubuntu:xenial 2 | ARG DEBIAN_FRONTEND=noninteractive 3 | ARG REPO=release 4 | RUN apt-get update 5 | RUN apt-get -y install curl 6 | RUN curl -s https://packagecloud.io/install/repositories/fdio/${REPO}/script.deb.sh | bash 7 | RUN apt-get update 8 | RUN apt-get -y install vpp vpp-plugins 9 | RUN apt-get -y purge curl 10 | RUN apt-get -y clean 11 | CMD ["/usr/bin/vpp","-c","/etc/vpp/startup.conf"] 12 | 13 | -------------------------------------------------------------------------------- /extras/hs-test/topo-network/ns.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | devices: 3 | - name: "cln" 4 | type: "netns" 5 | 6 | - name: "srv" 7 | type: "netns" 8 | 9 | - name: "hclnvpp" 10 | type: "veth" 11 | peer: 12 | name: "cln" 13 | netns: "cln" 14 | ip4: 15 | network: 1 16 | 17 | - name: "hsrvvpp" 18 | type: "veth" 19 | peer: 20 | name: "srv" 21 | netns: "srv" 22 | ip4: 23 | network: 2 24 | -------------------------------------------------------------------------------- /extras/packetforge/parsegraph/nodes/payload.json: -------------------------------------------------------------------------------- 1 | { 2 | "type" : "node", 3 | "name" : "payload", 4 | "layout" : [ 5 | { 6 | "name" : "data", 7 | "size" : "bytes<<3", 8 | "format" : "bytearray" 9 | } 10 | ], 11 | "attributes" : [ 12 | { 13 | "name" : "bytes", 14 | "size" : "16", 15 | "default" : "16" 16 | } 17 | ] 18 | } 19 | -------------------------------------------------------------------------------- /src/scripts/vnet/leftpeer/leftpeer-classify: -------------------------------------------------------------------------------- 1 | classify table mask l2 src l3 ip4 src buckets 2 miss-next local 2 | 3 | comment { classify table mask l3 ip4 src buckets 2 miss-next local } 4 | set ip classify intfc GigabitEthernet2/2/0 table-index 0 5 | set int ip address GigabitEthernet2/2/0 192.168.1.1/24 6 | set int state GigabitEthernet2/2/0 up 7 | 8 | classify session hit-next local table-index 0 match l2 src 00:50:56:b7:05:bb l3 ip4 src 192.168.1.2 9 | -------------------------------------------------------------------------------- /src/vnet/pg/FEATURE.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: PG 3 | maintainer: Dave Barach 4 | features: 5 | - High-speed packet generation 6 | - Packet definition CLI 7 | - Support for pcap capture replay 8 | - Multi-thread packet generation 9 | - Packet injection into arbitrary graph nodes 10 | - Heavily used by "make test" 11 | description: "High-speed packet generator" 12 | state: production 13 | properties: [CLI, MULTITHREAD] 14 | -------------------------------------------------------------------------------- /docs/usecases/vhost/index.rst: -------------------------------------------------------------------------------- 1 | .. _vhost: 2 | 3 | VPP with Virtual Machines 4 | ========================= 5 | This chapter will describe how to use FD.io VPP with virtual machines. We describe 6 | how to create Vhost port with VPP and how to connect them to VPP. We will also discuss 7 | some limitations of Vhost. 8 | 9 | .. toctree:: 10 | 11 | vhost 12 | vhost02 13 | vhost03 14 | vhost04 15 | vhost05 16 | xmlexample 17 | 18 | -------------------------------------------------------------------------------- /src/plugins/netmap/FEATURE.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: Netmap Device 3 | maintainer: Tom Jones 4 | features: 5 | - L4 checksum offload 6 | description: "Create a netmap interface, which is a high speed user-space 7 | interface that allows VPP to patch to a physical or virtual NIC 8 | without the use of DPDK" 9 | missing: 10 | - API dump 11 | state: production 12 | properties: [API, CLI, STATS, MULTITHREAD] 13 | -------------------------------------------------------------------------------- /src/scripts/vnet/tcp: -------------------------------------------------------------------------------- 1 | loop create 2 | set int ip address loop0 192.168.1.1/8 3 | set int state loop0 up 4 | 5 | packet-generator new { \ 6 | name x \ 7 | limit 2048 \ 8 | node ip4-input \ 9 | size 100-100 \ 10 | interface loop0 \ 11 | data { \ 12 | TCP: 192.168.1.2 -> 192.168.1.1 \ 13 | TCP: 32415 -> 80 \ 14 | SYN \ 15 | incrementing 100 \ 16 | } \ 17 | } 18 | -------------------------------------------------------------------------------- /extras/libmemif/dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:xenial 2 | 3 | RUN apt-get update && \ 4 | apt-get install -y git build-essential autoconf pkg-config libtool sudo 5 | RUN rm -rf /var/lib/apt/lists/* 6 | 7 | RUN mkdir /libmemif 8 | ADD . /libmemif 9 | WORKDIR /libmemif 10 | 11 | RUN mkdir build 12 | RUN cmake .. 13 | WORKDIR /libmemif/build 14 | RUN make 15 | 16 | RUN mkdir /run/vpp 17 | 18 | RUN ulimit -c unlimited 19 | 20 | CMD ./examples/icmp_responder 21 | -------------------------------------------------------------------------------- /src/scripts/host-stack/convert_evt: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # This depends on c2cpel and cpeldump. Enable their compilation by: 4 | # ccmake build-root/build-vpp-native/vpp/ 5 | # and turning on VPP_BUILD_PERFTOOL 6 | 7 | BIN_PATH=../../../build-root/install-vpp-native/vpp/bin 8 | C2CPEL_BIN=$BIN_PATH/c2cpel 9 | CPELDUMP_BIN=$BIN_PATH/cpeldump 10 | 11 | $C2CPEL_BIN --in $1 --out /tmp/tmp_file.cpel 12 | $CPELDUMP_BIN --in /tmp/tmp_file.cpel --out $2 13 | -------------------------------------------------------------------------------- /src/tools/g2/FEATURE.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: G2 graphical event log viewer 3 | maintainer: 4 | - Dave Barach 5 | features: 6 | - Vppinfra elog.[ch] log viewer 7 | - Scales to over 10e6 events, 10e4 tracks 8 | - Automated anomaly detector 9 | - View snapshots 10 | description: "A highly scalable graphical event log viewer, specifically 11 | tailored to displaying src/vppinfra/elog.[ch] log files" 12 | state: production 13 | -------------------------------------------------------------------------------- /src/vlibapi/FEATURE.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: Binary API library 3 | maintainer: 4 | - Dave Barach 5 | features: 6 | - Event logging 7 | - Message execution 8 | - Message handler registration 9 | - Message replay 10 | - Message tracing 11 | - Post-mortem message trace capture 12 | - Platform-dependent message handler invocation 13 | description: "Transport-independent binary API message handling library" 14 | state: production 15 | -------------------------------------------------------------------------------- /docs/developer/corefeatures/fib/index.rst: -------------------------------------------------------------------------------- 1 | .. _fib20: 2 | 3 | The FIB 4 | =========================================== 5 | 6 | This describe the FIB (Forwarding information base) implementation : 7 | Hierarchical, Protocol, Independent 8 | 9 | .. toctree:: 10 | 11 | prerequisites 12 | thedatamodel 13 | tunnels 14 | mplsfib 15 | multicast 16 | debugging 17 | fastconvergence 18 | scale 19 | barnacles 20 | hacking 21 | missing 22 | -------------------------------------------------------------------------------- /extras/bpf/Makefile: -------------------------------------------------------------------------------- 1 | CC := $(shell which clang) 2 | 3 | # where to find bpf includes? 4 | BPF_ROOT ?= /usr/include 5 | #BPF_ROOT ?= /opt/vpp/external/x86_64/include 6 | 7 | CFLAGS := -O3 -g -Wextra -Wall -target bpf 8 | # Workaround for Ubuntu/Debian for asm/types.h 9 | CFLAGS += -I/usr/include/x86_64-linux-gnu 10 | CFLAGS += -I$(BPF_ROOT) 11 | #CFLAGS += -DDEBUG 12 | 13 | all: af_xdp.bpf.o 14 | 15 | clean: 16 | $(RM) af_xdp.bpf.o 17 | 18 | .PHONY: all clean 19 | -------------------------------------------------------------------------------- /src/scripts/vnet/rpf: -------------------------------------------------------------------------------- 1 | packet-generator new { \ 2 | name x \ 3 | limit 1 \ 4 | node ip4-input \ 5 | size 64-64 \ 6 | data { \ 7 | ICMP: 1.2.3.4 -> 5.6.7.8 \ 8 | ICMP echo_request \ 9 | incrementing 100 \ 10 | } \ 11 | } 12 | 13 | tr add pg-input 100 14 | set interface ip source-check pg/stream-0 15 | ip route 1.2.3.4/32 via pg/stream-0 0x01020304 16 | ip route 5.6.7.8/32 via drop 17 | 18 | -------------------------------------------------------------------------------- /docs/developer/corefeatures/index.rst: -------------------------------------------------------------------------------- 1 | .. _corefeatures: 2 | 3 | ======================= 4 | Core Features 5 | ======================= 6 | 7 | .. toctree:: 8 | :maxdepth: 1 9 | 10 | fib/index 11 | sr/index 12 | punt 13 | ipsec 14 | bfd_doc 15 | reassembly 16 | ipfix_doc 17 | span_doc 18 | mtu 19 | gso 20 | tx_queue 21 | sylog_doc 22 | eventviewer 23 | stats 24 | selinux_doc 25 | policer 26 | hash 27 | -------------------------------------------------------------------------------- /src/vnet/devices/tap/FEATURE.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: Tap Device 3 | maintainer: damarion@cisco.com sluong@cisco.com mohsin.kazmi14@gmail.com 4 | features: 5 | - Virtio 6 | - Persistence 7 | - Attach to an existing tap at host 8 | - Filter packet dump output with SW if index 9 | description: "Create a tap v2 device interface, which connects to a 10 | tap interface on the host system." 11 | state: production 12 | properties: [API, CLI, STATS, MULTITHREAD] 13 | -------------------------------------------------------------------------------- /docs/developer/corefeatures/fib/thedatamodel.rst: -------------------------------------------------------------------------------- 1 | .. _thedatamodel: 2 | 3 | The Data Model 4 | -------------- 5 | 6 | The FIB data model comprises two parts; the control-plane (CP) and the data-plane 7 | (DP). The CP data model represents the data that is programmed into VPP by the 8 | upper layers. The DP model represents how VPP derives actions to be performed on 9 | packets as they are switched. 10 | 11 | .. toctree:: 12 | 13 | controlplane 14 | dataplane 15 | 16 | -------------------------------------------------------------------------------- /extras/hs-test/docker/Dockerfile.curl: -------------------------------------------------------------------------------- 1 | ARG UBUNTU_VERSION 2 | 3 | FROM ubuntu:${UBUNTU_VERSION} 4 | 5 | RUN apt-get update \ 6 | && apt-get install -y gcc git make autoconf libtool pkg-config cmake ninja-build golang \ 7 | && rm -rf /var/lib/apt/lists/* 8 | 9 | COPY script/build_curl.sh /build_curl.sh 10 | COPY resources/curl/* /tmp/ 11 | RUN fallocate -l 10MB /tmp/testFile 12 | RUN apt-get update && apt-get install wget 13 | RUN /build_curl.sh 14 | 15 | CMD ["/bin/sh"] 16 | -------------------------------------------------------------------------------- /src/plugins/netmap/plugin.c: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: Apache-2.0 2 | * Copyright (c) 2024 Tom Jones 3 | * 4 | * This software was developed by Tom Jones under sponsorship 5 | * from the FreeBSD Foundation. 6 | * 7 | */ 8 | 9 | #include 10 | #include 11 | #include 12 | 13 | VLIB_PLUGIN_REGISTER () = { 14 | .version = VPP_BUILD_VER, 15 | .description = "netmap", 16 | }; 17 | -------------------------------------------------------------------------------- /test/vrf.py: -------------------------------------------------------------------------------- 1 | """ VRF Status codes """ 2 | 3 | from util import NumericConstant 4 | 5 | 6 | class VRFState(NumericConstant): 7 | """VRF State""" 8 | 9 | not_configured = 0 10 | configured = 1 11 | reset = 2 12 | 13 | desc_dict = { 14 | not_configured: "VRF not configured", 15 | configured: "VRF configured", 16 | reset: "VRF reset", 17 | } 18 | 19 | def __init__(self, value): 20 | NumericConstant.__init__(self, value) 21 | -------------------------------------------------------------------------------- /src/plugins/flowprobe/FEATURE.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: IPFIX probe 3 | maintainer: Ole Troan 4 | features: 5 | - L2 input and output feature path 6 | - IPv4 / IPv6 input and output feature path 7 | - Recording of L2, L3, and L4 information 8 | description: "IPFIX flow probe. Works in the L2 or IP feature path both input and output." 9 | missing: 10 | - Export over IPv6 11 | - Export over TCP/SCTP 12 | state: production 13 | properties: [API, CLI, STATS, MULTITHREAD] 14 | -------------------------------------------------------------------------------- /test/vpp_papi_exceptions.py: -------------------------------------------------------------------------------- 1 | class CliFailedCommandError(Exception): 2 | """cli command failed.""" 3 | 4 | 5 | class CliSyntaxError(Exception): 6 | """cli command had a syntax error.""" 7 | 8 | 9 | class UnexpectedApiReturnValueError(Exception): 10 | """exception raised when the API return value is unexpected""" 11 | 12 | def __init__(self, retval, message): 13 | self.retval = retval 14 | self.message = message 15 | super().__init__(message) 16 | -------------------------------------------------------------------------------- /extras/rpm/opensuse/Dockerfile: -------------------------------------------------------------------------------- 1 | # Run from top of vpp repo with command: 2 | # docker build -f extras/rpm/opensuse/Dockerfile . 3 | 4 | ARG SUSE_VERSION=15.4 5 | 6 | FROM opensuse/leap:${SUSE_VERSION} as vppbuild 7 | COPY . /vpp 8 | WORKDIR /vpp 9 | RUN zypper refresh 10 | RUN zypper install -y make sudo 11 | COPY . . 12 | RUN UNATTENDED=y make install-dep 13 | RUN ln -s /usr/bin/cmake /usr/bin/cmake3 14 | RUN UNATTENDED=y make install-ext-deps 15 | RUN make pkg-rpm 16 | CMD ["/bin/bash"] 17 | -------------------------------------------------------------------------------- /extras/strongswan/vpp_sswan/docker/exposedockernetns.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | if [ "$1" == "" ]; then 4 | echo "usage: $0 " 5 | echo "Exposes the netns of a docker container to the host" 6 | exit 1 7 | fi 8 | 9 | pid=`docker inspect -f '{{.State.Pid}}' $1` 10 | ln -s /proc/$pid/ns/net /var/run/netns/$1 11 | 12 | echo "netns of ${1} exposed as /var/run/netns/${1}" 13 | 14 | #echo "try: ip netns exec ${1} ip addr list" 15 | -------------------------------------------------------------------------------- /src/plugins/dma_intel/format.c: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: Apache-2.0 2 | * Copyright (c) 2022 Intel and/or its affiliates. 3 | */ 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | 10 | u8 * 11 | format_intel_dsa_addr (u8 *s, va_list *va) 12 | { 13 | intel_dsa_channel_t *ch = va_arg (*va, intel_dsa_channel_t *); 14 | return format (s, "wq%d.%d", ch->did, ch->qid); 15 | } 16 | -------------------------------------------------------------------------------- /src/plugins/gre/FEATURE.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: Generic Routing Encapsulation 3 | maintainer: Neale Ranns 4 | features: 5 | - L3 tunnels, all combinations of IPv4 and IPv6 6 | - Encap/Decap flags to control the copying of DSCP, ECN, DF from overlay to 7 | underlay and vice-versa. 8 | - L2 tunnels 9 | missing: 10 | - GRE keys 11 | description: "An implementation of Generic Routing Encapsulation (GRE)" 12 | state: production 13 | properties: [API, CLI, MULTITHREAD] 14 | -------------------------------------------------------------------------------- /src/vlib/unix/FEATURE.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: vlib/unix 3 | maintainer: Dave Barach 4 | features: 5 | - epoll-based file I/O support 6 | - Linux signal handling 7 | - Syslog support 8 | - Startup configuration processing, logging 9 | - Configuration debug CLI pager, banner, main loop polling interval 10 | - Per-thread stack allocation, guard-page setup 11 | description: "Linux-specific support routines" 12 | state: production 13 | properties: [CLI, MULTITHREAD] 14 | -------------------------------------------------------------------------------- /docs/cli-reference/interface/index.rst: -------------------------------------------------------------------------------- 1 | .. _interface: 2 | 3 | .. note:: For a complete list of CLI Debug commands refer to the Debug CLI section of the `Source Code Documents `_ . 4 | 5 | .. _intcommands: 6 | 7 | Interface Commands 8 | ================== 9 | This section identifies the following types of interface commands: 10 | 11 | .. toctree:: 12 | :maxdepth: 2 13 | 14 | basic 15 | hardware 16 | create_interface 17 | setinterface 18 | -------------------------------------------------------------------------------- /extras/packetforge/parsegraph/edges/gtppsc_after_gtpu.json: -------------------------------------------------------------------------------- 1 | { 2 | "type" : "edge", 3 | "start" : "gtpu", 4 | "end" : "gtppsc", 5 | "actions" : [ 6 | { 7 | "dst" : "start.e", 8 | "src" : "1" 9 | }, 10 | { 11 | "dst" : "start.nextextentionheadertype", 12 | "src" : "0x85" 13 | }, 14 | { 15 | "dst" : "start.messagetype", 16 | "src" : "0xff" 17 | } 18 | ] 19 | } 20 | -------------------------------------------------------------------------------- /src/scripts/vnet/udp: -------------------------------------------------------------------------------- 1 | loop create 2 | set int ip address loop0 192.168.1.1/8 3 | set int state loop0 up 4 | 5 | packet-generator new { \ 6 | name udp \ 7 | limit 512 \ 8 | rate 1e4 \ 9 | node ip4-input \ 10 | size 100-100 \ 11 | interface loop0 \ 12 | data { \ 13 | UDP: 192.168.1.2 - 192.168.2.255 -> 192.168.1.1 \ 14 | UDP: 4321 -> 1234 \ 15 | length 72 \ 16 | incrementing 100 \ 17 | } \ 18 | } 19 | -------------------------------------------------------------------------------- /src/plugins/lisp/lisp-gpe/FEATURE.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: Locator ID Separation Protocol Generic Protocol Extension 3 | maintainer: Florin Coras 4 | features: 5 | - ITR, ETR and RTR modes 6 | - Support for Ethernet, IPv4, IPv6 and NSH EIDs (payloads) 7 | - Source/dest forwarding 8 | - IPv4 and IPv6 RLOCs 9 | description: "Locator ID Separation Protocol Generic Protocol Extension (LISP-GPE) implementation" 10 | state: production 11 | properties: [API, CLI, STATS, MULTITHREAD] 12 | -------------------------------------------------------------------------------- /src/scripts/vnet/leftpeer/leftpeer.script: -------------------------------------------------------------------------------- 1 | l2tp_set_lookup_key lookup_v6_src 2 | 3 | sw_interface_add_del_address GigabitEthernet2/3/0 db03::2/64 4 | sw_interface_set_flags GigabitEthernet2/3/0 admin-up 5 | 6 | comment sw_interface_add_del_address GigabitEthernet2/2/0 db02::2/64 7 | sw_interface_set_flags GigabitEthernet2/2/0 admin-up 8 | 9 | l2tp_session_add_del client_address db03::1 our_address db03::2 GigabitEthernet2/2/0 local_session_id 1 remote_session_id 3 local_cookie 11 remote_cookie 33 10 | -------------------------------------------------------------------------------- /src/plugins/nat/extras/nat_dynamic: -------------------------------------------------------------------------------- 1 | set int ip address TenGigabitEthernet4/0/0 172.16.2.1/24 2 | set int ip address TenGigabitEthernet4/0/1 172.16.1.1/24 3 | set int state TenGigabitEthernet4/0/0 up 4 | set int state TenGigabitEthernet4/0/1 up 5 | ip route add 2.2.0.0/16 via 172.16.1.2 TenGigabitEthernet4/0/1 6 | ip route add 10.0.0.0/16 via 172.16.2.2 TenGigabitEthernet4/0/0 7 | set int nat44 in TenGigabitEthernet4/0/0 out TenGigabitEthernet4/0/1 8 | nat44 add address 172.16.1.3 - 172.16.1.163 9 | 10 | -------------------------------------------------------------------------------- /src/plugins/vrrp/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2019-2020 Rubicon Communications, LLC (Netgate) 3 | # 4 | # SPDX-License-Identifier: Apache-2.0 5 | # 6 | 7 | add_vpp_plugin(vrrp 8 | SOURCES 9 | vrrp.c 10 | vrrp_api.c 11 | vrrp_cli.c 12 | vrrp_format.c 13 | node.c 14 | vrrp_packet.c 15 | vrrp_periodic.c 16 | 17 | MULTIARCH_SOURCES 18 | node.c 19 | 20 | API_FILES 21 | vrrp.api 22 | 23 | INSTALL_HEADERS 24 | vrrp.h 25 | 26 | API_TEST_SOURCES 27 | vrrp_test.c 28 | ) 29 | -------------------------------------------------------------------------------- /src/scripts/vnet/arp4: -------------------------------------------------------------------------------- 1 | packet-generator new { \ 2 | name x \ 3 | limit 1 \ 4 | node ip4-input \ 5 | size 64-64 \ 6 | data { \ 7 | ICMP: 1.0.0.2 -> 2.0.0.2 \ 8 | ICMP echo_request \ 9 | incrementing 100 \ 10 | } \ 11 | } 12 | 13 | trace add pg-input 100 14 | loop create 15 | loop create 16 | set int state loop0 up 17 | set int state loop1 up 18 | 19 | set int ip address loop0 1.0.0.1/24 20 | set int ip address loop1 2.0.0.1/24 21 | -------------------------------------------------------------------------------- /src/scripts/vnet/arp6: -------------------------------------------------------------------------------- 1 | packet-generator new { \ 2 | name x \ 3 | limit 1 \ 4 | node ip6-input \ 5 | size 64-64 \ 6 | data { \ 7 | ICMP6: 2000::2 -> 2001::2 \ 8 | ICMP echo_request \ 9 | incrementing 100 \ 10 | } \ 11 | } 12 | 13 | tr add pg-input 100 14 | loop create 15 | loop create 16 | set int state loop0 up 17 | set int state loop1 up 18 | 19 | set int ip address loop0 2000::1/64 20 | set int ip address loop1 2001::1/64 21 | -------------------------------------------------------------------------------- /src/scripts/vnet/mpls-o-ethernet/single.conf: -------------------------------------------------------------------------------- 1 | comment { single node configuration } 2 | 3 | loop create 4 | loop create 5 | set int state loop0 up 6 | set int state loop1 up 7 | 8 | set int ip address loop0 1.0.0.1/24 9 | set int ip address loop1 2.0.0.1/24 10 | 11 | 12 | ip route add 2.2.2.2/32 via 2.0.0.2 loop1 13 | 14 | mpls encap add label 30 fib 0 dest 2.2.2.2 15 | mpls decap add label 30 fib 0 16 | 17 | create mpls ethernet tunnel dst 00:50:56:b7:05:cb adj 2.2.2.2/32 tx-intfc loop1 fib-id 0 18 | -------------------------------------------------------------------------------- /src/scripts/vnet/rightpeer/rightpeer.script: -------------------------------------------------------------------------------- 1 | l2tp_set_lookup_key lookup_v6_src 2 | 3 | sw_interface_add_del_address GigabitEthernet2/3/0 db03::1/64 4 | sw_interface_set_flags GigabitEthernet2/3/0 admin-up 5 | 6 | comment sw_interface_add_del_address GigabitEthernet2/4/0 db02::2/64 7 | sw_interface_set_flags GigabitEthernet2/4/0 admin-up 8 | 9 | l2tp_session_add_del client_address db03::2 our_address db03::1 GigabitEthernet2/4/0 local_session_id 3 remote_session_id 1 local_cookie 33 remote_cookie 11 10 | -------------------------------------------------------------------------------- /extras/strongswan/configs/initiator/ipsec.conf: -------------------------------------------------------------------------------- 1 | config setup 2 | strictcrlpolicy=no 3 | 4 | conn initiator 5 | mobike=no 6 | auto=add 7 | type=tunnel 8 | keyexchange=ikev2 9 | ike=aes256gcm16-prfsha256-modp2048! 10 | esp=aes256gcm16-esn! 11 | 12 | # local: 13 | leftauth=psk 14 | leftid=@sswan.vpn.example.com 15 | leftsubnet=192.168.5.0/24 16 | 17 | # remote: (gateway) 18 | rightid=@roadwarrior.vpp 19 | right=192.168.10.2 20 | rightauth=psk 21 | rightsubnet=192.168.3.0/24 22 | 23 | -------------------------------------------------------------------------------- /extras/strongswan/configs/responder_nat/ipsec.conf: -------------------------------------------------------------------------------- 1 | config setup 2 | strictcrlpolicy=no 3 | 4 | conn initiator 5 | mobike=no 6 | auto=add 7 | type=tunnel 8 | keyexchange=ikev2 9 | ike=aes256gcm16-prfsha256-modp2048! 10 | esp=aes256gcm16-esn! 11 | 12 | # local: 13 | leftauth=psk 14 | leftid=@roadwarrior.vpn.example.com 15 | leftsubnet=192.168.5.0/24 16 | 17 | # remote: (gateway) 18 | rightid=@vpp.home 19 | right=192.168.10.2 20 | rightauth=psk 21 | rightsubnet=192.168.3.0/24 22 | 23 | -------------------------------------------------------------------------------- /src/vnet/bonding/FEATURE.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bonding 3 | maintainer: Steven Luong 4 | features: 5 | - Interface bonding support with the following options 6 | - mode active-backup 7 | - mode lacp 8 | - load-balance l2 | l23 | l34 9 | - numa-only 10 | - mode xor 11 | - load-balance l2 | l23 | l34 12 | - mode round-robin 13 | - mode broadcast 14 | description: "Bonding implementation" 15 | state: production 16 | properties: [API, CLI, STATS, MULTITHREAD] 17 | -------------------------------------------------------------------------------- /extras/docker/build/Dockerfile.bionic: -------------------------------------------------------------------------------- 1 | # Run from top of vpp repo with command: 2 | # docker build -f extras/docker/build/Dockerfile.bionic . 3 | FROM ubuntu:bionic 4 | ARG REPO=master 5 | COPY . /vpp 6 | WORKDIR /vpp 7 | RUN apt-get update 8 | RUN apt-get -y install make sudo git curl 9 | RUN curl -s https://packagecloud.io/install/repositories/fdio/${REPO}/script.deb.sh | bash 10 | RUN apt-get update 11 | RUN apt-get -y install vpp-dpdk-dev 12 | RUN UNATTENDED=y make install-dep 13 | RUN make pkg-deb 14 | CMD ["/bin/bash"] -------------------------------------------------------------------------------- /extras/docker/build/Dockerfile.xenial: -------------------------------------------------------------------------------- 1 | # Run from top of vpp repo with command: 2 | # docker build -f extras/docker/build/Dockerfile.xenial . 3 | FROM ubuntu:xenial 4 | ARG REPO=master 5 | COPY . /vpp 6 | WORKDIR /vpp 7 | RUN apt-get update 8 | RUN apt-get -y install make sudo git curl 9 | RUN curl -s https://packagecloud.io/install/repositories/fdio/${REPO}/script.deb.sh | bash 10 | RUN apt-get update 11 | RUN apt-get -y install vpp-dpdk-dev 12 | RUN UNATTENDED=y make install-dep 13 | RUN make pkg-deb 14 | CMD ["/bin/bash"] -------------------------------------------------------------------------------- /extras/hs-test/topo-network/2peerVeth.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | devices: 3 | - name: "hsns" 4 | type: "netns" 5 | 6 | - name: "srv" 7 | type: "veth" 8 | preset-hw-address: "00:00:5e:00:53:01" 9 | peer: 10 | name: "srv_veth" 11 | netns: "hsns" 12 | 13 | - name: "cln" 14 | type: "veth" 15 | peer: 16 | name: "cln_veth" 17 | netns: "hsns" 18 | 19 | - name: "br" 20 | type: "bridge" 21 | netns: "hsns" 22 | interfaces: 23 | - srv_veth 24 | - cln_veth 25 | 26 | -------------------------------------------------------------------------------- /src/vlib/stats/format.c: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: Apache-2.0 2 | * Copyright(c) 2022 Cisco Systems, Inc. 3 | */ 4 | 5 | #include 6 | #include 7 | #include 8 | 9 | u8 * 10 | format_vlib_stats_symlink (u8 *s, va_list *args) 11 | { 12 | u8 *input = va_arg (*args, u8 *); 13 | 14 | for (int i = 0; i < vec_len (input); i++) 15 | if (input[i] == '/') 16 | vec_add1 (s, '_'); 17 | else 18 | vec_add1 (s, input[i]); 19 | 20 | return s; 21 | } 22 | -------------------------------------------------------------------------------- /extras/packetforge/parsegraph/nodes/sctp.json: -------------------------------------------------------------------------------- 1 | { 2 | "type" : "node", 3 | "name" : "sctp", 4 | "layout" : [ 5 | { 6 | "name" : "src", 7 | "size" : "16" 8 | }, 9 | { 10 | "name" : "dst", 11 | "size" : "16" 12 | }, 13 | { 14 | "name" : "veificationtag", 15 | "size" : "16" 16 | }, 17 | { 18 | "name" : "checksum", 19 | "size" : "16" 20 | } 21 | ] 22 | } 23 | -------------------------------------------------------------------------------- /extras/strongswan/configs/responder/ipsec.conf: -------------------------------------------------------------------------------- 1 | config setup 2 | strictcrlpolicy=no 3 | 4 | conn initiator 5 | mobike=no 6 | auto=add 7 | type=tunnel 8 | keyexchange=ikev2 9 | ike=aes256gcm16-prfsha256-modp2048! 10 | esp=aes256gcm16-esn! 11 | lifetime=1h 12 | 13 | # local: 14 | leftauth=psk 15 | leftid=@roadwarrior.vpn.example.com 16 | leftsubnet=192.168.5.0/24 17 | 18 | # remote: (gateway) 19 | rightid=@vpp.home 20 | right=192.168.10.2 21 | rightauth=psk 22 | rightsubnet=192.168.3.0/24 23 | 24 | -------------------------------------------------------------------------------- /src/plugins/cnat/cnat_maglev.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: Apache-2.0 2 | * Copyright(c) 2022 Cisco Systems, Inc. 3 | */ 4 | 5 | #ifndef __CNAT_MAGLEV_H__ 6 | #define __CNAT_MAGLEV_H__ 7 | 8 | #include 9 | #include 10 | 11 | typedef struct 12 | { 13 | /* offset & skip used for sorting, should be first */ 14 | u32 offset; 15 | u32 skip; 16 | u32 index; 17 | } cnat_maglev_perm_t; 18 | 19 | extern void cnat_translation_init_maglev (cnat_translation_t *ct); 20 | 21 | #endif -------------------------------------------------------------------------------- /src/vnet/bier/FEATURE.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bit Indexed Explicit Replication 3 | maintainer: Neale Ranns 4 | features: 5 | - Multicast Using Bit Index Explicit Replication 6 | (https://tools.ietf.org/html/rfc8279) 7 | - Encapsulation for Bit Index Explicit Replication (BIER) in MPLS and 8 | Non-MPLS Networks (https://tools.ietf.org/html/rfc8296) 9 | 10 | description: "An implementation of Bit Indexed Explicit Replication (BIER)" 11 | state: production 12 | properties: [API, CLI, MULTITHREAD] 13 | -------------------------------------------------------------------------------- /src/vnet/qos/FEATURE.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: Quality of Service 3 | maintainer: Neale Ranns 4 | features: 5 | - Record - extract QoS bits from packets headers and write in metadata 6 | - Mapp - defines simple transform of QoS bits from/to each packet layer 7 | - Mark - write [mapped] QoS bits into packet headers 8 | - Store - write in packet metadata a fixed QoS value 9 | 10 | description: "An implementation of Quality of Service (QoS)" 11 | state: production 12 | properties: [API, CLI, MULTITHREAD] 13 | -------------------------------------------------------------------------------- /extras/scripts/pci-nic-bind-to-kernel: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Bind all unused PCI devices bound to uio drivers 4 | # back to default kernel driver 5 | 6 | if [ $USER != "root" ] ; then 7 | echo "Restarting script with sudo..." 8 | sudo $0 ${*} 9 | exit 10 | fi 11 | 12 | for f in /sys/bus/pci/drivers/{igb_uio,uio_pci_generic,vfio-pci}/*; do 13 | [ -e ${f}/config ] || continue 14 | fuser -s ${f}/config && continue 15 | echo 1 > ${f}/remove 16 | removed=y 17 | done 18 | 19 | [ -n ${removed} ] && echo 1 > /sys/bus/pci/rescan 20 | -------------------------------------------------------------------------------- /extras/strongswan/configs/responder_keepalive/ipsec.conf: -------------------------------------------------------------------------------- 1 | config setup 2 | strictcrlpolicy=no 3 | 4 | conn initiator 5 | mobike=no 6 | auto=add 7 | type=tunnel 8 | keyexchange=ikev2 9 | ike=aes256gcm16-prfsha256-modp2048! 10 | esp=aes256gcm16-esn! 11 | lifetime=1h 12 | 13 | # local: 14 | leftauth=psk 15 | leftid=@roadwarrior.vpn.example.com 16 | leftsubnet=192.168.5.0/24 17 | 18 | # remote: (gateway) 19 | rightid=@vpp.home 20 | right=192.168.10.2 21 | rightauth=psk 22 | rightsubnet=192.168.3.0/24 23 | 24 | -------------------------------------------------------------------------------- /extras/strongswan/configs/responder_vrf/ipsec1.conf: -------------------------------------------------------------------------------- 1 | config setup 2 | strictcrlpolicy=no 3 | 4 | conn initiator 5 | mobike=no 6 | auto=add 7 | type=tunnel 8 | keyexchange=ikev2 9 | ike=aes256gcm16-prfsha256-modp2048! 10 | esp=aes256gcm16-esn! 11 | lifetime=1m 12 | 13 | # local: 14 | leftauth=psk 15 | leftid=@roadwarrior1.vpn.example.com 16 | leftsubnet=192.168.5.0/24 17 | 18 | # remote: (gateway) 19 | rightid=@vpp.home 20 | right=192.168.10.2 21 | rightauth=psk 22 | rightsubnet=192.168.3.0/24 23 | 24 | -------------------------------------------------------------------------------- /extras/strongswan/configs/responder_vrf/ipsec2.conf: -------------------------------------------------------------------------------- 1 | config setup 2 | strictcrlpolicy=no 3 | 4 | conn initiator 5 | mobike=no 6 | auto=add 7 | type=tunnel 8 | keyexchange=ikev2 9 | ike=aes256gcm16-prfsha256-modp2048! 10 | esp=aes256gcm16-esn! 11 | lifetime=1m 12 | 13 | # local: 14 | leftauth=psk 15 | leftid=@roadwarrior2.vpn.example.com 16 | leftsubnet=192.168.5.0/24 17 | 18 | # remote: (gateway) 19 | rightid=@vpp.home 20 | right=192.168.10.2 21 | rightauth=psk 22 | rightsubnet=192.168.3.0/24 23 | 24 | -------------------------------------------------------------------------------- /test/patches/scapy-2.4/defragment.patch: -------------------------------------------------------------------------------- 1 | diff --git a/scapy/layers/inet6.py b/scapy/layers/inet6.py 2 | index b58978f4..c4a3084d 100644 3 | --- a/scapy/layers/inet6.py 4 | +++ b/scapy/layers/inet6.py 5 | @@ -1073,6 +1073,7 @@ def defragment6(packets): 6 | q = res[0] 7 | nh = q[IPv6ExtHdrFragment].nh 8 | q[IPv6ExtHdrFragment].underlayer.nh = nh 9 | + q[IPv6ExtHdrFragment].underlayer.plen = len(fragmentable) 10 | del q[IPv6ExtHdrFragment].underlayer.payload 11 | q /= conf.raw_layer(load=fragmentable) 12 | 13 | -------------------------------------------------------------------------------- /docs/aboutvpp/releasenotes/v22.06.1.rst: -------------------------------------------------------------------------------- 1 | Release notes for VPP 22.06.1 2 | ============================= 3 | 4 | This is bug fix release. 5 | 6 | Of particular importance, this release contains the fix for 7 | `JIRA VPP-2307: CVE-2022-46397 FD.io VPP (Vector Packet Processor) IPSec generates a predictable IV in AES-CBC mode `__ 8 | 9 | For the full list of fixed issues please refer to: 10 | 11 | - fd.io `JIRA `__ 12 | - git `commit log `__ 13 | -------------------------------------------------------------------------------- /docs/aboutvpp/releasenotes/v22.10.1.rst: -------------------------------------------------------------------------------- 1 | Release notes for VPP 22.10.1 2 | ============================= 3 | 4 | This is bug fix release. 5 | 6 | Of particular importance, this release contains the fix for 7 | `JIRA VPP-2307: CVE-2022-46397 FD.io VPP (Vector Packet Processor) IPSec generates a predictable IV in AES-CBC mode `__ 8 | 9 | For the full list of fixed issues please refer to: 10 | 11 | - fd.io `JIRA `__ 12 | - git `commit log `__ 13 | -------------------------------------------------------------------------------- /src/plugins/flowprobe/flowprobe_plugin_doc.rst: -------------------------------------------------------------------------------- 1 | IPFIX flow record plugin 2 | ======================== 3 | 4 | Introduction 5 | ------------ 6 | 7 | This plugin generates ipfix flow records on interfaces which have the 8 | feature enabled 9 | 10 | Sample configuration 11 | -------------------- 12 | 13 | :: 14 | 15 | set ipfix exporter collector 192.168.6.2 src 192.168.6.1 template-interval 20 port 4739 path-mtu 1450 16 | 17 | flowprobe params record l3 active 20 passive 120 18 | flowprobe feature add-del GigabitEthernet2/3/0 l2 19 | -------------------------------------------------------------------------------- /src/plugins/vhost/FEATURE.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: Vhost-user Device Driver 3 | maintainer: sluong@cisco.com 4 | features: 5 | - Device mode to emulate vhost-user interface presented to VPP from the 6 | guest VM. 7 | - Support virtio 1.0 in virtio 8 | - Support virtio 1.1 packed ring in virtio [experimental] 9 | - Support multi-queue, GSO, checksum offload, indirect descriptor, 10 | jumbo frame, and packed ring. 11 | description: "Vhost-user implementation" 12 | state: production 13 | properties: [API, CLI, STATS, MULTITHREAD] 14 | -------------------------------------------------------------------------------- /docs/usecases/vppcloud/automatingthedeployment.rst: -------------------------------------------------------------------------------- 1 | .. _automatingthedeployment: 2 | 3 | .. toctree:: 4 | 5 | Automating VPP deployment 6 | __________________________ 7 | 8 | 9 | 10 | In order to make the VPP deployment easier inside AWS and Azure, we have created two different Terraform scripts, compatibles with both Public Cloud Provider. These scripts allow to automate the deployment of the resources. `Here you can find the scripts anf further information `_. 11 | 12 | 13 | -------------------------------------------------------------------------------- /src/vnet/gso/FEATURE.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: VNET GSO 3 | maintainer: ayourtch@gmail.com mohsin.kazmi14@gmail.com 4 | features: 5 | - Basic GSO support 6 | - GSO for VLAN tagged packets 7 | - GSO for VXLAN tunnel 8 | - GSO for IP-IP tunnel 9 | - GSO for IPSec tunnel 10 | - Provide inline function to get header offsets 11 | - Basic GRO support 12 | - Implements flow table support 13 | description: "Generic Segmentation Offload" 14 | missing: 15 | - Thorough Testing, GRE, Geneve 16 | state: experimental 17 | properties: [API, CLI] 18 | -------------------------------------------------------------------------------- /extras/strongswan/run.sh: -------------------------------------------------------------------------------- 1 | print_help() { 2 | echo "vpp/strongswan tests" 3 | } 4 | 5 | count=0 6 | test_num=`ls -l test_* | wc -l` 7 | 8 | for test_case in test_* 9 | do 10 | let "count=$count + 1" 11 | 12 | base_name=`basename -a "$test_case"` 13 | printf "%2d/%d : %-48s" $count $test_num "$base_name" 14 | logger "test start $base_name" 15 | 16 | bash $test_case &> /dev/null 17 | rc=$? 18 | 19 | if [ $rc -ne 0 ] ; then 20 | printf "failed!\n" 21 | else 22 | printf "passed.\n" 23 | fi 24 | done 25 | 26 | exit 0 27 | -------------------------------------------------------------------------------- /docs/usecases/containers/index.rst: -------------------------------------------------------------------------------- 1 | .. _containers: 2 | 3 | VPP with Containers 4 | ==================== 5 | 6 | This section will cover connecting two Linux containers with VPP. A container is essentially a more efficient and faster VM, due to the fact that a container does not simulate a separate kernel and hardware. You can read more about `Linux containers here `_. 7 | 8 | This section has been tested with Ubuntu 22.04 LTS. 9 | 10 | .. toctree:: 11 | 12 | containerCreation 13 | containerSetup 14 | Routing 15 | -------------------------------------------------------------------------------- /extras/hs-test/topo-containers/2peerVethLdp.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | volumes: 3 | - volume: &server-vol 4 | host-dir: "$HST_VOLUME_DIR/server-share" 5 | container-dir: "/tmp/server-share" 6 | is-default-work-dir: true 7 | - volume: &client-vol 8 | host-dir: "$HST_VOLUME_DIR/client-share" 9 | container-dir: "/tmp/client-share" 10 | is-default-work-dir: true 11 | 12 | containers: 13 | - name: "server-vpp" 14 | volumes: 15 | - <<: *server-vol 16 | - name: "client-vpp" 17 | volumes: 18 | - <<: *client-vol 19 | -------------------------------------------------------------------------------- /src/plugins/lisp/lisp-cp/FEATURE.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: Locator ID Separation Protocol Control Plane 3 | maintainer: Florin Coras 4 | features: 5 | - ITR, ETR and RTR mode of operation 6 | - Multitenancy 7 | - Multihoming 8 | - Source/dest map-cache lookups 9 | - RLOC-probing 10 | - Support for Ethernet, IPv4, IPv6 and NSH EIDs (payloads) 11 | - Map-resolver failover algorithm 12 | description: "Locator ID Separation Protocol control plane (LISP) implementation" 13 | state: production 14 | properties: [API, CLI, STATS, MULTITHREAD] 15 | -------------------------------------------------------------------------------- /docs/_static/css/rules.css: -------------------------------------------------------------------------------- 1 | /* Allows for tables to be center-aligned */ 2 | table.center-align-table td { 3 | text-align: center; 4 | } 5 | 6 | /* override table width restrictions */ 7 | @media screen and (min-width: 767px) { 8 | 9 | .wy-table-responsive table td { 10 | /* !important prevents the common CSS stylesheets from overriding 11 | this as on RTD they are loaded after this stylesheet */ 12 | white-space: normal !important; 13 | } 14 | 15 | .wy-table-responsive { 16 | overflow: visible !important; 17 | } 18 | } 19 | 20 | -------------------------------------------------------------------------------- /extras/scripts/patches/macos_build_externals.patch: -------------------------------------------------------------------------------- 1 | diff --git a/build/external/Makefile b/build/external/Makefile 2 | index e5dff3c43..ffd0a6476 100644 3 | --- a/build/external/Makefile 4 | +++ b/build/external/Makefile 5 | @@ -45,10 +45,10 @@ clean: 6 | @rm -rf $(B) $(I) 7 | 8 | .PHONY: install 9 | -install: dpdk-install rdma-core-install quicly-install 10 | +install: 11 | 12 | .PHONY: config 13 | -config: dpdk-config rdma-core-config 14 | +config: 15 | 16 | ############################################################################## 17 | # .deb packaging 18 | -------------------------------------------------------------------------------- /src/plugins/l3xc/FEATURE.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: Layer 3 cross connect 3 | maintainer: Neale Ranns 4 | features: 5 | - cross connect all ingress traffic on an L3 interface to an output FIB path. 6 | - the path can describe any output (with the exception of MPLS labels) 7 | - The same functions can be achieved by using a dedicated VRF for the table 8 | and adding a default route with the same path. However, the L3XC is more 9 | efficient in memory and CPU 10 | 11 | description: "" 12 | state: production 13 | properties: [API, CLI, MULTITHREAD] 14 | -------------------------------------------------------------------------------- /extras/hs-test/docker/Dockerfile.nginx: -------------------------------------------------------------------------------- 1 | ARG UBUNTU_VERSION 2 | 3 | FROM ubuntu:${UBUNTU_VERSION} 4 | 5 | RUN apt-get update \ 6 | && apt-get install -y nginx gdb less libunwind-dev \ 7 | && rm -rf /var/lib/apt/lists/* 8 | 9 | COPY vpp-data/lib/* /usr/lib/ 10 | COPY resources/nginx/nginx.conf /nginx.conf 11 | COPY script/nginx_ldp.sh /usr/bin/nginx_ldp.sh 12 | 13 | ENV VCL_CONFIG=/tmp/nginx/vcl.conf 14 | ENV LDP=/usr/lib/libvcl_ldpreload.so 15 | ENV LDP_DEBUG=0 16 | ENV VCL_DEBUG=0 17 | ENV LDP_SID_BIT=8 18 | 19 | ENTRYPOINT ["nginx_ldp.sh", "nginx", "-c", "/nginx.conf"] 20 | -------------------------------------------------------------------------------- /src/scripts/vnet/mpls-o-gre/leftpeer.conf: -------------------------------------------------------------------------------- 1 | comment { left linux ping target configure at e.g. 6.0.2.2/24 } 2 | 3 | set int ip table GigabitEthernet2/2/0 1 4 | set int ip address GigabitEthernet2/2/0 6.0.2.1/24 5 | set int state GigabitEthernet2/2/0 up 6 | 7 | comment { tunnel to rightpeer } 8 | set int ip address GigabitEthernet2/3/0 6.0.3.1/24 9 | set int state GigabitEthernet2/3/0 up 10 | 11 | mpls encap add label 30 fib 1 dest 6.0.3.3 12 | mpls decap add label 30 fib 1 13 | 14 | create mpls gre tunnel src 6.0.3.1 dst 6.0.3.3 intfc 6.0.4.1/24 inner-fib-id 1 outer-fib-id 0 15 | -------------------------------------------------------------------------------- /src/scripts/vnet/mpls-o-gre/rightpeer.conf: -------------------------------------------------------------------------------- 1 | comment { right linux ping target configure e.g. 6.0.4.4/24 } 2 | 3 | set int ip table GigabitEthernet2/4/0 1 4 | set int ip address GigabitEthernet2/4/0 6.0.4.1/24 5 | set int state GigabitEthernet2/4/0 up 6 | 7 | comment { tunnel to leftpeer } 8 | set int ip address GigabitEthernet2/3/0 6.0.3.3/24 9 | set int state GigabitEthernet2/3/0 up 10 | 11 | mpls encap add label 30 fib 1 dest 6.0.3.1 12 | mpls decap add label 30 fib 1 13 | 14 | create mpls gre tunnel src 6.0.3.3 dst 6.0.3.1 intfc 6.0.2.1/24 inner-fib-id 1 outer-fib-id 0 15 | -------------------------------------------------------------------------------- /src/scripts/vnet/rightpeer/rightpeer-vxlan.conf: -------------------------------------------------------------------------------- 1 | 2 | comment { local client facing interface } 3 | 4 | comment { configure client lc4 eth1 } 5 | set int state GigabitEthernet2/4/0 up 6 | 7 | comment { tunnel to leftpeer } 8 | set int ip address GigabitEthernet2/3/0 6.0.3.3/24 9 | set int state GigabitEthernet2/3/0 up 10 | 11 | comment { tunnel to extra ping target } 12 | set int ip address GigabitEthernet2/7/0 6.0.5.3/24 13 | set int state GigabitEthernet2/3/0 up 14 | 15 | vxlan tunnel src 6.0.3.3 peer 6.0.3.1 peer 6.0.3.5 vni 123 16 | vxlan l2 GigabitEthernet2/4/0 vni 123 17 | -------------------------------------------------------------------------------- /docs/aboutvpp/supported.rst: -------------------------------------------------------------------------------- 1 | .. _supported: 2 | 3 | .. toctree:: 4 | 5 | Supported archs and OS 6 | ********************** 7 | 8 | The following architectures and operating systems are supported in VPP: 9 | 10 | Architectures 11 | ------------- 12 | 13 | * The FD.io VPP platform supports: 14 | 15 | * x86/64 16 | * ARM-AArch64 17 | 18 | Operating Systems and Packaging 19 | ------------------------------- 20 | 21 | FD.io VPP supports package installation on the following 22 | recent LTS releases: 23 | 24 | * Distributions: 25 | 26 | * Debian 27 | * Ubuntu 28 | 29 | -------------------------------------------------------------------------------- /extras/packetforge/parsegraph/nodes/mac.json: -------------------------------------------------------------------------------- 1 | { 2 | "type" : "node", 3 | "name" : "mac", 4 | "layout" : [ 5 | { 6 | "name" : "dst", 7 | "size" : "48", 8 | "format" : "mac", 9 | "default" : "00:00:00:00:00:01" 10 | }, 11 | { 12 | "name" : "src", 13 | "size" : "48", 14 | "format" : "mac", 15 | "default" : "00:00:00:00:00:02" 16 | }, 17 | { 18 | "name" : "ethertype", 19 | "size" : "16" 20 | } 21 | ] 22 | } 23 | -------------------------------------------------------------------------------- /src/plugins/nat/extras/trex_cfg.yaml: -------------------------------------------------------------------------------- 1 | # Config file generated by dpdk_setup_ports.py ## 2 | --- 3 | - port_limit: 2 4 | version: 2 5 | interfaces: ['04:00.0', '04:00.1'] 6 | c: 4 7 | port_info: 8 | - ip: 172.16.1.2 9 | default_gw: 172.16.1.1 10 | - ip: 172.16.2.2 11 | default_gw: 172.16.2.1 12 | 13 | platform: 14 | master_thread_id: 0 15 | latency_thread_id: 8 16 | dual_if: 17 | - socket: 0 18 | threads: [1, 2, 3, 4, 5, 6, 7] 19 | - socket: 1 20 | threads: [9, 10, 11, 12, 13, 14, 15] 21 | -------------------------------------------------------------------------------- /src/scripts/vnet/arp4-mpls: -------------------------------------------------------------------------------- 1 | packet-generator new { \ 2 | name x \ 3 | limit 1 \ 4 | node ip4-input \ 5 | size 64-64 \ 6 | data { \ 7 | ICMP: 1.0.0.2 -> 2.2.2.2 \ 8 | ICMP echo_request \ 9 | incrementing 100 \ 10 | } \ 11 | } 12 | 13 | loop create 14 | loop create 15 | set int state loop0 up 16 | set int state loop1 up 17 | 18 | set int ip address loop0 1.0.0.1/24 19 | set int ip address loop1 2.0.0.1/24 20 | 21 | ip route add 2.2.2.2/32 via 2.0.0.2 loop1 out-label 33 22 | 23 | trace add pg-input 100 24 | -------------------------------------------------------------------------------- /src/vlib/FEATURE_trace.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: Packet Tracer 3 | maintainer: Dave Barach 4 | features: 5 | - pcap rx/tx/drop packet tracing 6 | - vpp native (ascii) packet tracing 7 | - graph dispatch engine pcap tracing 8 | - classifier-based packet trace selection 9 | - Per-interface packet trace selection 10 | description: "Support for various kinds of packet trace and captures. 11 | Very useful for understanding and replaying traffic 12 | for debugging purposes." 13 | state: production 14 | properties: [API, CLI, MULTITHREAD] 15 | -------------------------------------------------------------------------------- /test/asf/test_api_client.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | import unittest 4 | 5 | from asfframework import VppAsfTestCase, VppTestRunner 6 | 7 | 8 | class TestAPIClient(VppAsfTestCase): 9 | """API Internal client Test Cases""" 10 | 11 | def test_client_unittest(self): 12 | """Internal API client""" 13 | error = self.vapi.cli("test api internal") 14 | if error: 15 | self.logger.critical(error) 16 | self.assertNotIn("failed", error) 17 | 18 | 19 | if __name__ == "__main__": 20 | unittest.main(testRunner=VppTestRunner) 21 | -------------------------------------------------------------------------------- /test/patches/scapy-2.3.3/vxlan.patch: -------------------------------------------------------------------------------- 1 | diff --git a/scapy/layers/vxlan.py b/scapy/layers/vxlan.py 2 | --- a/scapy/layers/vxlan.py 3 | +++ b/scapy/layers/vxlan.py 4 | @@ -65,6 +65,7 @@ 5 | return self.sprintf("VXLAN (vni=%VXLAN.vni%)") 6 | 7 | bind_layers(UDP, VXLAN, dport=4789) # RFC standard port 8 | +bind_layers(UDP, VXLAN, dport=4790) # RFC standard vxlan-gpe port 9 | bind_layers(UDP, VXLAN, dport=6633) # New IANA assigned port for use with NSH 10 | bind_layers(UDP, VXLAN, dport=8472) # Linux implementation port 11 | bind_layers(VXLAN, Ether, {'flags': 0x8}) 12 | -------------------------------------------------------------------------------- /docs/interfacing/cpp/api_example/Makefile: -------------------------------------------------------------------------------- 1 | CXXFLAGS:=-std=c++14 -Wextra -Wall -g -O2 2 | CXXFLAGS+= -Wno-unused-parameter 3 | #CXXFLAGS+= -O0 4 | LDFLAGS:=-g 5 | LDLIBS:=-lvapiclient 6 | # Customize the lines below if VPP headers and libraries are in non-standard paths 7 | #CXXFLAGS+= -I/your/vpp/build-root/install-vpp_debug-native/vpp/include 8 | #LDFLAGS+= -Wl,-rpath,/your/vpp/build-root/install-vpp_debug-native/vpp/lib 9 | #LDFLAGS+= -L/your/vpp/build-root/install-vpp_debug-native/vpp/lib 10 | 11 | all: api_example 12 | 13 | clean: 14 | $(RM) api_example 15 | 16 | .PHONY: all clean 17 | -------------------------------------------------------------------------------- /extras/packetforge/parsegraph/nodes/udp.json: -------------------------------------------------------------------------------- 1 | { 2 | "type" : "node", 3 | "name" : "udp", 4 | "layout" : [ 5 | { 6 | "name" : "src", 7 | "size" : "16" 8 | }, 9 | { 10 | "name" : "dst", 11 | "size" : "16" 12 | }, 13 | { 14 | "name" : "length", 15 | "size" : "16", 16 | "default" : "8", 17 | "autoincrease" : "true" 18 | }, 19 | { 20 | "name" : "checksum", 21 | "size" : "16" 22 | } 23 | ] 24 | } 25 | -------------------------------------------------------------------------------- /src/plugins/mactime/FEATURE.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: Time-range-based MAC-address filter 3 | maintainer: Dave Barach 4 | features: 5 | - Static / time-range / data quota based MAC address filter 6 | description: "Device-input/output arc driver level MAC filter. 7 | Checks to see if traffic is allowed to/from the given 8 | MAC address, and takes the appropriate action. 9 | Intended for the home gateway use-case, where WAN traffic 10 | is billed per bit." 11 | state: production 12 | properties: [API, CLI, MULTITHREAD] 13 | -------------------------------------------------------------------------------- /src/scripts/vnet/leftpeer/leftpeer-ioam.conf: -------------------------------------------------------------------------------- 1 | comment { connects to linux ping source eth1 addr db02::2/64 } 2 | set int ip address GigabitEthernet2/2/0 db02::1/64 3 | set int state GigabitEthernet2/2/0 up 4 | 5 | comment { connects to ioam domain rightpeer eth2 addr db03::3/64 } 6 | set int ip address GigabitEthernet2/3/0 db03::1/64 7 | set int state GigabitEthernet2/3/0 up 8 | 9 | ioam set rewrite trace-elts 2 pow 10 | 11 | set ip neighbor GigabitEthernet2/3/0 db03::3 00:50:56:b7:05:cb 12 | 13 | ip route add db04::0/64 via db03::3 14 | 15 | ioam set destination db04::0/64 add 16 | -------------------------------------------------------------------------------- /extras/hs-test/tools/http_server/http_server.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "fmt" 5 | "io" 6 | "net/http" 7 | "os" 8 | ) 9 | 10 | func main() { 11 | if len(os.Args) < 4 { 12 | fmt.Println("arg expected") 13 | os.Exit(1) 14 | } 15 | 16 | http.HandleFunc("/httpTestFile", func(w http.ResponseWriter, r *http.Request) { 17 | file, _ := os.Open(os.Args[3] + "httpTestFile" + os.Args[2]) 18 | defer file.Close() 19 | io.Copy(w, file) 20 | }) 21 | err := http.ListenAndServe(os.Args[1], nil) 22 | if err != nil { 23 | fmt.Printf("%v\n", err) 24 | os.Exit(1) 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /test/patches/scapy-2.4.3/cdp.patch: -------------------------------------------------------------------------------- 1 | diff --git a/scapy/contrib/cdp.py b/scapy/contrib/cdp.py 2 | index 9ad15c8a..d9cd08c6 100644 3 | --- a/scapy/contrib/cdp.py 4 | +++ b/scapy/contrib/cdp.py 5 | @@ -357,7 +357,7 @@ class _CDPChecksum: 6 | This padding is only used for checksum computation. The original 7 | packet should not be altered.""" 8 | if len(pkt) % 2: 9 | - last_chr = pkt[-1] 10 | + last_chr = pkt[len(pkt)-1:] 11 | if last_chr <= b'\x80': 12 | return pkt[:-1] + b'\x00' + last_chr 13 | else: 14 | -------------------------------------------------------------------------------- /src/plugins/svs/FEATURE.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: Source VRF Select 3 | maintainer: Neale Ranns 4 | features: 5 | - Determine the input VRF/table based on the source IP address 6 | - routes are added to tables. 7 | - route lookup is performed using the packet's source address 8 | - The route is programmed with the table in which the subsequent destination 9 | address lookup will be performed 10 | - Tables are bound to interfaces. 11 | - SVS runs as an input feature in the L3 path 12 | 13 | description: "" 14 | state: production 15 | properties: [API, CLI, MULTITHREAD] 16 | -------------------------------------------------------------------------------- /src/plugins/dev_ena/ena_defs.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: Apache-2.0 2 | * Copyright(c) 2023 Cisco Systems, Inc. 3 | */ 4 | 5 | #ifndef _ENA_DEFS_H_ 6 | #define _ENA_DEFS_H_ 7 | 8 | #include 9 | #include 10 | #include 11 | #include 12 | #include 13 | #include 14 | 15 | /* 16 | * MMIO Response 17 | */ 18 | typedef struct 19 | { 20 | u16 req_id; 21 | u16 reg_off; 22 | u32 reg_val; 23 | } ena_mmio_resp_t; 24 | 25 | #endif /* _ENA_DEFS_H_ */ 26 | -------------------------------------------------------------------------------- /src/scripts/vnet/rightpeer/rightpeer-ioam.conf: -------------------------------------------------------------------------------- 1 | comment { connects to right ping target eth3 addr db04::4/64 } 2 | set int ip address GigabitEthernet2/4/0 db04::1/64 3 | set int state GigabitEthernet2/4/0 up 4 | 5 | comment { connects to ioam domain leftpeer addr db03::1/64 } 6 | set int ip address GigabitEthernet2/3/0 db03::3/64 7 | set int state GigabitEthernet2/3/0 up 8 | 9 | set ip neighbor GigabitEthernet2/3/0 db03::1 00:50:56:b7:05:bf 10 | set ip neighbor GigabitEthernet2/4/0 db04::4 00:50:56:b7:05:d2 11 | 12 | ip route add db02::0/64 via db03::1 13 | 14 | ioam set destination db04::4/128 pop 15 | -------------------------------------------------------------------------------- /src/scripts/vnet/vlan: -------------------------------------------------------------------------------- 1 | int create-ethernet 2 | int create-sub fake-eth0 1 3 | set int state fake-eth0 up 4 | set int state fake-eth0.1 up 5 | 6 | packet-generator new { \ 7 | name x \ 8 | limit 1 \ 9 | node ethernet-input \ 10 | interface fake-eth0 \ 11 | size 64-64 \ 12 | data { \ 13 | IP4: 1.2.3 -> 4.5.6 vlan 1 \ 14 | ICMP: 1.2.3.4 -> 5.6.7.8 \ 15 | ICMP echo_request \ 16 | incrementing 100 \ 17 | } \ 18 | } 19 | 20 | tr add pg-input 100 21 | ip route 5.6.7.8/32 via local 22 | ip route 1.2.3.4/32 via local 23 | -------------------------------------------------------------------------------- /src/vlibmemory/FEATURE.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: Binary API shared memory / socket transport library 3 | maintainer: 4 | - Dave Barach 5 | features: 6 | - Transport connection setup and teardown binary API message definitions 7 | - Transport connection setup and teardown binary API message handlers 8 | - Remote procedure call binary API support 9 | - Debug CLI for binary api message trace dump and replay 10 | - Command-line configuration of binary api tracing 11 | description: "Binary API message transport library" 12 | state: production 13 | properties: [API, CLI, MULTITHREAD] 14 | -------------------------------------------------------------------------------- /extras/strongswan/vpp_sswan/docker/configs/startup.conf: -------------------------------------------------------------------------------- 1 | unix { 2 | nodaemon 3 | full-coredump 4 | cli-listen /run/vpp/cli.sock 5 | exec /root/vpp/extras/strongswan/vpp_sswan/docker/configs/vpp.conf 6 | } 7 | 8 | api-trace { 9 | on 10 | } 11 | 12 | socksvr { 13 | default 14 | } 15 | 16 | cpu { 17 | main-core 1 18 | corelist-workers 2 19 | } 20 | 21 | dpdk { 22 | no-pci 23 | } 24 | 25 | plugins { 26 | plugin linux_cp_plugin.so { enable } 27 | plugin ikev2_plugin.so { disable } 28 | } 29 | 30 | linux-cp { 31 | lcp-sync 32 | } 33 | -------------------------------------------------------------------------------- /src/plugins/map/FEATURE.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: Mapping of Address and Port 3 | maintainer: Ole Troan 4 | features: 5 | - LW46 BR (RFC7596): 6 | - Fragmentation and Reassembly 7 | - MAP-E BR (RFC7597) 8 | - MAP-T BR (RFC7599) 9 | description: "Mapping of Address and Port (MAP): IPv4 as a service mechanisms. Tunnel or translate 10 | an IPv4 address, an IPv4 subnet or a shared IPv4 address. 11 | In shared IPv4 address mode, only UDP, TCP and restricted 12 | ICMP is supported." 13 | state: production 14 | properties: [API, CLI, STATS, MULTITHREAD] 15 | -------------------------------------------------------------------------------- /test/patches/scapy-2.4.5/cdp.patch: -------------------------------------------------------------------------------- 1 | diff --git a/scapy/contrib/cdp.py b/scapy/contrib/cdp.py 2 | index a1532b78..83963ff4 100644 3 | --- a/scapy/contrib/cdp.py 4 | +++ b/scapy/contrib/cdp.py 5 | @@ -392,7 +392,7 @@ class _CDPChecksum: 6 | This padding is only used for checksum computation. The original 7 | packet should not be altered.""" 8 | if len(pkt) % 2: 9 | - last_chr = orb(pkt[-1]) 10 | + last_chr = orb(pkt[len(pkt)-1:]) 11 | if last_chr <= 0x80: 12 | return pkt[:-1] + b'\x00' + chb(last_chr) 13 | else: 14 | 15 | -------------------------------------------------------------------------------- /extras/hs-test/docker/Dockerfile.nginx-server: -------------------------------------------------------------------------------- 1 | ARG UBUNTU_VERSION 2 | 3 | FROM ubuntu:${UBUNTU_VERSION} 4 | 5 | RUN apt-get update \ 6 | && apt-get install -y nginx \ 7 | && rm -rf /var/lib/apt/lists/* 8 | 9 | COPY resources/nginx/nginx_server_mirroring.conf /nginx.conf 10 | COPY script/nginx_server_entrypoint.sh /usr/bin/nginx_server_entrypoint.sh 11 | 12 | COPY resources/nginx/html/index.html /usr/share/nginx/index.html 13 | RUN fallocate -l 10MB /usr/share/nginx/httpTestFile 14 | RUN mkdir /usr/share/nginx/upload && chmod 777 /usr/share/nginx/upload 15 | 16 | ENTRYPOINT ["nginx_server_entrypoint.sh"] 17 | -------------------------------------------------------------------------------- /src/scripts/vnet/tf-ucs-1: -------------------------------------------------------------------------------- 1 | comment { connected to Ixia port 1} 2 | set int ip address TenGigabitEthernet4/0/0 1.0.0.2/8 3 | 4 | set int state TenGigabitEthernet4/0/0 up 5 | 6 | comment { connected to Ixia port 2} 7 | set int ip address TenGigabitEthernet4/0/1 2.0.0.2/8 8 | set int state TenGigabitEthernet4/0/1 up 9 | 10 | comment { connected to Ixia port 3} 11 | set int ip address TenGigabitEthernet6/0/0 3.0.0.2/8 12 | set int state TenGigabitEthernet6/0/0 up 13 | 14 | comment { connected to Ixia port 4} 15 | set int ip address TenGigabitEthernet6/0/1 4.0.0.2/8 16 | set int state TenGigabitEthernet6/0/1 up 17 | -------------------------------------------------------------------------------- /test/patches/scapy-2.4.3/issue42580.patch: -------------------------------------------------------------------------------- 1 | *** a/scapy/arch/bpf/core.py.orig 2022-02-02 16:25:51.475845472 +0000 2 | --- b/scapy/arch/bpf/core.py 2022-02-02 16:26:11.868800941 +0000 3 | *************** 4 | *** 28,34 **** 5 | 6 | # ctypes definitions 7 | 8 | ! LIBC = cdll.LoadLibrary(find_library("libc")) 9 | LIBC.ioctl.argtypes = [c_int, c_ulong, c_char_p] 10 | LIBC.ioctl.restype = c_int 11 | 12 | --- 28,34 ---- 13 | 14 | # ctypes definitions 15 | 16 | ! LIBC = cdll.LoadLibrary(find_library("c")) 17 | LIBC.ioctl.argtypes = [c_int, c_ulong, c_char_p] 18 | LIBC.ioctl.restype = c_int 19 | 20 | -------------------------------------------------------------------------------- /src/vnet/devices/pipe/FEATURE.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: Pipe Device 3 | maintainer: Damjan Marion 4 | features: 5 | - L4 checksum offload 6 | description: "Create a pipe device interface, which can pass packets 7 | bidirectionally in one side of the pipe to the other side of 8 | the pipe. While similar in behavior to a unix pipe, it is 9 | not a host-based pipe." 10 | missing: 11 | - does not use hw-address 12 | - does not support tagged traffic 13 | - API dump filtering by sw_if_index 14 | state: production 15 | properties: [API, CLI, STATS, MULTITHREAD] 16 | -------------------------------------------------------------------------------- /src/vnet/ip6-nd/FEATURE.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: IPv6 Neighbor Discovery and Proxy 3 | maintainer: Neale Ranns 4 | features: 5 | - Neighbor discovery. 6 | - ND Auto address configuration 7 | - Multicast Listener Discovery - only as host role to send adverts 8 | - Router Advertisements 9 | - ND (mirror) proxy on given interface 10 | 11 | description: "An implementation of the IPv6 Neighbor discovery protocol as described in RFC4861 and RFC4862. It also implements ND (mirror) proxy on given interface (some inspiration from RFC4389)." 12 | state: production 13 | properties: [API, CLI, MULTITHREAD] 14 | -------------------------------------------------------------------------------- /docs/usecases/contiv/index.rst: -------------------------------------------------------------------------------- 1 | .. _contiv: 2 | 3 | ===================================== 4 | VPP in kubernetes (Contiv/Deprecated) 5 | ===================================== 6 | 7 | This section provides the following information about the Contiv function: 8 | 9 | .. toctree:: 10 | :maxdepth: 2 11 | 12 | K8s_Overview 13 | SECURITY 14 | Vagrant 15 | MANUAL_INSTALL 16 | VPP_CONFIG 17 | VMWARE_FUSION_HOST 18 | NETWORKING 19 | SINGLE_NIC_SETUP 20 | MULTI_NIC_SETUP 21 | CUSTOM_MGMT_NETWORK 22 | Prometheus 23 | VPP_PACKET_TRACING_K8S 24 | VPPTRACE 25 | CORE_FILES 26 | BUG_REPORTS 27 | -------------------------------------------------------------------------------- /docs/usecases/vppcloud/index.rst: -------------------------------------------------------------------------------- 1 | .. _vppcloud: 2 | 3 | VPP in the Cloud 4 | ================ 5 | 6 | This section will cover the VPP deployment inside two different Public Cloud Provider: Amazon AWS and Microsoft Azure. Furthermore, we describe how to interconnect several Public Cloud Regions together with Segment Routing per IPv6 and we show some Performance Evaluation. Finally, we make our Terraform scripts available to the community, which could help in automating the VPP deployment inside the Cloud. 7 | 8 | 9 | .. toctree:: 10 | 11 | vppinaws 12 | ConnectingVPC 13 | vppinazure 14 | automatingthedeployment 15 | -------------------------------------------------------------------------------- /extras/packetforge/parsegraph/nodes/ah.json: -------------------------------------------------------------------------------- 1 | { 2 | "type" : "node", 3 | "name" : "ah", 4 | "layout" : [ 5 | { 6 | "name" : "nextheader", 7 | "size" : "8" 8 | }, 9 | { 10 | "name" : "payloadlength", 11 | "size" : "8" 12 | }, 13 | { 14 | "name" : "reserved", 15 | "size" : "16" 16 | }, 17 | { 18 | "name" : "spi", 19 | "size" : "32" 20 | }, 21 | { 22 | "name" : "sequencenumber", 23 | "size" : "32" 24 | } 25 | ] 26 | } 27 | -------------------------------------------------------------------------------- /src/plugins/crypto_openssl/crypto_openssl.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: Apache-2.0 2 | * Copyright (c) 2023 ARM Ltd and/or its affiliates. 3 | */ 4 | 5 | #ifndef __crypto_openssl_h__ 6 | #define __crypto_openssl_h__ 7 | 8 | typedef void *(crypto_openssl_ctx_fn_t) (vnet_crypto_key_t *key, 9 | vnet_crypto_key_op_t kop, 10 | vnet_crypto_key_index_t idx); 11 | 12 | typedef struct 13 | { 14 | u32 crypto_engine_index; 15 | crypto_openssl_ctx_fn_t *ctx_fn[VNET_CRYPTO_N_ALGS]; 16 | } crypto_openssl_main_t; 17 | 18 | extern crypto_openssl_main_t crypto_openssl_main; 19 | 20 | #endif /* __crypto_openssl_h__ */ 21 | -------------------------------------------------------------------------------- /src/scripts/vnet/mpls-o-ethernet/rightpeer.conf: -------------------------------------------------------------------------------- 1 | comment { local client facing interface } 2 | comment { configure lc4 eth1 at e.g. 6.0.4.4/24 } 3 | 4 | set int ip table GigabitEthernet2/4/0 1 5 | set int ip address GigabitEthernet2/4/0 6.0.4.1/24 6 | set int state GigabitEthernet2/4/0 up 7 | 8 | comment { tunnel to leftpeer } 9 | set int ip address GigabitEthernet2/3/0 6.0.3.3/24 10 | set int state GigabitEthernet2/3/0 up 11 | 12 | mpls encap add label 30 fib 1 dest 6.0.2.1 13 | mpls decap add label 30 fib 1 14 | 15 | create mpls ethernet tunnel dst 00:50:56:b7:05:bf adj 6.0.2.1/24 tx-intfc GigabitEthernet2/3/0 fib-id 1 16 | -------------------------------------------------------------------------------- /src/vpp/conf/80-vpp.conf: -------------------------------------------------------------------------------- 1 | # Number of 2MB hugepages desired 2 | vm.nr_hugepages=1024 3 | 4 | # Must be greater than or equal to (2 * vm.nr_hugepages). 5 | vm.max_map_count=3096 6 | 7 | # All groups allowed to access hugepages 8 | vm.hugetlb_shm_group=0 9 | 10 | # Shared Memory Max must be greater or equal to the total size of hugepages. 11 | # For 2MB pages, TotalHugepageSize = vm.nr_hugepages * 2 * 1024 * 1024 12 | # If the existing kernel.shmmax setting (cat /proc/sys/kernel/shmmax) 13 | # is greater than the calculated TotalHugepageSize then set this parameter 14 | # to current shmmax value. 15 | kernel.shmmax=2147483648 16 | -------------------------------------------------------------------------------- /docs/usecases/vpp_testbench/src/Dockerfile.vpp_testbench.dockerignore: -------------------------------------------------------------------------------- 1 | #------------------------------------------------------------------------------# 2 | # @brief: Dockerfile permit/deny-list for building the VPP testbench 3 | # project. 4 | # @author: Matthew Giassa 5 | # @copyright: (C) Cisco 2021. 6 | #------------------------------------------------------------------------------# 7 | # Ignore everything by default. Permit-list only. 8 | * 9 | 10 | # Entrypoint scripts and other artifacts. 11 | !entrypoint_client.sh 12 | !entrypoint_server.sh 13 | !vpp_testbench_helpers.sh 14 | 15 | -------------------------------------------------------------------------------- /src/scripts/vnet/ige: -------------------------------------------------------------------------------- 1 | packet-generator new { \ 2 | name x \ 3 | limit 1 \ 4 | node ip4-lookup \ 5 | size 50-50 \ 6 | data { \ 7 | ICMP: 1.0.0.1 -> 1.0.0.3 ttl 1 \ 8 | incrementing 30 \ 9 | } \ 10 | } 11 | 12 | comment { tr add pg-input 100 } 13 | set int ip address GigabitEthernet4/0/0 1.0.0.1/24 14 | set int ip address GigabitEthernet4/0/1 1.0.0.2/24 15 | set int state GigabitEthernet4/0/0 up 16 | set int state GigabitEthernet4/0/1 up 17 | 18 | ip route add 1.0.0.3/32 via GigabitEthernet4/0/1 IP4: 00:15:17:61:73:47 -> 00:15:17:61:73:46 19 | tr add ige-input 10 20 | -------------------------------------------------------------------------------- /src/scripts/vnet/srp: -------------------------------------------------------------------------------- 1 | srp create-interfaces 2 | srp create-interfaces 3 | set int hw-class fake-srp0 srp 4 | set int hw-class fake-srp1 srp 5 | 6 | packet-generator new { \ 7 | name x \ 8 | limit 1 \ 9 | node ip4-input \ 10 | size 64-64 \ 11 | data { \ 12 | ICMP: 1.0.0.2 -> 2.0.0.2 \ 13 | ICMP echo_request \ 14 | incrementing 100 \ 15 | } \ 16 | } 17 | 18 | tr add pg-input 100 19 | set int state fake-srp0 up 20 | set int state fake-srp1 up 21 | 22 | set int ip address fake-srp0 1.0.0.1/24 23 | set int ip address fake-srp1 2.0.0.1/24 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /.github/workflows/close_prs.yml: -------------------------------------------------------------------------------- 1 | --- 2 | name: Close Pull Request 3 | 4 | on: 5 | pull_request_target: 6 | types: [opened] 7 | 8 | jobs: 9 | run: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - uses: superbrothers/close-pull-request@v3 13 | with: 14 | # Optional. Post a issue comment just before closing a pull request. 15 | comment: "Thank you so much for your interest! VPP takes patches at https://gerrit.fd.io/ 16 | 17 | ``` 18 | git clone https://gerrit.fd.io/r/vpp 19 | ``` 20 | 21 | Using [git review](https://www.mediawiki.org/wiki/Gerrit/git-review) to contribute patches is recommended" 22 | -------------------------------------------------------------------------------- /src/scripts/vnet/leftpeer/leftpeer-vxlan.conf: -------------------------------------------------------------------------------- 1 | comment { tunnel to rightpeer 6.0.3.3 on vlan 101 } 2 | 3 | set int ip address GigabitEthernet2/3/0 6.0.3.1/24 4 | set int state GigabitEthernet2/3/0 up 5 | 6 | comment { tunnel to thirdpeer 6.0.5.5 on vlan 105 } 7 | set int ip address GigabitEthernet2/7/0 6.0.5.1/24 8 | set int state GigabitEthernet2/7/0 up 9 | 10 | comment { configure lc2 eth1 at e.g. 6.0.2.2/24 } 11 | 12 | set int ip address GigabitEthernet2/2/0 6.0.2.1/24 13 | set int state GigabitEthernet2/2/0 up 14 | 15 | vxlan tunnel src 6.0.3.1 peer 6.0.3.3 peer 6.0.3.5 vni 123 16 | vxlan l2 GigabitEthernet2/2/0 vni 123 17 | 18 | -------------------------------------------------------------------------------- /extras/hs-test/mem_leak_test.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "fmt" 5 | 6 | . "fd.io/hs-test/infra" 7 | ) 8 | 9 | func init() { 10 | RegisterNoTopoSoloTests(MemLeakTest) 11 | } 12 | 13 | func MemLeakTest(s *NoTopoSuite) { 14 | s.SkipUnlessLeakCheck() 15 | vpp := s.GetContainerByName("vpp").VppInstance 16 | /* no goVPP less noise */ 17 | vpp.Disconnect() 18 | vpp.EnableMemoryTrace() 19 | traces1, err := vpp.GetMemoryTrace() 20 | s.AssertNil(err, fmt.Sprint(err)) 21 | vpp.Vppctl("test mem-leak") 22 | traces2, err := vpp.GetMemoryTrace() 23 | s.AssertNil(err, fmt.Sprint(err)) 24 | vpp.MemLeakCheck(traces1, traces2) 25 | } 26 | -------------------------------------------------------------------------------- /extras/strongswan/README.rst: -------------------------------------------------------------------------------- 1 | .. _strongswan_test_doc: 2 | 3 | Strongswan Testing Tool 4 | ======================= 5 | 6 | Simple test framework for VPP and strongSwan scenarios. 7 | 8 | setup and run 9 | ------------- 10 | 11 | ``docker`` is needed to run the tests. 12 | 13 | Create ``~/.vpp_sswan`` file and set ``VPP_BIN`` and ``VPPCTL`` 14 | variables that points to vpp and vppctl binaries, like follows: 15 | 16 | :: 17 | 18 | export VPP_BIN=/path/to/vpp 19 | export VPPCTL=/path/to/vppctl 20 | 21 | To run all test 22 | 23 | :: 24 | 25 | ./run.sh 26 | 27 | or specific test 28 | 29 | :: 30 | 31 | ./test_responder.sh 32 | -------------------------------------------------------------------------------- /src/plugins/http/http_content_types.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: Apache-2.0 2 | * Copyright(c) 2024 Cisco Systems, Inc. 3 | */ 4 | 5 | #ifndef SRC_PLUGINS_HTTP_HTTP_CONTENT_TYPES_H_ 6 | #define SRC_PLUGINS_HTTP_HTTP_CONTENT_TYPES_H_ 7 | 8 | #include 9 | 10 | static http_token_t http_content_types[] = { 11 | #define _(s, ext, str) { http_token_lit (str) }, 12 | foreach_http_content_type 13 | #undef _ 14 | }; 15 | 16 | #define http_content_type_token(e) \ 17 | http_content_types[e].base, http_content_types[e].len 18 | 19 | #endif /* SRC_PLUGINS_HTTP_HTTP_CONTENT_TYPES_H_ */ 20 | -------------------------------------------------------------------------------- /extras/vpp_config/data/80-vpp.conf.template: -------------------------------------------------------------------------------- 1 | # Number of 2MB hugepages desired 2 | vm.nr_hugepages=1024 3 | 4 | # Must be greater than or equal to (2 * vm.nr_hugepages). 5 | vm.max_map_count=3096 6 | 7 | # All groups allowed to access hugepages 8 | vm.hugetlb_shm_group=0 9 | 10 | # Shared Memory Max must be greater or equal to the total size of hugepages. 11 | # For 2MB pages, TotalHugepageSize = vm.nr_hugepages * 2 * 1024 * 1024 12 | # If the existing kernel.shmmax setting (cat /sys/proc/kernel/shmmax) 13 | # is greater than the calculated TotalHugepageSize then set this parameter 14 | # to current shmmax value. 15 | kernel.shmmax=2147483648 16 | -------------------------------------------------------------------------------- /extras/vpp_config/data/auto-config.yaml: -------------------------------------------------------------------------------- 1 | metadata: {system_config_file: /vpp/vpp-config/configs/system-config.yaml, version: 0.1} 2 | nodes: 3 | DUT1: 4 | cpu: {grub_config_file: /vpp/vpp-config/dryrun/default/grub, reserve_vpp_main_core: false, 5 | total_other_cpus: 0, total_vpp_cpus: 0, total_rx_queues: 1} 6 | host: localhost 7 | hugepages: {hugepage_config_file: /vpp/vpp-config/dryrun/sysctl.d/80-vpp.conf, 8 | total: '1024'} 9 | interfaces: {} 10 | tcp: {active_open_sessions: 0, passive_open_sessions: 0} 11 | type: DUT 12 | vpp: 13 | startup_config_file: /vpp/vpp-config/dryrun/vpp/startup.conf 14 | -------------------------------------------------------------------------------- /src/tools/vppapigen/vppapigen_crc.py: -------------------------------------------------------------------------------- 1 | # CRC generation 2 | import json 3 | 4 | process_imports = True 5 | 6 | 7 | # 8 | # Plugin entry point 9 | # 10 | def run(output_dir, input_filename, s): 11 | j = {} 12 | major = 0 13 | minor = 0 14 | patch = 0 15 | if "version" in s["Option"]: 16 | v = s["Option"]["version"] 17 | (major, minor, patch) = v.split(".") 18 | j["_version"] = {"major": major, "minor": minor, "patch": patch} 19 | for t in s["Define"]: 20 | j[t.name] = {"crc": f"{t.crc:#08x}", "version": major, "options": t.options} 21 | return json.dumps(j, indent=4, separators=(",", ": ")) 22 | -------------------------------------------------------------------------------- /src/plugins/vrrp/setup.pg: -------------------------------------------------------------------------------- 1 | 2 | comment { simple debug CLI setup script w/ packet generator test vector } 3 | set term page off 4 | loop create 5 | set int ip address loop0 192.168.1.1/24 6 | set int state loop0 up 7 | 8 | comment { Packet generator script. Src MAC 00:de:ad:be:ef:01 } 9 | comment { Dst mac 01:ba:db:ab:be:01 ethtype 0800 } 10 | packet-generator new { \ 11 | name simple \ 12 | limit 1 \ 13 | size 128-128 \ 14 | interface loop0 \ 15 | node vrrp \ 16 | data { \ 17 | hex 0x00deadbeef0001badbabbe010800 \ 18 | incrementing 30 \ 19 | } \ 20 | } 21 | -------------------------------------------------------------------------------- /src/vnet/feature/FEATURE.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature Arc Support 3 | maintainer: 4 | - Dave Barach 5 | features: 6 | - Feature arc registration 7 | - Feature registration 8 | - Flexible feature order constraint specification 9 | - High-performance internal APIs to dispatch packets to the next feature node 10 | - Topological feature sorting 11 | description: "Constraint-based feature arc configuration, internal 12 | APIs to dispatch packets to the next configured feature. 13 | A fundamental vpp forwarding graph extension mechanism." 14 | state: production 15 | properties: [API, CLI, MULTITHREAD] 16 | -------------------------------------------------------------------------------- /src/vnet/tls/FEATURE.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: Transport Layer Security 3 | maintainer: 4 | - Florin Coras 5 | - Ping Yu 6 | features: 7 | - Framework that supports pluggable TLS engines 8 | - OpenSSL, Picotls and MbedTLS engines 9 | description: "Transport Layer Security (TLS) protocol implementation that 10 | consists of a set of engines that act as wrappers for existing 11 | TLS implementations, e.g., OpenSSL, Picotls and MbedTLS, and 12 | a framework that integrates the engines into VPP's host stack" 13 | state: production 14 | properties: [API, CLI, STATS, MULTITHREAD] 15 | -------------------------------------------------------------------------------- /src/scripts/vnet/rightpeer/rightpeer-mpls.conf: -------------------------------------------------------------------------------- 1 | comment { vpe_phase1d configuration } 2 | 3 | comment { local client facing interface } 4 | comment { configure lc4 eth1 at e.g. 6.0.4.4/24 } 5 | 6 | set int ip table GigabitEthernet2/4/0 1 7 | set int ip address GigabitEthernet2/4/0 6.0.4.1/24 8 | set int state GigabitEthernet2/4/0 up 9 | 10 | comment { tunnel to leftpeer } 11 | set int ip address GigabitEthernet2/3/0 6.0.3.3/24 12 | set int state GigabitEthernet2/3/0 up 13 | 14 | mpls encap add label 30 fib 1 dest 6.0.3.1 15 | mpls decap add label 30 fib 1 16 | 17 | create mpls gre tunnel src 6.0.3.3 dst 6.0.3.1 intfc 6.0.2.1/24 inner-fib-id 1 outer-fib-id 0 18 | -------------------------------------------------------------------------------- /src/plugins/dev_armada/musdk.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: Apache-2.0 2 | * Copyright (c) 2023 Cisco Systems, Inc. 3 | */ 4 | 5 | #ifndef _MUSDK_H_ 6 | #define _MUSDK_H_ 7 | 8 | #define MVCONF_DBG_LEVEL 0 9 | #define MVCONF_PP2_BPOOL_COOKIE_SIZE 32 10 | #define MVCONF_PP2_BPOOL_DMA_ADDR_SIZE 64 11 | #define MVCONF_DMA_PHYS_ADDR_T_SIZE 64 12 | #define MVCONF_SYS_DMA_UIO 13 | #define MVCONF_TYPES_PUBLIC 14 | #define MVCONF_DMA_PHYS_ADDR_T_PUBLIC 15 | 16 | #include 17 | #include 18 | #include 19 | #include 20 | #include 21 | 22 | #endif /* _MUSDK_H_ */ 23 | -------------------------------------------------------------------------------- /src/scripts/vnet/rightpeer/rightpeer-lisp.conf: -------------------------------------------------------------------------------- 1 | comment { local client facing interface } 2 | comment { configure lc4 eth1 at e.g. 6.0.4.4/24 } 3 | 4 | set int ip address GigabitEthernet2/4/0 6.0.4.1/24 5 | set int state GigabitEthernet2/4/0 up 6 | 7 | comment { tunnel to leftpeer } 8 | set int ip address GigabitEthernet2/3/0 6.0.3.3/24 9 | set int state GigabitEthernet2/3/0 up 10 | 11 | lisp gpe tunnel src 6.0.3.3 dst 6.0.3.1 next-ip4 decap-next ip4 iid 3311 12 | set int ip address lisp_gpe_tunnel0 6.0.2.3/24 13 | set int state lisp_gpe_tunnel0 up 14 | 15 | lisp gpe tunnel src 6.0.3.1 dst 6.0.3.3 next-ip4 decap-next ip4 iid 1133 16 | set int state lisp_gpe_tunnel1 up 17 | -------------------------------------------------------------------------------- /src/plugins/http_static/FEATURE.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: Static HTTP(S) Server 3 | maintainer: 4 | - Dave Barach 5 | - Florin Coras 6 | features: 7 | - HTTP GET/POST handling 8 | - LRU file caching 9 | - pluggable URL handlers 10 | - builtin json URL handles: 11 | - version.json - vpp version info 12 | - interface_list.json - list of interfaces 13 | - interface_stats - single interface via HTTP POST 14 | - interface_stats - all intfcs via HTTP GET." 15 | description: "Static HTTP(S) server implemented as a 16 | built-in vpp host stack application. " 17 | state: production 18 | properties: [API, CLI, MULTITHREAD] 19 | --------------------------------------------------------------------------------