├── .ci ├── dpdk-build.sh ├── dpdk-prepare.sh ├── linux-build.sh ├── linux-prepare.sh ├── osx-build.sh ├── osx-prepare.sh ├── windows-build.sh └── windows-prepare.sh ├── .cirrus.yml ├── .editorconfig ├── .github └── workflows │ └── build-and-test.yml ├── .gitignore ├── .mailmap ├── .readthedocs.yaml ├── AUTHORS.rst ├── CONTRIBUTING.rst ├── Documentation ├── _static │ ├── logo.png │ └── overview.png ├── automake.mk ├── conf.py ├── contents.rst ├── faq │ ├── bareudp.rst │ ├── configuration.rst │ ├── contributing.rst │ ├── design.rst │ ├── general.rst │ ├── index.rst │ ├── issues.rst │ ├── openflow.rst │ ├── qos.rst │ ├── releases.rst │ ├── terminology.rst │ ├── vlan.rst │ └── vxlan.rst ├── group-selection-method-property.txt ├── howto │ ├── dpdk.rst │ ├── index.rst │ ├── ipsec.rst │ ├── kvm.rst │ ├── libvirt.rst │ ├── qos.png │ ├── qos.rst │ ├── selinux.rst │ ├── sflow.png │ ├── sflow.rst │ ├── ssl.rst │ ├── tc-offload.rst │ ├── tunneling.png │ ├── tunneling.rst │ ├── userspace-tunneling.rst │ ├── vlan.png │ ├── vlan.rst │ └── vtep.rst ├── index.rst ├── internals │ ├── authors.rst │ ├── bugs.rst │ ├── charter.rst │ ├── committer-emeritus-status.rst │ ├── committer-grant-revocation.rst │ ├── committer-responsibilities.rst │ ├── contributing │ │ ├── backporting-patches.rst │ │ ├── coding-style-windows.rst │ │ ├── coding-style.rst │ │ ├── documentation-style.rst │ │ ├── inclusive-language.rst │ │ ├── index.rst │ │ ├── libopenvswitch-abi.rst │ │ └── submitting-patches.rst │ ├── documentation.rst │ ├── index.rst │ ├── mailing-lists.rst │ ├── maintainers.rst │ ├── patchwork.rst │ ├── release-process.rst │ └── security.rst ├── intro │ ├── index.rst │ ├── install │ │ ├── afxdp.rst │ │ ├── bash-completion.rst │ │ ├── debian.rst │ │ ├── distributions.rst │ │ ├── documentation.rst │ │ ├── dpdk.rst │ │ ├── fedora.rst │ │ ├── general.rst │ │ ├── index.rst │ │ ├── netbsd.rst │ │ ├── rhel.rst │ │ ├── userspace.rst │ │ └── windows.rst │ ├── what-is-ovs.rst │ └── why-ovs.rst ├── ref │ ├── index.rst │ ├── ovs-actions.7.rst │ ├── ovs-appctl.8.rst │ ├── ovs-ctl.8.rst │ ├── ovs-flowviz.8.rst │ ├── ovs-l3ping.8.rst │ ├── ovs-parse-backtrace.8.rst │ ├── ovs-pki.8.rst │ ├── ovs-sim.1.rst │ ├── ovs-tcpdump.8.rst │ ├── ovs-tcpundump.1.rst │ ├── ovs-test.8.rst │ ├── ovs-vlan-test.8.rst │ ├── ovsdb-server.7.rst │ ├── ovsdb.5.rst │ └── ovsdb.7.rst ├── requirements.txt ├── topics │ ├── bonding.rst │ ├── datapath.rst │ ├── design.rst │ ├── dpdk │ │ ├── bridge.rst │ │ ├── index.rst │ │ ├── jumbo-frames.rst │ │ ├── memory.rst │ │ ├── phy.rst │ │ ├── pmd.rst │ │ ├── qos.rst │ │ ├── vdev.rst │ │ └── vhost-user.rst │ ├── flow-visualization.rst │ ├── fuzzing │ │ ├── index.rst │ │ ├── ovs-fuzzers.rst │ │ ├── ovs-fuzzing-infrastructure.rst │ │ ├── security-analysis-of-ovs-fuzzers.rst │ │ └── what-is-fuzzing.rst │ ├── idl-compound-indexes.rst │ ├── index.rst │ ├── integration.rst │ ├── language-bindings.rst │ ├── networking-namespaces.rst │ ├── openflow.rst │ ├── ovs-extensions.rst │ ├── ovsdb-relay.rst │ ├── ovsdb-replication.rst │ ├── porting.rst │ ├── record-replay.rst │ ├── testing.rst │ ├── tracing.rst │ ├── usdt-probes.rst │ ├── userspace-checksum-offloading.rst │ ├── userspace-tso.rst │ ├── userspace-tx-steering.rst │ └── windows.rst └── tutorials │ ├── faucet.rst │ ├── index.rst │ ├── ipsec.rst │ ├── ovs-advanced.rst │ └── ovs-conntrack.rst ├── LICENSE ├── MAINTAINERS.rst ├── Makefile.am ├── NEWS ├── NOTICE ├── README.rst ├── Vagrantfile ├── Vagrantfile-FreeBSD ├── acinclude.m4 ├── appveyor.yml ├── boot.sh ├── build-aux ├── .gitattributes ├── .gitignore ├── automake.mk ├── calculate-schema-cksum ├── cccl ├── check-structs ├── cksum-schema-check ├── dist-docs ├── dpdkstrip.py ├── extract-odp-netlink-h ├── extract-odp-netlink-macros-h ├── extract-odp-netlink-windows-dp-h ├── extract-ofp-actions ├── extract-ofp-errors ├── extract-ofp-fields ├── extract-ofp-msgs ├── gen_ofp_field_decoders ├── generate-dhparams-c ├── initial-tab-allowed-files ├── sodepends.py ├── soexpand.py ├── text2c ├── thread-safety-forbidden └── xml2nroff ├── configure.ac ├── datapath-windows ├── .gitignore ├── Package │ ├── package.VcxProj │ └── package.VcxProj.user ├── automake.mk ├── include │ ├── OvsDpInterfaceCtExt.h │ ├── OvsDpInterfaceExt.h │ └── automake.mk ├── misc │ ├── DriverRecommendedRules.ruleset │ ├── OVS.psm1 │ ├── install.cmd │ └── uninstall.cmd ├── ovsext.sln └── ovsext │ ├── Actions.c │ ├── Actions.h │ ├── Atomic.h │ ├── BufferMgmt.c │ ├── BufferMgmt.h │ ├── Conntrack-ftp.c │ ├── Conntrack-icmp.c │ ├── Conntrack-nat.c │ ├── Conntrack-nat.h │ ├── Conntrack-other.c │ ├── Conntrack-related.c │ ├── Conntrack-tcp.c │ ├── Conntrack.c │ ├── Conntrack.h │ ├── Datapath.c │ ├── Datapath.h │ ├── Debug.c │ ├── Debug.h │ ├── DpInternal.h │ ├── Driver.c │ ├── Ethernet.h │ ├── Event.c │ ├── Event.h │ ├── Flow.c │ ├── Flow.h │ ├── Geneve.c │ ├── Geneve.h │ ├── Gre.c │ ├── Gre.h │ ├── Ip6Fragment.c │ ├── Ip6Fragment.h │ ├── IpFragment.c │ ├── IpFragment.h │ ├── IpHelper.c │ ├── IpHelper.h │ ├── Jhash.c │ ├── Jhash.h │ ├── Meter.c │ ├── Meter.h │ ├── Mpls.h │ ├── NetProto.h │ ├── Netlink │ ├── Netlink.c │ ├── Netlink.h │ ├── NetlinkBuf.c │ ├── NetlinkBuf.h │ ├── NetlinkError.h │ └── NetlinkProto.h │ ├── Offload.c │ ├── Offload.h │ ├── Oid.c │ ├── Oid.h │ ├── PacketIO.c │ ├── PacketIO.h │ ├── PacketParser.c │ ├── PacketParser.h │ ├── Recirc.c │ ├── Recirc.h │ ├── Switch.c │ ├── Switch.h │ ├── Tunnel.c │ ├── Tunnel.h │ ├── TunnelFilter.c │ ├── TunnelIntf.h │ ├── Types.h │ ├── User.c │ ├── User.h │ ├── Util.c │ ├── Util.h │ ├── Vport.c │ ├── Vport.h │ ├── Vxlan.c │ ├── Vxlan.h │ ├── ovsext.inf │ ├── ovsext.rc │ ├── ovsext.vcxproj │ ├── ovsext.vcxproj.user │ ├── precomp.h │ ├── precompsrc.c │ └── resource.h ├── debian ├── .gitignore ├── README.Debian ├── automake.mk ├── changelog ├── clean ├── control.in ├── copyright.in ├── dirs ├── gbp.conf ├── ifupdown.sh ├── ltmain-whole-archive.diff ├── not-installed ├── openvswitch-common.dirs ├── openvswitch-common.install ├── openvswitch-common.lintian-overrides ├── openvswitch-doc.doc-base ├── openvswitch-doc.install ├── openvswitch-ipsec.default ├── openvswitch-ipsec.dirs ├── openvswitch-ipsec.init ├── openvswitch-ipsec.install ├── openvswitch-ipsec.service ├── openvswitch-pki.dirs ├── openvswitch-pki.postinst ├── openvswitch-pki.postrm ├── openvswitch-source.dirs ├── openvswitch-source.docs ├── openvswitch-source.install ├── openvswitch-switch-dpdk.README.Debian ├── openvswitch-switch-dpdk.install ├── openvswitch-switch-dpdk.postinst ├── openvswitch-switch-dpdk.prerm ├── openvswitch-switch.README.Debian ├── openvswitch-switch.default ├── openvswitch-switch.dirs ├── openvswitch-switch.init ├── openvswitch-switch.install ├── openvswitch-switch.links ├── openvswitch-switch.lintian-overrides ├── openvswitch-switch.logrotate ├── openvswitch-switch.ovs-record-hostname.service ├── openvswitch-switch.ovs-vswitchd.service ├── openvswitch-switch.ovsdb-server.service ├── openvswitch-switch.postinst ├── openvswitch-switch.postrm ├── openvswitch-switch.preinst ├── openvswitch-switch.prerm ├── openvswitch-switch.service ├── openvswitch-test.install ├── openvswitch-testcontroller.README.Debian ├── openvswitch-testcontroller.default ├── openvswitch-testcontroller.dirs ├── openvswitch-testcontroller.init ├── openvswitch-testcontroller.install ├── openvswitch-testcontroller.postinst ├── openvswitch-testcontroller.postrm ├── openvswitch-vtep.default ├── openvswitch-vtep.dirs ├── openvswitch-vtep.init ├── openvswitch-vtep.install ├── ovs-systemd-reload ├── python3-openvswitch.install ├── rules ├── source │ ├── format │ └── lintian-overrides ├── tests │ ├── control │ ├── dpdk │ ├── openflow.py │ └── vanilla └── watch ├── include ├── .gitignore ├── automake.mk ├── linux │ ├── automake.mk │ ├── gen_stats.h │ ├── netfilter │ │ └── nf_conntrack_sctp.h │ ├── netlink.h │ ├── openvswitch.h │ ├── pkt_cls.h │ ├── psample.h │ └── tc_act │ │ ├── tc_ct.h │ │ ├── tc_mpls.h │ │ ├── tc_pedit.h │ │ ├── tc_skbedit.h │ │ ├── tc_tunnel_key.h │ │ └── tc_vlan.h ├── openflow │ ├── .gitignore │ ├── automake.mk │ ├── intel-ext.h │ ├── netronome-ext.h │ ├── nicira-ext.h │ ├── openflow-1.0.h │ ├── openflow-1.1.h │ ├── openflow-1.2.h │ ├── openflow-1.3.h │ ├── openflow-1.4.h │ ├── openflow-1.5.h │ ├── openflow-common.h │ └── openflow.h ├── openvswitch │ ├── .gitignore │ ├── automake.mk │ ├── compiler.h │ ├── dynamic-string.h │ ├── flow.h │ ├── geneve.h │ ├── hmap.h │ ├── json.h │ ├── list.h │ ├── match.h │ ├── meta-flow.h │ ├── namemap.h │ ├── netdev.h │ ├── nsh.h │ ├── ofp-actions.h │ ├── ofp-bundle.h │ ├── ofp-connection.h │ ├── ofp-ct.h │ ├── ofp-ed-props.h │ ├── ofp-errors.h │ ├── ofp-flow.h │ ├── ofp-group.h │ ├── ofp-ipfix.h │ ├── ofp-match.h │ ├── ofp-meter.h │ ├── ofp-monitor.h │ ├── ofp-msgs.h │ ├── ofp-packet.h │ ├── ofp-parse.h │ ├── ofp-port.h │ ├── ofp-print.h │ ├── ofp-prop.h │ ├── ofp-protocol.h │ ├── ofp-queue.h │ ├── ofp-switch.h │ ├── ofp-table.h │ ├── ofp-util.h │ ├── ofpbuf.h │ ├── packets.h │ ├── poll-loop.h │ ├── rconn.h │ ├── shash.h │ ├── thread.h │ ├── token-bucket.h │ ├── tun-metadata.h │ ├── type-props.h │ ├── types.h │ ├── usdt-probes.h │ ├── util.h │ ├── uuid.h │ ├── vconn.h │ ├── version.h.in │ └── vlog.h ├── sparse │ ├── arpa │ │ └── inet.h │ ├── assert.h │ ├── automake.mk │ ├── bits │ │ └── floatn.h │ ├── ia32intrin.h │ ├── immintrin.h │ ├── linux │ │ ├── if_packet.h │ │ └── tc_act │ │ │ └── tc_pedit.h │ ├── math.h │ ├── netinet │ │ ├── in.h │ │ └── ip6.h │ ├── netpacket │ │ └── packet.h │ ├── numa.h │ ├── openssl │ │ └── configuration.h │ ├── pthread.h │ ├── rte_byteorder.h │ ├── rte_memcpy.h │ ├── sys │ │ ├── socket.h │ │ ├── sysmacros.h │ │ ├── types.h │ │ └── wait.h │ ├── threads.h │ └── xmmintrin.h └── windows │ ├── arpa │ └── inet.h │ ├── automake.mk │ ├── dirent.h │ ├── getopt.h │ ├── linux │ ├── netfilter │ │ ├── nf_conntrack_common.h │ │ ├── nf_conntrack_ftp.h │ │ ├── nf_conntrack_sctp.h │ │ ├── nf_conntrack_tcp.h │ │ ├── nfnetlink.h │ │ ├── nfnetlink_conntrack.h │ │ └── nfnetlink_cttimeout.h │ ├── pkt_sched.h │ └── types.h │ ├── net │ └── if.h │ ├── netdb.h │ ├── netinet │ ├── icmp6.h │ ├── in.h │ ├── in_systm.h │ ├── ip.h │ ├── ip6.h │ └── tcp.h │ ├── netpacket │ └── packet.h │ ├── poll.h │ ├── strings.h │ ├── sys │ ├── epoll.h │ ├── ioctl.h │ ├── resource.h │ ├── socket.h │ ├── time.h │ ├── uio.h │ ├── un.h │ └── wait.h │ ├── syslog.h │ ├── unistd.h │ └── windefs.h ├── ipsec ├── .gitignore ├── automake.mk └── ovs-monitor-ipsec.in ├── lib ├── .gitignore ├── aes128.c ├── aes128.h ├── async-append-aio.c ├── async-append-null.c ├── async-append.h ├── automake.mk ├── backtrace.c ├── backtrace.h ├── bfd.c ├── bfd.h ├── bitmap.h ├── bundle.c ├── bundle.h ├── byte-order.h ├── byteq.c ├── byteq.h ├── ccmap.c ├── ccmap.h ├── cfm.c ├── cfm.h ├── classifier-private.h ├── classifier.c ├── classifier.h ├── cmap.c ├── cmap.h ├── colors.c ├── colors.h ├── colors.man ├── command-line.c ├── command-line.h ├── common-syn.man ├── common.man ├── common.xml ├── compiler.h ├── connectivity.c ├── connectivity.h ├── conntrack-icmp.c ├── conntrack-other.c ├── conntrack-private.h ├── conntrack-tcp.c ├── conntrack-tp.c ├── conntrack-tp.h ├── conntrack.c ├── conntrack.h ├── cooperative-multitasking-private.h ├── cooperative-multitasking.c ├── cooperative-multitasking.h ├── coverage-unixctl.man ├── coverage.c ├── coverage.h ├── cpu.c ├── cpu.h ├── crc32c.c ├── crc32c.h ├── csum.c ├── csum.h ├── ct-dpif.c ├── ct-dpif.h ├── daemon-private.h ├── daemon-syn.man ├── daemon-unix.c ├── daemon-windows.c ├── daemon.c ├── daemon.h ├── daemon.man ├── daemon.xml ├── db-ctl-base.c ├── db-ctl-base.h ├── db-ctl-base.man ├── db-ctl-base.xml ├── dh2048.pem ├── dh4096.pem ├── dhcp.h ├── dhparams.c ├── dhparams.h ├── dirs.c.in ├── dirs.h ├── dns-resolve-stub.c ├── dns-resolve.c ├── dns-resolve.h ├── dp-packet-gso.c ├── dp-packet-gso.h ├── dp-packet.c ├── dp-packet.h ├── dpctl.c ├── dpctl.h ├── dpctl.man ├── dpdk-stub.c ├── dpdk-unixctl.man ├── dpdk.c ├── dpdk.h ├── dpif-netdev-avx512.c ├── dpif-netdev-extract-avx512.c ├── dpif-netdev-extract-study.c ├── dpif-netdev-lookup-autovalidator.c ├── dpif-netdev-lookup-avx512-gather.c ├── dpif-netdev-lookup-generic.c ├── dpif-netdev-lookup.c ├── dpif-netdev-lookup.h ├── dpif-netdev-perf.c ├── dpif-netdev-perf.h ├── dpif-netdev-private-dfc.c ├── dpif-netdev-private-dfc.h ├── dpif-netdev-private-dpcls.h ├── dpif-netdev-private-dpif.c ├── dpif-netdev-private-dpif.h ├── dpif-netdev-private-extract.c ├── dpif-netdev-private-extract.h ├── dpif-netdev-private-flow.h ├── dpif-netdev-private-thread.h ├── dpif-netdev-private.h ├── dpif-netdev-unixctl.man ├── dpif-netdev.c ├── dpif-netdev.h ├── dpif-netlink-rtnl.c ├── dpif-netlink-rtnl.h ├── dpif-netlink-unixctl.man ├── dpif-netlink.c ├── dpif-netlink.h ├── dpif-provider.h ├── dpif.c ├── dpif.h ├── dummy.c ├── dummy.h ├── dynamic-string.c ├── entropy.c ├── entropy.h ├── fat-rwlock.c ├── fat-rwlock.h ├── fatal-signal.c ├── fatal-signal.h ├── flow.c ├── flow.h ├── getopt_long.c ├── getrusage-windows.c ├── guarded-list.c ├── guarded-list.h ├── hash-aarch64.h ├── hash.c ├── hash.h ├── heap.c ├── heap.h ├── hindex.c ├── hindex.h ├── hmap.c ├── hmapx.c ├── hmapx.h ├── id-fpool.c ├── id-fpool.h ├── id-pool.c ├── id-pool.h ├── if-notifier-bsd.c ├── if-notifier-manual.c ├── if-notifier-stub.c ├── if-notifier.c ├── if-notifier.h ├── ipf.c ├── ipf.h ├── jhash.c ├── jhash.h ├── json.c ├── json.h ├── jsonrpc.c ├── jsonrpc.h ├── lacp.c ├── lacp.h ├── latch-unix.c ├── latch-windows.c ├── latch.h ├── learn.c ├── learn.h ├── learning-switch.c ├── learning-switch.h ├── libopenvswitch.pc.in ├── libopenvswitch.sym.in ├── libsflow.pc.in ├── libsflow.sym.in ├── lldp │ ├── aa-structs.h │ ├── lldp-const.h │ ├── lldp-tlv.h │ ├── lldp.c │ ├── lldpd-structs.c │ ├── lldpd-structs.h │ ├── lldpd.c │ └── lldpd.h ├── lockfile.c ├── lockfile.h ├── mac-learning.c ├── mac-learning.h ├── match.c ├── mcast-snooping.c ├── mcast-snooping.h ├── memory-unixctl.man ├── memory.c ├── memory.h ├── meta-flow.c ├── meta-flow.xml ├── mov-avg.h ├── mpsc-queue.c ├── mpsc-queue.h ├── multipath.c ├── multipath.h ├── namemap.c ├── netdev-afxdp-pool.c ├── netdev-afxdp-pool.h ├── netdev-afxdp.c ├── netdev-afxdp.h ├── netdev-bsd.c ├── netdev-dpdk-unixctl.man ├── netdev-dpdk.c ├── netdev-dpdk.h ├── netdev-dummy.c ├── netdev-linux-private.h ├── netdev-linux.c ├── netdev-linux.h ├── netdev-native-tnl.c ├── netdev-native-tnl.h ├── netdev-offload-dpdk.c ├── netdev-offload-provider.h ├── netdev-offload-tc.c ├── netdev-offload.c ├── netdev-offload.h ├── netdev-provider.h ├── netdev-vport-private.h ├── netdev-vport.c ├── netdev-vport.h ├── netdev-windows.c ├── netdev.c ├── netdev.h ├── netflow.h ├── netlink-conntrack.c ├── netlink-conntrack.h ├── netlink-notifier.c ├── netlink-notifier.h ├── netlink-protocol.h ├── netlink-socket.c ├── netlink-socket.h ├── netlink.c ├── netlink.h ├── netnsid.h ├── nx-match.c ├── nx-match.h ├── object-collection.c ├── object-collection.h ├── odp-execute-avx512.c ├── odp-execute-private.c ├── odp-execute-private.h ├── odp-execute-unixctl.man ├── odp-execute.c ├── odp-execute.h ├── odp-util.c ├── odp-util.h ├── ofp-actions.c ├── ofp-bundle.c ├── ofp-connection.c ├── ofp-ct.c ├── ofp-ed-props.c ├── ofp-errors.c ├── ofp-flow.c ├── ofp-group.c ├── ofp-ipfix.c ├── ofp-match.c ├── ofp-meter.c ├── ofp-monitor.c ├── ofp-msgs.c ├── ofp-packet.c ├── ofp-parse.c ├── ofp-port.c ├── ofp-print.c ├── ofp-prop.c ├── ofp-protocol.c ├── ofp-queue.c ├── ofp-switch.c ├── ofp-table.c ├── ofp-util.c ├── ofp-version-opt.c ├── ofp-version-opt.h ├── ofp-version.man ├── ofpbuf.c ├── ovs-atomic-c++.h ├── ovs-atomic-c11.h ├── ovs-atomic-clang.h ├── ovs-atomic-flag-gcc4.7+.h ├── ovs-atomic-gcc4+.h ├── ovs-atomic-gcc4.7+.h ├── ovs-atomic-i586.h ├── ovs-atomic-locked.c ├── ovs-atomic-locked.h ├── ovs-atomic-msvc.h ├── ovs-atomic-pthreads.h ├── ovs-atomic-x86_64.h ├── ovs-atomic.h ├── ovs-lldp.c ├── ovs-lldp.h ├── ovs-numa.c ├── ovs-numa.h ├── ovs-rcu.c ├── ovs-rcu.h ├── ovs-replay-syn.man ├── ovs-replay.c ├── ovs-replay.h ├── ovs-replay.man ├── ovs-replay.xml ├── ovs-router.c ├── ovs-router.h ├── ovs-thread.c ├── ovs-thread.h ├── ovs.tmac ├── ovsdb-condition.c ├── ovsdb-condition.h ├── ovsdb-cs.c ├── ovsdb-cs.h ├── ovsdb-data.c ├── ovsdb-data.h ├── ovsdb-error.c ├── ovsdb-error.h ├── ovsdb-idl-provider.h ├── ovsdb-idl.c ├── ovsdb-idl.h ├── ovsdb-map-op.c ├── ovsdb-map-op.h ├── ovsdb-parser.c ├── ovsdb-parser.h ├── ovsdb-server-idl.ann ├── ovsdb-session.c ├── ovsdb-session.h ├── ovsdb-set-op.c ├── ovsdb-set-op.h ├── ovsdb-types.c ├── ovsdb-types.h ├── ox-stat.c ├── ox-stat.h ├── packets.c ├── packets.h ├── pcap-file.c ├── pcap-file.h ├── perf-counter.c ├── perf-counter.h ├── poll-loop.c ├── process.c ├── process.h ├── pvector.c ├── pvector.h ├── random.c ├── random.h ├── rconn.c ├── rculist.h ├── reconnect.c ├── reconnect.h ├── route-table-bsd.c ├── route-table-stub.c ├── route-table.c ├── route-table.h ├── rstp-common.h ├── rstp-state-machines.c ├── rstp-state-machines.h ├── rstp.c ├── rstp.h ├── rtbsd.c ├── rtbsd.h ├── rtnetlink.c ├── rtnetlink.h ├── sat-math.h ├── seq.c ├── seq.h ├── service-syn.man ├── service.man ├── sflow.h ├── sflow_agent.c ├── sflow_api.h ├── sflow_poller.c ├── sflow_receiver.c ├── sflow_sampler.c ├── sha1.c ├── sha1.h ├── shash.c ├── signals.c ├── signals.h ├── simap.c ├── simap.h ├── skiplist.c ├── skiplist.h ├── smap.c ├── smap.h ├── socket-util-unix.c ├── socket-util.c ├── socket-util.h ├── sort.c ├── sort.h ├── sset.c ├── sset.h ├── ssl-bootstrap-syn.man ├── ssl-bootstrap.man ├── ssl-bootstrap.xml ├── ssl-connect-syn.man ├── ssl-connect.man ├── ssl-peer-ca-cert-syn.man ├── ssl-peer-ca-cert.man ├── ssl-peer-ca-cert.xml ├── ssl-syn.man ├── ssl.man ├── ssl.xml ├── stdio.c ├── stdio.h.in ├── stopwatch.c ├── stopwatch.h ├── stp.c ├── stp.h ├── stream-fd.c ├── stream-fd.h ├── stream-nossl.c ├── stream-provider.h ├── stream-replay.c ├── stream-ssl.c ├── stream-ssl.h ├── stream-tcp.c ├── stream-unix.c ├── stream-windows.c ├── stream.c ├── stream.h ├── string.c ├── string.h.in ├── strsep.c ├── svec.c ├── svec.h ├── syslog-direct.c ├── syslog-direct.h ├── syslog-libc.c ├── syslog-libc.h ├── syslog-null.c ├── syslog-null.h ├── syslog-provider.h ├── table.c ├── table.h ├── table.man ├── table.xml ├── tc.c ├── tc.h ├── timer.c ├── timer.h ├── timeval.c ├── timeval.h ├── tnl-neigh-cache.c ├── tnl-neigh-cache.h ├── tnl-ports.c ├── tnl-ports.h ├── token-bucket.c ├── tun-metadata.c ├── tun-metadata.h ├── unaligned.h ├── unicode.c ├── unicode.h ├── unixctl-syn.man ├── unixctl.c ├── unixctl.h ├── unixctl.man ├── unixctl.xml ├── userspace-tso.c ├── userspace-tso.h ├── util.c ├── util.h ├── uuid.c ├── uuid.h ├── uuidset.c ├── uuidset.h ├── valgrind.h ├── vconn-active.man ├── vconn-passive.man ├── vconn-provider.h ├── vconn-stream.c ├── vconn.c ├── versions.h ├── vl-mff-map.h ├── vlan-bitmap.c ├── vlan-bitmap.h ├── vlog-syn.man ├── vlog-unixctl.man ├── vlog.c ├── vlog.man ├── vlog.xml ├── vswitch-idl.ann ├── wmi.c └── wmi.h ├── m4 ├── .gitignore ├── absolute-header.m4 ├── automake.mk ├── ax_check_openssl.m4 ├── ax_cxx_compile_stdcxx.m4 ├── ax_func_posix_memalign.m4 ├── compat.m4 ├── include_next.m4 ├── openvswitch.m4 └── pkg.m4 ├── ofproto ├── .gitignore ├── automake.mk ├── bond.c ├── bond.h ├── bundles.c ├── bundles.h ├── collectors.c ├── collectors.h ├── connmgr.c ├── connmgr.h ├── fail-open.c ├── fail-open.h ├── in-band.c ├── in-band.h ├── ipfix-enterprise-entities.def ├── ipfix-gen-entities ├── ipfix.xml ├── libofproto.pc.in ├── libofproto.sym.in ├── names.c ├── netflow.c ├── netflow.h ├── ofproto-dpif-ipfix.c ├── ofproto-dpif-ipfix.h ├── ofproto-dpif-lsample.c ├── ofproto-dpif-lsample.h ├── ofproto-dpif-mirror.c ├── ofproto-dpif-mirror.h ├── ofproto-dpif-monitor.c ├── ofproto-dpif-monitor.h ├── ofproto-dpif-rid.c ├── ofproto-dpif-rid.h ├── ofproto-dpif-sflow.c ├── ofproto-dpif-sflow.h ├── ofproto-dpif-trace.c ├── ofproto-dpif-trace.h ├── ofproto-dpif-unixctl.man ├── ofproto-dpif-upcall.c ├── ofproto-dpif-upcall.h ├── ofproto-dpif-xlate-cache.c ├── ofproto-dpif-xlate-cache.h ├── ofproto-dpif-xlate.c ├── ofproto-dpif-xlate.h ├── ofproto-dpif.c ├── ofproto-dpif.h ├── ofproto-provider.h ├── ofproto-tnl-unixctl.man ├── ofproto-unixctl.man ├── ofproto.c ├── ofproto.h ├── pinsched.c ├── pinsched.h ├── tunnel.c └── tunnel.h ├── ovsdb ├── .gitignore ├── TODO.rst ├── _server.ovsschema ├── _server.xml ├── automake.mk ├── column.c ├── column.h ├── condition.c ├── condition.h ├── dot2pic ├── execution.c ├── file.c ├── file.h ├── jsonrpc-server.c ├── jsonrpc-server.h ├── libovsdb.pc.in ├── libovsdb.sym.in ├── local-config.ovsschema ├── local-config.xml ├── log.c ├── log.h ├── monitor.c ├── monitor.h ├── mutation.c ├── mutation.h ├── ovsdb-client.1.in ├── ovsdb-client.c ├── ovsdb-doc ├── ovsdb-dot.in ├── ovsdb-idlc.1 ├── ovsdb-idlc.in ├── ovsdb-schemas.man ├── ovsdb-server.1.in ├── ovsdb-server.c ├── ovsdb-tool.1.in ├── ovsdb-tool.c ├── ovsdb-util.c ├── ovsdb-util.h ├── ovsdb.c ├── ovsdb.h ├── query.c ├── query.h ├── raft-private.c ├── raft-private.h ├── raft-rpc.c ├── raft-rpc.h ├── raft.c ├── raft.h ├── rbac.c ├── rbac.h ├── relay.c ├── relay.h ├── replication.c ├── replication.h ├── row.c ├── row.h ├── server.c ├── server.h ├── storage.c ├── storage.h ├── table.c ├── table.h ├── transaction-forward.c ├── transaction-forward.h ├── transaction.c ├── transaction.h ├── trigger.c └── trigger.h ├── poc ├── builders │ └── Vagrantfile ├── playbook-centos-builder.yml ├── playbook-fedora-builder.yml └── playbook-ubuntu-builder.yml ├── python ├── .gitignore ├── README.rst ├── TODO.rst ├── automake.mk ├── ovs │ ├── .gitignore │ ├── __init__.py │ ├── _json.c │ ├── compat │ │ ├── __init__.py │ │ └── sortedcontainers │ │ │ ├── LICENSE │ │ │ ├── __init__.py │ │ │ ├── sorteddict.py │ │ │ ├── sortedlist.py │ │ │ └── sortedset.py │ ├── daemon.py │ ├── db │ │ ├── __init__.py │ │ ├── custom_index.py │ │ ├── data.py │ │ ├── error.py │ │ ├── idl.py │ │ ├── parser.py │ │ ├── schema.py │ │ └── types.py │ ├── dirs.py.template │ ├── dns_resolve.py │ ├── fatal_signal.py │ ├── fcntl_win.py │ ├── flow │ │ ├── __init__.py │ │ ├── decoders.py │ │ ├── filter.py │ │ ├── flow.py │ │ ├── kv.py │ │ ├── list.py │ │ ├── odp.py │ │ ├── ofp.py │ │ └── ofp_act.py │ ├── flowviz │ │ ├── __init__.py │ │ ├── console.py │ │ ├── format.py │ │ ├── html_format.py │ │ ├── main.py │ │ ├── odp │ │ │ ├── __init__.py │ │ │ ├── cli.py │ │ │ ├── graph.py │ │ │ ├── html.py │ │ │ └── tree.py │ │ ├── ofp │ │ │ ├── __init__.py │ │ │ ├── cli.py │ │ │ ├── html.py │ │ │ └── logic.py │ │ ├── ovs-flowviz │ │ ├── ovs-flowviz.conf │ │ └── process.py │ ├── json.py │ ├── jsonrpc.py │ ├── ovsuuid.py │ ├── poller.py │ ├── process.py │ ├── reconnect.py │ ├── socket_util.py │ ├── stream.py │ ├── tests │ │ ├── test_decoders.py │ │ ├── test_dns_resolve.py │ │ ├── test_filter.py │ │ ├── test_kv.py │ │ ├── test_list.py │ │ ├── test_odp.py │ │ └── test_ofp.py │ ├── timeval.py │ ├── unixctl │ │ ├── __init__.py │ │ ├── client.py │ │ └── server.py │ ├── util.py │ ├── vlog.py │ └── winutils.py ├── ovs_build_helpers │ ├── __init__.py │ ├── extract_ofp_fields.py │ ├── nroff.py │ └── soutil.py ├── ovstest │ ├── __init__.py │ ├── args.py │ ├── rpcserver.py │ ├── tcp.py │ ├── tests.py │ ├── udp.py │ ├── util.py │ └── vswitch.py ├── setup.py.template └── test_requirements.txt ├── rhel ├── .gitignore ├── README.RHEL.rst ├── automake.mk ├── etc_init.d_openvswitch ├── etc_logrotate.d_openvswitch ├── etc_openvswitch_default.conf ├── etc_sysconfig_network-scripts_ifdown-ovs ├── etc_sysconfig_network-scripts_ifup-ovs ├── openvswitch-fedora.spec.in ├── openvswitch.spec.in ├── usr_lib_systemd_system_openvswitch-ipsec.service ├── usr_lib_systemd_system_openvswitch.service ├── usr_lib_systemd_system_ovs-delete-transient-ports.service ├── usr_lib_systemd_system_ovs-vswitchd.service.in ├── usr_lib_systemd_system_ovsdb-server.service ├── usr_lib_udev_rules.d_91-vfio.rules ├── usr_share_openvswitch_scripts_ovs-systemd-reload ├── usr_share_openvswitch_scripts_sysconfig.template └── usr_share_openvswitch_scripts_systemd_sysconfig.template ├── selinux ├── .gitignore ├── automake.mk ├── openvswitch-custom.fc.in └── openvswitch-custom.te.in ├── tests ├── .gitignore ├── aes128.at ├── alb.at ├── appctl.py ├── atlocal.in ├── auto-attach.at ├── automake.mk ├── bfd.at ├── bridge.at ├── bundle.at ├── cfm.at ├── check-structs.at ├── checkpatch.at ├── classifier.at ├── completion.at ├── daemon-py.at ├── daemon.at ├── dpctl.at ├── dpif-netdev.at ├── drop-stats.at ├── file_name.at ├── flowgen.py ├── fuzz-regression-list.at ├── fuzz-regression.at ├── fuzz-regression │ ├── flow_extract_fuzzer-5112775280951296 │ ├── flow_extract_fuzzer-5457710546944000 │ ├── json_parser_fuzzer-4790908707930112 │ ├── ofp_print_fuzzer-4584019764183040 │ ├── ofp_print_fuzzer-4671928750702592 │ ├── ofp_print_fuzzer-4730143510626304 │ ├── ofp_print_fuzzer-4854119633256448 │ ├── ofp_print_fuzzer-5070973479944192 │ ├── ofp_print_fuzzer-5072291707748352 │ ├── ofp_print_fuzzer-5147430386401280 │ ├── ofp_print_fuzzer-5168455220199424 │ ├── ofp_print_fuzzer-5190507327127552 │ ├── ofp_print_fuzzer-5204186701496320 │ ├── ofp_print_fuzzer-5394482341085184 │ ├── ofp_print_fuzzer-5395207246839808 │ ├── ofp_print_fuzzer-5647458888581120 │ ├── ofp_print_fuzzer-5674119268925440 │ ├── ofp_print_fuzzer-5674419757252608 │ ├── ofp_print_fuzzer-5677588436484096 │ ├── ofp_print_fuzzer-5706562554298368 │ ├── ofp_print_fuzzer-5722747668791296 │ ├── ofp_print_fuzzer-6285128790704128 │ ├── ofp_print_fuzzer-6470117922701312 │ ├── ofp_print_fuzzer-6502620041576448 │ └── ofp_print_fuzzer-6540965472632832 ├── genpkts.py ├── glibc.supp ├── heap.at ├── idltest.ann ├── idltest.ovsschema ├── idltest2.ovsschema ├── json.at ├── jsonrpc-py.at ├── jsonrpc.at ├── lacp.at ├── learn.at ├── learning-switch.at ├── lib.at ├── library.at ├── lockfile.at ├── mcast-snooping.at ├── mpls-xlate.at ├── multipath.at ├── netdev-type.at ├── nsh.at ├── odp.at ├── ofp-actions.at ├── ofp-errors.at ├── ofp-print.at ├── ofp-util.at ├── ofproto-dpif.at ├── ofproto-macros.at ├── ofproto.at ├── openssl.supp ├── oss-fuzz │ ├── automake.mk │ ├── config │ │ ├── flow_extract_target.options │ │ ├── json_parser_target.options │ │ ├── miniflow_target.options │ │ ├── odp.dict │ │ ├── odp_target.options │ │ ├── ofctl_parse_target.options │ │ ├── ofp-flow.dict │ │ ├── ofp_print_target.options │ │ └── ovs.dict │ ├── flow_extract_target.c │ ├── fuzzer.h │ ├── json_parser_target.c │ ├── miniflow_target.c │ ├── odp_target.c │ ├── ofctl_parse_target.c │ └── ofp_print_target.c ├── ovs-macros.at ├── ovs-ofctl.at ├── ovs-router.at ├── ovs-vsctl.at ├── ovs-vswitchd.at ├── ovsdb-client.at ├── ovsdb-cluster-testsuite.at ├── ovsdb-cluster.at ├── ovsdb-column.at ├── ovsdb-condition.at ├── ovsdb-data.at ├── ovsdb-execution.at ├── ovsdb-idl.at ├── ovsdb-lock.at ├── ovsdb-log.at ├── ovsdb-macros.at ├── ovsdb-monitor-sort.py ├── ovsdb-monitor.at ├── ovsdb-mutation.at ├── ovsdb-query.at ├── ovsdb-rbac.at ├── ovsdb-replication.at ├── ovsdb-row.at ├── ovsdb-schema.at ├── ovsdb-server.at ├── ovsdb-table.at ├── ovsdb-tool.at ├── ovsdb-transaction.at ├── ovsdb-trigger.at ├── ovsdb-types.at ├── ovsdb.at ├── ovstest.c ├── ovstest.h ├── packet-type-aware.at ├── pmd.at ├── pytest.at ├── reconnect.at ├── rstp.at ├── run-oftest ├── run-ryu ├── sendpkt.py ├── stp.at ├── system-afxdp-macros.at ├── system-afxdp-testsuite.at ├── system-afxdp.at ├── system-common-macros.at ├── system-dpdk-find-device.py ├── system-dpdk-macros.at ├── system-dpdk-testsuite.at ├── system-dpdk.at ├── system-interface.at ├── system-ipsec.at ├── system-kmod-macros.at ├── system-kmod-testsuite.at ├── system-layer3-tunnels.at ├── system-offloads-testsuite-macros.at ├── system-offloads-testsuite.at ├── system-offloads-traffic.at ├── system-route.at ├── system-tap.at ├── system-traffic.at ├── system-tso-macros.at ├── system-tso-testsuite.at ├── system-userspace-macros.at ├── system-userspace-packet-type-aware.at ├── system-userspace-testsuite.at ├── test-aa.c ├── test-aes128.c ├── test-atomic.c ├── test-barrier.c ├── test-bitmap.c ├── test-bundle.c ├── test-byte-order.c ├── test-byteq.c ├── test-ccmap.c ├── test-classifier.c ├── test-cmap.c ├── test-conntrack.c ├── test-cooperative-multitasking.c ├── test-csum.c ├── test-daemon.py ├── test-dpparse.py ├── test-flows.c ├── test-hash.c ├── test-heap.c ├── test-hindex.c ├── test-hmap.c ├── test-id-fpool.c ├── test-json.c ├── test-json.py ├── test-jsonrpc.c ├── test-jsonrpc.py ├── test-l7.py ├── test-lib-route-table.c ├── test-lib.c ├── test-list.c ├── test-lockfile.c ├── test-mpsc-queue.c ├── test-multipath.c ├── test-netflow.c ├── test-netlink-conntrack.c ├── test-netlink-policy.c ├── test-odp.c ├── test-ofparse.py ├── test-ofpbuf.c ├── test-ovsdb.c ├── test-ovsdb.py ├── test-packets.c ├── test-psample.c ├── test-random.c ├── test-rcu.c ├── test-rculist.c ├── test-reconnect.c ├── test-reconnect.py ├── test-rstp.c ├── test-sflow.c ├── test-sha1.c ├── test-skiplist.c ├── test-stopwatch.c ├── test-stp.c ├── test-stream.c ├── test-stream.py ├── test-strtok_r.c ├── test-type-props.c ├── test-unix-socket.c ├── test-unix-socket.py ├── test-unixctl.c ├── test-unixctl.py ├── test-util.c ├── test-uuid.c ├── test-uuidset.c ├── test-vconn.c ├── test-vlog.py ├── testsuite.at ├── testsuite.patch ├── tunnel-push-pop-ipv6.at ├── tunnel-push-pop.at ├── tunnel.at ├── unixctl-py.at ├── uuid.at ├── uuidfilt.py ├── valgrind-wrapper.in ├── vconn.at ├── vlog.at └── vtep-ctl.at ├── third-party ├── .gitignore ├── README.rst ├── automake.mk └── ofp-tcpdump.patch ├── tutorial ├── .gitignore ├── automake.mk ├── ovs-sandbox ├── t-setup ├── t-stage0 ├── t-stage1 ├── t-stage2 ├── t-stage3 └── t-stage4 ├── utilities ├── .gitignore ├── automake.mk ├── bugtool │ ├── .gitignore │ ├── automake.mk │ ├── ovs-bugtool-daemons-ver │ ├── ovs-bugtool-fdb-show │ ├── ovs-bugtool-get-dpdk-nic-numa │ ├── ovs-bugtool-get-port-stats │ ├── ovs-bugtool-ovs-appctl-dpif │ ├── ovs-bugtool-ovs-bridge-datapath-type │ ├── ovs-bugtool-ovs-ofctl-loop-over-bridges │ ├── ovs-bugtool-ovs-vswitchd-threads-affinity │ ├── ovs-bugtool-qos-configs │ ├── ovs-bugtool-tc-class-show │ ├── ovs-bugtool.8.in │ ├── ovs-bugtool.in │ └── plugins │ │ ├── kernel-info │ │ └── openvswitch.xml │ │ ├── network-status │ │ └── openvswitch.xml │ │ ├── system-configuration.xml │ │ ├── system-configuration │ │ └── openvswitch.xml │ │ └── system-logs │ │ └── openvswitch.xml ├── checkpatch.py ├── docker │ ├── Makefile │ ├── create_ovs_db.sh │ ├── debian │ │ ├── Dockerfile │ │ └── build-kernel-modules.sh │ ├── ovs-override.conf │ └── start-ovs ├── gdb │ └── ovs_gdb.py ├── nlmon.c ├── ovs-appctl-bashcomp.bash ├── ovs-appctl.c ├── ovs-check-dead-ifs.in ├── ovs-ctl.in ├── ovs-dev.py ├── ovs-docker ├── ovs-dpctl-top.8.in ├── ovs-dpctl-top.in ├── ovs-dpctl.8.in ├── ovs-dpctl.c ├── ovs-kmod-ctl.8 ├── ovs-kmod-ctl.in ├── ovs-l3ping.in ├── ovs-lib.in ├── ovs-ofctl.8.in ├── ovs-ofctl.c ├── ovs-parse-backtrace.in ├── ovs-pcap.1.in ├── ovs-pcap.in ├── ovs-pipegen.py ├── ovs-pki.in ├── ovs-save ├── ovs-sim.in ├── ovs-tcpdump.in ├── ovs-tcpundump.in ├── ovs-test.in ├── ovs-testcontroller.8.in ├── ovs-testcontroller.c ├── ovs-vlan-test.in ├── ovs-vsctl-bashcomp.bash ├── ovs-vsctl.8.in ├── ovs-vsctl.c └── usdt-scripts │ ├── bridge_loop.bt │ ├── dpif_op_nl_monitor.py │ ├── flow_reval_monitor.py │ ├── kernel_delay.py │ ├── kernel_delay.rst │ ├── reval_monitor.py │ ├── upcall_cost.py │ ├── upcall_monitor.py │ └── usdt_lib.py ├── vswitchd ├── .gitignore ├── automake.mk ├── bridge.c ├── bridge.h ├── ovs-vswitchd.8.in ├── ovs-vswitchd.c ├── system-stats.c ├── system-stats.h ├── vswitch.ovsschema └── vswitch.xml ├── vtep ├── .gitignore ├── automake.mk ├── libvtep.sym.in ├── ovs-vtep.in ├── vtep-ctl.8.in ├── vtep-ctl.c ├── vtep-idl.ann ├── vtep.ovsschema └── vtep.xml └── windows ├── .gitignore ├── README.rst ├── automake.mk ├── ovs-windows-installer.sln └── ovs-windows-installer ├── Actions └── OVSActions.js ├── Binaries └── .gitignore ├── CustomActions.wxs ├── Dialogs ├── BeginningDialog.wxs ├── MyEndDialog.wxs ├── MyTroubleshootDialog.wxs └── UserFinishDialog.wxs ├── Driver ├── .gitignore ├── Win10 │ └── .gitignore ├── Win8.1 │ └── .gitignore └── Win8 │ └── .gitignore ├── License.rtf ├── Product.wxs ├── Redist └── .gitignore ├── Services └── .gitignore ├── Symbols └── .gitignore ├── UI.wxs ├── images ├── bannrbmp.bmp └── dlgbmp.bmp └── ovs-windows-installer.wixproj /.ci/dpdk-prepare.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -ev 4 | 5 | # Installing wheel separately because it may be needed to build some 6 | # of the packages during dependency backtracking and pip >= 22.0 will 7 | # abort backtracking on build failures: 8 | # https://github.com/pypa/pip/issues/10655 9 | pip3 install --disable-pip-version-check --user wheel 10 | pip3 install --disable-pip-version-check --user pyelftools 11 | pip3 install --user 'meson>=1.4,<1.5' 12 | -------------------------------------------------------------------------------- /.ci/linux-prepare.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -ev 4 | 5 | if [ "$DEB_PACKAGE" ]; then 6 | # We're not using sparse for debian packages, tests are skipped and 7 | # all extra dependencies tracked by mk-build-deps. 8 | exit 0 9 | fi 10 | 11 | # Build and install sparse. 12 | # 13 | # Disabling sqlite support because sindex build fails and we don't 14 | # really need this utility being installed. 15 | if test -d sparse; then 16 | pushd sparse 17 | make -j4 HAVE_SQLITE= install 18 | popd 19 | fi 20 | 21 | # Installing wheel separately because it may be needed to build some 22 | # of the packages during dependency backtracking and pip >= 22.0 will 23 | # abort backtracking on build failures: 24 | # https://github.com/pypa/pip/issues/10655 25 | pip3 install --disable-pip-version-check --user wheel 26 | pip3 install --disable-pip-version-check --user \ 27 | flake8 netaddr pyparsing sarif-tools==2.0.0 sphinx setuptools 28 | 29 | # Install python test dependencies 30 | pip3 install -r python/test_requirements.txt 31 | 32 | # Make sure IPv6 is enabled to avoid skipping of IPv6 related tests. 33 | sudo sysctl -w net.ipv6.conf.all.disable_ipv6=0 34 | -------------------------------------------------------------------------------- /.ci/osx-build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -o errexit 4 | 5 | CFLAGS="-Werror $CFLAGS" 6 | EXTRA_OPTS="" 7 | 8 | function configure_ovs() 9 | { 10 | ./boot.sh && ./configure $* 11 | } 12 | 13 | configure_ovs $EXTRA_OPTS $OPTS $* 14 | 15 | if [ "$CC" = "clang" ]; then 16 | make CFLAGS="$CFLAGS -Wno-error=unused-command-line-argument" 17 | else 18 | make CFLAGS="$CFLAGS $BUILD_ENV" 19 | fi 20 | 21 | if [ "$TESTSUITE" ] && [ "$CC" != "clang" ]; then 22 | make distcheck RECHECK=yes 23 | fi 24 | 25 | exit 0 26 | -------------------------------------------------------------------------------- /.ci/osx-prepare.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -ev 3 | pip3 install --user --upgrade docutils 4 | -------------------------------------------------------------------------------- /.ci/windows-build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -ex 3 | 4 | CONFIGURATION=$1 5 | 6 | ./boot.sh 7 | ./configure CC=build-aux/cccl LD="$(which link)" \ 8 | LIBS="-lws2_32 -lShlwapi -liphlpapi -lwbemuuid -lole32 -loleaut32" \ 9 | --prefix=C:/openvswitch/usr --localstatedir=C:/openvswitch/var \ 10 | --sysconfdir=C:/openvswitch/etc --with-pthread=c:/PTHREADS-BUILT/ \ 11 | --enable-ssl --with-openssl=C:/OpenSSL-Win64 \ 12 | --with-vstudiotarget="${CONFIGURATION}" || (cat config.log && exit 1) 13 | 14 | make -j4 15 | make datapath_windows_analyze 16 | make install 17 | make windows_installer 18 | -------------------------------------------------------------------------------- /.ci/windows-prepare.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -ex 3 | 4 | mkdir -p /var/cache/pacman/pkg/ 5 | pacman -S --noconfirm --needed automake autoconf libtool make patch 6 | 7 | # Use an MSVC linker and a Windows version of Python. 8 | mv $(which link) $(which link)_copy 9 | mv $(which python3) $(which python3)_copy 10 | 11 | cd /c/pthreads4w-code && nmake all install 12 | -------------------------------------------------------------------------------- /.cirrus.yml: -------------------------------------------------------------------------------- 1 | freebsd_build_task: 2 | 3 | freebsd_instance: 4 | matrix: 5 | image_family: freebsd-13-4-snap 6 | image_family: freebsd-14-2-snap 7 | cpu: 4 8 | memory: 4G 9 | 10 | env: 11 | DEPENDENCIES: automake libtool gmake gcc openssl python3 12 | PY_DEPS: sphinx|netaddr|pyparsing 13 | matrix: 14 | COMPILER: gcc 15 | COMPILER: clang 16 | 17 | prepare_script: 18 | - sysctl -w kern.coredump=0 19 | - pkg update -f 20 | - pkg install -y ${DEPENDENCIES} 21 | $(pkg search -xq "^py3[0-9]+-(${PY_DEPS})-[0-9]+" | xargs) 22 | 23 | configure_script: 24 | - ./boot.sh 25 | - ./configure CC=${COMPILER} CFLAGS="-g -O2 -Wall" 26 | MAKE=gmake --enable-Werror 27 | || { cat config.log; exit 1; } 28 | 29 | build_script: 30 | - gmake -j8 31 | 32 | check_script: 33 | - gmake -j8 check TESTSUITEFLAGS=-j8 RECHECK=yes 34 | || { cat ./tests/testsuite.log; exit 1; } 35 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # See https://editorconfig.org/ for syntax reference. 2 | 3 | root = true 4 | 5 | # No wildcard sections [*] and [**] because properties cannot be 6 | # applied safely to any filetype in general. 7 | 8 | # Property trim_trailing_whitespace should not be defined at all 9 | # because it is interpreted differently by editors. 10 | 11 | [*.{c,h}] 12 | charset = utf-8 13 | end_of_line = lf 14 | indent_style = space 15 | indent_size = 4 16 | insert_final_newline = true 17 | max_line_length = 79 18 | 19 | [include/linux/**.h] 20 | indent_style = tab 21 | indent_size = tab 22 | tab_width = 8 23 | 24 | [include/sparse/rte_*.h] 25 | indent_style = tab 26 | tab_width = 8 27 | 28 | [include/windows/getopt.h] 29 | indent_style = tab 30 | indent_size = tab 31 | tab_width = 8 32 | 33 | [include/windows/netinet/{icmp6,ip6}.h] 34 | indent_style = tab 35 | indent_size = tab 36 | tab_width = 8 37 | 38 | [lib/getopt_long.c] 39 | indent_style = tab 40 | indent_size = tab 41 | tab_width = 8 42 | 43 | [lib/sflow*.{c,h}] 44 | indent_style = tab 45 | indent_size = tab 46 | tab_width = 8 47 | 48 | [lib/strsep.c] 49 | indent_style = tab 50 | indent_size = tab 51 | tab_width = 8 52 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | #*# 2 | *.a 3 | *.d 4 | *.gcno 5 | *.gcda 6 | *.ko 7 | *.la 8 | *.lo 9 | *.loT 10 | *.mod.c 11 | *.o 12 | *.obj 13 | *.exe 14 | *.exp 15 | *.ilk 16 | *.lib 17 | *.pdb 18 | *.pyc 19 | *.retry 20 | *.so 21 | *.suo 22 | **/*.sym 23 | *~ 24 | *,cover 25 | .#* 26 | .*.cmd 27 | .*.swp 28 | .coverage 29 | .deps 30 | .dirstamp 31 | .libs 32 | .tmp_versions 33 | .vagrant 34 | /Makefile 35 | /Makefile.in 36 | /aclocal.m4 37 | /all-gitfiles 38 | /autom4te.cache 39 | /build-arch-stamp 40 | /build-indep-stamp 41 | /compile 42 | /config.guess 43 | /config.h 44 | /config.h.in 45 | /config.log 46 | /config.status 47 | /config.sub 48 | /configure 49 | /configure-stamp 50 | /depcomp 51 | /distfiles 52 | /dist-docs 53 | /flake8-check 54 | /docs-check 55 | /install-sh 56 | /libtool 57 | /manpages.mk 58 | /manpage-check 59 | /missing 60 | /missing-distfiles 61 | /package.m4 62 | /stamp-h1 63 | /_build-gcc 64 | /_build-clang 65 | Module.symvers 66 | TAGS 67 | cscope.* 68 | tags 69 | _debian 70 | _dpdk 71 | odp-netlink.h 72 | odp-netlink-macros.h 73 | OvsDpInterface.h 74 | /.vagrant/ 75 | testsuite.tmp.orig 76 | /rpm/ 77 | /openvswitch*.tar.gz 78 | /tests/lcov/ 79 | /Documentation/_build 80 | /.venv 81 | /cxx-check 82 | -------------------------------------------------------------------------------- /.readthedocs.yaml: -------------------------------------------------------------------------------- 1 | # .readthedocs.yaml 2 | # Read the Docs configuration file. 3 | # See https://docs.readthedocs.io/en/stable/config-file/v2.html for details. 4 | 5 | # Required. 6 | version: 2 7 | 8 | # Set the OS, Python version, etc. 9 | build: 10 | os: ubuntu-22.04 11 | tools: 12 | python: "3.12" 13 | 14 | # Build documentation in the "Documentation/" directory with Sphinx. 15 | sphinx: 16 | configuration: Documentation/conf.py 17 | builder: "dirhtml" 18 | 19 | # Build all formats: HTML, PDF, ePub. 20 | formats: all 21 | 22 | # Declare the Python requirements. 23 | python: 24 | install: 25 | - requirements: Documentation/requirements.txt 26 | -------------------------------------------------------------------------------- /Documentation/_static/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openvswitch/ovs/0e419d1b4fc9207e77c240c287000d57ddbf6915/Documentation/_static/logo.png -------------------------------------------------------------------------------- /Documentation/_static/overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openvswitch/ovs/0e419d1b4fc9207e77c240c287000d57ddbf6915/Documentation/_static/overview.png -------------------------------------------------------------------------------- /Documentation/howto/qos.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openvswitch/ovs/0e419d1b4fc9207e77c240c287000d57ddbf6915/Documentation/howto/qos.png -------------------------------------------------------------------------------- /Documentation/howto/sflow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openvswitch/ovs/0e419d1b4fc9207e77c240c287000d57ddbf6915/Documentation/howto/sflow.png -------------------------------------------------------------------------------- /Documentation/howto/tunneling.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openvswitch/ovs/0e419d1b4fc9207e77c240c287000d57ddbf6915/Documentation/howto/tunneling.png -------------------------------------------------------------------------------- /Documentation/howto/vlan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openvswitch/ovs/0e419d1b4fc9207e77c240c287000d57ddbf6915/Documentation/howto/vlan.png -------------------------------------------------------------------------------- /Documentation/internals/authors.rst: -------------------------------------------------------------------------------- 1 | .. 2 | Licensed under the Apache License, Version 2.0 (the "License"); you may 3 | not use this file except in compliance with the License. You may obtain 4 | a copy of the License at 5 | 6 | http://www.apache.org/licenses/LICENSE-2.0 7 | 8 | Unless required by applicable law or agreed to in writing, software 9 | distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 10 | WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 11 | License for the specific language governing permissions and limitations 12 | under the License. 13 | 14 | Convention for heading levels in Open vSwitch documentation: 15 | 16 | ======= Heading 0 (reserved for the title in a document) 17 | ------- Heading 1 18 | ~~~~~~~ Heading 2 19 | +++++++ Heading 3 20 | ''''''' Heading 4 21 | 22 | Avoid deeper levels because they do not render well. 23 | 24 | .. include:: ../../AUTHORS.rst 25 | -------------------------------------------------------------------------------- /Documentation/intro/index.rst: -------------------------------------------------------------------------------- 1 | .. 2 | Copyright (c) 2016, Stephen Finucane 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | not use this file except in compliance with the License. You may obtain 6 | a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | License for the specific language governing permissions and limitations 14 | under the License. 15 | 16 | Convention for heading levels in Open vSwitch documentation: 17 | 18 | ======= Heading 0 (reserved for the title in a document) 19 | ------- Heading 1 20 | ~~~~~~~ Heading 2 21 | +++++++ Heading 3 22 | ''''''' Heading 4 23 | 24 | Avoid deeper levels because they do not render well. 25 | 26 | =============== 27 | Getting Started 28 | =============== 29 | 30 | How to get started with Open vSwitch. 31 | 32 | .. toctree:: 33 | :maxdepth: 2 34 | 35 | what-is-ovs 36 | why-ovs 37 | install/index 38 | -------------------------------------------------------------------------------- /Documentation/ref/ovs-parse-backtrace.8.rst: -------------------------------------------------------------------------------- 1 | =================== 2 | ovs-parse-backtrace 3 | =================== 4 | 5 | Synopsis 6 | ======== 7 | 8 | ``ovs-appctl backtrace | ovs-parse-backtrace []`` 9 | 10 | ``ovs-parse-backtrace [] < `` 11 | 12 | Description 13 | =========== 14 | 15 | In some configurations, many Open vSwitch daemons can produce a series of 16 | backtraces using the ``ovs-appctl backtrace`` command. Users can analyze 17 | these backtraces to figure out what the given Open vSwitch daemon may be 18 | spending most of its time doing. ``ovs-parse-backtrace`` makes this output 19 | easier to interpret. 20 | 21 | The ``ovs-appctl backtrace`` output must be supplied on standard input. The 22 | binary that produced the output should be supplied as the sole non-option 23 | argument. For best results, the binary should have debug symbols. 24 | 25 | Options 26 | ======= 27 | 28 | * ``--help`` 29 | 30 | Prints a usage message and exits. 31 | 32 | * ``--version`` 33 | 34 | Prints the version and exits. 35 | -------------------------------------------------------------------------------- /Documentation/ref/ovs-tcpundump.1.rst: -------------------------------------------------------------------------------- 1 | ============= 2 | ovs-tcpundump 3 | ============= 4 | 5 | Synopsis 6 | ======== 7 | 8 | ``ovs-tcpundump < `` 9 | 10 | ``ovs-tcpundump -h | --help`` 11 | 12 | ``ovs-tcpundump -V | --version`` 13 | 14 | The ``ovs-tcpundump`` program reads ``tcpdump -xx output`` from stdin, 15 | looking for hexadecimal packet data, and dumps each Ethernet as a 16 | single hexadecimal string on stdout. This format is suitable for use 17 | with the ``ofproto/trace`` command supported by ``ovs-vswitchd(8)`` 18 | via ``ovs-appctl(8)``. 19 | 20 | At least two ``-x`` or ``-X`` options must be given, otherwise the 21 | output will omit the Ethernet header, which prevents the output from 22 | being used with ``ofproto/trace``. 23 | 24 | Options 25 | ======= 26 | 27 | * ``-h`` or ``--help`` 28 | 29 | Prints a brief help message to the console. 30 | 31 | * ``-V`` or ``--version`` 32 | 33 | Prints version information to the console. 34 | 35 | See Also 36 | ======== 37 | 38 | ``ovs-appctl(8)``, ``ovs-vswitchd(8)``, ``ovs-pcap(1)``, 39 | ``tcpdump(8)``, ``wireshark(8)``. 40 | -------------------------------------------------------------------------------- /Documentation/requirements.txt: -------------------------------------------------------------------------------- 1 | sphinx>=1.1 2 | ovs_sphinx_theme>=1.0,<1.1 3 | -------------------------------------------------------------------------------- /Documentation/tutorials/index.rst: -------------------------------------------------------------------------------- 1 | .. 2 | Copyright (c) 2016, Stephen Finucane 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | not use this file except in compliance with the License. You may obtain 6 | a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | License for the specific language governing permissions and limitations 14 | under the License. 15 | 16 | Convention for heading levels in Open vSwitch documentation: 17 | 18 | ======= Heading 0 (reserved for the title in a document) 19 | ------- Heading 1 20 | ~~~~~~~ Heading 2 21 | +++++++ Heading 3 22 | ''''''' Heading 4 23 | 24 | Avoid deeper levels because they do not render well. 25 | 26 | ========= 27 | Tutorials 28 | ========= 29 | 30 | Getting started with Open vSwitch (OVS). 31 | 32 | .. toctree:: 33 | :maxdepth: 2 34 | 35 | faucet 36 | ipsec 37 | ovs-advanced 38 | ovs-conntrack 39 | -------------------------------------------------------------------------------- /boot.sh: -------------------------------------------------------------------------------- 1 | #! /bin/sh 2 | autoreconf --install --force 3 | -------------------------------------------------------------------------------- /build-aux/.gitattributes: -------------------------------------------------------------------------------- 1 | * text eol=lf 2 | -------------------------------------------------------------------------------- /build-aux/.gitignore: -------------------------------------------------------------------------------- 1 | /compile 2 | /config.guess 3 | /config.sub 4 | /depcomp 5 | /install-sh 6 | /ltmain.sh 7 | /missing 8 | -------------------------------------------------------------------------------- /build-aux/automake.mk: -------------------------------------------------------------------------------- 1 | EXTRA_DIST += \ 2 | build-aux/calculate-schema-cksum \ 3 | build-aux/cccl \ 4 | build-aux/check-structs \ 5 | build-aux/cksum-schema-check \ 6 | build-aux/dist-docs \ 7 | build-aux/dpdkstrip.py \ 8 | build-aux/extract-odp-netlink-h \ 9 | build-aux/extract-odp-netlink-macros-h \ 10 | build-aux/extract-odp-netlink-windows-dp-h \ 11 | build-aux/extract-ofp-actions \ 12 | build-aux/extract-ofp-errors \ 13 | build-aux/extract-ofp-fields \ 14 | build-aux/extract-ofp-msgs \ 15 | build-aux/gen_ofp_field_decoders \ 16 | build-aux/generate-dhparams-c \ 17 | build-aux/initial-tab-allowed-files \ 18 | build-aux/sodepends.py \ 19 | build-aux/soexpand.py \ 20 | build-aux/text2c \ 21 | build-aux/xml2nroff 22 | 23 | FLAKE8_PYFILES += \ 24 | build-aux/dpdkstrip.py \ 25 | build-aux/extract-ofp-actions \ 26 | build-aux/extract-ofp-errors \ 27 | build-aux/extract-ofp-fields \ 28 | build-aux/extract-ofp-msgs \ 29 | build-aux/gen_ofp_field_decoders \ 30 | build-aux/sodepends.py \ 31 | build-aux/soexpand.py \ 32 | build-aux/xml2nroff 33 | -------------------------------------------------------------------------------- /build-aux/calculate-schema-cksum: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | schema=$1 4 | sed '/"cksum": *"[0-9][0-9]* [0-9][0-9]*",/d' $schema | cksum 5 | -------------------------------------------------------------------------------- /build-aux/cksum-schema-check: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | schema=$1 4 | stamp=$2 5 | 6 | cksumcheckpath=`dirname $0` 7 | sum=`$cksumcheckpath/calculate-schema-cksum $schema` 8 | expected=`sed -n 's/.*"cksum": "\(.*\)".*/\1/p' $schema` 9 | if test "X$sum" = "X$expected"; then 10 | touch $stamp 11 | else 12 | ln=`sed -n '/"cksum":/=' $schema` 13 | echo >&2 "$schema:$ln: The checksum \"$sum\" was calculated from the schema file and does not match cksum field in the schema file - you should probably update the version number and the checksum in the schema file with the value listed here." 14 | exit 1 15 | fi 16 | -------------------------------------------------------------------------------- /build-aux/extract-odp-netlink-windows-dp-h: -------------------------------------------------------------------------------- 1 | # This is a "sed" script that transforms into a 2 | # form that is suitable for inclusion within the Open vSwitch tree on 3 | # windows system. The transformed header file can be included by windows 4 | # driver modules. 5 | 6 | # Add a header warning that this is a generated file. 7 | 1i\ 8 | /* -*- mode: c; buffer-read-only: t -*- */\ 9 | /* Generated automatically from -- do not modify! */\ 10 | \ 11 | \ 12 | 13 | # Avoid using reserved names in header guards. 14 | s/_LINUX_OPENVSWITCH_H/__OVS_DP_INTERFACE_H_/ 15 | 16 | # and use the appropriate userspace header. 17 | s,,"Types.h", 18 | 19 | # Add ETH_ADDR_LEN macro to avoid including userspace packet.h 20 | s,#include ,\n#ifndef ETH_ADDR_LEN \ 21 | #define ETH_ADDR_LEN 6 \n#endif, 22 | 23 | # Use OVS's own ETH_ADDR_LEN instead of Linux-specific ETH_ALEN. 24 | s/ETH_ALEN/ETH_ADDR_LEN/ 25 | -------------------------------------------------------------------------------- /build-aux/initial-tab-allowed-files: -------------------------------------------------------------------------------- 1 | \.am$ 2 | \.m4$ 3 | \.mk$ 4 | \.png$ 5 | \.sln$ 6 | ^include/linux/ 7 | ^include/sparse/rte_ 8 | ^include/windows/ 9 | ^lib/sflow 10 | ^lib/getopt_long\.c$ 11 | ^lib/strsep\.c$ 12 | ^third-party/ 13 | ^windows/ 14 | ^debian/README.Debian$ 15 | ^debian/copyright.in$ 16 | ^debian/openvswitch-switch.init$ 17 | ^debian/openvswitch-switch.postinst$ 18 | ^debian/rules$ 19 | -------------------------------------------------------------------------------- /build-aux/text2c: -------------------------------------------------------------------------------- 1 | #! /usr/bin/python3 2 | 3 | import re 4 | import sys 5 | 6 | """This utility reads its input, which should be plain text, and 7 | prints it back transformed into quoted strings that may be #included 8 | into C source code.""" 9 | 10 | while True: 11 | line = sys.stdin.readline() 12 | if not line: 13 | break 14 | 15 | s = line.replace("\\", "\\\\").replace('"', '\\"').replace("\n", "\\n") 16 | print('"' + s + '"') 17 | -------------------------------------------------------------------------------- /datapath-windows/.gitignore: -------------------------------------------------------------------------------- 1 | /.vs 2 | /Package/x64/ 3 | *.db 4 | *.opendb 5 | *.opensdf 6 | *.sdf 7 | /ovsext/x64/ 8 | /x64 9 | /ovsext/ovsext.aps 10 | -------------------------------------------------------------------------------- /datapath-windows/include/automake.mk: -------------------------------------------------------------------------------- 1 | if WIN32 2 | BUILT_SOURCES += $(srcdir)/datapath-windows/include/OvsDpInterface.h 3 | endif 4 | 5 | $(srcdir)/datapath-windows/include/OvsDpInterface.h: \ 6 | include/linux/openvswitch.h \ 7 | build-aux/extract-odp-netlink-windows-dp-h 8 | $(AM_V_GEN)sed -f $(srcdir)/build-aux/extract-odp-netlink-windows-dp-h < $< > $@ 9 | 10 | CLEANFILES += $(srcdir)/datapath-windows/include/OvsDpInterface.h 11 | -------------------------------------------------------------------------------- /datapath-windows/misc/install.cmd: -------------------------------------------------------------------------------- 1 | netcfg -l .\ovsext.inf -c s -i OVSExt 2 | 3 | net stop vmms 4 | net start vmms 5 | -------------------------------------------------------------------------------- /datapath-windows/misc/uninstall.cmd: -------------------------------------------------------------------------------- 1 | netcfg -u OVSExt 2 | -------------------------------------------------------------------------------- /datapath-windows/ovsext/Atomic.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014 VMware, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at: 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #ifndef __ATOMIC_H_ 18 | #define __ATOMIC_H_ 1 19 | 20 | static __inline UINT64 21 | atomic_add64(UINT64 *ptr, UINT32 val) 22 | { 23 | return InterlockedAdd64((LONGLONG volatile *) ptr, (LONGLONG) val); 24 | } 25 | 26 | static __inline UINT64 27 | atomic_inc64(UINT64 *ptr) 28 | { 29 | return InterlockedIncrement64((LONGLONG volatile *) ptr); 30 | } 31 | 32 | #endif /* __ATOMIC_H_ */ 33 | -------------------------------------------------------------------------------- /datapath-windows/ovsext/Conntrack-nat.h: -------------------------------------------------------------------------------- 1 | #ifndef _CONNTRACK_NAT_H 2 | #define _CONNTRACK_NAT_H 3 | 4 | #include "precomp.h" 5 | #include "Flow.h" 6 | #include "Debug.h" 7 | #include 8 | #include "Conntrack.h" 9 | 10 | #define NAT_HASH_TABLE_SIZE ((UINT32)1 << 10) 11 | #define NAT_HASH_TABLE_MASK (NAT_HASH_TABLE_SIZE - 1) 12 | 13 | typedef struct OVS_NAT_ENTRY { 14 | LIST_ENTRY link; 15 | LIST_ENTRY reverseLink; 16 | OVS_CT_KEY key; 17 | OVS_CT_KEY value; 18 | POVS_CT_ENTRY ctEntry; 19 | } OVS_NAT_ENTRY, *POVS_NAT_ENTRY; 20 | 21 | __inline static BOOLEAN OvsIsForwardNat(UINT16 natAction) { 22 | return !!(natAction & (NAT_ACTION_SRC | NAT_ACTION_DST)); 23 | } 24 | 25 | NTSTATUS OvsNatInit(); 26 | VOID OvsNatFlush(UINT16 zone); 27 | 28 | VOID OvsNatAddEntry(OVS_NAT_ENTRY* entry); 29 | 30 | VOID OvsNatDeleteEntry(POVS_NAT_ENTRY entry); 31 | VOID OvsNatDeleteKey(const OVS_CT_KEY *key); 32 | VOID OvsNatCleanup(); 33 | 34 | POVS_NAT_ENTRY OvsNatLookup(const OVS_CT_KEY *ctKey, BOOLEAN reverse); 35 | BOOLEAN OvsNatTranslateCtEntry(OVS_CT_ENTRY *ctEntry); 36 | VOID OvsNatPacket(OvsForwardingContext *ovsFwdCtx, const OVS_CT_ENTRY *entry, 37 | UINT16 natAction, OvsFlowKey *key, BOOLEAN reverse); 38 | 39 | #endif 40 | -------------------------------------------------------------------------------- /datapath-windows/ovsext/Jhash.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2008, 2009, 2010, 2012, 2014 Nicira, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at: 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #ifndef __JHASH_H_ 18 | #define __JHASH_H_ 1 19 | 20 | /* This is the public domain lookup3 hash by Bob Jenkins from 21 | * http://burtleburtle.net/bob/c/lookup3.c, modified for style. 22 | * 23 | * Use the functions in hash.h instead if you can. These are here just for 24 | * places where we've exposed a hash function "on the wire" and don't want it 25 | * to change. */ 26 | 27 | uint32_t OvsJhashWords(const uint32_t *, size_t n_word, uint32_t basis); 28 | uint32_t OvsJhashBytes(const void *, size_t n_bytes, uint32_t basis); 29 | 30 | #endif /* __JHASH_H_ */ 31 | -------------------------------------------------------------------------------- /datapath-windows/ovsext/precomp.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014 VMware, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at: 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #include 18 | #include 19 | #include 20 | #include 21 | #include 22 | #include 23 | 24 | #include "Types.h" 25 | 26 | #include "..\include\OvsDpInterface.h" 27 | 28 | #include "Util.h" 29 | #include "Netlink/NetlinkError.h" 30 | #include "Netlink/Netlink.h" 31 | #include "Netlink/NetlinkProto.h" 32 | #include "..\include\OvsDpInterfaceExt.h" 33 | #include "..\include\OvsDpInterfaceCtExt.h" 34 | #include "DpInternal.h" 35 | -------------------------------------------------------------------------------- /datapath-windows/ovsext/precompsrc.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014 VMware, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at: 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #include "precomp.h" 18 | -------------------------------------------------------------------------------- /debian/.gitignore: -------------------------------------------------------------------------------- 1 | *.debhelper 2 | *.debhelper.log 3 | *.substvars 4 | /autoreconf.after 5 | /autoreconf.before 6 | /control 7 | /copyright 8 | /debhelper-build-stamp 9 | /files 10 | /openvswitch-common 11 | /openvswitch-doc 12 | /openvswitch-ipsec 13 | /openvswitch-pki 14 | /openvswitch-source 15 | /openvswitch-switch 16 | /openvswitch-switch-dpdk 17 | /openvswitch-test 18 | /openvswitch-testcontroller 19 | /openvswitch-vtep 20 | /python3-openvswitch 21 | /tmp 22 | -------------------------------------------------------------------------------- /debian/README.Debian: -------------------------------------------------------------------------------- 1 | Here's an example configuration for your /etc/network/interfaces 2 | using a simple ovsbr0 bridge for eth0, with dhcp for ipv4 and ipv6. 3 | This was taken from https://bugs.debian.org/860786. 4 | 5 | auto ovsbr0 6 | iface ovsbr0 inet dhcp 7 | ovs_type OVSBridge 8 | ovs_ports eth0 9 | 10 | auto ovsbr0 11 | iface ovsbr0 inet6 dhcp 12 | ovs_type OVSBridge 13 | ovs_ports eth0 14 | 15 | autobr0 eth0 16 | iface eth0 inet manual 17 | ovs_bridge ovsbr0 18 | ovs_type OVSPort 19 | 20 | However, this didn't work for me. Instead, this worked: 21 | 22 | auto br0 23 | iface br0 inet dhcp 24 | ovs_type OVSBridge 25 | ovs_port enp0s3 26 | 27 | auto enp0s3 28 | iface enp0s3 inet manual 29 | ovs_bridge br0 30 | ovs_type OVSPort 31 | up ip address add 0/0 dev enp0s3 32 | up ip link set enp0s3 up 33 | up dhclient br0 34 | down ip link set enp0s3 down 35 | 36 | -- Antoine Beaupré , Wed, 22 Jun 2022 12:02:39 -0400 37 | -------------------------------------------------------------------------------- /debian/clean: -------------------------------------------------------------------------------- 1 | _debian/ 2 | _dpdk/ 3 | -------------------------------------------------------------------------------- /debian/dirs: -------------------------------------------------------------------------------- 1 | usr/bin 2 | usr/sbin 3 | -------------------------------------------------------------------------------- /debian/gbp.conf: -------------------------------------------------------------------------------- 1 | [DEFAULT] 2 | debian-branch = master 3 | upstream-branch = upstream 4 | pristine-tar = True 5 | 6 | [import-orig] 7 | filter = debian/* 8 | upstream-vcs-tag = v%(version)s 9 | -------------------------------------------------------------------------------- /debian/ltmain-whole-archive.diff: -------------------------------------------------------------------------------- 1 | --- a/build-aux/ltmain.sh 2 | +++ b/build-aux/ltmain.sh 3 | @@ -7296,6 +7296,11 @@ 4 | continue 5 | ;; 6 | 7 | + -Wl,--whole-archive|-Wl,--no-whole-archive) 8 | + deplibs="$deplibs $arg" 9 | + continue 10 | + ;; 11 | + 12 | -Wc,*) 13 | func_stripname '-Wc,' '' "$arg" 14 | args=$func_stripname_result 15 | @@ -7735,6 +7740,15 @@ 16 | fi 17 | continue 18 | ;; 19 | + -Wl,--whole-archive|-Wl,--no-whole-archive) 20 | + if test "$linkmode,$pass" = "prog,link"; then 21 | + compile_deplibs="$deplib $compile_deplibs" 22 | + finalize_deplibs="$deplib $finalize_deplibs" 23 | + else 24 | + deplibs="$deplib $deplibs" 25 | + fi 26 | + continue 27 | + ;; 28 | -l*) 29 | if test lib != "$linkmode" && test prog != "$linkmode"; then 30 | func_warning "'-l' is ignored for archives/objects" 31 | -------------------------------------------------------------------------------- /debian/not-installed: -------------------------------------------------------------------------------- 1 | # We provide the openvswitch-source binary package for reproducible integrated 2 | # builds with sibling projects instead of a -dev package. 3 | usr/include/* 4 | usr/lib/* 5 | 6 | # The OVS Python bits are put in place in debian/rules and the bits left in 7 | # debian/tmp are to be ignored. 8 | usr/share/openvswitch/python/* 9 | -------------------------------------------------------------------------------- /debian/openvswitch-common.dirs: -------------------------------------------------------------------------------- 1 | var/log/openvswitch 2 | -------------------------------------------------------------------------------- /debian/openvswitch-common.install: -------------------------------------------------------------------------------- 1 | etc/bash_completion.d/ovs-appctl-bashcomp.bash usr/share/bash-completion/completions 2 | usr/bin/ovs-appctl 3 | usr/bin/ovs-docker 4 | usr/bin/ovs-flowviz 5 | usr/bin/ovs-ofctl 6 | usr/bin/ovs-parse-backtrace 7 | usr/bin/ovs-pki 8 | usr/bin/ovsdb-client 9 | usr/bin/ovsdb-tool 10 | usr/sbin/ovs-bugtool 11 | usr/sbin/ovsdb-server 12 | usr/share/man/man1/ovsdb-client.1 13 | usr/share/man/man1/ovsdb-server.1 14 | usr/share/man/man1/ovsdb-tool.1 15 | usr/share/man/man5/ovsdb-server.5 16 | usr/share/man/man5/ovsdb.5 17 | usr/share/man/man5/ovsdb.local-config.5 18 | usr/share/man/man7/ovs-actions.7 19 | usr/share/man/man7/ovs-fields.7 20 | usr/share/man/man7/ovsdb-server.7 21 | usr/share/man/man7/ovsdb.7 22 | usr/share/man/man8/ovs-appctl.8 23 | usr/share/man/man8/ovs-bugtool.8 24 | usr/share/man/man8/ovs-flowviz.8 25 | usr/share/man/man8/ovs-ofctl.8 26 | usr/share/man/man8/ovs-parse-backtrace.8 27 | usr/share/man/man8/ovs-pki.8 28 | usr/share/openvswitch/bugtool-plugins 29 | usr/share/openvswitch/scripts/ovs-bugtool-* 30 | usr/share/openvswitch/scripts/ovs-lib 31 | -------------------------------------------------------------------------------- /debian/openvswitch-common.lintian-overrides: -------------------------------------------------------------------------------- 1 | # False positive 2 | openvswitch-common: spelling-error-in-readme-debian 3 | -------------------------------------------------------------------------------- /debian/openvswitch-doc.doc-base: -------------------------------------------------------------------------------- 1 | Document: openvswitch-doc 2 | Title: Open vSwitch Documentation 3 | Author: N/A 4 | Abstract: Sphinx documentation for Open vSwitch 5 | Section: Network/Communication 6 | 7 | Format: HTML 8 | Index: /usr/share/doc/openvswitch-doc/html/index.html 9 | Files: /usr/share/doc/openvswitch-doc/html/* 10 | 11 | -------------------------------------------------------------------------------- /debian/openvswitch-doc.install: -------------------------------------------------------------------------------- 1 | _debian/Documentation/_build/html/* /usr/share/doc/openvswitch-doc/html/ 2 | -------------------------------------------------------------------------------- /debian/openvswitch-ipsec.default: -------------------------------------------------------------------------------- 1 | # This is a POSIX shell fragment -*- sh -*- 2 | 3 | # OVS_CTL_OPTS: Extra options to pass to ovs-ctl. This is, for example, 4 | # a suitable place to specify --no-restart-ike-daemon. 5 | # OVS_CTL_OPTS= 6 | -------------------------------------------------------------------------------- /debian/openvswitch-ipsec.dirs: -------------------------------------------------------------------------------- 1 | /usr/share/openvswitch/ipsec 2 | -------------------------------------------------------------------------------- /debian/openvswitch-ipsec.install: -------------------------------------------------------------------------------- 1 | #!/usr/bin/dh-exec 2 | debian/openvswitch-ipsec.default => /usr/share/openvswitch/ipsec/default.template 3 | usr/share/openvswitch/scripts/ovs-monitor-ipsec 4 | -------------------------------------------------------------------------------- /debian/openvswitch-ipsec.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Open vSwitch IPsec daemon 3 | Requires=openvswitch-switch.service 4 | After=openvswitch-switch.service 5 | 6 | [Service] 7 | Type=forking 8 | PIDFile=/run/openvswitch/ovs-monitor-ipsec.pid 9 | Restart=on-failure 10 | EnvironmentFile=-/etc/default/openvswitch-ipsec 11 | ExecStart=/usr/share/openvswitch/scripts/ovs-ctl --no-monitor \ 12 | --ike-daemon=strongswan start-ovs-ipsec $OVS_CTL_OPTS 13 | ExecStop=/usr/share/openvswitch/scripts/ovs-ctl stop-ovs-ipsec 14 | 15 | [Install] 16 | WantedBy=multi-user.target 17 | -------------------------------------------------------------------------------- /debian/openvswitch-pki.dirs: -------------------------------------------------------------------------------- 1 | /var/lib/openvswitch 2 | -------------------------------------------------------------------------------- /debian/openvswitch-pki.postinst: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # postinst script for openvswitch-pki 3 | # 4 | # see: dh_installdeb(1) 5 | 6 | set -e 7 | 8 | # summary of how this script can be called: 9 | # * `configure' 10 | # * `abort-upgrade' 11 | # * `abort-remove' `in-favour' 12 | # 13 | # * `abort-remove' 14 | # * `abort-deconfigure' `in-favour' 15 | # `removing' 16 | # 17 | # for details, see http://www.debian.org/doc/debian-policy/ or 18 | # the debian-policy package 19 | 20 | case "$1" in 21 | configure) 22 | # Create certificate authorities. 23 | if test ! -e /var/lib/openvswitch/pki; then 24 | ovs-pki init 25 | fi 26 | ;; 27 | 28 | abort-upgrade|abort-remove|abort-deconfigure) 29 | ;; 30 | 31 | *) 32 | echo "postinst called with unknown argument \`$1'" >&2 33 | exit 1 34 | ;; 35 | esac 36 | 37 | #DEBHELPER# 38 | 39 | exit 0 40 | 41 | 42 | -------------------------------------------------------------------------------- /debian/openvswitch-pki.postrm: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # postrm script for openvswitch-pki 3 | # 4 | # see: dh_installdeb(1) 5 | 6 | set -e 7 | 8 | # summary of how this script can be called: 9 | # * `remove' 10 | # * `purge' 11 | # * `upgrade' 12 | # * `failed-upgrade' 13 | # * `abort-install' 14 | # * `abort-install' 15 | # * `abort-upgrade' 16 | # * `disappear' 17 | # 18 | # for details, see http://www.debian.org/doc/debian-policy/ or 19 | # the debian-policy package 20 | 21 | 22 | case "$1" in 23 | purge) 24 | rm -f /var/log/openvswitch/ovs-pki.log* || true 25 | ;; 26 | 27 | remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear) 28 | ;; 29 | 30 | *) 31 | echo "postrm called with unknown argument \`$1'" >&2 32 | exit 1 33 | ;; 34 | esac 35 | 36 | # dh_installdeb will replace this with shell code automatically 37 | # generated by other debhelper scripts. 38 | 39 | #DEBHELPER# 40 | 41 | exit 0 42 | 43 | 44 | -------------------------------------------------------------------------------- /debian/openvswitch-source.dirs: -------------------------------------------------------------------------------- 1 | usr/src/openvswitch 2 | -------------------------------------------------------------------------------- /debian/openvswitch-source.docs: -------------------------------------------------------------------------------- 1 | NOTICE 2 | -------------------------------------------------------------------------------- /debian/openvswitch-source.install: -------------------------------------------------------------------------------- 1 | _debian/openvswitch.tar.gz /usr/src/openvswitch 2 | -------------------------------------------------------------------------------- /debian/openvswitch-switch-dpdk.install: -------------------------------------------------------------------------------- 1 | #!/usr/bin/dh-exec 2 | _dpdk/vswitchd/ovs-vswitchd => /usr/lib/openvswitch-switch-dpdk/ovs-vswitchd-dpdk 3 | -------------------------------------------------------------------------------- /debian/openvswitch-switch-dpdk.postinst: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | set -e 4 | 5 | case "$1" in 6 | configure) 7 | update-alternatives --install /usr/sbin/ovs-vswitchd ovs-vswitchd \ 8 | /usr/lib/openvswitch-switch-dpdk/ovs-vswitchd-dpdk 50 9 | ;; 10 | 11 | abort-upgrade|abort-remove|abort-deconfigure) 12 | ;; 13 | 14 | *) 15 | echo "postinst called with unknown argument \`$1'" >&2 16 | exit 1 17 | ;; 18 | esac 19 | 20 | #DEBHELPER# 21 | 22 | exit 0 23 | -------------------------------------------------------------------------------- /debian/openvswitch-switch-dpdk.prerm: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | set -e 4 | 5 | case "$1" in 6 | remove) 7 | update-alternatives --remove ovs-vswitchd /usr/lib/openvswitch-switch-dpdk/ovs-vswitchd-dpdk 8 | ;; 9 | 10 | deconfigure|upgrade|failed-upgrade) 11 | ;; 12 | 13 | *) 14 | echo "postinst called with unknown argument \`$1'" >&2 15 | exit 1 16 | ;; 17 | esac 18 | 19 | #DEBHELPER# 20 | 21 | exit 0 22 | 23 | -------------------------------------------------------------------------------- /debian/openvswitch-switch.default: -------------------------------------------------------------------------------- 1 | # This is a POSIX shell fragment -*- sh -*- 2 | 3 | # FORCE_COREFILES: If 'yes' then core files will be enabled. 4 | # FORCE_COREFILES=yes 5 | 6 | # OVS_CTL_OPTS: Extra options to pass to ovs-ctl. This is, for example, 7 | # a suitable place to specify --ovs-vswitchd-wrapper=valgrind. 8 | # OVS_CTL_OPTS= 9 | 10 | # DPDK options are now configured via ovs-vsctl/ovsdb. 11 | # dpdk-extra is the fallback for users who formerly set e.g. 12 | # '--vhost-owner libvirt-qemu:kvm --vhost-perm 0664' 13 | # here or any other DPDK EAL arguments via DPDK_OPTS which are not covered by 14 | # the default switches provided by ovs-vsctl. 15 | # This is an arbitrary string that will get appended to the EAL commandline. 16 | # For more on the new ovsdb based configuration of DPDK features, see: 17 | # `man ovs-vswitchd.conf.db` 18 | -------------------------------------------------------------------------------- /debian/openvswitch-switch.dirs: -------------------------------------------------------------------------------- 1 | /etc/openvswitch 2 | /usr/share/openvswitch/switch 3 | -------------------------------------------------------------------------------- /debian/openvswitch-switch.install: -------------------------------------------------------------------------------- 1 | #!/usr/bin/dh-exec 2 | debian/ifupdown.sh usr/share/openvswitch/scripts 3 | debian/openvswitch-switch.default => /usr/share/openvswitch/switch/default.template 4 | debian/ovs-systemd-reload /usr/share/openvswitch/scripts 5 | etc/bash_completion.d/ovs-vsctl-bashcomp.bash usr/share/bash-completion/completions 6 | usr/bin/ovs-dpctl 7 | usr/bin/ovs-dpctl-top 8 | usr/bin/ovs-pcap 9 | usr/bin/ovs-tcpdump 10 | usr/bin/ovs-tcpundump 11 | usr/bin/ovs-vlan-test 12 | usr/bin/ovs-vsctl 13 | usr/sbin/ovs-vswitchd usr/lib/openvswitch-switch/ 14 | usr/share/man/man1/ovs-pcap.1 15 | usr/share/man/man1/ovs-tcpundump.1 16 | usr/share/man/man5/ovs-vswitchd.conf.db.5 17 | usr/share/man/man8/ovs-ctl.8 18 | usr/share/man/man8/ovs-dpctl-top.8 19 | usr/share/man/man8/ovs-dpctl.8 20 | usr/share/man/man8/ovs-kmod-ctl.8 21 | usr/share/man/man8/ovs-tcpdump.8 22 | usr/share/man/man8/ovs-vlan-test.8 23 | usr/share/man/man8/ovs-vsctl.8 24 | usr/share/man/man8/ovs-vswitchd.8 25 | usr/share/openvswitch/scripts/ovs-check-dead-ifs 26 | usr/share/openvswitch/scripts/ovs-ctl 27 | usr/share/openvswitch/scripts/ovs-kmod-ctl 28 | usr/share/openvswitch/scripts/ovs-save 29 | usr/share/openvswitch/vswitch.ovsschema 30 | usr/share/openvswitch/local-config.ovsschema 31 | -------------------------------------------------------------------------------- /debian/openvswitch-switch.links: -------------------------------------------------------------------------------- 1 | usr/share/openvswitch/scripts/ifupdown.sh etc/network/if-post-down.d/openvswitch 2 | usr/share/openvswitch/scripts/ifupdown.sh etc/network/if-pre-up.d/openvswitch 3 | -------------------------------------------------------------------------------- /debian/openvswitch-switch.lintian-overrides: -------------------------------------------------------------------------------- 1 | # Lintian is bad at figuring out manpages 2 | openvswitch-switch: spare-manual-page 3 | # There are init scripts, they have different names 4 | openvswitch-switch: package-supports-alternative-init-but-no-init.d-script 5 | -------------------------------------------------------------------------------- /debian/openvswitch-switch.logrotate: -------------------------------------------------------------------------------- 1 | /var/log/openvswitch/*.log { 2 | daily 3 | compress 4 | sharedscripts 5 | create 640 root adm 6 | missingok 7 | rotate 30 8 | postrotate 9 | # Tell Open vSwitch daemons to reopen their log files 10 | if [ -d /var/run/openvswitch ]; then 11 | for ctl in /var/run/openvswitch/*.ctl; do 12 | ovs-appctl -t "$ctl" vlog/reopen 2>/dev/null || : 13 | done 14 | fi 15 | endscript 16 | } 17 | -------------------------------------------------------------------------------- /debian/openvswitch-switch.ovs-record-hostname.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Open vSwitch Record Hostname 3 | After=ovsdb-server.service ovs-vswitchd.service network-online.target 4 | Requires=ovsdb-server.service 5 | Requires=ovs-vswitchd.service 6 | Requires=network-online.target 7 | AssertPathIsReadWrite=/var/run/openvswitch/db.sock 8 | 9 | [Service] 10 | Type=oneshot 11 | ExecStart=/usr/share/openvswitch/scripts/ovs-ctl record-hostname-if-not-set 12 | ExecStop=/bin/true 13 | ExecReload=/usr/share/openvswitch/scripts/ovs-ctl record-hostname-if-not-set 14 | TimeoutSec=300 15 | RemainAfterExit=yes 16 | 17 | [Install] 18 | RequiredBy=openvswitch-switch.service 19 | -------------------------------------------------------------------------------- /debian/openvswitch-switch.ovs-vswitchd.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Open vSwitch Forwarding Unit 3 | After=ovsdb-server.service network-pre.target systemd-udev-settle.service 4 | Before=network.target networking.service 5 | Requires=ovsdb-server.service 6 | ReloadPropagatedFrom=ovsdb-server.service 7 | AssertPathIsReadWrite=/var/run/openvswitch/db.sock 8 | PartOf=openvswitch-switch.service 9 | DefaultDependencies=no 10 | 11 | [Service] 12 | LimitNOFILE=1048576 13 | Type=forking 14 | PIDFile=/run/openvswitch/ovs-vswitchd.pid 15 | Restart=on-failure 16 | Environment=HOME=/var/run/openvswitch 17 | EnvironmentFile=-/etc/default/openvswitch-switch 18 | ExecStart=/usr/share/openvswitch/scripts/ovs-ctl \ 19 | --no-ovsdb-server --no-monitor --system-id=random \ 20 | --no-record-hostname \ 21 | start $OVS_CTL_OPTS 22 | ExecStop=/usr/share/openvswitch/scripts/ovs-ctl --no-ovsdb-server stop 23 | ExecReload=/usr/share/openvswitch/scripts/ovs-ctl --no-ovsdb-server \ 24 | --no-monitor --system-id=random \ 25 | --no-record-hostname \ 26 | restart $OVS_CTL_OPTS 27 | TimeoutSec=300 28 | -------------------------------------------------------------------------------- /debian/openvswitch-switch.ovsdb-server.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Open vSwitch Database Unit 3 | After=systemd-journald.socket network-pre.target dpdk.service local-fs.target 4 | Before=network.target networking.service 5 | PartOf=openvswitch-switch.service 6 | DefaultDependencies=no 7 | 8 | [Service] 9 | LimitNOFILE=1048576 10 | Type=forking 11 | PIDFile=/run/openvswitch/ovsdb-server.pid 12 | Restart=on-failure 13 | EnvironmentFile=-/etc/default/openvswitch-switch 14 | ExecStart=/usr/share/openvswitch/scripts/ovs-ctl \ 15 | --no-ovs-vswitchd --no-monitor --system-id=random \ 16 | --no-record-hostname \ 17 | start $OVS_CTL_OPTS 18 | ExecStop=/usr/share/openvswitch/scripts/ovs-ctl --no-ovs-vswitchd stop 19 | ExecReload=/usr/share/openvswitch/scripts/ovs-ctl --no-ovs-vswitchd \ 20 | --no-record-hostname \ 21 | --no-monitor restart $OVS_CTL_OPTS 22 | -------------------------------------------------------------------------------- /debian/openvswitch-switch.prerm: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | set -e 4 | 5 | case "$1" in 6 | remove) 7 | update-alternatives --remove ovs-vswitchd /usr/lib/openvswitch-switch/ovs-vswitchd 8 | 9 | if [ -x /usr/lib/openvswitch-switch/ovs-vswitchd-dpdk ]; then 10 | update-alternatives --remove ovs-vswitchd /usr/lib/openvswitch-switch/ovs-vswitchd-dpdk 11 | fi 12 | ;; 13 | 14 | deconfigure|upgrade|failed-upgrade) 15 | ;; 16 | 17 | *) 18 | echo "postinst called with unknown argument \`$1'" >&2 19 | exit 1 20 | ;; 21 | esac 22 | 23 | 24 | #DEBHELPER# 25 | 26 | exit 0 27 | 28 | -------------------------------------------------------------------------------- /debian/openvswitch-switch.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Open vSwitch 3 | Before=network.target 4 | After=network-pre.target ovsdb-server.service ovs-vswitchd.service 5 | PartOf=network.target 6 | Requires=ovsdb-server.service 7 | Requires=ovs-vswitchd.service 8 | 9 | [Service] 10 | Type=oneshot 11 | ExecStart=/bin/true 12 | ExecReload=/usr/share/openvswitch/scripts/ovs-systemd-reload 13 | ExecStop=/bin/true 14 | RemainAfterExit=yes 15 | 16 | [Install] 17 | WantedBy=multi-user.target 18 | Also=ovs-record-hostname.service 19 | -------------------------------------------------------------------------------- /debian/openvswitch-test.install: -------------------------------------------------------------------------------- 1 | usr/bin/ovs-l3ping 2 | usr/bin/ovs-test 3 | usr/share/man/man8/ovs-l3ping.8 4 | usr/share/man/man8/ovs-test.8 5 | usr/share/openvswitch/python/ovstest usr/lib/python3/dist-packages/ 6 | usr/share/openvswitch/scripts/usdt/* 7 | -------------------------------------------------------------------------------- /debian/openvswitch-testcontroller.README.Debian: -------------------------------------------------------------------------------- 1 | README.Debian for openvswitch-testcontroller 2 | -------------------------------------------- 3 | 4 | The controller in this package enables OpenFlow switches that connect 5 | to it to act as MAC-learning Ethernet switches. It can be used for 6 | initial testing of OpenFlow networks. It is not a necessary or 7 | desirable part of a production OpenFlow deployment. 8 | 9 | To (re)configure the controller, edit /etc/default/openvswitch-testcontroller 10 | and run "/etc/init.d/openvswitch-testcontroller restart". 11 | 12 | -- Ben Pfaff , Thu, 14 Aug 2014 10:49:34 -0700 13 | -------------------------------------------------------------------------------- /debian/openvswitch-testcontroller.default: -------------------------------------------------------------------------------- 1 | # This is a POSIX shell fragment -*- sh -*- 2 | 3 | # LISTEN: What OpenFlow connection methods should the controller listen on? 4 | # 5 | # This is a space-delimited list of connection methods: 6 | # 7 | # * "pssl:[PORT]": Listen for SSL/TLS connections on the specified PORT 8 | # (default: 6653). The private key, certificate, and CA certificate 9 | # must be specified below. 10 | # 11 | # * "ptcp:[PORT]": Listen for TCP connections on the specified PORT 12 | # (default: 6653). Not recommended for security reasons. 13 | # 14 | LISTEN="pssl:" 15 | 16 | # PRIVKEY: Name of file containing controller's private key. 17 | # Required if SSL/TLS enabled. 18 | PRIVKEY=/etc/openvswitch-testcontroller/privkey.pem 19 | 20 | # CERT: Name of file containing certificate for private key. 21 | # Required if SSL/TLS enabled. 22 | CERT=/etc/openvswitch-testcontroller/cert.pem 23 | 24 | # CACERT: Name of file containing switch CA certificate. 25 | # Required if SSL/TLS enabled. 26 | CACERT=/etc/openvswitch-testcontroller/cacert.pem 27 | 28 | # Additional options to pass to ovs-testcontroller, e.g. "--hub" 29 | DAEMON_OPTS="" 30 | -------------------------------------------------------------------------------- /debian/openvswitch-testcontroller.dirs: -------------------------------------------------------------------------------- 1 | etc/openvswitch-testcontroller 2 | -------------------------------------------------------------------------------- /debian/openvswitch-testcontroller.install: -------------------------------------------------------------------------------- 1 | usr/bin/ovs-testcontroller 2 | usr/share/man/man8/ovs-testcontroller.8 3 | -------------------------------------------------------------------------------- /debian/openvswitch-vtep.default: -------------------------------------------------------------------------------- 1 | # This is a POSIX shell fragment -*- sh -*- 2 | 3 | # ENABLE_OVS_VTEP: Whether to start ovs-vtep. 4 | ENABLE_OVS_VTEP="false" 5 | -------------------------------------------------------------------------------- /debian/openvswitch-vtep.dirs: -------------------------------------------------------------------------------- 1 | /usr/share/openvswitch 2 | -------------------------------------------------------------------------------- /debian/openvswitch-vtep.install: -------------------------------------------------------------------------------- 1 | usr/bin/vtep-ctl 2 | usr/share/man/man5/vtep.5 3 | usr/share/man/man8/vtep-ctl.8 4 | usr/share/openvswitch/scripts/ovs-vtep 5 | usr/share/openvswitch/vtep.ovsschema 6 | -------------------------------------------------------------------------------- /debian/python3-openvswitch.install: -------------------------------------------------------------------------------- 1 | # At the dh_install stage we need to retain python version specific directory 2 | # tree to support extensions. 3 | # 4 | # dh_python will consolidate into usr/lib/python3/dist-packages retaining 5 | # version specific shared object files. 6 | usr/lib/python3* usr/lib/ 7 | -------------------------------------------------------------------------------- /debian/source/format: -------------------------------------------------------------------------------- 1 | 3.0 (quilt) 2 | -------------------------------------------------------------------------------- /debian/source/lintian-overrides: -------------------------------------------------------------------------------- 1 | openvswitch source: very-long-line-length-in-source-file 2 | openvswitch source: source-contains-autogenerated-visual-c++-file 3 | # Until https://bugs.debian.org/1009163 is fixed we cannot add the +ds suffix 4 | # as gbp does not support it 5 | openvswitch source: repackaged-source-not-advertised 6 | -------------------------------------------------------------------------------- /debian/tests/control: -------------------------------------------------------------------------------- 1 | Tests: vanilla dpdk 2 | Depends: 3 | iperf, 4 | mininet (>= 2.2.0~), 5 | openvswitch-switch, 6 | openvswitch-switch-dpdk [amd64 i386], 7 | openvswitch-testcontroller, 8 | Restrictions: needs-root rw-build-tree isolation-machine 9 | -------------------------------------------------------------------------------- /debian/tests/vanilla: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | set -e 4 | 5 | echo "Checking service status right after install: " 6 | # for transparency we want to see all status and then fail if one is inactive 7 | systemctl status ovsdb-server.service || true 8 | systemctl status ovs-vswitchd.service || true 9 | systemctl status openvswitch-switch.service || true 10 | systemctl is-active ovs-vswitchd.service ovsdb-server.service openvswitch-switch.service 11 | echo "OK" 12 | 13 | echo "Checking daemon pids to exist: " 14 | pgrep ovs-vswitchd 15 | pgrep ovsdb-server 16 | echo "OK" 17 | 18 | echo "stop conflicting openvswitch testcontroller" 19 | systemctl stop openvswitch-testcontroller || true 20 | 21 | if dpkg --compare-versions "$(dpkg-query --showformat '${Version}\n' --show mininet)" ge "2.3.0-1"; then 22 | PYCMD="python3" 23 | else 24 | PYCMD="python2" 25 | fi 26 | 27 | printf "running openflow tests using mininet" 28 | ${PYCMD} `dirname $0`/openflow.py 2>&1 29 | echo "OK" 30 | -------------------------------------------------------------------------------- /debian/watch: -------------------------------------------------------------------------------- 1 | version=4 2 | http://www.openvswitch.org/download/ https://www.openvswitch.org/releases/openvswitch-(.*).tar.gz 3 | -------------------------------------------------------------------------------- /include/.gitignore: -------------------------------------------------------------------------------- 1 | /Makefile 2 | /Makefile.in 3 | -------------------------------------------------------------------------------- /include/automake.mk: -------------------------------------------------------------------------------- 1 | BUILT_SOURCES += include/odp-netlink.h include/odp-netlink-macros.h 2 | 3 | include/odp-netlink.h: include/linux/openvswitch.h \ 4 | build-aux/extract-odp-netlink-h 5 | $(AM_V_GEN)sed -f $(srcdir)/build-aux/extract-odp-netlink-h < $< > $@ 6 | 7 | include/odp-netlink-macros.h: include/odp-netlink.h \ 8 | build-aux/extract-odp-netlink-macros-h 9 | $(AM_V_GEN)sh -f $(srcdir)/build-aux/extract-odp-netlink-macros-h $< > $@ 10 | 11 | CLEANFILES += include/odp-netlink.h include/odp-netlink-macros.h 12 | 13 | include include/openflow/automake.mk 14 | include include/openvswitch/automake.mk 15 | include include/sparse/automake.mk 16 | include include/windows/automake.mk 17 | include include/linux/automake.mk 18 | -------------------------------------------------------------------------------- /include/linux/automake.mk: -------------------------------------------------------------------------------- 1 | noinst_HEADERS += \ 2 | include/linux/netlink.h \ 3 | include/linux/netfilter/nf_conntrack_sctp.h \ 4 | include/linux/openvswitch.h \ 5 | include/linux/pkt_cls.h \ 6 | include/linux/psample.h \ 7 | include/linux/gen_stats.h \ 8 | include/linux/tc_act/tc_mpls.h \ 9 | include/linux/tc_act/tc_pedit.h \ 10 | include/linux/tc_act/tc_skbedit.h \ 11 | include/linux/tc_act/tc_tunnel_key.h \ 12 | include/linux/tc_act/tc_vlan.h \ 13 | include/linux/tc_act/tc_ct.h 14 | -------------------------------------------------------------------------------- /include/linux/netfilter/nf_conntrack_sctp.h: -------------------------------------------------------------------------------- 1 | #ifndef __LINUX_NETFILTER_CONNTRACK_SCTP_WRAPPER_H 2 | #define __LINUX_NETFILTER_CONNTRACK_SCTP_WRAPPER_H 1 3 | 4 | #if defined(__KERNEL__) || defined(HAVE_SCTP_CONNTRACK_HEARTBEATS) 5 | #include_next 6 | #else 7 | 8 | /* These are the states defined in the kernel UAPI for connection 9 | * tracking. */ 10 | enum sctp_conntrack { 11 | SCTP_CONNTRACK_NONE, 12 | SCTP_CONNTRACK_CLOSED, 13 | SCTP_CONNTRACK_COOKIE_WAIT, 14 | SCTP_CONNTRACK_COOKIE_ECHOED, 15 | SCTP_CONNTRACK_ESTABLISHED, 16 | SCTP_CONNTRACK_SHUTDOWN_SENT, 17 | SCTP_CONNTRACK_SHUTDOWN_RECD, 18 | SCTP_CONNTRACK_SHUTDOWN_ACK_SENT, 19 | SCTP_CONNTRACK_HEARTBEAT_SENT, 20 | SCTP_CONNTRACK_HEARTBEAT_ACKED, 21 | SCTP_CONNTRACK_MAX 22 | }; 23 | 24 | #endif 25 | 26 | #endif 27 | -------------------------------------------------------------------------------- /include/linux/netlink.h: -------------------------------------------------------------------------------- 1 | #ifndef __UAPI_LINUX_NETLINK_WRAPPER_H 2 | #define __UAPI_LINUX_NETLINK_WRAPPER_H 1 3 | 4 | #if !defined(__KERNEL__) && !defined(HAVE_NLA_BITFIELD32) 5 | 6 | #include 7 | 8 | /* Generic 32 bitflags attribute content sent to the kernel. 9 | * 10 | * The value is a bitmap that defines the values being set 11 | * The selector is a bitmask that defines which value is legit 12 | * 13 | * Examples: 14 | * value = 0x0, and selector = 0x1 15 | * implies we are selecting bit 1 and we want to set its value to 0. 16 | * 17 | * value = 0x2, and selector = 0x2 18 | * implies we are selecting bit 2 and we want to set its value to 1. 19 | * 20 | */ 21 | struct nla_bitfield32 { 22 | __u32 value; 23 | __u32 selector; 24 | }; 25 | 26 | #endif /* !__KERNEL__ && !HAVE_NLA_BITFIELD32 */ 27 | 28 | #include_next 29 | 30 | #endif /* __UAPI_LINUX_NETLINK_WRAPPER_H */ 31 | -------------------------------------------------------------------------------- /include/linux/tc_act/tc_ct.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 2 | #ifndef __UAPI_TC_CT_H 3 | #define __UAPI_TC_CT_H 4 | 5 | #include 6 | #include 7 | 8 | enum { 9 | TCA_CT_UNSPEC, 10 | TCA_CT_PARMS, 11 | TCA_CT_TM, 12 | TCA_CT_ACTION, /* u16 */ 13 | TCA_CT_ZONE, /* u16 */ 14 | TCA_CT_MARK, /* u32 */ 15 | TCA_CT_MARK_MASK, /* u32 */ 16 | TCA_CT_LABELS, /* u128 */ 17 | TCA_CT_LABELS_MASK, /* u128 */ 18 | TCA_CT_NAT_IPV4_MIN, /* be32 */ 19 | TCA_CT_NAT_IPV4_MAX, /* be32 */ 20 | TCA_CT_NAT_IPV6_MIN, /* struct in6_addr */ 21 | TCA_CT_NAT_IPV6_MAX, /* struct in6_addr */ 22 | TCA_CT_NAT_PORT_MIN, /* be16 */ 23 | TCA_CT_NAT_PORT_MAX, /* be16 */ 24 | TCA_CT_PAD, 25 | __TCA_CT_MAX 26 | }; 27 | 28 | #define TCA_CT_MAX (__TCA_CT_MAX - 1) 29 | 30 | #define TCA_CT_ACT_COMMIT (1 << 0) 31 | #define TCA_CT_ACT_FORCE (1 << 1) 32 | #define TCA_CT_ACT_CLEAR (1 << 2) 33 | #define TCA_CT_ACT_NAT (1 << 3) 34 | #define TCA_CT_ACT_NAT_SRC (1 << 4) 35 | #define TCA_CT_ACT_NAT_DST (1 << 5) 36 | 37 | struct tc_ct { 38 | tc_gen; 39 | }; 40 | 41 | #endif /* __UAPI_TC_CT_H */ 42 | -------------------------------------------------------------------------------- /include/linux/tc_act/tc_vlan.h: -------------------------------------------------------------------------------- 1 | #ifndef __LINUX_TC_ACT_TC_VLAN_WRAPPER_H 2 | #define __LINUX_TC_ACT_TC_VLAN_WRAPPER_H 1 3 | 4 | #if defined(__KERNEL__) || defined(HAVE_TCA_VLAN_PUSH_VLAN_PRIORITY) 5 | #include_next 6 | #else 7 | 8 | /* 9 | * Copyright (c) 2014 Jiri Pirko 10 | * 11 | * This program is free software; you can redistribute it and/or modify 12 | * it under the terms of the GNU General Public License as published by 13 | * the Free Software Foundation; either version 2 of the License, or 14 | * (at your option) any later version. 15 | */ 16 | 17 | #define TCA_VLAN_ACT_POP 1 18 | #define TCA_VLAN_ACT_PUSH 2 19 | #define TCA_VLAN_ACT_MODIFY 3 20 | 21 | struct tc_vlan { 22 | tc_gen; 23 | int v_action; 24 | }; 25 | 26 | enum { 27 | TCA_VLAN_UNSPEC, 28 | TCA_VLAN_TM, 29 | TCA_VLAN_PARMS, 30 | TCA_VLAN_PUSH_VLAN_ID, 31 | TCA_VLAN_PUSH_VLAN_PROTOCOL, 32 | TCA_VLAN_PAD, 33 | TCA_VLAN_PUSH_VLAN_PRIORITY, 34 | __TCA_VLAN_MAX, 35 | }; 36 | #define TCA_VLAN_MAX (__TCA_VLAN_MAX - 1) 37 | 38 | #endif /* __KERNEL__ || HAVE_TCA_VLAN_PUSH_VLAN_PRIORITY */ 39 | 40 | #endif /* __LINUX_TC_ACT_TC_VLAN_WRAPPER_H */ 41 | -------------------------------------------------------------------------------- /include/openflow/.gitignore: -------------------------------------------------------------------------------- 1 | *.hstamp 2 | -------------------------------------------------------------------------------- /include/openflow/automake.mk: -------------------------------------------------------------------------------- 1 | openflowincludedir = $(includedir)/openflow 2 | openflowinclude_HEADERS = \ 3 | include/openflow/intel-ext.h \ 4 | include/openflow/netronome-ext.h \ 5 | include/openflow/nicira-ext.h \ 6 | include/openflow/openflow-1.0.h \ 7 | include/openflow/openflow-1.1.h \ 8 | include/openflow/openflow-1.2.h \ 9 | include/openflow/openflow-1.3.h \ 10 | include/openflow/openflow-1.4.h \ 11 | include/openflow/openflow-1.5.h \ 12 | include/openflow/openflow-common.h \ 13 | include/openflow/openflow.h 14 | 15 | SUFFIXES += .h .hstamp 16 | 17 | .h.hstamp: 18 | $(AM_V_GEN)$(run_python) $(srcdir)/build-aux/check-structs -I$(srcdir)/include $< && \ 19 | touch $@ 20 | 21 | HSTAMP_FILES = $(openflowinclude_HEADERS:.h=.hstamp) 22 | CLEANFILES += $(HSTAMP_FILES) 23 | ALL_LOCAL += $(HSTAMP_FILES) 24 | $(HSTAMP_FILES): build-aux/check-structs $(openflowinclude_HEADERS) 25 | -------------------------------------------------------------------------------- /include/openflow/openflow.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2008, 2009, 2010, 2011, 2012, 2017 Nicira, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at: 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #ifndef OPENFLOW_OPENFLOW_H 18 | #define OPENFLOW_OPENFLOW_H 1 19 | 20 | #include 21 | #include 22 | #include 23 | #include 24 | #include 25 | #include 26 | 27 | #endif /* openflow/openflow.h */ 28 | -------------------------------------------------------------------------------- /include/openvswitch/.gitignore: -------------------------------------------------------------------------------- 1 | /version.h 2 | /cxxtest.cc 3 | -------------------------------------------------------------------------------- /include/openvswitch/version.h.in: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014 Nicira, Inc. 3 | * Copyright (c) 2014 Cisco Systems, Inc. 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at: 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | #ifndef OPENVSWITCH_VERSION_H 19 | #define OPENVSWITCH_VERSION_H 1 20 | 21 | #define OVS_PACKAGE_STRING "@PACKAGE_STRING@" 22 | #define OVS_PACKAGE_VERSION "@PACKAGE_VERSION@@VERSION_SUFFIX@" 23 | 24 | #define OVS_LIB_VERSION @LT_CURRENT@ 25 | #define OVS_LIB_REVISION @LT_REVISION@ 26 | #define OVS_LIB_AGE @LT_AGE@ 27 | 28 | #endif /* openvswitch/version.h */ 29 | -------------------------------------------------------------------------------- /include/sparse/arpa/inet.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2011 Nicira, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at: 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #ifndef __CHECKER__ 18 | #error "Use this header only with sparse. It is not a correct implementation." 19 | #endif 20 | 21 | #ifndef NETINET_IN_H_INCLUDED 22 | #error "Must include before for FreeBSD support" 23 | #endif 24 | 25 | #include 26 | -------------------------------------------------------------------------------- /include/sparse/assert.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2011 Nicira, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at: 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #ifndef __CHECKER__ 18 | #error "Use this header only with sparse. It is not a correct implementation." 19 | #endif 20 | 21 | extern void __ovs_assert(_Bool); 22 | #define assert(EXPRESSION) __ovs_assert(EXPRESSION) 23 | -------------------------------------------------------------------------------- /include/sparse/automake.mk: -------------------------------------------------------------------------------- 1 | noinst_HEADERS += \ 2 | include/sparse/rte_byteorder.h \ 3 | include/sparse/immintrin.h \ 4 | include/sparse/xmmintrin.h \ 5 | include/sparse/arpa/inet.h \ 6 | include/sparse/bits/floatn.h \ 7 | include/sparse/assert.h \ 8 | include/sparse/ia32intrin.h \ 9 | include/sparse/math.h \ 10 | include/sparse/numa.h \ 11 | include/sparse/netinet/in.h \ 12 | include/sparse/netinet/ip6.h \ 13 | include/sparse/netpacket/packet.h \ 14 | include/sparse/openssl/configuration.h \ 15 | include/sparse/pthread.h \ 16 | include/sparse/rte_memcpy.h \ 17 | include/sparse/sys/socket.h \ 18 | include/sparse/sys/sysmacros.h \ 19 | include/sparse/sys/types.h \ 20 | include/sparse/sys/wait.h \ 21 | include/sparse/threads.h \ 22 | include/sparse/linux/if_packet.h \ 23 | include/sparse/linux/tc_act/tc_pedit.h 24 | -------------------------------------------------------------------------------- /include/sparse/bits/floatn.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2018 Nicira, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at: 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #ifndef __CHECKER__ 18 | #error "Use this header only with sparse. It is not a correct implementation." 19 | #endif 20 | 21 | #ifndef __BITS_FLOATN_SPARSE 22 | #define __BITS_FLOATN_SPARSE 1 23 | 24 | /* "sparse" claims to be a recent version of GCC but doesn't support IEEE 754 25 | * binary128, so we define macros to make that clear. */ 26 | 27 | #define __HAVE_FLOAT128 0 28 | #define __HAVE_FLOAT64X 0 29 | 30 | #ifdef HAVE_BITS_FLOATN_COMMON_H 31 | /* Introduced in glibc 2.27 */ 32 | #include 33 | #endif 34 | 35 | #endif /* for sparse */ 36 | -------------------------------------------------------------------------------- /include/sparse/ia32intrin.h: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2023 Red Hat, Inc. 2 | * 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at: 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | 16 | #ifndef __CHECKER__ 17 | #error "Use this header only with sparse. It is not a correct implementation." 18 | #endif 19 | 20 | #define __builtin_ia32_rdtsc() (unsigned long long) 0 21 | 22 | /* Get actual definitions for us to annotate and build on. */ 23 | #include_next 24 | -------------------------------------------------------------------------------- /include/sparse/linux/if_packet.h: -------------------------------------------------------------------------------- 1 | #ifndef FIX_LINUX_IF_PACKET_H 2 | #define FIX_LINUX_IF_PACKET_H 3 | 4 | #ifndef __CHECKER__ 5 | #error "Use this header only with sparse. It is not a correct implementation." 6 | #endif 7 | 8 | #include_next 9 | 10 | /* Fix endianness of 'spkt_protocol' and 'sll_protocol' members. */ 11 | 12 | #define sockaddr_pkt rpl_sockaddr_pkt 13 | struct sockaddr_pkt { 14 | unsigned short spkt_family; 15 | unsigned char spkt_device[14]; 16 | ovs_be16 spkt_protocol; 17 | }; 18 | 19 | #define sockaddr_ll rpl_sockaddr_ll 20 | struct sockaddr_ll { 21 | unsigned short sll_family; 22 | ovs_be16 sll_protocol; 23 | int sll_ifindex; 24 | unsigned short sll_hatype; 25 | unsigned char sll_pkttype; 26 | unsigned char sll_halen; 27 | unsigned char sll_addr[8]; 28 | }; 29 | 30 | #endif 31 | -------------------------------------------------------------------------------- /include/sparse/linux/tc_act/tc_pedit.h: -------------------------------------------------------------------------------- 1 | #ifndef FIX_LINUX_TC_PEDIT_H 2 | #define FIX_LINUX_TC_PEDIT_H 3 | 4 | #ifndef __CHECKER__ 5 | #error "Use this header only with sparse. It is not a correct implementation." 6 | #endif 7 | 8 | #include_next 9 | 10 | /* Fixes endianness of 'mask' and 'val' members. */ 11 | #define tc_pedit_key rpl_tc_pedit_key 12 | struct rpl_tc_pedit_key { 13 | ovs_be32 mask; /* AND */ 14 | ovs_be32 val; /* XOR */ 15 | __u32 off; /* offset */ 16 | __u32 at; 17 | __u32 offmask; 18 | __u32 shift; 19 | }; 20 | 21 | #define tc_pedit_sel rpl_tc_pedit_sel 22 | struct rpl_tc_pedit_sel { 23 | tc_gen; 24 | unsigned char nkeys; 25 | unsigned char flags; 26 | struct tc_pedit_key keys[0]; 27 | }; 28 | 29 | #endif 30 | -------------------------------------------------------------------------------- /include/sparse/netpacket/packet.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014 Nicira, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at: 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #ifndef __CHECKER__ 18 | #error "Use this header only with sparse. It is not a correct implementation." 19 | #endif 20 | 21 | #ifndef __NETPACKET_PACKET_SPARSE 22 | #define __NETPACKET_PACKET_SPARSE 1 23 | 24 | #include "openvswitch/types.h" 25 | 26 | struct sockaddr_ll 27 | { 28 | unsigned short int sll_family; 29 | ovs_be16 sll_protocol; 30 | int sll_ifindex; 31 | unsigned short int sll_hatype; 32 | unsigned char sll_pkttype; 33 | unsigned char sll_halen; 34 | unsigned char sll_addr[8]; 35 | }; 36 | 37 | #endif /* sparse */ 38 | -------------------------------------------------------------------------------- /include/sparse/openssl/configuration.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2025, Red Hat, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at: 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #ifndef __CHECKER__ 18 | #error "Use this header only with sparse. It is not a correct implementation." 19 | #endif 20 | 21 | #ifndef __OPENSSL_CONFIGURATION_SPARSE 22 | #define __OPENSSL_CONFIGURATION_SPARSE 23 | 24 | #ifndef __has_include 25 | #define __has_include(x) 0 26 | #endif 27 | 28 | #include_next 29 | 30 | #endif /* sparse */ 31 | -------------------------------------------------------------------------------- /include/sparse/sys/sysmacros.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2018 Nicira, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at: 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #ifndef __CHECKER__ 18 | #error "Use this header only with sparse. It is not a correct implementation." 19 | #endif 20 | 21 | #ifndef __SYS_SYSMACROS_SPARSE 22 | #define __SYS_SYSMACROS_SPARSE 1 23 | 24 | /* "sparse" doesn't like the large constants in , complaining 25 | * that they are so large that they have type "unsigned long long". This 26 | * header avoids the problem. */ 27 | 28 | unsigned int major(dev_t); 29 | unsigned int minor(dev_t); 30 | dev_t makedev(unsigned int, unsigned int); 31 | 32 | #endif /* for sparse */ 33 | -------------------------------------------------------------------------------- /include/sparse/sys/types.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2011, 2013, 2014, 2015, 2017 Nicira, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at: 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #ifndef __CHECKER__ 18 | #error "Use this header only with sparse. It is not a correct implementation." 19 | #endif 20 | 21 | #define SYS_TYPES_H_INCLUDED 1 22 | #include_next 23 | -------------------------------------------------------------------------------- /include/sparse/sys/wait.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2011 Nicira, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at: 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #ifndef __CHECKER__ 18 | #error "Use this header only with sparse. It is not a correct implementation." 19 | #endif 20 | 21 | #ifndef __SYS_WAIT_SPARSE 22 | #define __SYS_WAIT_SPARSE 1 23 | 24 | #include_next 25 | 26 | #undef wait 27 | #define wait(a) rpl_wait(a) 28 | pid_t rpl_wait(int *); 29 | 30 | #undef waitpid 31 | #define waitpid(a, b, c) rpl_waitpid(a, b, c) 32 | pid_t rpl_waitpid(pid_t, int *, int); 33 | 34 | #endif /* for sparse */ 35 | -------------------------------------------------------------------------------- /include/sparse/threads.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2018 Nicira, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at: 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #ifndef __CHECKER__ 18 | #error "Use this header only with sparse. It is not a correct implementation." 19 | #endif 20 | 21 | /* Get actual definitions for us to annotate and build on. */ 22 | #include_next 23 | 24 | /* Glibc 2.28 defines thread_local to _Thread_local, which sparse doesn't 25 | * understand. */ 26 | #undef thread_local 27 | #define thread_local __thread 28 | -------------------------------------------------------------------------------- /include/sparse/xmmintrin.h: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2015 Nicira, Inc. 2 | * 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at: 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | 16 | #ifndef __CHECKER__ 17 | #error "Use this header only with sparse. It is not a correct implementation." 18 | #endif 19 | 20 | /* sparse doesn't know about this builtin function yet. */ 21 | #define __builtin_ia32_pause() (void) 0 22 | 23 | /* Get actual definitions for us to annotate and build on. */ 24 | #include_next 25 | -------------------------------------------------------------------------------- /include/windows/arpa/inet.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openvswitch/ovs/0e419d1b4fc9207e77c240c287000d57ddbf6915/include/windows/arpa/inet.h -------------------------------------------------------------------------------- /include/windows/dirent.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openvswitch/ovs/0e419d1b4fc9207e77c240c287000d57ddbf6915/include/windows/dirent.h -------------------------------------------------------------------------------- /include/windows/linux/netfilter/nf_conntrack_common.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openvswitch/ovs/0e419d1b4fc9207e77c240c287000d57ddbf6915/include/windows/linux/netfilter/nf_conntrack_common.h -------------------------------------------------------------------------------- /include/windows/linux/netfilter/nf_conntrack_ftp.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openvswitch/ovs/0e419d1b4fc9207e77c240c287000d57ddbf6915/include/windows/linux/netfilter/nf_conntrack_ftp.h -------------------------------------------------------------------------------- /include/windows/linux/netfilter/nf_conntrack_sctp.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openvswitch/ovs/0e419d1b4fc9207e77c240c287000d57ddbf6915/include/windows/linux/netfilter/nf_conntrack_sctp.h -------------------------------------------------------------------------------- /include/windows/linux/netfilter/nf_conntrack_tcp.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openvswitch/ovs/0e419d1b4fc9207e77c240c287000d57ddbf6915/include/windows/linux/netfilter/nf_conntrack_tcp.h -------------------------------------------------------------------------------- /include/windows/linux/netfilter/nfnetlink.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openvswitch/ovs/0e419d1b4fc9207e77c240c287000d57ddbf6915/include/windows/linux/netfilter/nfnetlink.h -------------------------------------------------------------------------------- /include/windows/linux/netfilter/nfnetlink_conntrack.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openvswitch/ovs/0e419d1b4fc9207e77c240c287000d57ddbf6915/include/windows/linux/netfilter/nfnetlink_conntrack.h -------------------------------------------------------------------------------- /include/windows/linux/netfilter/nfnetlink_cttimeout.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openvswitch/ovs/0e419d1b4fc9207e77c240c287000d57ddbf6915/include/windows/linux/netfilter/nfnetlink_cttimeout.h -------------------------------------------------------------------------------- /include/windows/linux/pkt_sched.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014 Cloudbase Solutions Srl 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #ifndef __LINUX_PKT_SCHED_H 18 | #define __LINUX_PKT_SCHED_H 1 19 | 20 | #define TC_H_MAJ_MASK (0xFFFF0000U) 21 | 22 | #define TC_H_MIN_MASK (0x0000FFFFU) 23 | 24 | #define TC_H_MAKE(maj,min) (((maj)&TC_H_MAJ_MASK)|((min)&TC_H_MIN_MASK)) 25 | 26 | #endif /* linux/pkt_sched.h */ 27 | -------------------------------------------------------------------------------- /include/windows/linux/types.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openvswitch/ovs/0e419d1b4fc9207e77c240c287000d57ddbf6915/include/windows/linux/types.h -------------------------------------------------------------------------------- /include/windows/netdb.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openvswitch/ovs/0e419d1b4fc9207e77c240c287000d57ddbf6915/include/windows/netdb.h -------------------------------------------------------------------------------- /include/windows/netinet/in.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014 Nicira, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at: 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #ifndef __NETINET_IN_H 18 | #define __NETINET_IN_H 1 19 | 20 | #define IPPROTO_GRE 47 21 | #define IPPORT_FTP 21 22 | #define IPPORT_TFTP 69 23 | 24 | #endif /* netinet/in.h */ 25 | -------------------------------------------------------------------------------- /include/windows/netinet/in_systm.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openvswitch/ovs/0e419d1b4fc9207e77c240c287000d57ddbf6915/include/windows/netinet/in_systm.h -------------------------------------------------------------------------------- /include/windows/netinet/ip.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014 Nicira, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at: 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #ifndef __NETINET_IP_H 18 | #define __NETINET_IP_H 1 19 | 20 | #define IPTOS_PREC_INTERNETCONTROL 0xc0 21 | #define MAXTTL 255 22 | #define IPTOS_LOWDELAY 0x10 23 | #define IPTOS_THROUGHPUT 0x08 24 | #define IP_DF 0x4000 /* dont fragment flag */ 25 | 26 | #endif /* netinet/ip.h */ 27 | -------------------------------------------------------------------------------- /include/windows/netinet/tcp.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openvswitch/ovs/0e419d1b4fc9207e77c240c287000d57ddbf6915/include/windows/netinet/tcp.h -------------------------------------------------------------------------------- /include/windows/netpacket/packet.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014 Cloudbase Solutions Srl 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #ifndef __NETPACKET_PACKET_H 18 | #define __NETPACKET_PACKET_H 1 19 | 20 | struct iovec 21 | { 22 | void *iov_base; 23 | unsigned int iov_len; 24 | }; 25 | 26 | struct msghdr 27 | { 28 | void *msg_name; 29 | socklen_t msg_namelen; 30 | 31 | struct iovec *msg_iov; 32 | size_t msg_iovlen; 33 | 34 | void *msg_control; 35 | size_t msg_controllen; 36 | 37 | int msg_flags; 38 | }; 39 | 40 | #endif /* netpacket/packet.h */ 41 | -------------------------------------------------------------------------------- /include/windows/poll.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openvswitch/ovs/0e419d1b4fc9207e77c240c287000d57ddbf6915/include/windows/poll.h -------------------------------------------------------------------------------- /include/windows/strings.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openvswitch/ovs/0e419d1b4fc9207e77c240c287000d57ddbf6915/include/windows/strings.h -------------------------------------------------------------------------------- /include/windows/sys/epoll.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014 Cloudbase Solutions Srl 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #ifndef __SYS_EPOLL_H 18 | #define __SYS_EPOLL_H 1 19 | 20 | #define EPOLLIN 0x00001 21 | 22 | typedef union data { 23 | uint32_t u32; 24 | } data_t; 25 | 26 | struct epoll_event { 27 | uint32_t events; 28 | data_t data; 29 | }; 30 | 31 | #endif /* sys/epoll.h */ 32 | -------------------------------------------------------------------------------- /include/windows/sys/ioctl.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openvswitch/ovs/0e419d1b4fc9207e77c240c287000d57ddbf6915/include/windows/sys/ioctl.h -------------------------------------------------------------------------------- /include/windows/sys/socket.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014 Nicira, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at: 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #ifndef __SYS_SOCKET_H 18 | #define __SYS_SOCKET_H 1 19 | 20 | typedef unsigned short int sa_family_t; 21 | 22 | #endif /* sys/socket.h */ 23 | -------------------------------------------------------------------------------- /include/windows/sys/time.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openvswitch/ovs/0e419d1b4fc9207e77c240c287000d57ddbf6915/include/windows/sys/time.h -------------------------------------------------------------------------------- /include/windows/sys/uio.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014 Cloudbase Solutions Srl 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #ifndef __SYS_UIO_H 18 | #define __SYS_UIO_H 1 19 | 20 | #include 21 | 22 | #endif /* sys/uio.h */ 23 | -------------------------------------------------------------------------------- /include/windows/sys/un.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openvswitch/ovs/0e419d1b4fc9207e77c240c287000d57ddbf6915/include/windows/sys/un.h -------------------------------------------------------------------------------- /include/windows/sys/wait.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openvswitch/ovs/0e419d1b4fc9207e77c240c287000d57ddbf6915/include/windows/sys/wait.h -------------------------------------------------------------------------------- /ipsec/.gitignore: -------------------------------------------------------------------------------- 1 | /ovs-monitor-ipsec 2 | -------------------------------------------------------------------------------- /ipsec/automake.mk: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2017 Nicira, Inc. 2 | # 3 | # Copying and distribution of this file, with or without modification, 4 | # are permitted in any medium without royalty provided the copyright 5 | # notice and this notice are preserved. This file is offered as-is, 6 | # without warranty of any kind. 7 | 8 | scripts_SCRIPTS += ipsec/ovs-monitor-ipsec 9 | EXTRA_DIST += ipsec/ovs-monitor-ipsec.in 10 | FLAKE8_PYFILES += ipsec/ovs-monitor-ipsec.in 11 | CLEANFILES += ipsec/ovs-monitor-ipsec 12 | -------------------------------------------------------------------------------- /lib/.gitignore: -------------------------------------------------------------------------------- 1 | /Makefile 2 | /Makefile.in 3 | /dirs.c 4 | /coverage-counters.c 5 | /meta-flow.inc 6 | /nx-match.inc 7 | /ofp-actions.inc1 8 | /ofp-actions.inc2 9 | /ofp-errors.inc 10 | /ofp-msgs.inc 11 | /ovsdb-server-idl.c 12 | /ovsdb-server-idl.h 13 | /ovsdb-server-idl.ovsidl 14 | /ovs-actions.7 15 | /ovs-fields.7 16 | /stdio.h 17 | /string.h 18 | /vswitch-idl.c 19 | /vswitch-idl.h 20 | /vswitch-idl.ovsidl 21 | /libopenvswitch.pc 22 | /libsflow.pc 23 | -------------------------------------------------------------------------------- /lib/common-syn.man: -------------------------------------------------------------------------------- 1 | .IP "Common options:" 2 | [\fB\-h\fR | \fB\-\-help\fR] 3 | [\fB\-V\fR | \fB\-\-version\fR] 4 | 5 | -------------------------------------------------------------------------------- /lib/common.man: -------------------------------------------------------------------------------- 1 | .IP "\fB\-h\fR" 2 | .IQ "\fB\-\-help\fR" 3 | Prints a brief help message to the console. 4 | . 5 | .IP "\fB\-V\fR" 6 | .IQ "\fB\-\-version\fR" 7 | Prints version information to the console. 8 | -------------------------------------------------------------------------------- /lib/common.xml: -------------------------------------------------------------------------------- 1 | 2 |
3 |
-h
4 |
--help
5 |
6 | Prints a brief help message to the console. 7 |
8 | 9 |
-V
10 |
--version
11 |
12 | Prints version information to the console. 13 |
14 |
15 | -------------------------------------------------------------------------------- /lib/connectivity.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2013 Nicira, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at: 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #ifndef CONNECTIVITY_H 18 | #define CONNECTIVITY_H 1 19 | 20 | #include 21 | 22 | /* For tracking connectivity changes globally. */ 23 | struct seq *connectivity_seq_get(void); 24 | 25 | #endif /* connectivity.h */ 26 | -------------------------------------------------------------------------------- /lib/cooperative-multitasking-private.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024 Canonical Ltd. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at: 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #ifndef COOPERATIVE_MULTITASKING_PRIVATE_H 18 | #define COOPERATIVE_MULTITASKING_PRIVATE_H 1 19 | 20 | #include "openvswitch/hmap.h" 21 | 22 | extern struct hmap cooperative_multitasking_callbacks; 23 | 24 | struct cm_entry { 25 | struct hmap_node node; 26 | void (*cb)(void *); 27 | void *arg; 28 | long long int threshold; 29 | long long int last_run; 30 | const char *name; 31 | }; 32 | 33 | #endif /* COOPERATIVE_MULTITASKING_PRIVATE_H */ 34 | -------------------------------------------------------------------------------- /lib/coverage-unixctl.man: -------------------------------------------------------------------------------- 1 | .SS "COVERAGE COMMANDS" 2 | These commands manage \fB\*(PN\fR's ``coverage counters,'' which count 3 | the number of times particular events occur during a daemon's runtime. 4 | In addition to these commands, \fB\*(PN\fR automatically logs coverage 5 | counter values, at \fBINFO\fR level, when it detects that the daemon's 6 | main loop takes unusually long to run. 7 | .PP 8 | Coverage counters are useful mainly for performance analysis and 9 | debugging. 10 | .IP "\fBcoverage/show\fR" 11 | Displays the averaged per-second rates for the last few seconds, the 12 | last minute and the last hour, and the total counts of all of the 13 | coverage counters. 14 | .IP "\fBcoverage/read-counter\fR \fIcounter\fR" 15 | Displays the total count for the given coverage \fIcounter\fR. 16 | -------------------------------------------------------------------------------- /lib/cpu.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2021, Red Hat, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at: 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #ifndef CPU_H 18 | #define CPU_H 1 19 | 20 | #include 21 | 22 | enum ovs_cpu_isa { 23 | OVS_CPU_ISA_X86_FIRST, 24 | OVS_CPU_ISA_X86_BMI2 = OVS_CPU_ISA_X86_FIRST, 25 | OVS_CPU_ISA_X86_AVX512F, 26 | OVS_CPU_ISA_X86_AVX512BW, 27 | OVS_CPU_ISA_X86_AVX512VBMI, 28 | OVS_CPU_ISA_X86_AVX512VL, 29 | OVS_CPU_ISA_X86_VPOPCNTDQ, 30 | OVS_CPU_ISA_X86_LAST = OVS_CPU_ISA_X86_VPOPCNTDQ, 31 | }; 32 | 33 | bool cpu_has_isa(enum ovs_cpu_isa); 34 | 35 | #endif /* CPU_H */ 36 | -------------------------------------------------------------------------------- /lib/crc32c.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2012 The University of Waikato. 3 | * Author: Joe Stringer 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at: 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | 18 | #ifndef CRC32C_H 19 | #define CRC32C_H 1 20 | 21 | #include "openvswitch/types.h" 22 | 23 | ovs_be32 crc32c(const uint8_t *data, size_t); 24 | 25 | #endif /* crc32c.h */ 26 | -------------------------------------------------------------------------------- /lib/daemon-private.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014 Nicira, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at: 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #ifndef DAEMON_PRIVATE_H 18 | #define DAEMON_PRIVATE_H 1 19 | 20 | extern bool detach; 21 | extern char *pidfile; 22 | extern int daemonize_fd; 23 | extern bool monitor; 24 | 25 | char *make_pidfile_name(const char *name); 26 | 27 | #endif /* daemon-private.h */ 28 | -------------------------------------------------------------------------------- /lib/daemon-syn.man: -------------------------------------------------------------------------------- 1 | .IP "Daemon options:" 2 | [\fB\-\-pidfile\fR[\fB=\fIpidfile\fR]] 3 | [\fB\-\-overwrite\-pidfile\fR] 4 | [\fB\-\-detach\fR] 5 | [\fB\-\-no\-chdir\fR] 6 | [\fB\-\-no\-self\-confinement\fR] 7 | -------------------------------------------------------------------------------- /lib/dh2048.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN DH PARAMETERS----- 2 | MIIBCAKCAQEA9kJXtwh/CBdyorrWqULzBej5UxE5T7bxbrlLOCDaAadWoxTpj0BV 3 | 89AHxstDqZSt90xkhkn4DIO9ZekX1KHTUPj1WV/cdlJPPT2N286Z4VeSWc39uK50 4 | T8X8dryDxUcwYc58yWb/Ffm7/ZFexwGq01uejaClcjrUGvC/RgBYK+X0iP1YTknb 5 | zSC0neSRBzZrM2w4DUUdD3yIsxx8Wy2O9vPJI8BD8KVbGI2Ou1WMuF040zT9fBdX 6 | Q6MdGGzeMyEstSr/POGxKUAYEY18hKcKctaGxAMZyAcpesqVDNmWn6vQClCbAkbT 7 | CD1mpF1Bn5x8vYlLIhkmuquiXsNV6TILOwIBAg== 8 | -----END DH PARAMETERS----- 9 | 10 | These are the 2048 bit DH parameters from "Assigned Number for SKIP Protocols" 11 | (http://www.skip-vpn.org/spec/numbers.html). 12 | See there for how they were generated. 13 | -------------------------------------------------------------------------------- /lib/dh4096.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN DH PARAMETERS----- 2 | MIICCAKCAgEA+hRyUsFN4VpJ1O8JLcCo/VWr19k3BCgJ4uk+d+KhehjdRqNDNyOQ 3 | l/MOyQNQfWXPeGKmOmIig6Ev/nm6Nf9Z2B1h3R4hExf+zTiHnvVPeRBhjdQi81rt 4 | Xeoh6TNrSBIKIHfUJWBh3va0TxxjQIs6IZOLeVNRLMqzeylWqMf49HsIXqbcokUS 5 | Vt1BkvLdW48j8PPv5DsKRN3tloTxqDJGo9tKvj1Fuk74A+Xda1kNhB7KFlqMyN98 6 | VETEJ6c7KpfOo30mnK30wqw3S8OtaIR/maYX72tGOno2ehFDkq3pnPtEbD2CScxc 7 | alJC+EL7RPk5c/tgeTvCngvc1KZn92Y//EI7G9tPZtylj2b56sHtMftIoYJ9+ODM 8 | sccD5Piz/rejE3Ome8EOOceUSCYAhXn8b3qvxVI1ddd1pED6FHRhFvLrZxFvBEM9 9 | ERRMp5QqOaHJkM+Dxv8Cj6MqrCbfC4u+ZErxodzuusgDgvZiLF22uxMZbobFWyte 10 | OvOzKGtwcTqO/1wV5gKkzu1ZVswVUQd5Gg8lJicwqRWyyNRczDDoG9jVDxmogKTH 11 | AaqLulO7R8Ifa1SwF2DteSGVtgWEN8gDpN3RBmmPTDngyF2DHb5qmpnznwtFKdTL 12 | KWbuHn491xNO25CQWMtem80uKw+pTnisBRF/454n1Jnhub144YRBoN8CAQI= 13 | -----END DH PARAMETERS----- 14 | 15 | These are the 4096 bit DH parameters from "Assigned Number for SKIP Protocols" 16 | (http://www.skip-vpn.org/spec/numbers.html). 17 | See there for how they were generated. 18 | Note that g is not a generator, but this is not a problem since p is a safe prime. 19 | -------------------------------------------------------------------------------- /lib/dhparams.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2008, 2017 Nicira, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at: 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #ifndef DHPARAMS_H 18 | #define DHPARAMS_H 1 19 | 20 | #include 21 | #include 22 | 23 | DH *get_dh2048(void); 24 | DH *get_dh4096(void); 25 | 26 | #endif /* dhparams.h */ 27 | -------------------------------------------------------------------------------- /lib/dns-resolve-stub.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017, 2018 Nicira, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at: 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #include 18 | #include "dns-resolve.h" 19 | #include "compiler.h" 20 | 21 | void 22 | dns_resolve_init(bool is_daemon OVS_UNUSED) 23 | { 24 | } 25 | 26 | bool 27 | dns_resolve(const char *name OVS_UNUSED, char **addr) 28 | { 29 | *addr = NULL; 30 | return false; 31 | } 32 | 33 | void 34 | dns_resolve_destroy(void) 35 | { 36 | } 37 | -------------------------------------------------------------------------------- /lib/dns-resolve.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2017, 2018 Nicira, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at: 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #ifndef DNS_RESOLVE_H 18 | #define DNS_RESOLVE_H 1 19 | 20 | #include 21 | 22 | void dns_resolve_init(bool is_daemon); 23 | bool dns_resolve(const char *name, char **addr); 24 | void dns_resolve_destroy(void); 25 | 26 | #endif /* dns-resolve.h */ 27 | -------------------------------------------------------------------------------- /lib/dp-packet-gso.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2023 Red Hat, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at: 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #ifndef DP_PACKET_GSO_H 18 | #define DP_PACKET_GSO_H 1 19 | 20 | bool dp_packet_gso(struct dp_packet *, struct dp_packet_batch **); 21 | int dp_packet_gso_nr_segs(struct dp_packet *); 22 | 23 | #endif /* dp-packet-gso.h */ 24 | -------------------------------------------------------------------------------- /lib/dpdk-unixctl.man: -------------------------------------------------------------------------------- 1 | .SS "DPDK COMMANDS" 2 | These commands manage DPDK components. 3 | .IP "\fBdpdk/lcore-list\fR" 4 | Lists the DPDK lcores and their cpu affinity. 5 | When RTE_MAX_LCORE lcores are registered, some OVS PMD threads won't appear. 6 | .IP "\fBdpdk/log-list\fR" 7 | Lists all DPDK components that emit logs and their logging levels. 8 | .IP "\fBdpdk/log-set\fR [\fIspec\fR]" 9 | Sets DPDK components logging level. Without any \fIspec\fR, sets the logging 10 | \fBlevel\fR for all DPDK components to \fBdebug\fR. Otherwise, \fIspec\fR is a 11 | list of words separated by spaces: a word can be either a logging \fBlevel\fR 12 | (\fBemergency\fR, \fBalert\fR, \fBcritical\fR, \fBerror\fR, \fBwarning\fR, 13 | \fBnotice\fR, \fBinfo\fR or \fBdebug\fR) or a \fBpattern\fR matching DPDK 14 | components (see \fBdpdk/log-list\fR command on \fBovs\-appctl\fR(8)) separated 15 | by a colon from the logging \fBlevel\fR to apply. 16 | .IP "\fBdpdk/get-malloc-stats\fR" 17 | Prints the heap information statistics about DPDK malloc. 18 | .IP "\fBdpdk/get-memzone-stats\fR" 19 | Prints the reserved memory zones from DPDK. 20 | .RE 21 | . 22 | -------------------------------------------------------------------------------- /lib/dpif-netlink-unixctl.man: -------------------------------------------------------------------------------- 1 | .SS "DPIF-NETLINK COMMANDS" 2 | These commands are used to expose internal information of the "dpif-netlink" 3 | kernel space datapath. 4 | . 5 | .IP "\fBdpif-netlink/dispatch-mode\fR" 6 | Displays the "dispatch-mode" for all datapaths. 7 | -------------------------------------------------------------------------------- /lib/entropy.h: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2010 Nicira, Inc. 2 | * 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at: 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | 16 | #ifndef ENTROPY_H 17 | #define ENTROPY_H 1 18 | 19 | #include 20 | 21 | int get_entropy(void *, size_t); 22 | void get_entropy_or_die(void *, size_t); 23 | 24 | #endif /* entropy.h */ 25 | -------------------------------------------------------------------------------- /lib/if-notifier-stub.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015 Red Hat, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at: 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #include 18 | #include "if-notifier.h" 19 | #include 20 | #include "compiler.h" 21 | 22 | struct if_notifier * 23 | if_notifier_create(if_notify_func *cb OVS_UNUSED, void *aux OVS_UNUSED) 24 | { 25 | return NULL; 26 | } 27 | 28 | void 29 | if_notifier_destroy(struct if_notifier *notifier OVS_UNUSED) 30 | { 31 | } 32 | 33 | void 34 | if_notifier_run(void) 35 | { 36 | } 37 | 38 | void 39 | if_notifier_wait(void) 40 | { 41 | } 42 | -------------------------------------------------------------------------------- /lib/json.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024 Canonical Ltd. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at: 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #ifndef JSON_H 18 | #define JSON_H 1 19 | 20 | #include "openvswitch/json.h" 21 | 22 | static inline void 23 | json_destroy_with_yield(struct json *json) 24 | { 25 | if (json && !--json->count) { 26 | json_destroy__(json, true); 27 | } 28 | } 29 | 30 | struct json *json_serialized_object_create_with_yield(const struct json *); 31 | 32 | #endif /* JSON_H */ 33 | -------------------------------------------------------------------------------- /lib/libopenvswitch.pc.in: -------------------------------------------------------------------------------- 1 | prefix=@prefix@ 2 | exec_prefix=@exec_prefix@ 3 | libdir=@libdir@ 4 | includedir=@includedir@ 5 | 6 | Name: libopenvswitch 7 | Description: Open vSwitch library 8 | Version: @VERSION@ 9 | Libs: -L${libdir} -lopenvswitch 10 | Libs.private: @LIBS@ @SSL_LIBS@ @CAPNG_LDADD@ 11 | Cflags: -I${includedir} 12 | -------------------------------------------------------------------------------- /lib/libopenvswitch.sym.in: -------------------------------------------------------------------------------- 1 | libopenvswitch_@LT_CURRENT@ { 2 | global: 3 | *; 4 | }; 5 | -------------------------------------------------------------------------------- /lib/libsflow.pc.in: -------------------------------------------------------------------------------- 1 | prefix=@prefix@ 2 | exec_prefix=@exec_prefix@ 3 | libdir=@libdir@ 4 | includedir=@includedir@ 5 | 6 | Name: libofproto 7 | Description: sFlow library of Open vSwitch 8 | Version: @VERSION@ 9 | Libs: -L${libdir} -lsflow 10 | Libs.private: @LIBS@ 11 | Cflags: -I${includedir} 12 | -------------------------------------------------------------------------------- /lib/libsflow.sym.in: -------------------------------------------------------------------------------- 1 | libsflow_@LT_CURRENT@ { 2 | global: 3 | *; 4 | }; 5 | -------------------------------------------------------------------------------- /lib/lockfile.h: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2008, 2009 Nicira, Inc. 2 | * 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at: 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | 16 | #ifndef LOCKFILE_H 17 | #define LOCKFILE_H 1 18 | 19 | struct lockfile; 20 | 21 | char *lockfile_name(const char *file); 22 | int lockfile_lock(const char *file, struct lockfile **); 23 | void lockfile_unlock(struct lockfile *); 24 | void lockfile_postfork(void); 25 | 26 | #endif /* lib/lockfile.h */ 27 | -------------------------------------------------------------------------------- /lib/memory-unixctl.man: -------------------------------------------------------------------------------- 1 | .SS "MEMORY COMMANDS" 2 | These commands report memory usage. 3 | . 4 | .IP "\fBmemory/show\fR" 5 | Displays some basic statistics about \fB\*(PN\fR's memory usage. 6 | \fB\*(PN\fR also logs this information soon after startup and 7 | periodically as its memory consumption grows. 8 | -------------------------------------------------------------------------------- /lib/netdev-dpdk-unixctl.man: -------------------------------------------------------------------------------- 1 | .SS "NETDEV-DPDK COMMANDS" 2 | These commands manage DPDK related ports (\fBtype=\fR\fIdpdk*\fR). 3 | .IP "\fBnetdev-dpdk/set-admin-state\fR [\fIinterface\fR] \fBup\fR | \fBdown\fR" 4 | Change the admin state for DPDK \fIinterface\fR to \fBup\fR or \fBdown\fR. 5 | If \fIinterface\fR is not specified, then it applies to all DPDK ports. 6 | .IP "\fBnetdev-dpdk/detach\fR \fIpci-address\fR" 7 | Detaches device with corresponding \fIpci-address\fR from DPDK. This command 8 | can be used to detach device if it wasn't detached automatically after port 9 | deletion. Refer to the documentation for details and instructions. 10 | .IP "\fBnetdev-dpdk/get-mempool-info\fR [\fIinterface\fR]" 11 | Prints the debug information about memory pool used by DPDK \fIinterface\fR. 12 | If called without arguments, information of all the available mempools will 13 | be printed. For additional mempool statistics enable 14 | \fBCONFIG_RTE_LIBRTE_MEMPOOL_DEBUG\fR while building DPDK. 15 | -------------------------------------------------------------------------------- /lib/odp-execute-unixctl.man: -------------------------------------------------------------------------------- 1 | .SS "ODP-EXECUTE COMMANDS" 2 | These commands manage the "odp-execute" component. 3 | 4 | .IP "\fBodp-execute/action-impl-show\fR 5 | Lists the actions implementations that are available and highlights the 6 | currently enabled one. 7 | . 8 | .IP "\fBodp-execute/action-impl-set\fR \fIaction_impl\fR" 9 | Sets the action implementation to any available implementation. By default 10 | "scalar" is used. 11 | -------------------------------------------------------------------------------- /lib/ofp-version-opt.h: -------------------------------------------------------------------------------- 1 | #ifndef OFP_VERSION_H 2 | #define OFP_VERSION_H 1 3 | 4 | #include 5 | #include "util.h" 6 | 7 | #define OFP_VERSION_LONG_OPTIONS \ 8 | {"version", no_argument, NULL, 'V'}, \ 9 | {"protocols", required_argument, NULL, 'O'} 10 | 11 | #define OFP_VERSION_OPTION_HANDLERS \ 12 | case 'V': \ 13 | ovs_print_version(OFP10_VERSION, OFP15_VERSION); \ 14 | exit(EXIT_SUCCESS); \ 15 | \ 16 | case 'O': \ 17 | set_allowed_ofp_versions(optarg); \ 18 | break; 19 | 20 | uint32_t get_allowed_ofp_versions(void); 21 | void set_allowed_ofp_versions(const char *string); 22 | void mask_allowed_ofp_versions(uint32_t); 23 | void add_allowed_ofp_versions(uint32_t); 24 | void ofp_version_usage(void); 25 | 26 | #endif 27 | -------------------------------------------------------------------------------- /lib/ofp-version.man: -------------------------------------------------------------------------------- 1 | .IP "\fB\-O \fR[\fIversion\fR[\fB,\fIversion\fR]...]\fR" 2 | .IQ "\fB\-\-protocols=\fR[\fIversion\fR[\fB,\fIversion\fR]...]\fR" 3 | Sets the OpenFlow protocol versions that are allowed when establishing 4 | an OpenFlow session. 5 | . 6 | .IP 7 | These protocol versions are enabled by default: 8 | . 9 | .RS 10 | .IP \(bu 11 | \fBOpenFlow10\fR, for OpenFlow 1.0. 12 | .RE 13 | . 14 | The following protocol versions are generally supported, but for 15 | compatibility with older versions of Open vSwitch they are not enabled 16 | by default: 17 | . 18 | .RS 19 | .IP \(bu 20 | \fBOpenFlow11\fR, for OpenFlow 1.1. 21 | . 22 | .IP \(bu 23 | \fBOpenFlow12\fR, for OpenFlow 1.2. 24 | . 25 | .IP \(bu 26 | \fBOpenFlow13\fR, for OpenFlow 1.3. 27 | . 28 | .IP \(bu 29 | \fBOpenFlow14\fR, for OpenFlow 1.4. 30 | . 31 | .IP \(bu 32 | \fBOpenFlow15\fR, for OpenFlow 1.5. 33 | .RE 34 | -------------------------------------------------------------------------------- /lib/ovs-replay-syn.man: -------------------------------------------------------------------------------- 1 | .IP "Replay options:" 2 | [\fB\-\-record\fR[\fB=\fIdirectory\fR]] 3 | [\fB\-\-replay\fR[\fB=\fIdirectory\fR]] 4 | -------------------------------------------------------------------------------- /lib/ovs-replay.man: -------------------------------------------------------------------------------- 1 | .IP "\fB\-\-record[=\fIdirectory\fR]" 2 | Sets the process in "recording" mode, in which it will record all the 3 | connections, data from streams (Unix domain and network sockets) and some other 4 | important necessary bits, so they could be replayed later. 5 | Recorded data is stored in replay files in specified \fIdirectory\fR. 6 | If \fIdirectory\fR does not begin with \fB/\fR, it is interpreted as relative 7 | to \fB@RUNDIR@\fR. If \fIdirectory\fR is not specified, \fB@RUNDIR@\fR will 8 | be used. 9 | . 10 | .IP "\fB\-\-replay[=\fIdirectory\fR]" 11 | Sets the process in "replay" mode, in which it will read information about 12 | connections, data from streams (Unix domain and network sockets) and some 13 | other necessary bits directly from replay files instead of using real sockets. 14 | Replay files from the \fIdirectory\fR will be used. If \fIdirectory\fR does 15 | not begin with \fB/\fR, it is interpreted as relative to \fB@RUNDIR@\fR. 16 | If \fIdirectory\fR is not specified, \fB@RUNDIR@\fR will be used. 17 | -------------------------------------------------------------------------------- /lib/ovsdb-server-idl.ann: -------------------------------------------------------------------------------- 1 | # -*- python -*- 2 | 3 | # This code, when invoked by "ovsdb-idlc annotate" (by the build 4 | # process), annotates vswitch.ovsschema with additional data that give 5 | # the ovsdb-idl engine information about the types involved, so that 6 | # it can generate more programmer-friendly data structures. 7 | 8 | s["idlPrefix"] = "serverrec_" 9 | s["idlHeader"] = "\"lib/ovsdb-server-idl.h\"" 10 | -------------------------------------------------------------------------------- /lib/ovsdb-session.h: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2017 Nicira, Inc. 2 | * 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at: 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | 16 | #ifndef OVSDB_SESSION_H 17 | #define OVSDB_SESSION_H 1 18 | 19 | struct svec; 20 | struct uuid; 21 | 22 | void ovsdb_session_parse_remote(const char *s, 23 | struct svec *remotes, struct uuid *cid); 24 | 25 | #endif /* ovsdb-session.h */ 26 | -------------------------------------------------------------------------------- /lib/ox-stat.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2010, 2011, 2012, 2013, 2014, 2016 Nicira, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at: 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #ifndef OX_STAT_H 18 | #define OX_STAT_H 1 19 | 20 | #include 21 | 22 | struct ofpbuf; 23 | 24 | struct oxs_stats { 25 | uint32_t duration_sec; 26 | uint32_t duration_nsec; 27 | uint32_t idle_age; 28 | uint64_t packet_count; 29 | uint64_t byte_count; 30 | uint32_t flow_count; 31 | }; 32 | 33 | void oxs_put_stats(struct ofpbuf *, const struct oxs_stats *); 34 | enum ofperr oxs_pull_stat(struct ofpbuf *, struct oxs_stats *, 35 | uint16_t *, uint8_t *); 36 | 37 | #endif /* ox_stat.h */ 38 | -------------------------------------------------------------------------------- /lib/service-syn.man: -------------------------------------------------------------------------------- 1 | .IP "Service options:" 2 | [\fB\-\-service\fR] 3 | [\fB\-\-service\-monitor\fR] 4 | -------------------------------------------------------------------------------- /lib/service.man: -------------------------------------------------------------------------------- 1 | The following options are valid only on Windows platform. 2 | .TP 3 | \fB\-\-service\fR 4 | Causes \fB\*(PN\fR to run as a service in the background. The service 5 | should already have been created through external tools like \fBSC.exe\fR. 6 | . 7 | .TP 8 | \fB\-\-service\-monitor\fR 9 | Causes the \fB\*(PN\fR service to be automatically restarted by the Windows 10 | services manager if the service dies or exits for unexpected reasons. 11 | .IP 12 | When \fB\-\-service\fR is not specified, this option has no effect. 13 | -------------------------------------------------------------------------------- /lib/signals.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2008, 2011, 2013 Nicira, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at: 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #ifndef SIGNALS_H 18 | #define SIGNALS_H 1 19 | 20 | #include 21 | #include 22 | #include "openvswitch/type-props.h" 23 | 24 | enum { SIGNAL_NAME_BUFSIZE = 7 + INT_STRLEN(int) + 1 }; 25 | const char *signal_name(int signum, char *namebuf, size_t bufsize); 26 | 27 | void xsigaction(int signum, const struct sigaction *, struct sigaction *old); 28 | 29 | #endif /* signals.h */ 30 | -------------------------------------------------------------------------------- /lib/sort.h: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2009 Nicira, Inc. 2 | * 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at: 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | 16 | #ifndef SORT_H 17 | #define SORT_H 1 18 | 19 | #include 20 | 21 | void sort(size_t count, 22 | int (*compare)(size_t a, size_t b, void *aux), 23 | void (*swap)(size_t a, size_t b, void *aux), 24 | void *aux); 25 | 26 | #endif /* sort.h */ 27 | -------------------------------------------------------------------------------- /lib/ssl-bootstrap-syn.man: -------------------------------------------------------------------------------- 1 | .br 2 | [\fB\-\-bootstrap\-ca\-cert=\fIcacert.pem\fR] 3 | -------------------------------------------------------------------------------- /lib/ssl-bootstrap.man: -------------------------------------------------------------------------------- 1 | .IP "\fB\-\-bootstrap\-ca\-cert=\fIcacert.pem\fR" 2 | When \fIcacert.pem\fR exists, this option has the same effect as 3 | \fB\-C\fR or \fB\-\-ca\-cert\fR. If it does not exist, then 4 | \fB\*(PN\fR will attempt to obtain the CA certificate from the 5 | SSL/TLS peer on its first SSL/TLS connection and save it to the named 6 | PEM file. If it is successful, it will immediately drop the connection 7 | and reconnect, and from then on all SSL/TLS connections must be 8 | authenticated by a certificate signed by the CA certificate thus 9 | obtained. 10 | .IP 11 | \fBThis option exposes the SSL/TLS connection to a man-in-the-middle 12 | attack obtaining the initial CA certificate\fR, but it may be useful 13 | for bootstrapping. 14 | .IP 15 | This option is only useful if the SSL/TLS peer sends its CA certificate 16 | as part of the SSL/TLS certificate chain. SSL/TLS protocols do not 17 | require the server to send the CA certificate. 18 | .IP 19 | This option is mutually exclusive with \fB\-C\fR and 20 | \fB\-\-ca\-cert\fR. 21 | -------------------------------------------------------------------------------- /lib/ssl-connect-syn.man: -------------------------------------------------------------------------------- 1 | .IP "SSL/TLS connection options:" 2 | [\fB\-\-ssl\-protocols=\fIprotocols\fR] 3 | .br 4 | [\fB\-\-ssl\-ciphers=\fIciphers\fR] 5 | .br 6 | [\fB\-\-ssl\-ciphersuites=\fIciphersuites\fR] 7 | .br 8 | -------------------------------------------------------------------------------- /lib/ssl-peer-ca-cert-syn.man: -------------------------------------------------------------------------------- 1 | .br 2 | [\fB\-\-peer\-ca\-cert=\fIpeer-cacert.pem\fR] 3 | -------------------------------------------------------------------------------- /lib/ssl-peer-ca-cert.man: -------------------------------------------------------------------------------- 1 | .IP "\fB\-\-peer\-ca\-cert=\fIpeer-cacert.pem\fR" 2 | Specifies a PEM file that contains one or more additional certificates 3 | to send to SSL/TLS peers. \fIpeer-cacert.pem\fR should be the CA 4 | certificate used to sign \fB\*(PN\fR's own certificate, that is, the 5 | certificate specified on \fB\-c\fR or \fB\-\-certificate\fR. If 6 | \fB\*(PN\fR's certificate is self-signed, then \fB\-\-certificate\fR 7 | and \fB\-\-peer\-ca\-cert\fR should specify the same file. 8 | .IP 9 | This option is not useful in normal operation, because the SSL/TLS peer 10 | must already have the CA certificate for the peer to have any 11 | confidence in \fB\*(PN\fR's identity. However, this offers a way for 12 | a new installation to bootstrap the CA certificate on its first SSL/TLS 13 | connection. 14 | -------------------------------------------------------------------------------- /lib/ssl-peer-ca-cert.xml: -------------------------------------------------------------------------------- 1 | 2 |
3 |
--peer-ca-cert=peer-cacert.pem
4 |
5 |

