Thanks for the this Ilya. I applied this patch and did a cursory
search. I couldn't find any remaining "shards" (lol) of Windows
support in the code.

Acked-by: Mark Michelson <[email protected]>

On Thu, Jun 4, 2026 at 11:56 AM Ilya Maximets <[email protected]> wrote:
>
> Windows build was broken since the split from OVS.  OVS also recently
> fully dropped support for building and running on Windows.  Let's
> remove the bits of the Windows build system to avoid any confusion.
>
> Some notes:
>  * debian/copyright.in is very outdated.  Only removing bits directly
>    related to the Windows build.
>  * Comment in ovn-controller-vtep.at is removed without touching any
>    code because it's just an outdated comment that should've been
>    removed while moving to Python 3.
>  * m4/absolute-header.m4 still has one Windows reference, but it is
>    coming from the original sources and it should remain.
>  * HOST_NAME_MAX is needed for BSD/OSX, not only for Windows.
>
> Signed-off-by: Ilya Maximets <[email protected]>
> ---
>  Documentation/automake.mk                 |   1 -
>  Documentation/index.rst                   |   3 +-
>  Documentation/intro/install/index.rst     |   1 -
>  Documentation/intro/install/windows.rst   |  31 ---
>  Makefile.am                               |  50 +----
>  NEWS                                      |   2 +
>  README.rst                                |   2 -
>  build-aux/automake.mk                     |   1 -
>  build-aux/cccl                            | 221 ----------------------
>  configure.ac                              |   3 -
>  controller-vtep/ovn-controller-vtep.8.xml |   7 +-
>  controller/chassis.c                      |   1 -
>  debian/copyright.in                       |  18 --
>  lib/ovn-util.c                            |  19 --
>  m4/ax_check_openssl.m4                    |   9 +-
>  m4/ovn.m4                                 | 133 -------------
>  northd/lflow-mgr.c                        |  12 --
>  tests/atlocal.in                          |  15 --
>  tests/automake.mk                         |  13 +-
>  tests/ovn-controller-vtep.at              |   1 -
>  tests/ovs-macros.at                       |  37 ----
>  tests/test-ovn.c                          |  12 +-
>  tests/testsuite.patch                     |  76 --------
>  utilities/checkpatch.py                   |   5 +-
>  utilities/ovn-appctl.8.xml                |   7 -
>  utilities/ovn-appctl.c                    |   7 -
>  26 files changed, 15 insertions(+), 672 deletions(-)
>  delete mode 100644 Documentation/intro/install/windows.rst
>  delete mode 100644 build-aux/cccl
>  delete mode 100644 tests/testsuite.patch
>
> diff --git a/Documentation/automake.mk b/Documentation/automake.mk
> index aa286ebd9..aa6a81224 100644
> --- a/Documentation/automake.mk
> +++ b/Documentation/automake.mk
> @@ -11,7 +11,6 @@ DOC_SOURCE = \
>         Documentation/intro/install/fedora.rst \
>         Documentation/intro/install/general.rst \
>         Documentation/intro/install/ovn-upgrades.rst \
> -       Documentation/intro/install/windows.rst \
>         Documentation/tutorials/index.rst \
>         Documentation/tutorials/ovn-openstack.rst \
>         Documentation/tutorials/ovn-sandbox.rst \
> diff --git a/Documentation/index.rst b/Documentation/index.rst
> index 36fabb2cc..0b7cbc8f2 100644
> --- a/Documentation/index.rst
> +++ b/Documentation/index.rst
> @@ -49,8 +49,7 @@ First Steps
>
>  Getting started with Open Virtual Network (OVN) for Open vSwitch? Start here.
>
> -- **Install:** :doc:`intro/install/general` |
> -  :doc:`intro/install/windows`
> +- **Install:** :doc:`intro/install/general`
>
>  - **Tutorials:** :doc:`tutorials/ovn-sandbox` |
>    :doc:`tutorials/ovn-openstack` |
> diff --git a/Documentation/intro/install/index.rst 
> b/Documentation/intro/install/index.rst
> index 2093cbbfa..1db6254b9 100644
> --- a/Documentation/intro/install/index.rst
> +++ b/Documentation/intro/install/index.rst
> @@ -40,7 +40,6 @@ Installation from Source
>     :maxdepth: 2
>
>     general
> -   windows
>
>  Installation from Packages
>  --------------------------
> diff --git a/Documentation/intro/install/windows.rst 
> b/Documentation/intro/install/windows.rst
> deleted file mode 100644
> index e5e08e69d..000000000
> --- a/Documentation/intro/install/windows.rst
> +++ /dev/null
> @@ -1,31 +0,0 @@
> -..
> -      Licensed under the Apache License, Version 2.0 (the "License"); you may
> -      not use this file except in compliance with the License. You may obtain
> -      a copy of the License at
> -
> -          http://www.apache.org/licenses/LICENSE-2.0
> -
> -      Unless required by applicable law or agreed to in writing, software
> -      distributed under the License is distributed on an "AS IS" BASIS, 
> WITHOUT
> -      WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See 
> the
> -      License for the specific language governing permissions and limitations
> -      under the License.
> -
> -      Convention for heading levels in OVN documentation:
> -
> -      =======  Heading 0 (reserved for the title in a document)
> -      -------  Heading 1
> -      ~~~~~~~  Heading 2
> -      +++++++  Heading 3
> -      '''''''  Heading 4
> -
> -      Avoid deeper levels because they do not render well.
> -
> -=======================
> -OVN on Windows
> -=======================
> -
> -OVN on Windows is not currently tested or built.  While the build
> -system contains some Windows-related scaffolding inherited from
> -Open vSwitch, there are no maintained build instructions or CI
> -coverage for this platform.
> diff --git a/Makefile.am b/Makefile.am
> index 4d62da3c2..212aeb314 100644
> --- a/Makefile.am
> +++ b/Makefile.am
> @@ -21,14 +21,6 @@ AM_LDFLAGS += $(OVS_LDFLAGS)
>
>  AM_CPPFLAGS += -I $(top_srcdir)/include
>
> -if WIN32
> -AM_CPPFLAGS += $(PTHREAD_INCLUDES)
> -AM_CPPFLAGS += $(MSVC_CFLAGS)
> -AM_LDFLAGS += $(PTHREAD_LDFLAGS)
> -AM_LDFLAGS += $(MSVC64_LDFLAGS)
> -PLATFORM = $(MSVC_PLATFORM)
> -endif
> -
>  AM_CPPFLAGS += -I $(top_srcdir)/include
>  AM_CPPFLAGS += -I $(top_srcdir)/ovn
>  AM_CPPFLAGS += -I $(top_builddir)/include
> @@ -57,18 +49,13 @@ endif
>
>  AM_CTAGSFLAGS = $(OVS_CTAGS_IDENTIFIERS_LIST)
>
> -if WIN32
> -psep=";"
> -else
> -psep=":"
> -endif
>  # PYTHONDONTWRITEBYTECODE=yes keeps Python from creating .pyc and .pyo
>  # files.  Creating .py[co] works OK for any given version of Open
>  # vSwitch, but it causes trouble if you switch from a version with
>  # foo/__init__.py into an (older) version with plain foo.py, since
>  # foo/__init__.pyc will cause Python to ignore foo.py.
>  run_python = \
> -       PYTHONPATH=$(OVS_SRCDIR)/python$(psep)$$PYTHONPATH \
> +       PYTHONPATH=$(OVS_SRCDIR)/python:$$PYTHONPATH \
>         PYTHONDONTWRITEBYTECODE=yes $(PYTHON3)
>
>  ALL_LOCAL =
> @@ -176,7 +163,7 @@ submodules = $(shell grep 'path =' $(srcdir)/.gitmodules 
> | sed -E 's/[\t ]*path
>
>  SUFFIXES += .in
>  .in:
> -       
> $(AM_V_GEN)PYTHONPATH=$(OVS_SRCDIR)/python$(psep)$$PYTHONPATH$(psep)$(srcdir)/python
>  $(PYTHON3) $(srcdir)/build-aux/soexpand.py -I$(srcdir) -I$(OVS_SRCDIR) < $< 
> | \
> +       
> $(AM_V_GEN)PYTHONPATH=$(OVS_SRCDIR)/python:$$PYTHONPATH:$(srcdir)/python 
> $(PYTHON3) $(srcdir)/build-aux/soexpand.py -I$(srcdir) -I$(OVS_SRCDIR) < $< | 
> \
>           $(PYTHON3) $(srcdir)/build-aux/dpdkstrip.py $(DPDKSTRIP_FLAGS) | \
>           sed \
>             -e 's,[@]PKIDIR[@],$(PKIDIR),g' \
> @@ -275,7 +262,7 @@ config-h-check:
>         fi
>  .PHONY: config-h-check
>
> -# Check for printf() type modifiers that MSVC doesn't support.
> +# Check for non-portable printf() type modifiers.
>  ALL_LOCAL += printf-check
>  printf-check:
>         @cd $(srcdir); \
> @@ -444,7 +431,7 @@ CLEANFILES += flake8-check
>
>  include $(srcdir)/manpages.mk
>  $(srcdir)/manpages.mk: $(MAN_ROOTS) build-aux/sodepends.py 
> $(OVS_SRCDIR)/python/ovs_build_helpers/soutil.py
> -       
> @PYTHONPATH=$(OVS_SRCDIR)/python$(psep)$$PYTHONPATH$(psep)$(srcdir)/python 
> $(PYTHON3) $(srcdir)/build-aux/sodepends.py -I. -Isrcdir,$(srcdir) 
> -IOVS_MANDIR,$(OVS_MANDIR) $(MAN_ROOTS) >$(@F).tmp
> +       @PYTHONPATH=$(OVS_SRCDIR)/python:$$PYTHONPATH:$(srcdir)/python 
> $(PYTHON3) $(srcdir)/build-aux/sodepends.py -I. -Isrcdir,$(srcdir) 
> -IOVS_MANDIR,$(OVS_MANDIR) $(MAN_ROOTS) >$(@F).tmp
>         @if cmp -s $(@F).tmp $@; then \
>           touch $@; \
>           rm -f $(@F).tmp; \
> @@ -453,35 +440,6 @@ $(srcdir)/manpages.mk: $(MAN_ROOTS) 
> build-aux/sodepends.py $(OVS_SRCDIR)/python/
>         fi
>  CLEANFILES += manpage-dep-check
>
> -if VSTUDIO_DDK
> -ALL_LOCAL += ovsext
> -ARCH = x64
> -ovsext: datapath-windows/ovsext.sln 
> $(srcdir)/datapath-windows/include/OvsDpInterface.h
> -if VSTUDIO_WIN8
> -       MSBuild.exe //nologo //maxcpucount datapath-windows/ovsext.sln 
> /target:Build /property:Configuration="Win8$(VSTUDIO_CONFIG)" 
> /property:Version="$(PACKAGE_VERSION)" //p:Platform=$(ARCH)
> -endif
> -if VSTUDIO_WIN8_1
> -       MSBuild.exe //nologo //maxcpucount datapath-windows/ovsext.sln 
> /target:Build /property:Configuration="Win8.1$(VSTUDIO_CONFIG)" 
> /property:Version="$(PACKAGE_VERSION)" //p:Platform=$(ARCH)
> -endif
> -if VSTUDIO_WIN10
> -       MSBuild.exe //nologo //maxcpucount datapath-windows/ovsext.sln 
> /target:Build /property:Configuration="Win10$(VSTUDIO_CONFIG)" 
> /property:Version="$(PACKAGE_VERSION)" //p:Platform=$(ARCH)
> -endif
> -
> -
> -CLEAN_LOCAL += ovsext_clean
> -ovsext_clean: datapath-windows/ovsext.sln
> -if VSTUDIO_WIN8
> -       MSBuild.exe //nologo //maxcpucount datapath-windows/ovsext.sln 
> /target:Clean /property:Configuration="Win8$(VSTUDIO_CONFIG)" 
> /property:Version="$(PACKAGE_VERSION)" //p:Platform=$(ARCH)
> -endif
> -if VSTUDIO_WIN8_1
> -       MSBuild.exe //nologo //maxcpucount datapath-windows/ovsext.sln 
> /target:Clean /property:Configuration="Win8.1$(VSTUDIO_CONFIG)" 
> /property:Version="$(PACKAGE_VERSION)" //p:Platform=$(ARCH)
> -endif
> -if VSTUDIO_WIN10
> -       MSBuild.exe //nologo //maxcpucount datapath-windows/ovsext.sln 
> /target:Clean /property:Configuration="Win10$(VSTUDIO_CONFIG)" 
> /property:Version="$(PACKAGE_VERSION)" //p:Platform=$(ARCH)
> -endif
> -endif
> -.PHONY: ovsext
> -
>  clang-analyze: clean
>         @which clang scan-build >/dev/null 2>&1 || \
>           (echo "Unable to find clang/scan-build, Install 
> clang,clang-analyzer packages"; exit 1)
> diff --git a/NEWS b/NEWS
> index c7cec2c33..8328b7bc8 100644
> --- a/NEWS
> +++ b/NEWS
> @@ -18,6 +18,8 @@ Post v26.03.0
>       static routes as higher-priority than connected routes, which in turn 
> led
>       to changes in administrative distance for specific route types. Please 
> see
>       the "Route Administrative Distance" section of the ovn-northd manpage.
> +   - Windows support was broken since the split from OVS repository.
> +     Remaining bits of the build system and the documentation are now 
> removed.
>
>  OVN v26.03.0 - xxx xx xxxx
>  --------------------------
> diff --git a/README.rst b/README.rst
> index 0dac01986..9b09e22ff 100644
> --- a/README.rst
> +++ b/README.rst
> @@ -91,8 +91,6 @@ As mentioned, OVN is licensed under the open source Apache 
> 2 license. Some
>  files may be marked specifically with a different license, in which case that
>  license applies to the file in question.
>
> -File build-aux/cccl is licensed under the GNU General Public License, 
> version 2.
> -
>  Contact
>  -------
>
> diff --git a/build-aux/automake.mk b/build-aux/automake.mk
> index 046d7d84f..cd9c9dfea 100644
> --- a/build-aux/automake.mk
> +++ b/build-aux/automake.mk
> @@ -1,7 +1,6 @@
>  EXTRA_DIST += \
>         build-aux/calculate-pipeline-cksum \
>         build-aux/calculate-schema-cksum \
> -       build-aux/cccl \
>         build-aux/cksum-pipeline-check \
>         build-aux/cksum-schema-check \
>         build-aux/dist-docs \
> diff --git a/build-aux/cccl b/build-aux/cccl
> deleted file mode 100644
> index e2426fb3e..000000000
> --- a/build-aux/cccl
> +++ /dev/null
> @@ -1,221 +0,0 @@
> -#!/bin/sh
> -
> -# cccl
> -# Wrapper around MS's cl.exe and link.exe to make them act more like
> -# Unix cc and ld
> -#
> -# Copyright (C) 2000-2003 Geoffrey Wossum ([email protected])
> -#
> -# This program is free software; you can redistribute it and/or modify
> -# it under the terms of the GNU General Public License as published by
> -# the Free Software Foundation; either version 2 of the License, or
> -# (at your option) any later version.
> -#
> -# This program is distributed in the hope that it will be useful, but
> -# WITHOUT ANY WARRANTY; without even the implied warranty of
> -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.    See the GNU
> -# General Public License for more details.
> -#
> -# You should have received a copy of the GNU General Public License
> -# along with this program; if not, write to the Free Software
> -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
> -#
> -
> -usage()
> -{
> -    cat <<EOF
> -Usage: cccl [OPTIONS]
> -
> -cccl is a wrapper around Microsoft's cl.exe and link.exe.  It translates
> -parameters that Unix cc's and ld's understand to parameters that cl and link
> -understand.
> -EOF
> -    exit $1
> -}
> -
> -case $MACHTYPE in
> -    *-msys)
> -        slash="-"
> -        ;;
> -    *)
> -        slash="/"
> -        ;;
> -esac
> -# prog specifies the program that should be run (cl.exe or link.exe)
> -# We'll assume cl to start out
> -prog=cl
> -# opts specifies the command line to pass to the MSVC program
> -clopt="${slash}nologo ${slash}FS"
> -linkopt="${slash}nologo"
> -# gotparam is 0 if we didn't ever see a param, in which case we show usage()
> -gotparam=
> -
> -# We want exceptions
> -clopt="$clopt ${slash}EHsc"
> -
> -### Run through every option and convert it to the proper MS one
> -while test $# -gt 0; do
> -    case "$1" in
> -    -D*) optarg= ;;
> -    -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
> -    *) optarg= ;;
> -    esac
> -    gotparam=1
> -
> -    case "$1" in
> -    --version)
> -        cat <<EOF
> -cccl 0.03
> -
> -Copyright 2000-2003 Geoffrey Wossum
> -This is free software; see the source for copying conditions.  There is NO
> -waranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
> -EOF
> -        exit 1;
> -        ;;
> -
> -    -ansi)
> -        clopt="$clopt ${slash}Za"
> -        ;;
> -
> -    -c)
> -        # -c (compile only) is actually the same, but for clarity...
> -        clopt="$clopt ${slash}c"
> -        ;;
> -
> -    -g[0-9] | -g)
> -        # cl only supports one debugging level
> -        clopt="$clopt ${slash}Zi"
> -        linkopt="$linkopt ${slash}DEBUG"
> -        ;;
> -
> -    -O0)
> -        clopt="$clopt ${slash}Od ${slash}D_DEBUG ${slash}MTd"
> -        ;;
> -
> -    -O2)
> -        clopt="$clopt ${slash}O2 ${slash}MT"
> -        ;;
> -
> -    -L*)
> -        path=`echo "$1" | sed 's/-L//'`
> -        linkopt="$linkopt ${slash}LIBPATH:$path"
> -        cl_linkopt="${slash}link ${slash}LIBPATH:\"$path\""
> -        ;;
> -
> -    -l*)
> -        lib=`echo "$1" | sed 's/-l//'`
> -        lib="$lib.lib"
> -
> -        clopt="$clopt $lib"
> -        linkopt="$linkopt $lib"
> -        ;;
> -
> -    -m386)
> -        clopt="$clopt ${slash}G3"
> -        ;;
> -
> -    -m486)
> -        clopt="$clopt ${slash}G4"
> -        ;;
> -
> -    -mpentium)
> -        clopt="$clopt ${slash}G5"
> -        ;;
> -
> -    -mpentiumpro)
> -        clopt="$clopt ${slash}G6"
> -        ;;
> -
> -    -o)
> -        # specifying output file, is it an object or an executable
> -        shift
> -        case "$1" in
> -        *.o | *.obj)
> -            clopt="$clopt ${slash}Fo$1"
> -        ;;
> -        *)
> -            clopt="$clopt ${slash}Fe$1";
> -            linkopt="$linkopt ${slash}out:$1"
> -        ;;
> -        esac;;
> -
> -    -pedantic)
> -        #ignore pedantic
> -        ;;
> -
> -    -Wall)
> -        # not all warnings are implemented
> -        # the following is equivalent to
> -        # Wimplicit-function-declaration but we will issue a compiler
> -        # error
> -        clopt="$clopt ${slash}we4013"
> -        ;;
> -
> -    -W*)
> -        #ignore warnings
> -        ;;
> -
> -    -Q*)
> -        #ignore link warnings
> -        ;;
> -
> -    -fno-strict-aliasing*)
> -        #ignore aliasing
> -        ;;
> -
> -    -isystem)
> -        shift
> -        clopt="$clopt -I$1"
> -        ;;
> -
> -    -MT)
> -        exit 0
> -        ;;
> -
> -    -mno-cygwin)
> -        ;;
> -
> -    *.cc | *.cxx | *.C)
> -        # C++ source file with non .cpp extension, make sure cl understand
> -        # that it is C++
> -        clopt="$clopt ${slash}Tp$1"
> -        ;;
> -
> -    *.o | *.obj | *.a | *.lib)
> -        # Object files/libraries seen, this command will require link
> -        # Switch the prog to link
> -        linkopt="$linkopt $1"
> -        prog="link"
> -        ;;
> -
> -    *)
> -        clopt="$clopt $1"
> -        linkopt="$linkopt $1"
> -        if test x$optarg != x ; then
> -            clopt="$clopt=$optarg"
> -            linkopt="$linkopt=$optarg"
> -        fi
> -        ;;
> -
> -    esac
> -    shift
> -done
> -
> -if test x$gotparam = x ; then
> -    usage
> -    exit 1
> -fi
> -
> -# choose which opts we built up based on which program will actually run
> -if test x$prog = xcl ; then
> -    opts="$clopt $cl_linkopt"
> -else
> -    opts=$linkopt
> -fi
> -
> -if test x$V = x1 ; then
> -    echo "$prog $opts"
> -fi
> -exec $prog $opts
> -exit 0
> diff --git a/configure.ac b/configure.ac
> index 025dccc63..cfa4cc386 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -82,9 +82,6 @@ AC_SEARCH_LIBS([pthread_rwlock_tryrdlock], [pthread])
>  AC_SEARCH_LIBS([pthread_rwlockattr_destroy], [pthread])
>  AC_FUNC_STRERROR_R
>
> -OVS_CHECK_WIN64
> -OVS_CHECK_WIN32
> -OVS_CHECK_VISUAL_STUDIO_DDK
>  OVN_CHECK_COVERAGE
>  OVS_CHECK_NDEBUG
>  OVS_CHECK_NETLINK
> diff --git a/controller-vtep/ovn-controller-vtep.8.xml 
> b/controller-vtep/ovn-controller-vtep.8.xml
> index 9d470cd63..ea3ac155e 100644
> --- a/controller-vtep/ovn-controller-vtep.8.xml
> +++ b/controller-vtep/ovn-controller-vtep.8.xml
> @@ -74,12 +74,7 @@
>            <code>unix:<var>file</var></code>
>          </p>
>          <p>
> -          On POSIX, connect to the Unix domain server socket named
> -          <var>file</var>.
> -        </p>
> -        <p>
> -          On Windows, connect to a localhost TCP port whose value is written
> -          in <var>file</var>.
> +          Connect to the Unix domain server socket named <var>file</var>.
>          </p>
>        </li>
>      </ul>
> diff --git a/controller/chassis.c b/controller/chassis.c
> index 4afb6da93..ea64c9f81 100644
> --- a/controller/chassis.c
> +++ b/controller/chassis.c
> @@ -33,7 +33,6 @@
>  VLOG_DEFINE_THIS_MODULE(chassis);
>
>  #ifndef HOST_NAME_MAX
> -/* For windows. */
>  #define HOST_NAME_MAX 255
>  #endif /* HOST_NAME_MAX */
>
> diff --git a/debian/copyright.in b/debian/copyright.in
> index 335fd6af8..bc5cb37a1 100644
> --- a/debian/copyright.in
> +++ b/debian/copyright.in
> @@ -49,24 +49,6 @@ License:
>    On Debian systems, the complete text of the GNU General Public License
>    version 2 can be found in `/usr/share/common-licenses/GPL-2'
>
> -* The following file is licensed under the GNU General Public License
> -  version 2.
> -
> -        build-aux/cccl
> -
> -* The following files are licensed under the 2-clause BSD license.
> -
> -        lib/getopt_long.c
> -        include/windows/getopt.h
> -        datapath-windows/ovsext/Conntrack-tcp.c
> -        lib/conntrack-tcp.c
> -
> -* The following files are licensed under the 3-clause BSD-license
> -
> -        include/windows/netinet/icmp6.h
> -        include/windows/netinet/ip6.h
> -        lib/strsep.c
> -
>  * The following components are dual-licensed under the
>    GNU General Public License version 2 and the Apache License Version 2.0.
>
> diff --git a/lib/ovn-util.c b/lib/ovn-util.c
> index fb02825ac..e6143d7a9 100644
> --- a/lib/ovn-util.c
> +++ b/lib/ovn-util.c
> @@ -670,16 +670,9 @@ default_br_db(void)
>  char *
>  get_abs_unix_ctl_path(const char *path)
>  {
> -#ifdef _WIN32
> -    enum { WINDOWS = 1 };
> -#else
> -    enum { WINDOWS = 0 };
> -#endif
> -
>      long int pid = getpid();
>      char *abs_path
>          = (path ? abs_file_name(ovn_rundir(), path)
> -           : WINDOWS ? xasprintf("%s/%s.ctl", ovn_rundir(), program_name)
>             : xasprintf("%s/%s.%ld.ctl", ovn_rundir(), program_name, pid));
>      return abs_path;
>  }
> @@ -689,20 +682,8 @@ ovn_set_pidfile(const char *name)
>  {
>      char *pidfile_name = NULL;
>
> -#ifndef _WIN32
>      pidfile_name = name ? abs_file_name(ovn_rundir(), name)
>                          : xasprintf("%s/%s.pid", ovn_rundir(), program_name);
> -#else
> -    if (name) {
> -        if (strchr(name, ':')) {
> -            pidfile_name = xstrdup(name);
> -        } else {
> -            pidfile_name = xasprintf("%s/%s", ovn_rundir(), name);
> -        }
> -    } else {
> -        pidfile_name = xasprintf("%s/%s.pid", ovn_rundir(), program_name);
> -    }
> -#endif
>
>      /* Call openvswitch lib function. */
>      set_pidfile(pidfile_name);
> diff --git a/m4/ax_check_openssl.m4 b/m4/ax_check_openssl.m4
> index 281d4dc65..9fbdf9eb1 100644
> --- a/m4/ax_check_openssl.m4
> +++ b/m4/ax_check_openssl.m4
> @@ -80,13 +80,8 @@ AC_DEFUN([AX_CHECK_OPENSSL], [
>              if test -f "$ssldir/include/openssl/ssl.h"; then
>                  SSL_INCLUDES="-I$ssldir/include"
>                  SSL_LDFLAGS="-L$ssldir/lib"
> -                if test "$WIN32" = "yes"; then
> -                    SSL_LIBS="-lssleay32 -llibeay32"
> -                    SSL_DIR=/$(echo ${ssldir} | ${SED} -e 's/://')
> -                else
> -                    SSL_LIBS="-lssl -lcrypto"
> -                    SSL_DIR="$ssldir"
> -                fi
> +                SSL_LIBS="-lssl -lcrypto"
> +                SSL_DIR="$ssldir"
>                  found=true
>                  AC_MSG_RESULT([yes])
>                  break
> diff --git a/m4/ovn.m4 b/m4/ovn.m4
> index 93a959224..22ad1a27f 100644
> --- a/m4/ovn.m4
> +++ b/m4/ovn.m4
> @@ -60,139 +60,6 @@ AC_DEFUN([OVS_CHECK_NDEBUG],
>       [ndebug=false])
>     AM_CONDITIONAL([NDEBUG], [test x$ndebug = xtrue])])
>
> -dnl Checks for MSVC x64 compiler.
> -AC_DEFUN([OVS_CHECK_WIN64],
> -  [AC_CACHE_CHECK(
> -    [for MSVC x64 compiler],
> -    [cl_cv_x64],
> -    [dnl "cl" writes x64 output to stdin:
> -     if (cl) 2>&1 | grep 'x64' >/dev/null 2>&1; then
> -       cl_cv_x64=yes
> -       MSVC64_LDFLAGS=" /MACHINE:X64 "
> -       MSVC_PLATFORM="x64"
> -     else
> -       cl_cv_x64=no
> -       MSVC64_LDFLAGS=""
> -       MSVC_PLATFORM="x86"
> -     fi])
> -     AC_SUBST([MSVC64_LDFLAGS])
> -     AC_SUBST([MSVC_PLATFORM])
> -])
> -
> -dnl Checks for WINDOWS.
> -AC_DEFUN([OVS_CHECK_WIN32],
> -  [AC_CHECK_HEADER([windows.h],
> -                   [WIN32=yes],
> -                   [WIN32=no])
> -   AM_CONDITIONAL([WIN32], [test "$WIN32" = yes])
> -   if test "$WIN32" = yes; then
> -      AC_ARG_WITH([pthread],
> -         [AS_HELP_STRING([--with-pthread=DIR],
> -            [root of the pthread-win32 directory])],
> -         [
> -            case "$withval" in
> -            "" | y | ye | yes | n | no)
> -            AC_MSG_ERROR([Invalid --with-pthread value])
> -              ;;
> -            *)
> -            if (cl) 2>&1 | grep 'x64' >/dev/null 2>&1; then
> -              cl_cv_x64=yes
> -            else
> -              cl_cv_x64=no
> -            fi
> -            if test "$cl_cv_x64" = yes; then
> -                PTHREAD_WIN32_DIR=$withval/lib/x64
> -                PTHREAD_WIN32_DIR_DLL=/$(echo ${withval} | ${SED} -e 
> 's/://')/dll/x64
> -                PTHREAD_WIN32_DIR_DLL_WIN_FORM=$withval/dll/x64
> -            else
> -                PTHREAD_WIN32_DIR=$withval/lib/x86
> -                PTHREAD_WIN32_DIR_DLL=/$(echo ${withval} | ${SED} -e 
> 's/://')/dll/x86
> -                PTHREAD_WIN32_DIR_DLL_WIN_FORM=$withval/dll/x86
> -            fi
> -            PTHREAD_INCLUDES=-I$withval/include
> -            PTHREAD_LDFLAGS=-L$PTHREAD_WIN32_DIR
> -            PTHREAD_LIBS="-lpthreadVC2"
> -            AC_SUBST([PTHREAD_WIN32_DIR_DLL_WIN_FORM])
> -            AC_SUBST([PTHREAD_WIN32_DIR_DLL])
> -            AC_SUBST([PTHREAD_INCLUDES])
> -            AC_SUBST([PTHREAD_LDFLAGS])
> -            AC_SUBST([PTHREAD_LIBS])
> -              ;;
> -            esac
> -         ], [
> -            AC_MSG_ERROR([pthread directory not specified])
> -         ]
> -      )
> -      AC_ARG_WITH([debug],
> -         [AS_HELP_STRING([--with-debug],
> -            [Build without compiler optimizations])],
> -         [
> -            MSVC_CFLAGS="-O0"
> -            AC_SUBST([MSVC_CFLAGS])
> -         ], [
> -            MSVC_CFLAGS="-O2"
> -            AC_SUBST([MSVC_CFLAGS])
> -         ]
> -      )
> -
> -      AC_DEFINE([WIN32], [1], [Define to 1 if building on WIN32.])
> -      AC_CHECK_TYPES([struct timespec], [], [], [[#include <time.h>]])
> -      AH_BOTTOM([#ifdef WIN32
> -#include "include/windows/windefs.h"
> -#endif])
> -   fi])
> -
> -dnl OVS_CHECK_WINDOWS
> -dnl
> -dnl Configure Visual Studio solution build
> -AC_DEFUN([OVS_CHECK_VISUAL_STUDIO_DDK], [
> -AC_ARG_WITH([vstudiotarget],
> -         [AS_HELP_STRING([--with-vstudiotarget=target_type],
> -            [Target type: Debug/Release])],
> -         [
> -            case "$withval" in
> -            "Release") ;;
> -            "Debug") ;;
> -            *) AC_MSG_ERROR([No valid Visual Studio configuration found]) ;;
> -            esac
> -
> -            VSTUDIO_CONFIG=$withval
> -         ], [
> -            VSTUDIO_CONFIG=
> -         ]
> -      )
> -
> -  AC_SUBST([VSTUDIO_CONFIG])
> -
> -AC_ARG_WITH([vstudiotargetver],
> -         [AS_HELP_STRING([--with-vstudiotargetver=target_ver1,target_ver2],
> -            [Target versions: Win8,Win8.1,Win10])],
> -         [
> -            targetver=`echo "$withval" | tr -s , ' ' `
> -            for ver in $targetver; do
> -                case "$ver" in
> -                "Win8") VSTUDIO_WIN8=true ;;
> -                "Win8.1")  VSTUDIO_WIN8_1=true ;;
> -                "Win10") VSTUDIO_WIN10=true ;;
> -                *) AC_MSG_ERROR([No valid Visual Studio target version 
> found]) ;;
> -                esac
> -            done
> -
> -         ], [
> -            VSTUDIO_WIN8=true
> -            VSTUDIO_WIN8_1=true
> -            VSTUDIO_WIN10=true
> -         ]
> -      )
> -
> -  AM_CONDITIONAL([VSTUDIO_WIN8], [test -n "$VSTUDIO_WIN8"])
> -  AM_CONDITIONAL([VSTUDIO_WIN8_1], [test -n "$VSTUDIO_WIN8_1"])
> -  AM_CONDITIONAL([VSTUDIO_WIN10], [test -n "$VSTUDIO_WIN10"])
> -
> -  AC_DEFINE([VSTUDIO_DDK], [1], [System uses the Visual Studio build 
> target.])
> -  AM_CONDITIONAL([VSTUDIO_DDK], [test -n "$VSTUDIO_CONFIG"])
> -])
> -
>  dnl Checks for OpenSSL.
>  AC_DEFUN([OVS_CHECK_OPENSSL],
>    [AC_ARG_ENABLE(
> diff --git a/northd/lflow-mgr.c b/northd/lflow-mgr.c
> index 3b8cbe472..ce9c4f854 100644
> --- a/northd/lflow-mgr.c
> +++ b/northd/lflow-mgr.c
> @@ -1168,12 +1168,6 @@ sync_lflow_to_sb(struct ovn_lflow *lflow,
>           * "ovn/northd/northd.c:1234", down to just the part following the
>           * last slash, e.g. "northd.c:1234". */
>          const char *slash = strrchr(lflow->where, '/');
> -#if _WIN32
> -        const char *backslash = strrchr(lflow->where, '\\');
> -        if (!slash || backslash > slash) {
> -            slash = backslash;
> -        }
> -#endif
>          const char *where = slash ? slash + 1 : lflow->where;
>
>          struct smap ids = SMAP_INITIALIZER(&ids);
> @@ -1213,12 +1207,6 @@ sync_lflow_to_sb(struct ovn_lflow *lflow,
>                   * like "ovn/northd/northd.c:1234", down to just the part
>                   * following the last slash, e.g. "northd.c:1234". */
>                  const char *slash = strrchr(lflow->where, '/');
> -#if _WIN32
> -                const char *backslash = strrchr(lflow->where, '\\');
> -                if (!slash || backslash > slash) {
> -                    slash = backslash;
> -                }
> -#endif
>                  const char *where = slash ? slash + 1 : lflow->where;
>
>                  if (strcmp(source, where)) {
> diff --git a/tests/atlocal.in b/tests/atlocal.in
> index 477d56a0f..2683e9a2f 100644
> --- a/tests/atlocal.in
> +++ b/tests/atlocal.in
> @@ -74,29 +74,14 @@ esac
>
>  # Check for platform.
>  case `uname` in
> -MINGW*|MSYS*)
> -    IS_WIN32="yes"
> -    IS_BSD="no"
> -    ;;
>  FreeBSD|NetBSD)
> -    IS_WIN32="no"
>      IS_BSD="yes"
>      ;;
>  *)
> -    IS_WIN32="no"
>      IS_BSD="no"
>      ;;
>  esac
>
> -if test x"$PYTHON3" != x && test "$IS_WIN32" = yes; then
> -    # enables legacy windows unicode printing needed for Python3 
> compatibility
> -    # with the Python2 tests
> -    PYTHONLEGACYWINDOWSFSENCODING=true
> -    export PYTHONLEGACYWINDOWSFSENCODING
> -    PYTHONLEGACYWINDOWSSTDIO=true
> -    export PYTHONLEGACYWINDOWSSTDIO
> -fi
> -
>  # Check whether to run IPv6 tests.
>  $PYTHON -c '
>  import errno
> diff --git a/tests/automake.mk b/tests/automake.mk
> index 46be217ae..76ef4fda0 100644
> --- a/tests/automake.mk
> +++ b/tests/automake.mk
> @@ -15,8 +15,7 @@ EXTRA_DIST += \
>         $(MULTINODE_TESTSUITE) \
>         tests/atlocal.in \
>         $(srcdir)/package.m4 \
> -       $(srcdir)/tests/testsuite \
> -       $(srcdir)/tests/testsuite.patch
> +       $(srcdir)/tests/testsuite
>
>  COMMON_MACROS_AT = \
>         tests/ovsdb-macros.at \
> @@ -81,7 +80,6 @@ MULTINODE_TESTSUITE_AT = \
>  check_SCRIPTS += tests/atlocal
>
>  TESTSUITE = $(srcdir)/tests/testsuite
> -TESTSUITE_PATCH = $(srcdir)/tests/testsuite.patch
>  TESTSUITE_DIR = $(abs_top_builddir)/tests/testsuite.dir
>  SYSTEM_DPDK_TESTSUITE = $(srcdir)/tests/system-dpdk-testsuite
>  SYSTEM_KMOD_TESTSUITE = $(srcdir)/tests/system-kmod-testsuite
> @@ -93,7 +91,7 @@ DISTCLEANFILES += tests/atconfig tests/atlocal
>  MULTINODE_TESTSUITE = $(srcdir)/tests/multinode-testsuite
>  MULTINODE_TESTSUITE_DIR = $(abs_top_builddir)/tests/multinode-testsuite.dir
>  MULTINODE_TESTSUITE_RESULTS = $(MULTINODE_TESTSUITE_DIR)/results
> -AUTOTEST_PATH = 
> $(ovs_builddir)/utilities:$(ovs_builddir)/vswitchd:$(ovs_builddir)/ovsdb:$(ovs_builddir)/vtep:tests:$(PTHREAD_WIN32_DIR_DLL):$(SSL_DIR):controller-vtep:northd:utilities:controller:ic:br-controller
> +AUTOTEST_PATH = 
> $(ovs_builddir)/utilities:$(ovs_builddir)/vswitchd:$(ovs_builddir)/ovsdb:$(ovs_builddir)/vtep:tests:$(SSL_DIR):controller-vtep:northd:utilities:controller:ic:br-controller
>
>  export ovs_srcdir
>  export ovs_builddir
> @@ -237,16 +235,9 @@ check-multinode: all
>
>  AUTOTEST = $(AUTOM4TE) --language=autotest
>
> -if WIN32
> -$(TESTSUITE): package.m4 $(TESTSUITE_AT) $(COMMON_MACROS_AT) 
> $(TESTSUITE_PATCH)
> -       $(AM_V_GEN)$(AUTOTEST) -I '$(srcdir)' -o testsuite.tmp [email protected]
> -       patch -p0 testsuite.tmp $(TESTSUITE_PATCH)
> -       $(AM_V_at)mv testsuite.tmp $@
> -else
>  $(TESTSUITE): package.m4 $(TESTSUITE_AT) $(COMMON_MACROS_AT)
>         $(AM_V_GEN)$(AUTOTEST) -I '$(srcdir)' -o [email protected] [email protected]
>         $(AM_V_at)mv [email protected] $@
> -endif
>
>  $(SYSTEM_DPDK_TESTSUITE): package.m4 $(SYSTEM_TESTSUITE_AT) 
> $(SYSTEM_DPDK_TESTSUITE_AT) $(COMMON_MACROS_AT)
>         $(AM_V_GEN)$(AUTOTEST) -I '$(srcdir)' -o [email protected] [email protected]
> diff --git a/tests/ovn-controller-vtep.at b/tests/ovn-controller-vtep.at
> index caf53e291..213e222ed 100644
> --- a/tests/ovn-controller-vtep.at
> +++ b/tests/ovn-controller-vtep.at
> @@ -13,7 +13,6 @@ AT_BANNER([ovn_controller_vtep])
>  #
>  m4_define([OVN_CONTROLLER_VTEP_START], [
>     AT_KEYWORDS([ovn])
> -   # this will cause skip when 'make check' using Windows setup.
>     sim="$1"
>     tunnel_ip="$2"
>     vtep_chassis=${sim:-br-vtep}
> diff --git a/tests/ovs-macros.at b/tests/ovs-macros.at
> index 6e6e52080..95d522b70 100644
> --- a/tests/ovs-macros.at
> +++ b/tests/ovs-macros.at
> @@ -105,43 +105,6 @@ seq () {
>      done
>  }
>
> -if test "$IS_WIN32" = "yes"; then
> -    pwd () {
> -        command pwd -W "$@"
> -    }
> -
> -    diff () {
> -        command diff --strip-trailing-cr "$@"
> -    }
> -
> -    # tskill is more effective than taskkill but it isn't always installed.
> -    if (tskill //?) >/dev/null 2>&1; then :; else
> -        tskill () { taskkill //F //PID $1 >/dev/null; }
> -    fi
> -
> -    kill () {
> -        signal=
> -        retval=0
> -        for arg; do
> -            case $arg in
> -            -*) signal=$arg ;;
> -            [1-9][0-9]*)
> -                # tasklist always returns 0.
> -                # If pid does exist, there will be a line with the pid.
> -                if tasklist //fi "PID eq $arg" | grep $arg >/dev/null; then
> -                    if test "X$signal" != "X-0"; then
> -                        tskill $arg
> -                    fi
> -                else
> -                    retval=1
> -                fi
> -                ;;
> -            esac
> -        done
> -        return $retval
> -    }
> -fi
> -
>  # parent_pid PID
>  #
>  # Prints the PID of the parent of process PID.
> diff --git a/tests/test-ovn.c b/tests/test-ovn.c
> index 3c89eeba0..114e60d65 100644
> --- a/tests/test-ovn.c
> +++ b/tests/test-ovn.c
> @@ -1058,7 +1058,6 @@ test_tree_shape_exhaustively(struct expr *expr, struct 
> shash *symtab,
>      }
>  }
>
> -#ifndef _WIN32
>  static void
>  wait_pid(pid_t *pids, int *n)
>  {
> @@ -1087,7 +1086,6 @@ wait_pid(pid_t *pids, int *n)
>      }
>      ovs_fatal(0, "waitpid returned unknown child");
>  }
> -#endif
>
>  static void
>  test_exhaustive(struct ovs_cmdl_context *ctx OVS_UNUSED)
> @@ -1118,10 +1116,8 @@ test_exhaustive(struct ovs_cmdl_context *ctx 
> OVS_UNUSED)
>          free(name);
>      }
>
> -#ifndef _WIN32
>      pid_t *children = xmalloc(test_parallel * sizeof *children);
>      int n_children = 0;
> -#endif
>
>      int n_tested = 0;
>      for (int i = 0; i < 2; i++) {
> @@ -1144,7 +1140,6 @@ test_exhaustive(struct ovs_cmdl_context *ctx OVS_UNUSED)
>                  ds_destroy(&s);
>              }
>
> -#ifndef _WIN32
>              if (test_parallel > 1) {
>                  pid_t pid = xfork();
>                  if (!pid) {
> @@ -1160,9 +1155,7 @@ test_exhaustive(struct ovs_cmdl_context *ctx OVS_UNUSED)
>                      }
>                      children[n_children++] = pid;
>                  }
> -            } else
> -#endif
> -            {
> +            } else {
>                  n_tested += test_tree_shape_exhaustively(
>                      expr, &symtab, terminals, n_terminals,
>                      nvars, test_nvars, test_bits,
> @@ -1171,12 +1164,11 @@ test_exhaustive(struct ovs_cmdl_context *ctx 
> OVS_UNUSED)
>              expr_destroy(expr);
>          }
>      }
> -#ifndef _WIN32
> +
>      while (n_children > 0) {
>          wait_pid(children, &n_children);
>      }
>      free(children);
> -#endif
>
>      printf("Tested ");
>      switch (operation) {
> diff --git a/tests/testsuite.patch b/tests/testsuite.patch
> deleted file mode 100644
> index e0c6bb35a..000000000
> --- a/tests/testsuite.patch
> +++ /dev/null
> @@ -1,76 +0,0 @@
> ---- testsuite  2015-02-11 17:19:21.654646439 -0800
> -+++ testsuite  2015-02-11 17:15:03.810653032 -0800
> -@@ -4669,6 +4669,73 @@
> -   fi
> -   exec 6<&-
> -   wait
> -+elif test $at_jobs -ne 1 &&
> -+     test "$IS_WIN32" = "yes"; then
> -+  # FIFO job dispatcher.
> -+  trap 'at_pids=
> -+      for at_pid in `jobs -p`; do
> -+        at_pids="$at_pids $at_job_group$at_pid"
> -+      done
> -+      if test -n "$at_pids"; then
> -+        at_sig=TSTP
> -+        test "${TMOUT+set}" = set && at_sig=STOP
> -+        kill -$at_sig $at_pids 2>/dev/null
> -+      fi
> -+      kill -STOP $$
> -+      test -z "$at_pids" || kill -CONT $at_pids 2>/dev/null' TSTP
> -+
> -+  echo
> -+  # Turn jobs into a list of numbers, starting from 1.
> -+  running_jobs="`pwd`/tests/jobdispatcher"
> -+  mkdir -p $running_jobs
> -+  at_joblist=`$as_echo "$at_groups" | sed -n 1,${at_jobs}p`
> -+
> -+  set X $at_joblist
> -+  shift
> -+  for at_group in $at_groups; do
> -+    $at_job_control_on 2>/dev/null
> -+    (
> -+      # Start one test group.
> -+      $at_job_control_off
> -+      touch $running_jobs/$at_group
> -+      trap 'set +x; set +e
> -+          trap "" PIPE
> -+          echo stop > "$at_stop_file"
> -+          rm -f $running_jobs/$at_group
> -+          as_fn_exit 141' PIPE
> -+      at_fn_group_prepare
> -+      if cd "$at_group_dir" &&
> -+       at_fn_test $at_group &&
> -+       . "$at_test_source"
> -+      then :; else
> -+      { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unable to parse 
> test group: $at_group" >&5
> -+$as_echo "$as_me: WARNING: unable to parse test group: $at_group" >&2;}
> -+      at_failed=:
> -+      fi
> -+      rm -f $running_jobs/$at_group
> -+      at_fn_group_postprocess
> -+    ) &
> -+    $at_job_control_off
> -+    shift # Consume one token.
> -+    if test $# -gt 0; then :; else
> -+      while [ "`ls -l $running_jobs 2>/dev/null | wc -l`" -gt "$at_jobs" ]; 
> do
> -+        sleep 0.1
> -+      done
> -+      set x $*
> -+    fi
> -+    test -f "$at_stop_file" && break
> -+  done
> -+  # Read back the remaining ($at_jobs - 1) tokens.
> -+  set X $at_joblist
> -+  shift
> -+  if test $# -gt 0; then
> -+    shift
> -+    while [ "`ls -l $running_jobs | wc -l`" -gt 1 ]; do
> -+      sleep 0.1
> -+    done
> -+  fi
> -+  rmdir $running_jobs
> -+  wait
> - else
> -   # Run serially, avoid forks and other potential surprises.
> -   for at_group in $at_groups; do
> diff --git a/utilities/checkpatch.py b/utilities/checkpatch.py
> index c19e34442..ad1199f0c 100755
> --- a/utilities/checkpatch.py
> +++ b/utilities/checkpatch.py
> @@ -1073,10 +1073,7 @@ def ovs_checkpatch_parse(text, filename, author=None, 
> committer=None):
>                  interim_line_check(current_file, cmp_line, lineno)
>                  continue
>
> -            # Skip files which have /datapath in them, since they are
> -            # linux or windows coding standards
> -            if current_file.startswith('datapath'):
> -                continue
> +            # Linux headers use Linux kernel coding style for the most part.
>              if current_file.startswith('include/linux'):
>                  continue
>              # "sparse" includes could be copy-pasted from different sources
> diff --git a/utilities/ovn-appctl.8.xml b/utilities/ovn-appctl.8.xml
> index e3d024da1..b6d7e3dbd 100644
> --- a/utilities/ovn-appctl.8.xml
> +++ b/utilities/ovn-appctl.8.xml
> @@ -142,13 +142,6 @@
>                to limit the log level change to only to the system log, to the
>                console, or to a file, respectively.
>              </p>
> -
> -            <p>
> -              On Windows platform, <code>syslog</code> is accepted as a word
> -              and is only useful if the target was started with the
> -              <code>--syslog-target</code> option (the word has no effect
> -              otherwise).
> -            </p>
>            </li>
>
>            <li>
> diff --git a/utilities/ovn-appctl.c b/utilities/ovn-appctl.c
> index dff7d1295..1e872a401 100644
> --- a/utilities/ovn-appctl.c
> +++ b/utilities/ovn-appctl.c
> @@ -214,7 +214,6 @@ connect_to_target(const char *target)
>      char *socket_name;
>      int error;
>
> -#ifndef _WIN32
>      if (target[0] != '/') {
>          char *pidfile_name;
>          pid_t pid;
> @@ -227,12 +226,6 @@ connect_to_target(const char *target)
>          free(pidfile_name);
>          socket_name = xasprintf("%s/%s.%ld.ctl",
>                                  ovn_rundir(), target, (long int) pid);
> -#else
> -    /* On windows, if the 'target' contains ':', we make an assumption that
> -     * it is an absolute path. */
> -    if (!strchr(target, ':')) {
> -        socket_name = xasprintf("%s/%s.ctl", ovn_rundir(), target);
> -#endif
>      } else {
>          socket_name = xstrdup(target);
>      }
> --
> 2.54.0
>
> _______________________________________________
> dev mailing list
> [email protected]
> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
>

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to