6 | Specifies a PEM file that contains one or more additional certificates 7 | to send to SSL/TLS peers. peer-cacert.pem should be the CA 8 | certificate used to sign the program's own certificate, that is, the 9 | certificate specified on -c or --certificate. 10 | If the program's certificate is self-signed, then 11 | --certificate and --peer-ca-cert should specify 12 | the same file. 13 |

14 |

15 | This option is not useful in normal operation, because the SSL/TLS peer 16 | must already have the CA certificate for the peer to have any 17 | confidence in the program's identity. However, this offers a way for 18 | a new installation to bootstrap the CA certificate on its first SSL/TLS 19 | connection. 20 |

21 |
22 |
23 | -------------------------------------------------------------------------------- /lib/ssl-syn.man: -------------------------------------------------------------------------------- 1 | .IP "Public key infrastructure options:" 2 | [\fB\-\-private\-key=\fIprivkey.pem\fR] 3 | .br 4 | [\fB\-\-certificate=\fIcert.pem\fR] 5 | .br 6 | [\fB\-\-ca\-cert=\fIcacert.pem\fR] 7 | -------------------------------------------------------------------------------- /lib/syslog-direct.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015 Nicira, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at: 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #ifndef SYSLOG_DIRECT_H 18 | #define SYSLOG_DIRECT_H 1 19 | 20 | struct syslogger *syslog_direct_create(const char *method); 21 | 22 | #endif /* syslog-direct.h */ 23 | -------------------------------------------------------------------------------- /lib/syslog-libc.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015 Nicira, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at: 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #ifndef SYSLOG_LIBC_H 18 | #define SYSLOG_LIBC_H 1 19 | 20 | struct syslogger *syslog_libc_create(void); 21 | 22 | #endif /* syslog-libc.h */ 23 | -------------------------------------------------------------------------------- /lib/syslog-null.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2015 Nicira, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at: 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #ifndef SYSLOG_NULL_H 18 | #define SYSLOG_NULL_H 1 19 | 20 | struct syslogger *syslog_null_create(void); 21 | 22 | #endif /* syslog-null.h */ 23 | -------------------------------------------------------------------------------- /lib/unixctl-syn.man: -------------------------------------------------------------------------------- 1 | .IP "Runtime management options:" 2 | \fB\-\-unixctl=\fIsocket\fR 3 | -------------------------------------------------------------------------------- /lib/unixctl.man: -------------------------------------------------------------------------------- 1 | .IP "\fB\-\-unixctl=\fIsocket\fR" 2 | Sets the name of the control socket on which \fB\*(PN\fR listens for 3 | runtime management commands (see \fBRUNTIME MANAGEMENT COMMANDS\fR, 4 | below). If \fIsocket\fR does not begin with \fB/\fR, it is 5 | interpreted as relative to \fB@RUNDIR@\fR. If \fB\-\-unixctl\fR is 6 | not used at all, the default socket is 7 | \fB@RUNDIR@/\*(PN.\fIpid\fB.ctl\fR, where \fIpid\fR is \fB\*(PN\fR's 8 | process ID. 9 | .IP 10 | On Windows a local named pipe is used to listen for runtime management 11 | commands. A file is created in the absolute path as pointed by 12 | \fIsocket\fR or if \fB\-\-unixctl\fR is not used at all, a file is 13 | created as \fB\*(PN.ctl\fR in the configured \fIOVS_RUNDIR\fR 14 | directory. The file exists just to mimic the behavior of a Unix domain socket. 15 | .IP 16 | Specifying \fBnone\fR for \fIsocket\fR disables the control socket 17 | feature. 18 | -------------------------------------------------------------------------------- /lib/unixctl.xml: -------------------------------------------------------------------------------- 1 | 2 |
3 |
--unixctl=socket
4 |
5 | Sets the name of the control socket on which 6 | program listens for runtime management commands 7 | (see RUNTIME MANAGEMENT COMMANDS, below). If socket 8 | does not begin with /, it is interpreted as relative to 9 | @RUNDIR@. If --unixctl is not used at all, 10 | the default socket is 11 | @RUNDIR@/program.pid.ctl, 12 | where pid is program's process ID. 13 |

14 | On Windows a local named pipe is used to listen for runtime management 15 | commands. A file is created in the absolute path as pointed by 16 | socket or if --unixctl is not used at all, 17 | a file is created as program in the configured 18 | OVS_RUNDIR directory. The file exists just to mimic the 19 | behavior of a Unix domain socket. 20 |

21 |

22 | Specifying none for socket disables the control 23 | socket feature. 24 |

25 |
26 |
27 | -------------------------------------------------------------------------------- /lib/userspace-tso.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2020 Red Hat Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at: 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #ifndef USERSPACE_TSO_H 18 | #define USERSPACE_TSO_H 1 19 | 20 | void userspace_tso_init(const struct smap *ovs_other_config); 21 | bool userspace_tso_enabled(void); 22 | 23 | #endif /* userspace-tso.h */ 24 | -------------------------------------------------------------------------------- /lib/valgrind.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2008, 2009 Nicira, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at: 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #ifndef VALGRIND_H 18 | #define VALGRIND_H 1 19 | 20 | #ifdef HAVE_VALGRIND_VALGRIND_H 21 | #include 22 | #else 23 | #define RUNNING_ON_VALGRIND 0 24 | #endif 25 | 26 | #endif /* valgrind.h */ 27 | -------------------------------------------------------------------------------- /lib/vconn-active.man: -------------------------------------------------------------------------------- 1 | .IP "\fBssl:\fIhost\fR[\fB:\fIport\fR]" 2 | .IQ "\fBtcp:\fIhost\fR[\fB:\fIport\fR]" 3 | The specified \fIport\fR on the given \fIhost\fR, which can 4 | be expressed either as a DNS name (if built with unbound library) 5 | or an IP address in IPv4 or IPv6 address format. Wrap IPv6 addresses 6 | in square brackets, e.g. \fBtcp:[::1]:6653\fR. On Linux, use 7 | \fB%\fIdevice\fR to designate a scope for IPv6 link-level addresses, 8 | e.g. \fBtcp:[fe80::1234%eth0]:6653\fR. For \fBssl\fR, the 9 | \fB\-\-private\-key\fR, \fB\-\-certificate\fR, and \fB\-\-ca\-cert\fR 10 | options are mandatory. 11 | .IP 12 | If \fIport\fR is not specified, it defaults to 6653. 13 | .TP 14 | \fBunix:\fIfile\fR 15 | On POSIX, a Unix domain server socket named \fIfile\fR. 16 | .IP 17 | On Windows, connect to a local named pipe that is represented by a 18 | file created in the path \fIfile\fR to mimic the behavior of a Unix 19 | domain socket. 20 | -------------------------------------------------------------------------------- /lib/vconn-passive.man: -------------------------------------------------------------------------------- 1 | .IP "\fBpssl:\fR[\fIport\fR][\fB:\fIhost\fR]" 2 | .IQ "\fBptcp:\fR[\fIport\fR][\fB:\fIhost\fR]" 3 | Listens for OpenFlow connections on \fIport\fR. The default 4 | \fIport\fR is 6653. By default, connections are allowed from any IPv4 5 | address. Specify \fIhost\fR as an IPv4 address or a bracketed IPv6 6 | address (e.g. \fBptcp:6653:[::1]\fR). On Linux, use \fB%\fIdevice\fR 7 | to designate a scope for IPv6 link-level addresses, 8 | e.g. \fBptcp:6653:[fe80::1234%eth0]\fR. DNS names can 9 | be used if built with unbound library. For \fBpssl\fR, the 10 | \fB\-\-private\-key\fR,\fB\-\-certificate\fR, and \fB\-\-ca\-cert\fR 11 | options are mandatory. 12 | .IP 13 | . 14 | .IP "\fBpunix:\fIfile\fR" 15 | Listens for OpenFlow connections on the Unix domain server socket 16 | named \fIfile\fR. 17 | -------------------------------------------------------------------------------- /lib/vlog-syn.man: -------------------------------------------------------------------------------- 1 | .IP "Logging options:" 2 | [\fB\-v\fR[\fImodule\fR[\fB:\fIdestination\fR[\fB:\fIlevel\fR]]]]\&... 3 | .br 4 | [\fB\-\-verbose[=\fImodule\fR[\fB:\fIdestination\fR[\fB:\fIlevel\fR]]]]\&... 5 | .br 6 | [\fB\-\-log\-file\fR[\fB=\fIfile\fR]] 7 | -------------------------------------------------------------------------------- /lib/vswitch-idl.ann: -------------------------------------------------------------------------------- 1 | # -*- python -*- 2 | 3 | # This code, when invoked by "ovsdb-idlc annotate" (by the build 4 | # process), annotates vswitch.ovsschema with additional data that give 5 | # the ovsdb-idl engine information about the types involved, so that 6 | # it can generate more programmer-friendly data structures. 7 | 8 | s["idlPrefix"] = "ovsrec_" 9 | s["idlHeader"] = "\"lib/vswitch-idl.h\"" 10 | -------------------------------------------------------------------------------- /m4/.gitignore: -------------------------------------------------------------------------------- 1 | /libtool.m4 2 | /ltoptions.m4 3 | /ltsugar.m4 4 | /ltversion.m4 5 | /lt~obsolete.m4 6 | -------------------------------------------------------------------------------- /m4/automake.mk: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2013 Nicira, Inc. 2 | # 3 | # Copying and distribution of this file, with or without modification, 4 | # are permitted in any medium without royalty provided the copyright 5 | # notice and this notice are preserved. This file is offered as-is, 6 | # without warranty of any kind. 7 | 8 | EXTRA_DIST += \ 9 | m4/absolute-header.m4 \ 10 | m4/include_next.m4 \ 11 | m4/pkg.m4 12 | -------------------------------------------------------------------------------- /m4/compat.m4: -------------------------------------------------------------------------------- 1 | # -*- autoconf -*- 2 | 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at: 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | m4_ifndef([AS_VAR_COPY], 16 | [m4_define([AS_VAR_COPY], 17 | [AS_LITERAL_IF([$1[]$2], [$1=$$2], [eval $1=\$$2])])]) 18 | -------------------------------------------------------------------------------- /ofproto/.gitignore: -------------------------------------------------------------------------------- 1 | /Makefile 2 | /Makefile.in 3 | /ipfix-entities.def 4 | /libofproto.pc 5 | -------------------------------------------------------------------------------- /ofproto/collectors.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2009, 2011 Nicira, Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at: 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | #ifndef COLLECTORS_H 18 | #define COLLECTORS_H 1 19 | 20 | #include 21 | #include 22 | 23 | struct collectors; 24 | struct sset; 25 | 26 | int collectors_create(const struct sset *targets, int default_port, 27 | struct collectors **); 28 | void collectors_destroy(struct collectors *); 29 | 30 | size_t collectors_send(const struct collectors *, const void *, size_t); 31 | 32 | int collectors_count(const struct collectors *); 33 | 34 | #endif /* collectors.h */ 35 | -------------------------------------------------------------------------------- /ofproto/ipfix-enterprise-entities.def: -------------------------------------------------------------------------------- 1 | /* IPFIX enterprise entities. */ 2 | #ifndef IPFIX_ENTERPRISE_ENTITY 3 | #define IPFIX_ENTERPRISE_ENTITY(ENUM, ID, SIZE, NAME, ENTERPRISE) 4 | #endif 5 | 6 | #define IPFIX_ENTERPRISE_VMWARE 6876 7 | 8 | IPFIX_ENTERPRISE_ENTITY(TUNNEL_TYPE, 891, 1, tunnelType, IPFIX_ENTERPRISE_VMWARE) 9 | IPFIX_ENTERPRISE_ENTITY(TUNNEL_KEY, 892, 0, tunnelKey, IPFIX_ENTERPRISE_VMWARE) 10 | IPFIX_ENTERPRISE_ENTITY(TUNNEL_SOURCE_IPV4_ADDRESS, 893, 4, tunnelSourceIPv4Address, IPFIX_ENTERPRISE_VMWARE) 11 | IPFIX_ENTERPRISE_ENTITY(TUNNEL_DESTINATION_IPV4_ADDRESS, 894, 4, tunnelDestinationIPv4Address, IPFIX_ENTERPRISE_VMWARE) 12 | IPFIX_ENTERPRISE_ENTITY(TUNNEL_PROTOCOL_IDENTIFIER, 895, 1, tunnelProtocolIdentifier, IPFIX_ENTERPRISE_VMWARE) 13 | IPFIX_ENTERPRISE_ENTITY(TUNNEL_SOURCE_TRANSPORT_PORT, 896, 2, tunnelSourceTransportPort, IPFIX_ENTERPRISE_VMWARE) 14 | IPFIX_ENTERPRISE_ENTITY(TUNNEL_DESTINATION_TRANSPORT_PORT, 897, 2, tunnelDestinationTransportPort, IPFIX_ENTERPRISE_VMWARE) 15 | IPFIX_ENTERPRISE_ENTITY(VIRTUAL_OBS_ID, 898, 0, virtualObsID, IPFIX_ENTERPRISE_VMWARE) 16 | 17 | #undef IPFIX_ENTERPRISE_ENTITY 18 | -------------------------------------------------------------------------------- /ofproto/libofproto.pc.in: -------------------------------------------------------------------------------- 1 | prefix=@prefix@ 2 | exec_prefix=@exec_prefix@ 3 | libdir=@libdir@ 4 | includedir=@includedir@ 5 | 6 | Name: libofproto 7 | Description: OpenFlow library of Open vSwitch 8 | Version: @VERSION@ 9 | Libs: -L${libdir} -lofproto 10 | Libs.private: @LIBS@ 11 | Cflags: -I${includedir} 12 | -------------------------------------------------------------------------------- /ofproto/libofproto.sym.in: -------------------------------------------------------------------------------- 1 | libofproto_@LT_CURRENT@ { 2 | global: 3 | *; 4 | }; 5 | -------------------------------------------------------------------------------- /ovsdb/.gitignore: -------------------------------------------------------------------------------- 1 | /_server.ovsschema.inc 2 | /_server.ovsschema.stamp 3 | /local-config.ovsschema.stamp 4 | /ovsdb.local-config.5 5 | /ovsdb-client 6 | /ovsdb-client.1 7 | /ovsdb-doc 8 | /ovsdb-dot 9 | /ovsdb-idlc 10 | /ovsdb-server 11 | /ovsdb-server.1 12 | /ovsdb-server.5 13 | /ovsdb-tool 14 | /ovsdb-tool.1 15 | /libovsdb.pc 16 | -------------------------------------------------------------------------------- /ovsdb/_server.ovsschema: -------------------------------------------------------------------------------- 1 | {"name": "_Server", 2 | "version": "1.2.0", 3 | "cksum": "3009684573 744", 4 | "tables": { 5 | "Database": { 6 | "columns": { 7 | "name": {"type": "string"}, 8 | "model": { 9 | "type": {"key": {"type": "string", 10 | "enum": ["set", 11 | ["standalone", "clustered", "relay"]]}}}, 12 | "connected": {"type": "boolean"}, 13 | "leader": {"type": "boolean"}, 14 | "schema": { 15 | "type": {"key": {"type": "string"}, "min": 0, "max": 1}}, 16 | "cid": { 17 | "type": {"key": {"type": "uuid"}, "min": 0, "max": 1}}, 18 | "sid": { 19 | "type": {"key": {"type": "uuid"}, "min": 0, "max": 1}}, 20 | "index": { 21 | "type": {"key": {"type": "integer"}, "min": 0, "max": 1}}}, 22 | "isRoot": true}}} 23 | -------------------------------------------------------------------------------- /ovsdb/libovsdb.pc.in: -------------------------------------------------------------------------------- 1 | prefix=@prefix@ 2 | exec_prefix=@exec_prefix@ 3 | libdir=@libdir@ 4 | includedir=@includedir@ 5 | 6 | Name: libovsdb 7 | Description: OVSDB library of Open vSwitch 8 | Version: @VERSION@ 9 | Libs: -L${libdir} -lovsdb 10 | Libs.private: @LIBS@ 11 | Cflags: -I${includedir} 12 | -------------------------------------------------------------------------------- /ovsdb/libovsdb.sym.in: -------------------------------------------------------------------------------- 1 | libovsdb_@LT_CURRENT@ { 2 | global: 3 | *; 4 | }; 5 | -------------------------------------------------------------------------------- /ovsdb/ovsdb-schemas.man: -------------------------------------------------------------------------------- 1 | .PP 2 | An OVSDB schema has a schema version number, and an OVSDB database 3 | embeds a particular version of an OVSDB schema. These version numbers 4 | take the form \fIx\fB.\fIy\fB.\fIz\fR, e.g. \fB1.2.3\fR. The OVSDB 5 | implementation does not enforce a particular version numbering scheme, 6 | but schemas managed within the Open vSwitch project use the following 7 | approach. Whenever the database schema is changed in a non-backward 8 | compatible way (e.g. deleting a column or a table), \fIx\fR is 9 | incremented (and \fIy\fR and \fIz\fR are reset to 0). When the 10 | database schema is changed in a backward compatible way (e.g. adding a 11 | new column), \fIy\fR is incremented (and \fIz\fR is reset to 0). When 12 | the database schema is changed cosmetically (e.g. reindenting its 13 | syntax), \fIz\fR is incremented. 14 | .PP 15 | Some OVSDB databases and schemas, especially very old ones, do not 16 | have a version number. 17 | .PP 18 | Schema version numbers and Open vSwitch version numbers are 19 | independent. 20 | -------------------------------------------------------------------------------- /python/.gitignore: -------------------------------------------------------------------------------- 1 | dist/ 2 | *.egg-info 3 | setup.py 4 | -------------------------------------------------------------------------------- /python/ovs/.gitignore: -------------------------------------------------------------------------------- 1 | dirs.py 2 | flow/ofp_fields.py 3 | version.py 4 | -------------------------------------------------------------------------------- /python/ovs/__init__.py: -------------------------------------------------------------------------------- 1 | # This file intentionally left blank. 2 | -------------------------------------------------------------------------------- /python/ovs/compat/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openvswitch/ovs/0e419d1b4fc9207e77c240c287000d57ddbf6915/python/ovs/compat/__init__.py -------------------------------------------------------------------------------- /python/ovs/compat/sortedcontainers/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright 2014-2019 Grant Jenks 2 | 3 | Licensed under the Apache License, Version 2.0 (the "License"); 4 | you may not use this file except in compliance with the License. 5 | You may obtain a copy of the License at 6 | 7 | http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | Unless required by applicable law or agreed to in writing, software 10 | distributed under the License is distributed on an "AS IS" BASIS, 11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | See the License for the specific language governing permissions and 13 | limitations under the License. 14 | -------------------------------------------------------------------------------- /python/ovs/db/__init__.py: -------------------------------------------------------------------------------- 1 | # This file intentionally left blank. 2 | -------------------------------------------------------------------------------- /python/ovs/flow/__init__.py: -------------------------------------------------------------------------------- 1 | """ Global flow library entrypoint. 2 | """ 3 | for libname in ["netaddr", "pyparsing"]: 4 | try: 5 | lib = __import__(libname) 6 | except ModuleNotFoundError as e: 7 | raise ImportError( 8 | f"OVS Flow library requires {libname} to be installed." 9 | " To install all the dependencies needed for the Flow library, run" 10 | " 'pip install -e ovs[flow]' (or 'pip install -e .[flow]' locally)" 11 | ) from e 12 | else: 13 | globals()[libname] = lib 14 | -------------------------------------------------------------------------------- /python/ovs/flowviz/__init__.py: -------------------------------------------------------------------------------- 1 | import ovs.flowviz.ofp.cli # noqa: F401 2 | import ovs.flowviz.odp.cli # noqa: F401 3 | -------------------------------------------------------------------------------- /python/ovs/flowviz/odp/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openvswitch/ovs/0e419d1b4fc9207e77c240c287000d57ddbf6915/python/ovs/flowviz/odp/__init__.py -------------------------------------------------------------------------------- /python/ovs/flowviz/ofp/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openvswitch/ovs/0e419d1b4fc9207e77c240c287000d57ddbf6915/python/ovs/flowviz/ofp/__init__.py -------------------------------------------------------------------------------- /python/ovs/flowviz/ovs-flowviz: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # 3 | # Copyright (c) 2022,2023 Red Hat, Inc. 4 | # 5 | # Licensed under the Apache License, Version 2.0 (the "License"); 6 | # you may not use this file except in compliance with the License. 7 | # You may obtain a copy of the License at: 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, 13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | # See the License for the specific language governing permissions and 15 | # limitations under the License. 16 | 17 | from ovs.flowviz import main 18 | 19 | if __name__ == '__main__': 20 | main.main() 21 | -------------------------------------------------------------------------------- /python/ovs_build_helpers/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openvswitch/ovs/0e419d1b4fc9207e77c240c287000d57ddbf6915/python/ovs_build_helpers/__init__.py -------------------------------------------------------------------------------- /python/ovstest/__init__.py: -------------------------------------------------------------------------------- 1 | # This file intentionally left blank. 2 | -------------------------------------------------------------------------------- /python/test_requirements.txt: -------------------------------------------------------------------------------- 1 | netaddr 2 | packaging 3 | pyftpdlib 4 | pyparsing 5 | pytest 6 | scapy 7 | tftpy 8 | -------------------------------------------------------------------------------- /rhel/.gitignore: -------------------------------------------------------------------------------- 1 | openvswitch.spec 2 | openvswitch-fedora.spec 3 | usr_lib_systemd_system_ovs-vswitchd.service 4 | -------------------------------------------------------------------------------- /rhel/etc_logrotate.d_openvswitch: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2009, 2010, 2011, 2012 Nicira, Inc. 2 | # 3 | # Copying and distribution of this file, with or without modification, 4 | # are permitted in any medium without royalty provided the copyright 5 | # notice and this notice are preserved. This file is offered as-is, 6 | # without warranty of any kind. 7 | 8 | /var/log/openvswitch/*.log { 9 | su root root 10 | daily 11 | compress 12 | sharedscripts 13 | missingok 14 | postrotate 15 | # Tell Open vSwitch daemons to reopen their log files 16 | if [ -d /run/openvswitch ]; then 17 | for ctl in /run/openvswitch/*.ctl; do 18 | ovs-appctl -t "$ctl" vlog/reopen 2>/dev/null || : 19 | done 20 | fi 21 | endscript 22 | } 23 | -------------------------------------------------------------------------------- /rhel/etc_openvswitch_default.conf: -------------------------------------------------------------------------------- 1 | # DO NOT EDIT THIS FILE 2 | 3 | # The following is the *default* configuration for the openvswitch user ID. 4 | # This is for backward compatibility. 5 | OVS_USER_ID="root:root" 6 | -------------------------------------------------------------------------------- /rhel/usr_lib_systemd_system_openvswitch-ipsec.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=OVS IPsec daemon 3 | Requires=openvswitch.service 4 | After=openvswitch.service 5 | 6 | [Service] 7 | Type=forking 8 | PIDFile=/run/openvswitch/ovs-monitor-ipsec.pid 9 | Restart=on-failure 10 | EnvironmentFile=/etc/openvswitch/default.conf 11 | EnvironmentFile=-/etc/sysconfig/openvswitch 12 | ExecStart=/usr/share/openvswitch/scripts/ovs-ctl --no-monitor \ 13 | --ike-daemon=libreswan start-ovs-ipsec $OPTIONS 14 | ExecStop=/usr/share/openvswitch/scripts/ovs-ctl stop-ovs-ipsec 15 | 16 | [Install] 17 | WantedBy=multi-user.target 18 | -------------------------------------------------------------------------------- /rhel/usr_lib_systemd_system_openvswitch.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Open vSwitch 3 | Before=network.target network.service 4 | After=network-pre.target ovsdb-server.service ovs-vswitchd.service 5 | PartOf=network.target 6 | Requires=ovsdb-server.service 7 | Requires=ovs-vswitchd.service 8 | 9 | [Service] 10 | Type=oneshot 11 | ExecStart=/bin/true 12 | ExecReload=/usr/share/openvswitch/scripts/ovs-systemd-reload 13 | ExecStop=/bin/true 14 | RemainAfterExit=yes 15 | 16 | [Install] 17 | WantedBy=multi-user.target 18 | -------------------------------------------------------------------------------- /rhel/usr_lib_systemd_system_ovs-delete-transient-ports.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Open vSwitch Delete Transient Ports 3 | After=ovsdb-server.service 4 | Before=ovs-vswitchd.service 5 | AssertPathExists=/run/openvswitch/db.sock 6 | 7 | [Service] 8 | Type=oneshot 9 | RemainAfterExit=yes 10 | ExecStart=/usr/share/openvswitch/scripts/ovs-ctl delete-transient-ports 11 | -------------------------------------------------------------------------------- /rhel/usr_lib_udev_rules.d_91-vfio.rules: -------------------------------------------------------------------------------- 1 | ACTION=="add", SUBSYSTEM=="vfio*", GROUP="hugetlbfs", MODE="0660" 2 | -------------------------------------------------------------------------------- /rhel/usr_share_openvswitch_scripts_sysconfig.template: -------------------------------------------------------------------------------- 1 | ### Configuration options for openvswitch 2 | 3 | # Copyright (C) 2009, 2010, 2011 Nicira, Inc. 4 | 5 | # FORCE_COREFILES: If 'yes' then core files will be enabled. 6 | # FORCE_COREFILES=yes 7 | 8 | # OVSDB_SERVER_PRIORITY: "nice" priority at which to run ovsdb-server. 9 | # 10 | # OVSDB_SERVER_PRIORITY=-10 11 | 12 | # VSWITCHD_PRIORITY: "nice" priority at which to run ovs-vswitchd. 13 | # VSWITCHD_PRIORITY=-10 14 | 15 | # VSWITCHD_MLOCKALL: Whether to pass ovs-vswitchd the --mlockall option. 16 | # This option should be set to "yes" or "no". The default is "yes". 17 | # Enabling this option can avoid networking interruptions due to 18 | # system memory pressure in extraordinary situations, such as multiple 19 | # concurrent VM import operations. 20 | # VSWITCHD_MLOCKALL=yes 21 | 22 | # OVS_CTL_OPTS: Extra options to pass to ovs-ctl. This is, for example, 23 | # a suitable place to specify --ovs-vswitchd-wrapper=valgrind. 24 | # OVS_CTL_OPTS= 25 | -------------------------------------------------------------------------------- /selinux/.gitignore: -------------------------------------------------------------------------------- 1 | openvswitch-custom.te 2 | openvswitch-custom.fc 3 | openvswitch-custom.pp 4 | openvswitch-custom.if 5 | tmp/ 6 | -------------------------------------------------------------------------------- /selinux/automake.mk: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2016 Nicira, Inc. 2 | # 3 | # Copying and distribution of this file, with or without modification, 4 | # are permitted in any medium without royalty provided the copyright 5 | # notice and this notice are preserved. This file is offered as-is, 6 | # without warranty of any kind. 7 | 8 | EXTRA_DIST += \ 9 | selinux/openvswitch-custom.fc.in \ 10 | selinux/openvswitch-custom.te.in 11 | 12 | PHONY: selinux-policy 13 | 14 | selinux-policy: selinux/openvswitch-custom.te selinux/openvswitch-custom.fc 15 | $(MAKE) -C selinux/ -f /usr/share/selinux/devel/Makefile 16 | 17 | CLEANFILES += \ 18 | selinux/openvswitch-custom.te \ 19 | selinux/openvswitch-custom.pp \ 20 | selinux/openvswitch-custom.fc \ 21 | selinux/openvswitch-custom.if 22 | -------------------------------------------------------------------------------- /selinux/openvswitch-custom.fc.in: -------------------------------------------------------------------------------- 1 | @pkgdatadir@/scripts/ovs-kmod-ctl -- gen_context(system_u:object_r:openvswitch_load_module_exec_t,s0) 2 | -------------------------------------------------------------------------------- /tests/auto-attach.at: -------------------------------------------------------------------------------- 1 | AT_BANNER([auto-attach unit tests]) 2 | 3 | AT_SETUP([auto-attach - packets]) 4 | AT_KEYWORDS([auto-attach]) 5 | AT_CHECK(ovstest test-aa, [], [ignore], [ignore]) 6 | 7 | AT_CLEANUP 8 | -------------------------------------------------------------------------------- /tests/fuzz-regression.at: -------------------------------------------------------------------------------- 1 | AT_BANNER([fuzz regression]) 2 | 3 | OVS_START_SHELL_HELPERS 4 | test_fuzz_regression() { 5 | filename=$top_srcdir/tests/fuzz-regression/$1 6 | AS_CASE([$1], 7 | [flow_extract_fuzzer*], [ovs-ofctl parse-packet < $filename], 8 | [ofp_print_fuzzer*], [ovs-ofctl ofp-parse - < $filename], 9 | [json_parser_fuzzer*], [ovstest test-json $filename], 10 | [*], [AT_FAIL_IF([:])]) 11 | status=$? 12 | AT_CHECK([test $status = 0 || test $status = 1]) 13 | } 14 | OVS_END_SHELL_HELPERS 15 | 16 | m4_define([TEST_FUZZ_REGRESSION], 17 | [AT_SETUP([fuzz regression - $1]) 18 | test_fuzz_regression $1 19 | AT_CLEANUP]) 20 | 21 | m4_include([tests/fuzz-regression-list.at]) 22 | -------------------------------------------------------------------------------- /tests/fuzz-regression/flow_extract_fuzzer-5112775280951296: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openvswitch/ovs/0e419d1b4fc9207e77c240c287000d57ddbf6915/tests/fuzz-regression/flow_extract_fuzzer-5112775280951296 -------------------------------------------------------------------------------- /tests/fuzz-regression/flow_extract_fuzzer-5457710546944000: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openvswitch/ovs/0e419d1b4fc9207e77c240c287000d57ddbf6915/tests/fuzz-regression/flow_extract_fuzzer-5457710546944000 -------------------------------------------------------------------------------- /tests/fuzz-regression/json_parser_fuzzer-4790908707930112: -------------------------------------------------------------------------------- 1 | 340282366920938463461761716499e2147483637 -------------------------------------------------------------------------------- /tests/fuzz-regression/ofp_print_fuzzer-4584019764183040: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openvswitch/ovs/0e419d1b4fc9207e77c240c287000d57ddbf6915/tests/fuzz-regression/ofp_print_fuzzer-4584019764183040 -------------------------------------------------------------------------------- /tests/fuzz-regression/ofp_print_fuzzer-4671928750702592: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openvswitch/ovs/0e419d1b4fc9207e77c240c287000d57ddbf6915/tests/fuzz-regression/ofp_print_fuzzer-4671928750702592 -------------------------------------------------------------------------------- /tests/fuzz-regression/ofp_print_fuzzer-4730143510626304: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openvswitch/ovs/0e419d1b4fc9207e77c240c287000d57ddbf6915/tests/fuzz-regression/ofp_print_fuzzer-4730143510626304 -------------------------------------------------------------------------------- /tests/fuzz-regression/ofp_print_fuzzer-4854119633256448: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openvswitch/ovs/0e419d1b4fc9207e77c240c287000d57ddbf6915/tests/fuzz-regression/ofp_print_fuzzer-4854119633256448 -------------------------------------------------------------------------------- /tests/fuzz-regression/ofp_print_fuzzer-5070973479944192: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openvswitch/ovs/0e419d1b4fc9207e77c240c287000d57ddbf6915/tests/fuzz-regression/ofp_print_fuzzer-5070973479944192 -------------------------------------------------------------------------------- /tests/fuzz-regression/ofp_print_fuzzer-5072291707748352: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openvswitch/ovs/0e419d1b4fc9207e77c240c287000d57ddbf6915/tests/fuzz-regression/ofp_print_fuzzer-5072291707748352 -------------------------------------------------------------------------------- /tests/fuzz-regression/ofp_print_fuzzer-5147430386401280: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openvswitch/ovs/0e419d1b4fc9207e77c240c287000d57ddbf6915/tests/fuzz-regression/ofp_print_fuzzer-5147430386401280 -------------------------------------------------------------------------------- /tests/fuzz-regression/ofp_print_fuzzer-5168455220199424: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openvswitch/ovs/0e419d1b4fc9207e77c240c287000d57ddbf6915/tests/fuzz-regression/ofp_print_fuzzer-5168455220199424 -------------------------------------------------------------------------------- /tests/fuzz-regression/ofp_print_fuzzer-5190507327127552: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openvswitch/ovs/0e419d1b4fc9207e77c240c287000d57ddbf6915/tests/fuzz-regression/ofp_print_fuzzer-5190507327127552 -------------------------------------------------------------------------------- /tests/fuzz-regression/ofp_print_fuzzer-5204186701496320: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openvswitch/ovs/0e419d1b4fc9207e77c240c287000d57ddbf6915/tests/fuzz-regression/ofp_print_fuzzer-5204186701496320 -------------------------------------------------------------------------------- /tests/fuzz-regression/ofp_print_fuzzer-5394482341085184: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openvswitch/ovs/0e419d1b4fc9207e77c240c287000d57ddbf6915/tests/fuzz-regression/ofp_print_fuzzer-5394482341085184 -------------------------------------------------------------------------------- /tests/fuzz-regression/ofp_print_fuzzer-5395207246839808: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openvswitch/ovs/0e419d1b4fc9207e77c240c287000d57ddbf6915/tests/fuzz-regression/ofp_print_fuzzer-5395207246839808 -------------------------------------------------------------------------------- /tests/fuzz-regression/ofp_print_fuzzer-5647458888581120: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openvswitch/ovs/0e419d1b4fc9207e77c240c287000d57ddbf6915/tests/fuzz-regression/ofp_print_fuzzer-5647458888581120 -------------------------------------------------------------------------------- /tests/fuzz-regression/ofp_print_fuzzer-5674119268925440: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openvswitch/ovs/0e419d1b4fc9207e77c240c287000d57ddbf6915/tests/fuzz-regression/ofp_print_fuzzer-5674119268925440 -------------------------------------------------------------------------------- /tests/fuzz-regression/ofp_print_fuzzer-5674419757252608: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openvswitch/ovs/0e419d1b4fc9207e77c240c287000d57ddbf6915/tests/fuzz-regression/ofp_print_fuzzer-5674419757252608 -------------------------------------------------------------------------------- /tests/fuzz-regression/ofp_print_fuzzer-5677588436484096: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openvswitch/ovs/0e419d1b4fc9207e77c240c287000d57ddbf6915/tests/fuzz-regression/ofp_print_fuzzer-5677588436484096 -------------------------------------------------------------------------------- /tests/fuzz-regression/ofp_print_fuzzer-5706562554298368: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openvswitch/ovs/0e419d1b4fc9207e77c240c287000d57ddbf6915/tests/fuzz-regression/ofp_print_fuzzer-5706562554298368 -------------------------------------------------------------------------------- /tests/fuzz-regression/ofp_print_fuzzer-5722747668791296: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openvswitch/ovs/0e419d1b4fc9207e77c240c287000d57ddbf6915/tests/fuzz-regression/ofp_print_fuzzer-5722747668791296 -------------------------------------------------------------------------------- /tests/fuzz-regression/ofp_print_fuzzer-6285128790704128: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openvswitch/ovs/0e419d1b4fc9207e77c240c287000d57ddbf6915/tests/fuzz-regression/ofp_print_fuzzer-6285128790704128 -------------------------------------------------------------------------------- /tests/fuzz-regression/ofp_print_fuzzer-6470117922701312: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openvswitch/ovs/0e419d1b4fc9207e77c240c287000d57ddbf6915/tests/fuzz-regression/ofp_print_fuzzer-6470117922701312 -------------------------------------------------------------------------------- /tests/fuzz-regression/ofp_print_fuzzer-6502620041576448: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openvswitch/ovs/0e419d1b4fc9207e77c240c287000d57ddbf6915/tests/fuzz-regression/ofp_print_fuzzer-6502620041576448 -------------------------------------------------------------------------------- /tests/fuzz-regression/ofp_print_fuzzer-6540965472632832: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openvswitch/ovs/0e419d1b4fc9207e77c240c287000d57ddbf6915/tests/fuzz-regression/ofp_print_fuzzer-6540965472632832 -------------------------------------------------------------------------------- /tests/glibc.supp: -------------------------------------------------------------------------------- 1 | # suppress what appear to unavoidable error reports from glibc 2 | 3 | { 4 | timer_create 5 | Memcheck:Leak 6 | fun:malloc 7 | fun:timer_create 8 | } 9 | 10 | { 11 | timer_create 12 | Memcheck:Param 13 | timer_create(evp) 14 | ... 15 | fun:set_up_timer 16 | } 17 | 18 | { 19 | aio 20 | Memcheck:Leak 21 | fun:calloc 22 | ... 23 | fun:allocate_stack 24 | ... 25 | fun:__aio_create_helper_thread 26 | } 27 | -------------------------------------------------------------------------------- /tests/heap.at: -------------------------------------------------------------------------------- 1 | AT_BANNER([heap library]) 2 | 3 | m4_define([TEST_HEAP], 4 | [AT_SETUP([heap library -- m4_bpatsubst([$1], [-], [ ])]) 5 | AT_CHECK([ovstest test-heap $1]) 6 | AT_CLEANUP]) 7 | 8 | TEST_HEAP([insert-delete-same-order]) 9 | TEST_HEAP([insert-delete-reverse-order]) 10 | TEST_HEAP([insert-delete-every-order]) 11 | TEST_HEAP([insert-delete-same-order-with-dups]) 12 | TEST_HEAP([raw-insert]) 13 | TEST_HEAP([raw-delete]) 14 | -------------------------------------------------------------------------------- /tests/idltest.ann: -------------------------------------------------------------------------------- 1 | # -*- python -*- 2 | 3 | # This code, when invoked by "ovsdb-idlc annotate" (by the build 4 | # process), annotates idltest.ovsschema with additional data that give 5 | # the ovsdb-idl engine information about the types involved, so that 6 | # it can generate more programmer-friendly data structures. 7 | 8 | s["idlPrefix"] = "idltest_" 9 | s["idlHeader"] = "\"tests/idltest.h\"" 10 | -------------------------------------------------------------------------------- /tests/jsonrpc.at: -------------------------------------------------------------------------------- 1 | AT_BANNER([JSON-RPC - C]) 2 | 3 | AT_SETUP([JSON-RPC request and successful reply]) 4 | AT_CHECK([ovstest test-jsonrpc --detach --no-chdir --pidfile listen punix:socket]) 5 | on_exit 'kill `cat test-jsonrpc.pid`' 6 | AT_CHECK( 7 | [[ovstest test-jsonrpc request unix:socket echo '[{"a": "b", "x": null}]']], [0], 8 | [[{"error":null,"id":0,"result":[{"a":"b","x":null}]} 9 | ]]) 10 | AT_CLEANUP 11 | 12 | AT_SETUP([JSON-RPC request and error reply]) 13 | AT_CHECK([ovstest test-jsonrpc --detach --no-chdir --pidfile listen punix:socket]) 14 | on_exit 'kill `cat test-jsonrpc.pid`' 15 | AT_CHECK( 16 | [[ovstest test-jsonrpc request unix:socket bad-request '[]']], [0], 17 | [[{"error":{"error":"unknown method"},"id":0,"result":null} 18 | ]]) 19 | AT_CLEANUP 20 | 21 | AT_SETUP([JSON-RPC notification]) 22 | AT_CHECK([ovstest test-jsonrpc --detach --no-chdir --pidfile listen punix:socket]) 23 | on_exit 'kill `cat test-jsonrpc.pid`' 24 | # Check that the pidfile got created. 25 | AT_CHECK([test -e test-jsonrpc.pid]) 26 | AT_CHECK([[ovstest test-jsonrpc notify unix:socket shutdown '[]']]) 27 | # Wait for test-jsonrpc to die, based on its pidfile disappearing 28 | OVS_WAIT_WHILE([test -e test-jsonrpc.pid]) 29 | AT_CLEANUP 30 | -------------------------------------------------------------------------------- /tests/learning-switch.at: -------------------------------------------------------------------------------- 1 | AT_BANNER([learning switch]) 2 | 3 | ### ----------------------------------------------------------------- 4 | ### learning switch OpenFlow15 test case 5 | ### ----------------------------------------------------------------- 6 | 7 | AT_SETUP([learning switch - OpenFlow15]) 8 | dnl Start ovs-testcontroller 9 | AT_CHECK([ovs-testcontroller --no-chdir --detach punix:controller --pidfile -v ptcp:], [0], [ignore]) 10 | dnl Start ovs 11 | OVS_VSWITCHD_START([dnl 12 | set bridge br0 datapath_type=dummy \ 13 | protocols=OpenFlow15 -- \ 14 | add-port br0 p1 -- set Interface p1 type=dummy ofport_request=1 -- \ 15 | set-controller br0 tcp:127.0.0.1:6653]) 16 | AT_CHECK([ 17 | ovs-appctl netdev-dummy/receive p1 1e2ce92a669e3a6dd2099cab0800450000548a53400040011addc0a80a0ac0a80a1e08006f200a4d0001fc509a58000000002715020000000000101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f3031323334353637 18 | ], [0], [ignore]) 19 | AT_CHECK([kill `cat ovs-testcontroller.pid`]) 20 | 21 | OVS_WAIT_UNTIL([! test -e controller]) 22 | OVS_VSWITCHD_STOP(["/cannot find route for controller/d"]) 23 | AT_CLEANUP 24 | -------------------------------------------------------------------------------- /tests/lib.at: -------------------------------------------------------------------------------- 1 | AT_BANNER([Library -- basic]) 2 | 3 | AT_SETUP([successful linking]) 4 | AT_KEYWORDS([libopenvswitch]) 5 | AT_CAPTURE_FILE([log]) 6 | AT_CHECK( 7 | [test-lib], [0], 8 | [], [ignore]) 9 | AT_CLEANUP 10 | -------------------------------------------------------------------------------- /tests/netdev-type.at: -------------------------------------------------------------------------------- 1 | AT_BANNER([netdev-type]) 2 | 3 | dnl Setting MAC address of netdev internal port fails 4 | AT_SETUP([bridge - set MAC address of internal port]) 5 | OVS_VSWITCHD_START 6 | 7 | # Add an internal port and make sure that it shows up in the datapath. 8 | add_of_ports br0 1 9 | AT_CHECK([ovs-appctl dpif/show], [0], [dnl 10 | dummy@ovs-dummy: hit:0 missed:0 11 | br0: 12 | br0 65534/100: (dummy-internal) 13 | p1 1/1: (dummy) 14 | ]) 15 | # 16 | # Set MAC address of dummy device and check that it has been set 17 | AT_CHECK([ovs-vsctl set Interface p1 type=internal mac=\"aa:55:c0:ff:ee:00\"]) 18 | AT_CHECK([ovs-vsctl get Interface p1 mac_in_use], [0], [dnl 19 | "aa:55:c0:ff:ee:00" 20 | ]) 21 | 22 | OVS_APP_EXIT_AND_WAIT([ovs-vswitchd]) 23 | OVS_APP_EXIT_AND_WAIT([ovsdb-server]) 24 | AT_CLEANUP 25 | -------------------------------------------------------------------------------- /tests/openssl.supp: -------------------------------------------------------------------------------- 1 | # suppress OpenSSL errors from valgrind 2 | 3 | { 4 | BN_mod_inverse 5 | Memcheck:Cond 6 | fun:BN_mod_inverse 7 | } 8 | 9 | { 10 | BN_div 11 | Memcheck:Cond 12 | fun:BN_div 13 | } 14 | -------------------------------------------------------------------------------- /tests/oss-fuzz/config/flow_extract_target.options: -------------------------------------------------------------------------------- 1 | [libfuzzer] 2 | dict = ovs.dict 3 | close_fd_mask = 3 4 | -------------------------------------------------------------------------------- /tests/oss-fuzz/config/json_parser_target.options: -------------------------------------------------------------------------------- 1 | [libfuzzer] 2 | dict = json.dict 3 | -------------------------------------------------------------------------------- /tests/oss-fuzz/config/miniflow_target.options: -------------------------------------------------------------------------------- 1 | [libfuzzer] 2 | dict = ovs.dict 3 | close_fd_mask = 3 -------------------------------------------------------------------------------- /tests/oss-fuzz/config/odp_target.options: -------------------------------------------------------------------------------- 1 | [libfuzzer] 2 | close_fd_mask = 3 3 | dict = odp.dict 4 | -------------------------------------------------------------------------------- /tests/oss-fuzz/config/ofctl_parse_target.options: -------------------------------------------------------------------------------- 1 | [libfuzzer] 2 | close_fd_mask = 3 3 | dict = ofp-flow.dict 4 | -------------------------------------------------------------------------------- /tests/oss-fuzz/config/ofp-flow.dict: -------------------------------------------------------------------------------- 1 | ")" 2 | "(" 3 | "[" 4 | "]" 5 | "," 6 | "-" 7 | "0" 8 | ":" 9 | "=" 10 | "ADD" 11 | "DEL" 12 | "DEL_STRICT" 13 | "MOD" 14 | "MOD_STRICT" 15 | "\x00" 16 | "\x20" 17 | "\x3F" 18 | "actions" 19 | "add" 20 | "allow_hidden_fields" 21 | "cc" 22 | "check_overlap" 23 | "cookie" 24 | "delete" 25 | "delete_strict" 26 | "duration" 27 | "eth" 28 | "hard_age" 29 | "hard_timeout" 30 | "idle_age" 31 | "idle_timeout" 32 | "importance" 33 | "modify" 34 | "modify_strict" 35 | "n_bytes" 36 | "n_packets" 37 | "no_byte_counts" 38 | "no_packet_counts" 39 | "no_readonly_table" 40 | "out_group" 41 | "out_port" 42 | "priority" 43 | "reset_counts" 44 | "send_flow_rem" 45 | "table" 46 | -------------------------------------------------------------------------------- /tests/oss-fuzz/config/ofp_print_target.options: -------------------------------------------------------------------------------- 1 | [libfuzzer] 2 | close_fd_mask = 3 3 | dict = ovs.dict 4 | -------------------------------------------------------------------------------- /tests/oss-fuzz/fuzzer.h: -------------------------------------------------------------------------------- 1 | #ifndef FUZZER_H 2 | #define FUZZER_H 1 3 | 4 | #include 5 | #include 6 | 7 | int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size); 8 | 9 | #endif /* fuzzer.h */ 10 | -------------------------------------------------------------------------------- /tests/oss-fuzz/json_parser_target.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include "fuzzer.h" 3 | #include "jsonrpc.h" 4 | #include "openvswitch/json.h" 5 | #include "ovsdb-error.h" 6 | #include "ovsdb/table.h" 7 | #include 8 | #include 9 | 10 | int 11 | LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) 12 | { 13 | if (!size || data[size - 1]) { 14 | return 0; 15 | } 16 | 17 | struct json *j1 = json_from_string((const char *)data); 18 | if (j1->type == JSON_STRING) { 19 | json_destroy(j1); 20 | return 0; 21 | } 22 | 23 | free(json_to_string(j1, JSSF_SORT | JSSF_PRETTY)); 24 | 25 | struct jsonrpc_msg *msg; 26 | char *error = jsonrpc_msg_from_json(j1, &msg); /* Frees 'j1'. */ 27 | if (error) { 28 | free(error); 29 | return 0; 30 | } 31 | 32 | struct json *j2 = jsonrpc_msg_to_json(msg); /* Frees 'msg'. */ 33 | if (j2->type == JSON_STRING) { 34 | json_destroy(j2); 35 | return 0; 36 | } 37 | 38 | free(json_to_string(j2, JSSF_SORT | JSSF_PRETTY)); 39 | json_destroy(j2); 40 | 41 | return 0; 42 | } 43 | -------------------------------------------------------------------------------- /tests/ovsdb-cluster-testsuite.at: -------------------------------------------------------------------------------- 1 | AT_INIT 2 | 3 | m4_ifdef([AT_COLOR_TESTS], [AT_COLOR_TESTS]) 4 | 5 | m4_include([tests/ovs-macros.at]) 6 | m4_include([tests/ovsdb-macros.at]) 7 | m4_include([tests/ofproto-macros.at]) 8 | 9 | m4_include([tests/ovsdb-execution.at]) 10 | m4_include([tests/ovsdb-cluster.at]) 11 | -------------------------------------------------------------------------------- /tests/ovsdb-column.at: -------------------------------------------------------------------------------- 1 | AT_BANNER([OVSDB -- columns]) 2 | 3 | OVSDB_CHECK_POSITIVE_CPY([ordinary column], 4 | [[parse-column mycol '{"type": "integer"}']], 5 | [[{"type":"integer"}]]) 6 | 7 | OVSDB_CHECK_POSITIVE_CPY([immutable column], 8 | [[parse-column mycol '{"type": "real", "mutable": false}']], 9 | [[{"mutable":false,"type":"real"}]]) 10 | 11 | OVSDB_CHECK_POSITIVE_CPY([ephemeral column], 12 | [[parse-column mycol '{"type": "uuid", "ephemeral": true}']], 13 | [[{"ephemeral":true,"type":"uuid"}]]) 14 | -------------------------------------------------------------------------------- /tests/ovsdb.at: -------------------------------------------------------------------------------- 1 | m4_include([tests/ovsdb-log.at]) 2 | m4_include([tests/ovsdb-types.at]) 3 | m4_include([tests/ovsdb-data.at]) 4 | m4_include([tests/ovsdb-column.at]) 5 | m4_include([tests/ovsdb-table.at]) 6 | m4_include([tests/ovsdb-row.at]) 7 | m4_include([tests/ovsdb-schema.at]) 8 | m4_include([tests/ovsdb-condition.at]) 9 | m4_include([tests/ovsdb-mutation.at]) 10 | m4_include([tests/ovsdb-query.at]) 11 | m4_include([tests/ovsdb-transaction.at]) 12 | m4_include([tests/ovsdb-execution.at]) 13 | m4_include([tests/ovsdb-trigger.at]) 14 | m4_include([tests/ovsdb-tool.at]) 15 | m4_include([tests/ovsdb-replication.at]) 16 | m4_include([tests/ovsdb-server.at]) 17 | m4_include([tests/ovsdb-client.at]) 18 | m4_include([tests/ovsdb-monitor.at]) 19 | m4_include([tests/ovsdb-idl.at]) 20 | m4_include([tests/ovsdb-lock.at]) 21 | m4_include([tests/ovsdb-rbac.at]) 22 | -------------------------------------------------------------------------------- /tests/pytest.at: -------------------------------------------------------------------------------- 1 | AT_BANNER([Python unit tests]) 2 | 3 | # Run pytest unit tests. 4 | AT_SETUP([Pytest unit tests - Python3]) 5 | AT_KEYWORDS([python]) 6 | AT_SKIP_IF([test "$HAVE_PYTEST" = "no"]) 7 | AT_CHECK([$PYTHON3 -m pytest $top_srcdir/python/ovs],[0], [ignore], [ignore]) 8 | AT_CLEANUP() 9 | -------------------------------------------------------------------------------- /tests/system-afxdp-macros.at: -------------------------------------------------------------------------------- 1 | # Add port to ovs bridge by using afxdp mode. 2 | # This will use generic XDP support in the veth driver. 3 | m4_define([ADD_VETH], 4 | [ AT_CHECK([ip link add $1 type veth peer name ovs-$1 || return 77]) 5 | CONFIGURE_VETH_OFFLOADS([$1]) 6 | AT_CHECK([ip link set $1 netns $2]) 7 | AT_CHECK([ip link set dev ovs-$1 up]) 8 | AT_CHECK([ovs-vsctl add-port $3 ovs-$1 -- \ 9 | set interface ovs-$1 external-ids:iface-id="$1" type="afxdp"]) 10 | NS_CHECK_EXEC([$2], [ip addr add $4 dev $1 $7]) 11 | NS_CHECK_EXEC([$2], [ip link set dev $1 up]) 12 | if test -n "$5"; then 13 | NS_CHECK_EXEC([$2], [ip link set dev $1 address $5]) 14 | fi 15 | if test -n "$6"; then 16 | NS_CHECK_EXEC([$2], [ip route add default via $6]) 17 | fi 18 | on_exit 'ip link del ovs-$1' 19 | ] 20 | ) 21 | 22 | m4_define([OVS_CHECK_8021AD], 23 | [AT_SKIP_IF([:])]) 24 | 25 | # CONFIGURE_VETH_OFFLOADS([VETH]) 26 | # 27 | # Disable TX offloads and VLAN offloads for veths used in AF_XDP. 28 | m4_define([CONFIGURE_VETH_OFFLOADS], 29 | [AT_CHECK([ethtool -K $1 tx off], [0], [ignore], [ignore]) 30 | AT_CHECK([ethtool -K $1 txvlan off], [0], [ignore], [ignore]) 31 | ] 32 | ) 33 | -------------------------------------------------------------------------------- /tests/system-afxdp-testsuite.at: -------------------------------------------------------------------------------- 1 | AT_INIT 2 | 3 | AT_COPYRIGHT([Copyright (c) 2018, 2019 Nicira, Inc. 4 | 5 | Licensed under the Apache License, Version 2.0 (the "License"); 6 | you may not use this file except in compliance with the License. 7 | You may obtain a copy of the License at: 8 | 9 | http://www.apache.org/licenses/LICENSE-2.0 10 | 11 | Unless required by applicable law or agreed to in writing, software 12 | distributed under the License is distributed on an "AS IS" BASIS, 13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | See the License for the specific language governing permissions and 15 | limitations under the License.]) 16 | 17 | m4_ifdef([AT_COLOR_TESTS], [AT_COLOR_TESTS]) 18 | 19 | m4_include([tests/ovs-macros.at]) 20 | m4_include([tests/ovsdb-macros.at]) 21 | m4_include([tests/ofproto-macros.at]) 22 | m4_include([tests/system-common-macros.at]) 23 | m4_include([tests/system-userspace-macros.at]) 24 | m4_include([tests/system-afxdp-macros.at]) 25 | 26 | m4_include([tests/system-afxdp.at]) 27 | m4_include([tests/system-traffic.at]) 28 | -------------------------------------------------------------------------------- /tests/system-dpdk-testsuite.at: -------------------------------------------------------------------------------- 1 | AT_INIT 2 | 3 | AT_COPYRIGHT([Copyright (c) 2017 Intel Corporation 4 | 5 | Licensed under the Apache License, Version 2.0 (the "License"); 6 | you may not use this file except in compliance with the License. 7 | You may obtain a copy of the License at: 8 | 9 | http://www.apache.org/licenses/LICENSE-2.0 10 | 11 | Unless required by applicable law or agreed to in writing, software 12 | distributed under the License is distributed on an "AS IS" BASIS, 13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | See the License for the specific language governing permissions and 15 | limitations under the License.]) 16 | 17 | m4_ifdef([AT_COLOR_TESTS], [AT_COLOR_TESTS]) 18 | 19 | m4_include([tests/ovs-macros.at]) 20 | m4_include([tests/ovsdb-macros.at]) 21 | m4_include([tests/ofproto-macros.at]) 22 | m4_include([tests/system-common-macros.at]) 23 | m4_include([tests/system-userspace-macros.at]) 24 | m4_include([tests/system-dpdk-macros.at]) 25 | 26 | m4_include([tests/system-dpdk.at]) 27 | m4_include([tests/system-traffic.at]) 28 | -------------------------------------------------------------------------------- /tests/system-kmod-testsuite.at: -------------------------------------------------------------------------------- 1 | AT_INIT 2 | 3 | AT_COPYRIGHT([Copyright (c) 2015 Nicira, Inc. 4 | 5 | Licensed under the Apache License, Version 2.0 (the "License"); 6 | you may not use this file except in compliance with the License. 7 | You may obtain a copy of the License at: 8 | 9 | http://www.apache.org/licenses/LICENSE-2.0 10 | 11 | Unless required by applicable law or agreed to in writing, software 12 | distributed under the License is distributed on an "AS IS" BASIS, 13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | See the License for the specific language governing permissions and 15 | limitations under the License.]) 16 | 17 | m4_ifdef([AT_COLOR_TESTS], [AT_COLOR_TESTS]) 18 | 19 | m4_include([tests/ovs-macros.at]) 20 | m4_include([tests/ovsdb-macros.at]) 21 | m4_include([tests/ofproto-macros.at]) 22 | m4_include([tests/system-common-macros.at]) 23 | m4_include([tests/system-kmod-macros.at]) 24 | 25 | m4_include([tests/system-traffic.at]) 26 | m4_include([tests/system-layer3-tunnels.at]) 27 | m4_include([tests/system-interface.at]) 28 | m4_include([tests/system-ipsec.at]) 29 | -------------------------------------------------------------------------------- /tests/system-offloads-testsuite.at: -------------------------------------------------------------------------------- 1 | AT_INIT 2 | 3 | AT_COPYRIGHT([Copyright (c) 2016 Mellanox Technologies, Ltd. 4 | 5 | Licensed under the Apache License, Version 2.0 (the "License"); 6 | you may not use this file except in compliance with the License. 7 | You may obtain a copy of the License at: 8 | 9 | http://www.apache.org/licenses/LICENSE-2.0 10 | 11 | Unless required by applicable law or agreed to in writing, software 12 | distributed under the License is distributed on an "AS IS" BASIS, 13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | See the License for the specific language governing permissions and 15 | limitations under the License.]) 16 | 17 | m4_ifdef([AT_COLOR_TESTS], [AT_COLOR_TESTS]) 18 | 19 | m4_include([tests/ovs-macros.at]) 20 | m4_include([tests/ovsdb-macros.at]) 21 | m4_include([tests/ofproto-macros.at]) 22 | m4_include([tests/system-common-macros.at]) 23 | m4_include([tests/system-kmod-macros.at]) 24 | 25 | m4_include([tests/system-offloads-traffic.at]) 26 | 27 | m4_include([tests/system-offloads-testsuite-macros.at]) 28 | m4_include([tests/system-traffic.at]) 29 | -------------------------------------------------------------------------------- /tests/system-tso-testsuite.at: -------------------------------------------------------------------------------- 1 | AT_INIT 2 | 3 | AT_COPYRIGHT([Copyright (c) 2020 VMware, Inc. 4 | 5 | Licensed under the Apache License, Version 2.0 (the "License"); 6 | you may not use this file except in compliance with the License. 7 | You may obtain a copy of the License at: 8 | 9 | http://www.apache.org/licenses/LICENSE-2.0 10 | 11 | Unless required by applicable law or agreed to in writing, software 12 | distributed under the License is distributed on an "AS IS" BASIS, 13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | See the License for the specific language governing permissions and 15 | limitations under the License.]) 16 | 17 | m4_ifdef([AT_COLOR_TESTS], [AT_COLOR_TESTS]) 18 | 19 | m4_include([tests/ovs-macros.at]) 20 | m4_include([tests/ovsdb-macros.at]) 21 | m4_include([tests/ofproto-macros.at]) 22 | m4_include([tests/system-common-macros.at]) 23 | m4_include([tests/system-userspace-macros.at]) 24 | m4_include([tests/system-tso-macros.at]) 25 | 26 | m4_include([tests/system-tap.at]) 27 | m4_include([tests/system-traffic.at]) 28 | -------------------------------------------------------------------------------- /tests/system-userspace-testsuite.at: -------------------------------------------------------------------------------- 1 | AT_INIT 2 | 3 | AT_COPYRIGHT([Copyright (c) 2015 Nicira, Inc. 4 | 5 | Licensed under the Apache License, Version 2.0 (the "License"); 6 | you may not use this file except in compliance with the License. 7 | You may obtain a copy of the License at: 8 | 9 | http://www.apache.org/licenses/LICENSE-2.0 10 | 11 | Unless required by applicable law or agreed to in writing, software 12 | distributed under the License is distributed on an "AS IS" BASIS, 13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | See the License for the specific language governing permissions and 15 | limitations under the License.]) 16 | 17 | m4_ifdef([AT_COLOR_TESTS], [AT_COLOR_TESTS]) 18 | 19 | m4_include([tests/ovs-macros.at]) 20 | m4_include([tests/ovsdb-macros.at]) 21 | m4_include([tests/ofproto-macros.at]) 22 | m4_include([tests/system-userspace-macros.at]) 23 | m4_include([tests/system-common-macros.at]) 24 | 25 | m4_include([tests/system-traffic.at]) 26 | m4_include([tests/system-layer3-tunnels.at]) 27 | m4_include([tests/system-interface.at]) 28 | m4_include([tests/system-userspace-packet-type-aware.at]) 29 | m4_include([tests/system-route.at]) 30 | -------------------------------------------------------------------------------- /tests/uuid.at: -------------------------------------------------------------------------------- 1 | AT_BANNER([UUID unit tests]) 2 | 3 | m4_define([UUID_REGEX], 4 | [[[0-9a-f]\{8\}-[0-9a-f]\{4\}-4[0-9a-f]\{3\}-[89ab][0-9a-f]\{3\}-[0-9a-f]\{12\}$]]) 5 | 6 | m4_define([CHECK_UUID], 7 | [if expr "$uuid" : 'UUID_REGEX' > /dev/null 8 | then 9 | : 10 | else 11 | echo "$uuid: not a random UUID" 12 | exit 1 13 | fi]) 14 | 15 | AT_SETUP([UUID generation, parsing, serialization]) 16 | AT_KEYWORDS([UUID]) 17 | AT_CHECK([ 18 | uuids= 19 | for i in m4_for([count], [1], [100], [1], [count ]); do 20 | # Generate random UUID and check that it is in the expected format. 21 | uuid=`ovstest test-uuid` 22 | CHECK_UUID 23 | 24 | # Verify that $uuid does not duplicate any UUID generated so far. 25 | case $uuids in 26 | *$uuid*) 27 | echo "$uuid: generated duplicate UUID" 28 | exit 1 29 | esac 30 | uuids="$uuids $uuid" 31 | 32 | # Verify that test-uuid parses and re-serializes this UUID correctly. 33 | serialized=`ovstest test-uuid $uuid` 34 | if test "$uuid" != "$serialized"; then 35 | echo "$uuid: test-uuid serialized this as $serialized" 36 | exit 1 37 | fi 38 | done], [0]) 39 | AT_CLEANUP 40 | -------------------------------------------------------------------------------- /tests/valgrind-wrapper.in: -------------------------------------------------------------------------------- 1 | #! /bin/sh 2 | 3 | wrap_program=`basename '@wrap_program@'` 4 | 5 | # Strip the first directory from $PATH that contains $wrap_program, 6 | # so that below we run the real $wrap_program, not ourselves. 7 | not_found=true 8 | new_path= 9 | first=true 10 | save_IFS=$IFS 11 | IFS=: 12 | for dir in $PATH; do 13 | IFS=$save_IFS 14 | if $not_found && test -x "$dir/$wrap_program"; then 15 | not_found=false 16 | else 17 | if $first; then 18 | first=false 19 | new_path=$dir 20 | else 21 | new_path=$new_path:$dir 22 | fi 23 | fi 24 | done 25 | IFS=$save_IFS 26 | if $not_found; then 27 | echo "$0: error: cannot find $wrap_program in \$PATH" >&2 28 | exit 1 29 | fi 30 | PATH=$new_path 31 | export PATH 32 | 33 | : ${VALGRIND:=valgrind -q --log-file=valgrind.%p --leak-check=full} 34 | exec $VALGRIND $wrap_program "$@" 35 | echo "$0: failed to execute $VALGRIND $wrap_program" "$@" >&2 36 | exit 1 37 | -------------------------------------------------------------------------------- /tests/vconn.at: -------------------------------------------------------------------------------- 1 | m4_define([TEST_VCONN_CLASS], 2 | [AT_BANNER([vconn library -- $1 class]) 3 | m4_foreach( 4 | [testname], 5 | [[refuse-connection], 6 | [accept-then-close], 7 | [read-hello], 8 | [send-plain-hello], 9 | [send-long-hello], 10 | [send-echo-hello], 11 | [send-short-hello], 12 | [send-invalid-version-hello]], 13 | [AT_SETUP([$1 vconn - m4_bpatsubst(testname, [-], [ ])]) 14 | m4_if([$1], [ssl], [ 15 | AT_SKIP_IF([test "$HAVE_OPENSSL" = no]) 16 | AT_CHECK([cp $abs_top_builddir/tests/testpki*.pem .])]) 17 | AT_CHECK([ovstest test-vconn testname $1], [0], [], [ignore]) 18 | AT_CLEANUP])]) 19 | 20 | TEST_VCONN_CLASS([unix]) 21 | TEST_VCONN_CLASS([tcp]) 22 | TEST_VCONN_CLASS([ssl]) 23 | -------------------------------------------------------------------------------- /third-party/.gitignore: -------------------------------------------------------------------------------- 1 | /Makefile 2 | /Makefile.in 3 | -------------------------------------------------------------------------------- /third-party/automake.mk: -------------------------------------------------------------------------------- 1 | EXTRA_DIST += \ 2 | third-party/ofp-tcpdump.patch \ 3 | third-party/README.rst 4 | -------------------------------------------------------------------------------- /tutorial/.gitignore: -------------------------------------------------------------------------------- 1 | sandbox/ 2 | -------------------------------------------------------------------------------- /tutorial/automake.mk: -------------------------------------------------------------------------------- 1 | EXTRA_DIST += \ 2 | tutorial/ovs-sandbox \ 3 | tutorial/t-setup \ 4 | tutorial/t-stage0 \ 5 | tutorial/t-stage1 \ 6 | tutorial/t-stage2 \ 7 | tutorial/t-stage3 \ 8 | tutorial/t-stage4 9 | sandbox: all 10 | cd $(srcdir)/tutorial && MAKE=$(MAKE) HAVE_OPENSSL=$(HAVE_OPENSSL) \ 11 | ./ovs-sandbox -b $(abs_builddir) $(SANDBOXFLAGS) 12 | -------------------------------------------------------------------------------- /tutorial/t-setup: -------------------------------------------------------------------------------- 1 | #! /bin/sh -ve 2 | 3 | ovs-vsctl add-br br0 -- set Bridge br0 fail-mode=secure 4 | 5 | for i in 1 2 3 4; do 6 | ovs-vsctl add-port br0 p$i -- set Interface p$i ofport_request=$i 7 | ovs-ofctl mod-port br0 p$i up 8 | done 9 | -------------------------------------------------------------------------------- /tutorial/t-stage0: -------------------------------------------------------------------------------- 1 | #! /bin/sh -ve 2 | 3 | ovs-ofctl add-flow br0 \ 4 | "table=0, dl_src=01:00:00:00:00:00/01:00:00:00:00:00, actions=drop" 5 | 6 | ovs-ofctl add-flow br0 \ 7 | "table=0, dl_dst=01:80:c2:00:00:00/ff:ff:ff:ff:ff:f0, actions=drop" 8 | 9 | ovs-ofctl add-flow br0 "table=0, priority=0, actions=resubmit(,1)" 10 | -------------------------------------------------------------------------------- /tutorial/t-stage1: -------------------------------------------------------------------------------- 1 | #! /bin/sh -ve 2 | 3 | ovs-ofctl add-flow br0 "table=1, priority=0, actions=drop" 4 | 5 | ovs-ofctl add-flow br0 \ 6 | "table=1, priority=99, in_port=1, actions=resubmit(,2)" 7 | 8 | ovs-ofctl add-flows br0 - <<'EOF' 9 | table=1, priority=99, in_port=2, vlan_tci=0, actions=mod_vlan_vid:20, resubmit(,2) 10 | table=1, priority=99, in_port=3, vlan_tci=0, actions=mod_vlan_vid:30, resubmit(,2) 11 | table=1, priority=99, in_port=4, vlan_tci=0, actions=mod_vlan_vid:30, resubmit(,2) 12 | EOF 13 | -------------------------------------------------------------------------------- /tutorial/t-stage2: -------------------------------------------------------------------------------- 1 | #! /bin/sh -ve 2 | 3 | ovs-ofctl add-flow br0 \ 4 | "table=2 actions=learn(table=10, NXM_OF_VLAN_TCI[0..11], \ 5 | NXM_OF_ETH_DST[]=NXM_OF_ETH_SRC[], \ 6 | load:NXM_OF_IN_PORT[]->NXM_NX_REG0[0..15]), \ 7 | resubmit(,3)" 8 | -------------------------------------------------------------------------------- /tutorial/t-stage3: -------------------------------------------------------------------------------- 1 | #! /bin/sh -ve 2 | 3 | ovs-ofctl add-flow br0 \ 4 | "table=3 priority=50 actions=resubmit(,10), resubmit(,4)" 5 | 6 | ovs-ofctl add-flow br0 \ 7 | "table=3 priority=99 dl_dst=01:00:00:00:00:00/01:00:00:00:00:00 \ 8 | actions=resubmit(,4)" 9 | -------------------------------------------------------------------------------- /tutorial/t-stage4: -------------------------------------------------------------------------------- 1 | #! /bin/sh -ve 2 | 3 | ovs-ofctl add-flow br0 "table=4 reg0=1 actions=1" 4 | 5 | ovs-ofctl add-flows br0 - <<'EOF' 6 | table=4 reg0=2 actions=strip_vlan,2 7 | table=4 reg0=3 actions=strip_vlan,3 8 | table=4 reg0=4 actions=strip_vlan,4 9 | EOF 10 | 11 | ovs-ofctl add-flows br0 - <<'EOF' 12 | table=4 reg0=0 priority=99 dl_vlan=20 actions=1,strip_vlan,2 13 | table=4 reg0=0 priority=99 dl_vlan=30 actions=1,strip_vlan,3,4 14 | table=4 reg0=0 priority=50 actions=1 15 | EOF 16 | -------------------------------------------------------------------------------- /utilities/.gitignore: -------------------------------------------------------------------------------- 1 | /Makefile 2 | /Makefile.in 3 | /nlmon 4 | /ovs-appctl 5 | /ovs-appctl.8 6 | /ovs-cfg-mod 7 | /ovs-cfg-mod.8 8 | /ovs-check-dead-ifs 9 | /ovs-testcontroller 10 | /ovs-testcontroller.8 11 | /ovs-ctl 12 | /ovs-dpctl 13 | /ovs-dpctl.8 14 | /ovs-dpctl-top 15 | /ovs-dpctl-top.8 16 | /ovs-kmod-ctl 17 | /ovs-l3ping 18 | /ovs-l3ping.8 19 | /ovs-lib 20 | /ovs-ofctl 21 | /ovs-ofctl.8 22 | /ovs-parse-backtrace 23 | /ovs-pcap 24 | /ovs-pcap.1 25 | /ovs-pki 26 | /ovs-pki-cgi 27 | /ovs-pki.8 28 | /ovs-test 29 | /ovs-test.8 30 | /ovs-tcpdump 31 | /ovs-tcpdump.8 32 | /ovs-tcpundump 33 | /ovs-tcpundump.1 34 | /ovs-vlan-test 35 | /ovs-vlan-test.8 36 | /ovs-vsctl 37 | /ovs-vsctl.8 38 | /ovs-sim 39 | -------------------------------------------------------------------------------- /utilities/bugtool/.gitignore: -------------------------------------------------------------------------------- 1 | /ovs-bugtool 2 | /ovs-bugtool.8 3 | -------------------------------------------------------------------------------- /utilities/bugtool/ovs-bugtool-daemons-ver: -------------------------------------------------------------------------------- 1 | #! /bin/sh 2 | 3 | # This library is free software; you can redistribute it and/or 4 | # modify it under the terms of version 2.1 of the GNU Lesser General 5 | # Public License as published by the Free Software Foundation. 6 | # 7 | # This library is distributed in the hope that it will be useful, 8 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 9 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 10 | # Lesser General Public License for more details. 11 | # 12 | # You should have received a copy of the GNU Lesser General Public 13 | # License along with this library; if not, write to the Free Software 14 | # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 15 | # USA 16 | # 17 | # Copyright (C) 2012 Nicira, Inc. 18 | 19 | for f in `cd /var/run/openvswitch/; ls *.pid 2>/dev/null` 20 | do 21 | if [ -n "${f%.pid}" ]; then 22 | ovs-appctl -t "${f%.pid}" version 2>&1 23 | fi 24 | echo 25 | done 26 | -------------------------------------------------------------------------------- /utilities/bugtool/ovs-bugtool-fdb-show: -------------------------------------------------------------------------------- 1 | #! /bin/sh 2 | 3 | # This library is free software; you can redistribute it and/or 4 | # modify it under the terms of version 2.1 of the GNU Lesser General 5 | # Public License as published by the Free Software Foundation. 6 | # 7 | # This library is distributed in the hope that it will be useful, 8 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 9 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 10 | # Lesser General Public License for more details. 11 | # 12 | # You should have received a copy of the GNU Lesser General Public 13 | # License along with this library; if not, write to the Free Software 14 | # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 15 | # USA 16 | # 17 | # Copyright (C) 2014 Nicira, Inc. 18 | 19 | for bridge in `ovs-vsctl -- --real list-br` 20 | do 21 | echo "ovs-appctl fdb/show ${bridge}" 22 | ovs-appctl fdb/show "${bridge}" 23 | echo "" 24 | done 25 | -------------------------------------------------------------------------------- /utilities/bugtool/ovs-bugtool-get-dpdk-nic-numa: -------------------------------------------------------------------------------- 1 | #! /bin/sh 2 | 3 | # This library is free software; you can redistribute it and/or 4 | # modify it under the terms of version 2.1 of the GNU Lesser General 5 | # Public License as published by the Free Software Foundation. 6 | # 7 | # This library is distributed in the hope that it will be useful, 8 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 9 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 10 | # Lesser General Public License for more details. 11 | # 12 | # You should have received a copy of the GNU Lesser General Public 13 | # License along with this library; if not, write to the Free Software 14 | # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 15 | # USA 16 | # 17 | # Copyright (C) 2017 Ericsson AB 18 | 19 | for PCI_ADDRESS in $(lspci -D | cut -d' ' -f1) 20 | do 21 | if [ -n "$(find /sys/bus/pci/drivers | grep drivers.*$PCI_ADDRESS | grep -e uio_pci_generic -e igb_uio -e vfio-pci)" ] 22 | then 23 | grep -H "" $(find /sys/devices/ -path "*$PCI_ADDRESS*numa_node") 24 | fi 25 | done 26 | -------------------------------------------------------------------------------- /utilities/bugtool/ovs-bugtool-get-port-stats: -------------------------------------------------------------------------------- 1 | #! /bin/bash 2 | 3 | #Iterate through each port of every bridge and print 4 | #the port statistics 5 | 6 | for bridge in `ovs-vsctl -- --real list-br` 7 | do 8 | echo "${bridge} : " 9 | echo " ${bridge} : `ovs-vsctl get interface ${bridge} statistics`" 10 | for iface in `ovs-vsctl list-ifaces ${bridge}` 11 | do 12 | echo " ${iface} : `ovs-vsctl get interface ${iface} statistics`" 13 | done 14 | echo -e "\n" 15 | done 16 | -------------------------------------------------------------------------------- /utilities/bugtool/ovs-bugtool-ovs-appctl-dpif: -------------------------------------------------------------------------------- 1 | #! /bin/sh 2 | 3 | # This library is free software; you can redistribute it and/or 4 | # modify it under the terms of version 2.1 of the GNU Lesser General 5 | # Public License as published by the Free Software Foundation. 6 | # 7 | # This library is distributed in the hope that it will be useful, 8 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 9 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 10 | # Lesser General Public License for more details. 11 | # 12 | # You should have received a copy of the GNU Lesser General Public 13 | # License along with this library; if not, write to the Free Software 14 | # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 15 | # USA 16 | # 17 | # Copyright (C) 2013 Nicira, Inc. 18 | 19 | echo "ovs-appctl dpif/show" 20 | ovs-appctl dpif/show 21 | for bridge in `ovs-vsctl -- --real list-br` 22 | do 23 | echo "ovs-appctl dpif/dump-flows -m ${bridge}" 24 | ovs-appctl dpif/dump-flows -m "$bridge" 25 | echo "" 26 | done 27 | -------------------------------------------------------------------------------- /utilities/bugtool/ovs-bugtool-ovs-bridge-datapath-type: -------------------------------------------------------------------------------- 1 | #! /bin/sh 2 | 3 | # This library is free software; you can redistribute it and/or 4 | # modify it under the terms of version 2.1 of the GNU Lesser General 5 | # Public License as published by the Free Software Foundation. 6 | # 7 | # This library is distributed in the hope that it will be useful, 8 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 9 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 10 | # Lesser General Public License for more details. 11 | # 12 | # You should have received a copy of the GNU Lesser General Public 13 | # License along with this library; if not, write to the Free Software 14 | # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 15 | # USA 16 | # 17 | # Copyright (C) 2017 Ericsson AB 18 | 19 | for br in `ovs-vsctl -- --real list-br` 20 | do 21 | echo bridge $br datapath_type=$(ovs-vsctl get bridge $br datapath_type) 22 | done 23 | -------------------------------------------------------------------------------- /utilities/bugtool/ovs-bugtool-ovs-vswitchd-threads-affinity: -------------------------------------------------------------------------------- 1 | #! /bin/sh 2 | 3 | # This library is free software; you can redistribute it and/or 4 | # modify it under the terms of version 2.1 of the GNU Lesser General 5 | # Public License as published by the Free Software Foundation. 6 | # 7 | # This library is distributed in the hope that it will be useful, 8 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 9 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 10 | # Lesser General Public License for more details. 11 | # 12 | # You should have received a copy of the GNU Lesser General Public 13 | # License along with this library; if not, write to the Free Software 14 | # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 15 | # USA 16 | # 17 | # Copyright (C) 2017 Ericsson AB 18 | 19 | for pid in $(pgrep ovs-vswitchd) 20 | do 21 | for i in $(ls /proc/$pid/task) 22 | do 23 | taskset -pc $i 24 | done 25 | done 26 | -------------------------------------------------------------------------------- /utilities/bugtool/ovs-bugtool-qos-configs: -------------------------------------------------------------------------------- 1 | #! /bin/sh 2 | 3 | # This library is free software; you can redistribute it and/or 4 | # modify it under the terms of version 2.1 of the GNU Lesser General 5 | # Public License as published by the Free Software Foundation. 6 | # 7 | # This library is distributed in the hope that it will be useful, 8 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 9 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 10 | # Lesser General Public License for more details. 11 | # 12 | # You should have received a copy of the GNU Lesser General Public 13 | # License along with this library; if not, write to the Free Software 14 | # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 15 | # USA 16 | # 17 | # Copyright (C) 2017 Ericsson AB 18 | 19 | for br in `ovs-vsctl -- --real list-br` 20 | do 21 | for iface in $(ovs-vsctl list-ifaces ${br}) 22 | do 23 | echo "Rate limiting configuration for ${iface} (of ${br}):" 24 | ovs-vsctl list interface ${iface} | grep ingress 25 | echo "Interface options:" 26 | ovs-vsctl get Interface ${iface} options 27 | echo "" 28 | done 29 | done 30 | -------------------------------------------------------------------------------- /utilities/bugtool/ovs-bugtool-tc-class-show: -------------------------------------------------------------------------------- 1 | #! /bin/sh 2 | 3 | # This library is free software; you can redistribute it and/or 4 | # modify it under the terms of version 2.1 of the GNU Lesser General 5 | # Public License as published by the Free Software Foundation. 6 | # 7 | # This library is distributed in the hope that it will be useful, 8 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 9 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 10 | # Lesser General Public License for more details. 11 | # 12 | # You should have received a copy of the GNU Lesser General Public 13 | # License along with this library; if not, write to the Free Software 14 | # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 15 | # USA 16 | # 17 | # Copyright (C) 2011 Nicira, Inc. 18 | 19 | for iface in $(cd /sys/class/net && echo *); do 20 | if [ -d /sys/class/net/$iface ]; then 21 | echo Interface $iface: 22 | # indent tc output so it's clear which interface it pertains to 23 | /sbin/tc -s -d class show dev $iface | /bin/sed 's/^/ /' 24 | fi 25 | done 26 | -------------------------------------------------------------------------------- /utilities/bugtool/plugins/kernel-info/openvswitch.xml: -------------------------------------------------------------------------------- 1 | 18 | 19 | 20 | 21 | /proc/slabinfo 22 | 23 | 24 | -------------------------------------------------------------------------------- /utilities/bugtool/plugins/system-configuration.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 20 | 22 | -------------------------------------------------------------------------------- /utilities/docker/Makefile: -------------------------------------------------------------------------------- 1 | #export OVS_BRANCH=branch-2.11 2 | #export OVS_VERSION=2.11 3 | #export KERNEL_VERSION=4.15.0-54-generic 4 | #export DISTRO=debian 5 | #export GITHUB_SRC=https://github.com/openvswitch/ovs.git 6 | #export DOCKER_REPO=openvswitch/ovs 7 | 8 | # Example: 9 | # make build 10 | # make push 11 | 12 | REPO = ${DOCKER_REPO} 13 | tag = ${OVS_VERSION}_${DISTRO}_${KERNEL_VERSION} 14 | 15 | build: ;docker build -t ${REPO}:${tag} --build-arg DISTRO=${DISTRO} \ 16 | --build-arg OVS_BRANCH=${OVS_BRANCH} \ 17 | --build-arg KERNEL_VERSION=${KERNEL_VERSION} \ 18 | --build-arg GITHUB_SRC=${GITHUB_SRC} -f ${DISTRO}/Dockerfile . 19 | 20 | .PHONY: build 21 | 22 | push: ;docker push ${REPO}:${tag} 23 | -------------------------------------------------------------------------------- /utilities/docker/create_ovs_db.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at: 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | ovsdb-tool create /etc/openvswitch/conf.db \ 16 | /usr/share/openvswitch/vswitch.ovsschema -------------------------------------------------------------------------------- /utilities/docker/debian/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:16.04 2 | MAINTAINER "Aliasgar Ginwala" 3 | 4 | ARG OVS_BRANCH 5 | ARG KERNEL_VERSION 6 | ARG GITHUB_SRC 7 | ARG DISTRO 8 | 9 | copy $DISTRO/build-kernel-modules.sh /build-kernel-modules.sh 10 | RUN /build-kernel-modules.sh $KERNEL_VERSION $OVS_BRANCH $GITHUB_SRC 11 | 12 | COPY create_ovs_db.sh /etc/openvswitch/create_ovs_db.sh 13 | RUN /etc/openvswitch/create_ovs_db.sh 14 | 15 | COPY ovs-override.conf /etc/depmod.d/openvswitch.conf 16 | 17 | COPY start-ovs /bin/start-ovs 18 | VOLUME ["/var/log/openvswitch", "/var/lib/openvswitch",\ 19 | "/var/run/openvswitch", "/etc/openvswitch"] 20 | ENTRYPOINT ["start-ovs"] 21 | -------------------------------------------------------------------------------- /utilities/docker/ovs-override.conf: -------------------------------------------------------------------------------- 1 | override openvswitch * extra 2 | override vport-geneve * extra 3 | override vport-* * extra 4 | -------------------------------------------------------------------------------- /utilities/ovs-pcap.1.in: -------------------------------------------------------------------------------- 1 | .so lib/ovs.tmac 2 | .TH ovs\-pcap 1 "@VERSION@" "Open vSwitch" "Open vSwitch Manual" 3 | . 4 | .SH NAME 5 | ovs\-pcap \- print packets from a pcap file as hex 6 | . 7 | .SH SYNOPSIS 8 | \fBovs\-pcap\fR \fIfile\fR 9 | .so lib/common-syn.man 10 | . 11 | .SH DESCRIPTION 12 | The \fBovs\-pcap\fR program reads the pcap \fIfile\fR named on the 13 | command line and prints each packet's contents as a sequence of hex 14 | digits on a line of its own. This format is suitable for use with the 15 | \fBofproto/trace\fR command supported by \fBovs\-vswitchd\fR(8). 16 | . 17 | .SH "OPTIONS" 18 | .so lib/common.man 19 | . 20 | .SH "SEE ALSO" 21 | . 22 | .BR ovs\-vswitchd (8), 23 | .BR ovs\-tcpundump (1), 24 | .BR tcpdump (8), 25 | .BR wireshark (8). 26 | -------------------------------------------------------------------------------- /vswitchd/.gitignore: -------------------------------------------------------------------------------- 1 | /Makefile 2 | /Makefile.in 3 | /ovs-vswitchd 4 | /ovs-vswitchd.8 5 | /ovs-vswitchd.conf.db.5 6 | /vswitch.ovsschema.stamp 7 | /vswitch.gv 8 | /vswitch.pic 9 | -------------------------------------------------------------------------------- /vswitchd/bridge.h: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2008, 2009, 2010, 2011, 2012, 2014 Nicira, Inc. 2 | * 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at: 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | 16 | #ifndef VSWITCHD_BRIDGE_H 17 | #define VSWITCHD_BRIDGE_H 1 18 | 19 | #include 20 | 21 | struct simap; 22 | 23 | void bridge_init(const char *remote); 24 | void bridge_exit(bool delete_datapath); 25 | 26 | void bridge_run(void); 27 | void bridge_wait(void); 28 | 29 | void bridge_get_memory_usage(struct simap *usage); 30 | 31 | #endif /* bridge.h */ 32 | -------------------------------------------------------------------------------- /vswitchd/system-stats.h: -------------------------------------------------------------------------------- 1 | /* Copyright (c) 2010, 2012 Nicira, Inc. 2 | * 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at: 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | 16 | #ifndef VSWITCHD_SYSTEM_STATS 17 | #define VSWITCHD_SYSTEM_STATS 1 18 | 19 | #include 20 | 21 | void system_stats_enable(bool enable); 22 | struct smap *system_stats_run(void); 23 | void system_stats_wait(void); 24 | 25 | #endif /* vswitchd/system-stats.h */ 26 | -------------------------------------------------------------------------------- /vtep/.gitignore: -------------------------------------------------------------------------------- 1 | /Makefile 2 | /Makefile.in 3 | /ovs-vtep 4 | /vtep-ctl 5 | /vtep-ctl.8 6 | /vtep-idl.c 7 | /vtep-idl.h 8 | /vtep-idl.ovsidl 9 | /vtep.5 10 | /vtep.gv 11 | /vtep.ovsschema.stamp 12 | /vtep.pic 13 | -------------------------------------------------------------------------------- /vtep/libvtep.sym.in: -------------------------------------------------------------------------------- 1 | libvtep_@LT_CURRENT@ { 2 | global: 3 | *; 4 | }; 5 | -------------------------------------------------------------------------------- /vtep/vtep-idl.ann: -------------------------------------------------------------------------------- 1 | # -*- python -*- 2 | 3 | # This code, when invoked by "ovsdb-idlc annotate" (by the build 4 | # process), annotates vswitch.ovsschema with additional data that give 5 | # the ovsdb-idl engine information about the types involved, so that 6 | # it can generate more programmer-friendly data structures. 7 | 8 | s["idlPrefix"] = "vteprec_" 9 | s["idlHeader"] = "\"vtep/vtep-idl.h\"" 10 | -------------------------------------------------------------------------------- /windows/ovs-windows-installer.sln: -------------------------------------------------------------------------------- 1 | Microsoft Visual Studio Solution File, Format Version 12.00 2 | # Visual Studio 2013 3 | VisualStudioVersion = 12.0.31101.0 4 | MinimumVisualStudioVersion = 10.0.40219.1 5 | Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "ovs-windows-installer", "ovs-windows-installer\ovs-windows-installer.wixproj", "{259905A2-7434-4190-8A33-8FBA67171DD6}" 6 | EndProject 7 | Global 8 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 9 | Release|x64 = Release|x64 10 | Release|x86 = Release|x86 11 | EndGlobalSection 12 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 13 | {259905A2-7434-4190-8A33-8FBA67171DD6}.Release|x64.ActiveCfg = Release|x64 14 | {259905A2-7434-4190-8A33-8FBA67171DD6}.Release|x64.Build.0 = Release|x64 15 | {259905A2-7434-4190-8A33-8FBA67171DD6}.Release|x86.ActiveCfg = Release|x86 16 | {259905A2-7434-4190-8A33-8FBA67171DD6}.Release|x86.Build.0 = Release|x86 17 | EndGlobalSection 18 | GlobalSection(SolutionProperties) = preSolution 19 | HideSolutionNode = FALSE 20 | EndGlobalSection 21 | EndGlobal 22 | -------------------------------------------------------------------------------- /windows/ovs-windows-installer/Binaries/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | 3 | !.gitignore 4 | -------------------------------------------------------------------------------- /windows/ovs-windows-installer/Driver/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | 3 | !.gitignore 4 | !Win8 5 | !Win8.1 6 | !Win10 7 | -------------------------------------------------------------------------------- /windows/ovs-windows-installer/Driver/Win10/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | 3 | !.gitignore 4 | -------------------------------------------------------------------------------- /windows/ovs-windows-installer/Driver/Win8.1/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | 3 | !.gitignore 4 | -------------------------------------------------------------------------------- /windows/ovs-windows-installer/Driver/Win8/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | 3 | !.gitignore 4 | -------------------------------------------------------------------------------- /windows/ovs-windows-installer/Redist/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | 3 | !.gitignore 4 | -------------------------------------------------------------------------------- /windows/ovs-windows-installer/Services/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | 3 | !.gitignore 4 | -------------------------------------------------------------------------------- /windows/ovs-windows-installer/Symbols/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | 3 | !.gitignore 4 | -------------------------------------------------------------------------------- /windows/ovs-windows-installer/images/bannrbmp.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openvswitch/ovs/0e419d1b4fc9207e77c240c287000d57ddbf6915/windows/ovs-windows-installer/images/bannrbmp.bmp -------------------------------------------------------------------------------- /windows/ovs-windows-installer/images/dlgbmp.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openvswitch/ovs/0e419d1b4fc9207e77c240c287000d57ddbf6915/windows/ovs-windows-installer/images/dlgbmp.bmp --------------------------------------------------------------------------------