On 7/26/19 10:36 AM, Numan Siddique wrote:


On Fri, Jul 26, 2019 at 8:04 PM Mark Michelson <[email protected] <mailto:[email protected]>> wrote:

    On 7/26/19 8:52 AM, Numan Siddique wrote:
     > On Fri, Jul 26, 2019 at 5:51 PM Numan Siddique
    <[email protected] <mailto:[email protected]>> wrote:
     >
     >>
     >>
     >> On Fri, Jul 26, 2019 at 5:19 PM Damijan Skvarc
    <[email protected] <mailto:[email protected]>>
     >> wrote:
     >>
     >>> Dumitru,
     >>> your issue was fixed in
     >>>
    
https://github.com/openvswitch/ovs/commit/6f6d19db05ca743d6f294618d2c36b6d0b15e2e2
     >>> as removed warning. However fix is not merged yet on
     >>> https://github.com/ovn-org/ovn.git. Unfortunatelly even merging
    this fix
     >>> to ovn-org/ovn.git will not help, since (saying from memory) by
    this fix
     >>> about 1700 warning were removed while there still remained about 70
     >>> warnings of the same kind at different locations. I would
    suggest for a
     >>> while not to consider warnings as errors.
     >>>
     >>
     >> Hi Damijan,
     >>
     >> With the OVS/OVN split branch here -
     >> https://github.com/ovn-org/ovn/commits/ovs_ovn_split, your fix is
     >> available -
     >>
    
https://github.com/ovn-org/ovn/blob/ovs_ovn_split/ovs/include/openvswitch/nsh.h#L372
     >>
     >> After applying Ilya's patch and manually compiling sparse after
    reverting
     >> the commit, I am still seeing the below errors
     >>
     >> Do you think we can ignore these errors for now ?
     >>
     >>
     > Found the issue. The acinclude.m4 file in ovn-org/ovn repo is a
    bit out of
     > date. The OVS_ENABLE_SPARSE and other SPARSE related macros needs
    to be
     > updated. After fixing it, compilation
     > was successful.
     >
     > Thanks
     > Numan

    Hi Numan,

    I just attempted this. I did a fresh clone of the ovn repo, checked out
    the up-to-date ovs_ovn_split branch, and then compiled with
    --enable-sparse and --enable-Werror.

    I see the following errors:

    libtool: compile:  env REAL_CC=gcc "CHECK=sparse -Wsparse-error -I
    ./include/sparse -m64 -I /usr/local/include  " cgcc -target=x86_64
    -target=host_os_specs -D__MMX__=1 -D__SSE2_MATH__=1 -D__SSE_MATH__=1
    -D__SSE2__=1 -D__SSE__=1 -DHAVE_CONFIG_H -I. -I ./include -I ./include
    -I ./lib -I ./lib -Wstrict-prototypes -Wall -Wextra -Wno-sign-compare
    -Wpointer-arith -Wformat -Wformat-security -Wswitch-enum
    -Wunused-parameter -Wbad-function-cast -Wcast-align -Wstrict-prototypes
    -Wold-style-definition -Wmissing-prototypes
    -Wmissing-field-initializers
    -fno-strict-aliasing -Wswitch-bool -Wlogical-not-parentheses
    -Wsizeof-array-argument -Wbool-compare -Wshift-negative-value
    -Wduplicated-cond -Wshadow -Werror -Werror -g -O2 -MT lib/rconn.lo -MD
    -MP -MF lib/.deps/rconn.Tpo -c lib/rconn.c -o lib/rconn.o
    lib/sat-math.h:46:14: error: undefined identifier
    '__builtin_saddll_overflow'
    lib/sat-math.h:46:39: error: not a function <noident>
    lib/sat-math.h:46:39: error: not a function <noident>
    lib/sat-math.h:102:14: error: undefined identifier
    '__builtin_smulll_overflow'
    lib/sat-math.h:102:39: error: not a function <noident>
    lib/sat-math.h:46:39: error: not a function <noident>
    lib/sat-math.h:102:39: error: not a function <noident>
    lib/sat-math.h:46:39: error: not a function <noident>
    lib/sat-math.h:72:14: error: undefined identifier
    '__builtin_ssubll_overflow'
    lib/sat-math.h:102:39: error: not a function <noident>
    lib/sat-math.h:46:39: error: not a function <noident>
    lib/sat-math.h:102:39: error: call with no type!
    lib/sat-math.h:72:39: error: call with no type!
    lib/sat-math.h:46:39: error: call with no type!
    make[4]: *** [Makefile:5359: lib/rconn.lo] Error 1

    I also see this with the OVS repo. So it likely should be addressed
    there instead, and it shouldn't delay our work of splitting the OVN
    code
    out.


I agree.

But I don't see these errors. I suspect its to do with sparse version ? Not sure :).

Without sparse, hopefully it went fine for you.

Thanks
Numan

Yep, without sparse everything went fine. I was running with sparse version 0.5.2 when I saw the errors. I then installed sparse from source (reverting commit bb1bf748580d as our travis script does), and no longer had the issue. I suspect that we need to update the ovs docs to specify a more recent version of sparse than 0.5.1 now.


     >
     >
     >> Thank
     >> Numan
     >>
     >> *******
     >>   -Wold-style-definition -Wmissing-prototypes
    -Wmissing-field-initializers
     >> -fno-strict-aliasing -Wswitch-bool -Wlogical-not-parentheses
     >> -Wsizeof-array-argument -Wbool-compare -Wshift-negative-value
     >> -Wduplicated-cond -Wshadow -Wmultistatement-macros
    -Wcast-align=strict
     >> -Werror -Werror   -g -O2 -MT lib/acl-log.lo -MD -MP -MF
    $depbase.Tpo -c -o
     >> lib/acl-log.lo ../lib/acl-log.c &&\
     >> mv -f $depbase.Tpo $depbase.Plo
     >> ../ovs/lib/util.h:449:12: error: incorrect type in return expression
     >> (different base types)
     >> ../ovs/lib/util.h:449:12:    expected restricted ovs_be32
     >> ../ovs/lib/util.h:449:12:    got unsigned int
     >> ../utilities/ovn-nbctl.c:3426:34: error: incorrect type in
    argument 1
     >> (different base types)
     >> ../utilities/ovn-nbctl.c:3426:34:    expected unsigned int
    [usertype] __bsx
     >> ../utilities/ovn-nbctl.c:3426:34:    got restricted ovs_be32
    [usertype]
     >> network
     >> ../utilities/ovn-nbctl.c:3426:34: error: incorrect type in
    argument 1
     >> (different base types)
     >> ../utilities/ovn-nbctl.c:3426:34:    expected unsigned int
    [usertype] __bsx
     >> ../utilities/ovn-nbctl.c:3426:34:    got restricted ovs_be32
    [usertype]
     >> network
     >> ../utilities/ovn-nbctl.c:3426:34: error: incorrect type in
    argument 1
     >> (different base types)
     >> ../utilities/ovn-nbctl.c:3426:34:    expected unsigned int
    [usertype] __bsx
     >> ../utilities/ovn-nbctl.c:3426:34:    got restricted ovs_be32
    [usertype]
     >> network
     >> ../utilities/ovn-nbctl.c:3426:34: error: incorrect type in
    argument 1
     >> (different base types)
     >> ../utilities/ovn-nbctl.c:3426:34:    expected unsigned int
    [usertype] __bsx
     >> ../utilities/ovn-nbctl.c:3426:34:    got restricted ovs_be32
    [usertype]
     >> network
     >> ../utilities/ovn-nbctl.c:3428:39: error: incorrect type in
    argument 1
     >> (different base types)
     >> ../utilities/ovn-nbctl.c:3428:39:    expected unsigned int
    [usertype] __bsx
     >> ../utilities/ovn-nbctl.c:3428:39:    got restricted ovs_be32
    [usertype]
     >> network
     >> ../utilities/ovn-nbctl.c:3428:39: error: incorrect type in
    argument 1
     >> (different base types)
     >> ../utilities/ovn-nbctl.c:3428:39:    expected unsigned int
    [usertype] __bsx
     >> ../utilities/ovn-nbctl.c:3428:39:    got restricted ovs_be32
    [usertype]
     >> network
     >> ../utilities/ovn-nbctl.c:3428:39: error: incorrect type in
    argument 1
     >> (different base types)
     >> ../utilities/ovn-nbctl.c:3428:39:    expected unsigned int
    [usertype] __bsx
     >> ../utilities/ovn-nbctl.c:3428:39:    got restricted ovs_be32
    [usertype]
     >> network
     >> ../utilities/ovn-nbctl.c:3428:39: error: incorrect type in
    argument 1
     >> (different base types)
     >> ../utilities/ovn-nbctl.c:3428:39:    expected unsigned int
    [usertype] __bsx
     >> ...
     >> ...
     >> make[2]: *** Waiting for unfinished jobs....
     >> libtool: compile:  env REAL_CC=gcc "CHECK=sparse -Wsparse-error -I
     >> ../include/sparse -m64 -I /usr/local/include  " cgcc -target=x86_64
     >> -DHAVE_CONFIG_H -I. -I.. -I ../ovs/include -I ./ovs/include -I
    ../ovs/lib
     >> -I ./ovs/lib -I ../ovs -I ./ovs -I ../lib -I ./lib
    -Wstrict-prototypes
     >> -Wall -Wextra -Wno-sign-compare -Wpointer-arith -Wformat
    -Wformat-security
     >> -Wswitch-enum -Wunused-parameter -Wbad-function-cast -Wcast-align
     >> -Wstrict-prototypes -Wold-style-definition -Wmissing-prototypes
     >> -Wmissing-field-initializers -fno-strict-aliasing -Wswitch-bool
     >> -Wlogical-not-parentheses -Wsizeof-array-argument -Wbool-compare
     >> -Wshift-negative-value -Wduplicated-cond -Wshadow
    -Wmultistatement-macros
     >> -Wcast-align=strict -Werror -Werror -g -O2 -MT lib/acl-log.lo
    -MD -MP -MF
     >> lib/.deps/acl-log.Tpo -c ../lib/acl-log.c -o lib/acl-log.o
     >> libtool: compile:  env REAL_CC=gcc "CHECK=sparse -Wsparse-error -I
     >> ../include/sparse -m64 -I /usr/local/include  " cgcc -target=x86_64
     >> -DHAVE_CONFIG_H -I. -I.. -I ../ovs/include -I ./ovs/include -I
    ../ovs/lib
     >> -I ./ovs/lib -I ../ovs -I ./ovs -I ../lib -I ./lib
    -Wstrict-prototypes
     >> -Wall -Wextra -Wno-sign-compare -Wpointer-arith -Wformat
    -Wformat-security
     >> -Wswitch-enum -Wunused-parameter -Wbad-function-cast -Wcast-align
     >> -Wstrict-prototypes -Wold-style-definition -Wmissing-prototypes
     >> -Wmissing-field-initializers -fno-strict-aliasing -Wswitch-bool
     >> -Wlogical-not-parentheses -Wsizeof-array-argument -Wbool-compare
     >> -Wshift-negative-value -Wduplicated-cond -Wshadow
    -Wmultistatement-macros
     >> -Wcast-align=strict -Werror -Werror -g -O2 -MT lib/actions.lo
    -MD -MP -MF
     >> lib/.deps/actions.Tpo -c ../lib/actions.c -o lib/actions.o
     >> ../lib/actions.c:723:32: error: incorrect type in initializer
    (different
     >> base types)
     >> ../lib/actions.c:723:32:    expected restricted ovs_be32 const
    [usertype]
     >> value
     >> ../lib/actions.c:723:32:    got unsigned int
     >> ../lib/actions.c:724:31: error: incorrect type in initializer
    (different
     >> base types)
     >> ../lib/actions.c:724:31:    expected restricted ovs_be32 const
    [usertype]
     >> mask
     >> ../lib/actions.c:724:31:    got unsigned int
     >> ../lib/actions.c:976:42: error: incorrect type in argument 1
    (different
     >> base types)
     >> ../lib/actions.c:976:42:    expected unsigned int [usertype] __bsx
     >> ../lib/actions.c:976:42:    got restricted ovs_be32 const
    [usertype] ipv4
     >> ../lib/actions.c:976:42: error: incorrect type in argument 1
    (different
     >> base types)
     >> ../lib/actions.c:976:42:    expected unsigned int [usertype] __bsx
     >> ../lib/actions.c:976:42:    got restricted ovs_be32 const
    [usertype] ipv4
     >> ../lib/actions.c:976:42: error: incorrect type in argument 1
    (different
     >> base types)
     >> ../lib/actions.c:976:42:    expected unsigned int [usertype] __bsx
     >> ../lib/actions.c:976:42:    got restricted ovs_be32 const
    [usertype] ipv4
     >> ../lib/actions.c:976:42: error: incorrect type in argument 1
    (different
     >> base types)
     >> ../lib/actions.c:976:42:    expected unsigned int [usertype] __bsx
     >> ../lib/actions.c:976:42:    got restricted ovs_be32 const
    [usertype] ipv4
     >> ../lib/actions.c:1970:20: error: incorrect type in initializer
    (different
     >> base types)
     >> ../lib/actions.c:1970:20:    expected restricted ovs_be32
    [usertype] ofs
     >> ../lib/actions.c:1970:20:    got unsigned int
     >> *********
     >>
     >>
     >>
     >>>
     >>> br,Damijan
     >>>
     >>> On Fri, Jul 26, 2019 at 10:30 AM Dumitru Ceara
    <[email protected] <mailto:[email protected]>> wrote:
     >>>
     >>>> On Fri, Jul 26, 2019 at 8:21 AM Numan Siddique
    <[email protected] <mailto:[email protected]>>
     >>>> wrote:
     >>>>>
     >>>>> Hello All,
     >>>>>
     >>>>> The split work is almost done and we have pushed it to the
    ovn repo
     >>>> branch
     >>>>> for now - https://github.com/ovn-org/ovn/commits/ovs_ovn_split
     >>>>> If some one is interested, please try it out and let us know any
     >>>> comments
     >>>>> or issues.
     >>>>
     >>>> Hi Numan,
     >>>>
     >>>> It looks like the ovs_ovn_split branch doesn't build:
     >>>>
     >>>> # git clone https://github.com/ovn-org/ovn.git ovn
     >>>> # cd ovn
     >>>> # ./boot.sh
     >>>> # ./configure --enable-Werror --enable-sparse
     >>>> # make
     >>>> make  all-recursive
     >>>> make[1]: Entering directory `/root/ovn'
     >>>> Making all in ovs
     >>>> make[2]: Entering directory `/root/ovn/ovs'
     >>>> make  all-recursive
     >>>> make[3]: Entering directory `/root/ovn/ovs'
     >>>> Making all in datapath
     >>>> make[4]: Entering directory `/root/ovn/ovs/datapath'
     >>>> make[5]: Entering directory `/root/ovn/ovs/datapath'
     >>>> make[5]: Leaving directory `/root/ovn/ovs/datapath'
     >>>> make[4]: Leaving directory `/root/ovn/ovs/datapath'
     >>>> make[4]: Entering directory `/root/ovn/ovs'
     >>>> make[4]: Leaving directory `/root/ovn/ovs'
     >>>> make[3]: Leaving directory `/root/ovn/ovs'
     >>>> make[2]: Leaving directory `/root/ovn/ovs'
     >>>> make[2]: Entering directory `/root/ovn'
     >>>> depbase=`echo lib/acl-log.lo | sed
    's|[^/]*$|.deps/&|;s|\.lo$||'`;\
     >>>> /bin/sh ./libtool  --tag=CC   --mode=compile env REAL_CC="gcc
     >>>> -std=gnu99" CHECK="sparse -Wsparse-error -I ./include/sparse
    -m64 -I
>>>> /usr/local/include  " cgcc -target=x86_64 -DHAVE_CONFIG_H -I.   -I
     >>>> ./ovs/include -I ./ovs/include -I ./ovs/lib -I ./ovs/lib -I
    ./ovs -I
     >>>> ./ovs -I ./lib -I ./lib    -Wstrict-prototypes -Wall -Wextra
     >>>> -Wno-sign-compare -Wpointer-arith -Wformat -Wformat-security
     >>>> -Wswitch-enum -Wunused-parameter -Wbad-function-cast -Wcast-align
     >>>> -Wstrict-prototypes -Wold-style-definition -Wmissing-prototypes
     >>>> -Wmissing-field-initializers -fno-strict-aliasing -Wshadow -Werror
     >>>> -Werror   -g -O2 -MT lib/acl-log.lo -MD -MP -MF $depbase.Tpo -c -o
     >>>> lib/acl-log.lo lib/acl-log.c &&\
     >>>> mv -f $depbase.Tpo $depbase.Plo
     >>>> libtool: compile:  env "REAL_CC=gcc -std=gnu99" "CHECK=sparse
>>>> -Wsparse-error -I ./include/sparse -m64 -I /usr/local/include " cgcc
     >>>> -target=x86_64 -DHAVE_CONFIG_H -I. -I ./ovs/include -I
    ./ovs/include
     >>>> -I ./ovs/lib -I ./ovs/lib -I ./ovs -I ./ovs -I ./lib -I ./lib
     >>>> -Wstrict-prototypes -Wall -Wextra -Wno-sign-compare
    -Wpointer-arith
     >>>> -Wformat -Wformat-security -Wswitch-enum -Wunused-parameter
     >>>> -Wbad-function-cast -Wcast-align -Wstrict-prototypes
     >>>> -Wold-style-definition -Wmissing-prototypes
     >>>> -Wmissing-field-initializers -fno-strict-aliasing -Wshadow -Werror
     >>>> -Werror -g -O2 -MT lib/acl-log.lo -MD -MP -MF
    lib/.deps/acl-log.Tpo -c
     >>>> lib/acl-log.c -o lib/acl-log.o
     >>>> ./ovs/include/openvswitch/nsh.h:372:11: error: symbol '__v'
    shadows an
     >>>> earlier one
     >>>> ./ovs/include/openvswitch/nsh.h:372:11: originally declared here
     >>>> ./ovs/include/openvswitch/nsh.h:372:11: error: symbol '__x'
    shadows an
     >>>> earlier one
     >>>> ./ovs/include/openvswitch/nsh.h:372:11: originally declared here
     >>>> ./ovs/include/openvswitch/nsh.h:383:11: error: symbol '__v'
    shadows an
     >>>> earlier one
     >>>> ./ovs/include/openvswitch/nsh.h:383:11: originally declared here
     >>>> ./ovs/include/openvswitch/nsh.h:383:11: error: symbol '__x'
    shadows an
     >>>> earlier one
     >>>> ./ovs/include/openvswitch/nsh.h:383:11: originally declared here
     >>>> make[2]: *** [lib/acl-log.lo] Error 1
     >>>>
     >>>> Building ovs master works fine for me:
     >>>>
     >>>> # git clone https://github.com/openvswitch/ovs.git ovs
     >>>> # cd ovs
     >>>> # ./boot.sh
     >>>> # ./configure --enable-Werror --enable-sparse
     >>>> # make
     >>>> <snip>
     >>>> mv tests/system-afxdp-testsuite.tmp tests/system-afxdp-testsuite
     >>>> mv tests/system-kmod-testsuite.tmp tests/system-kmod-testsuite
     >>>> mv tests/system-userspace-testsuite.tmp
    tests/system-userspace-testsuite
     >>>> touch -c manpage-check
     >>>> mv tests/testsuite.tmp tests/testsuite
     >>>> make[2]: Leaving directory `/root/ovs'
     >>>> make[1]: Leaving directory `/root/ovs'
     >>>>
     >>>> Regards,
     >>>> Dumitru
     >>>>
     >>>>>
     >>>>> We are planning to push the changes to the master branch
    hopefully
     >>>> Friday
     >>>>> if everything goes fine.
     >>>>>
     >>>>> Thanks
     >>>>> Numan
     >>>>>
     >>>>>
     >>>>> On Fri, Jul 26, 2019 at 12:05 AM Mark Michelson
    <[email protected] <mailto:[email protected]>>
     >>>> wrote:
     >>>>>
     >>>>>> On 7/25/19 12:37 PM, Ilya Maximets wrote:
     >>>>>>> Hi.
     >>>>>>>
     >>>>>>> I have a question regarding the split.
     >>>>>>> Sorry if it's obvious from the RFC splitting code which I
    didn't
     >>>> look at.
     >>>>>>>
     >>>>>>> The question is:
     >>>>>>> How the patches for the common data structures (lists, hash
    maps)
     >>>> will be
     >>>>>>> applied to OVN? Will we need to post same patch for both
     >>>> repositories in
     >>>>>> the
     >>>>>>> future if it changes/fixes common libraries? Or all this
    code will
     >>>> be
     >>>>>> hosted
     >>>>>>> only in OVS repo and will be included like a submodule or
     >>>> something like
     >>>>>> that?
     >>>>>>>
     >>>>>>> Best regards, Ilya Maximets.
     >>>>>>
     >>>>>> Hi Ilya,
     >>>>>>
     >>>>>> OVN will be a separate repo from OVS. Initially, OVS will be a
     >>>> subtree
     >>>>>> of OVN, but soon, we will want to be able to build OVN while
    having a
     >>>>>> completely separate OVS on the system. When all is said and
    done, it
     >>>>>> should be possible to build OVN as long as you have, say, an
     >>>> ovs-devel
     >>>>>> package installed on your system.
     >>>>>>
     >>>>>> I think the answer to your question is that as an OVS
    developer, if
     >>>> you
     >>>>>> make a change to a core component, you only need to post the
    change
     >>>> to
     >>>>>> the OVS repo.
     >>>>>>
     >>>>>>   From an OVN developer's perspective, if an OVN feature/bugfix
     >>>> requires
     >>>>>> a parallel change to be made to a core OVS library, then the OVN
     >>>>>> developer will need to post the library change to OVS as
    well as the
     >>>>>> usage of that change to OVN. As long as OVS is a subtree of
    OVN, it's
     >>>>>> just a matter of ensuring the subtree is kept up to date.
    However,
     >>>> once
     >>>>>> OVS is built separately, then configure-time checks of OVS
    features
     >>>> or
     >>>>>> minimum version checks will need to be added to OVN to
    ensure that
     >>>> the
     >>>>>> code can build properly.
     >>>>>>
     >>>>>> This approach should place most of the burden of OVN
    compatibility
     >>>> with
     >>>>>> OVS on OVN developers rather than OVS developers.
     >>>>>>>
     >>>>>>>> Numan and I have discussed this, and we're planning to perform
     >>>> the split
     >>>>>>>> tomorrow July 25. Numan will be applying the commits he
     >>>> referenced below
     >>>>>>>> to the ovn-org branch to get it up to date. I will be
    submitting a
     >>>>>>>> review for OVS to remove all of the OVN code,
    documentation, etc.
     >>>> from
     >>>>>> it.
     >>>>>>>>
     >>>>>>>> If there are any reasons why we should hold off on this,
    please
     >>>> mention
     >>>>>>>> them as soon as possible.
     >>>>>>>>
     >>>>>>>> Thanks
     >>>>>>>>
     >>>>>>>> On 7/22/19 2:35 PM, Numan Siddique wrote:
     >>>>>>>>> Hi Ben, Mark and All,
     >>>>>>>>>
     >>>>>>>>> Now that branch 2.12 is created, shall we proceed with the
     >>>> OVS/OVN
     >>>>>> split ?
     >>>>>>>>>
     >>>>>>>>> In order to do the split we need to do the below tasks
     >>>>>>>>>
     >>>>>>>>> In ovn-org/ovn repo
     >>>>>>>>> Step 1. Sync the ovs subtree to the latest (from the OVS
    repo).
     >>>>>>>>> 2. Delete all the ovn related code from the root dir.
    Right now
     >>>> there
     >>>>>> is
     >>>>>>>>> no history for the OVN files in the ovn-org/ovn repo
     >>>>>>>>> 3. Copy OVN files from openvswitch/ovs repo using
     >>>> git-filter-branch.
     >>>>>>>>> This will preserver the history.
     >>>>>>>>> 4. Sync the test files from ovs subtree so that tests pass.
     >>>>>>>>>
     >>>>>>>>> During this period its better to freeze merging OVN related
     >>>> patches in
     >>>>>>>>> the OVS repo.
     >>>>>>>>> And finally delete the OVN related code from the OVS repo.
     >>>>>>>>>
     >>>>>>>>> I have done a PoC here -
     >>>>>>>>>
     >>>>
    https://github.com/numansiddique/ovn/commits/ovn_sync_from_ovs_v3/p4
     >>>>>>>>> All the relates commits can be found here.
     >>>>>>>>>
     >>>>>>>>>
     >>>>>>>>> Does these steps seem fine ? Any concerns ?
     >>>>>>>>> If this seems fine, can we choose a date to start this
    process ?
     >>>>>>>>>
     >>>>>>>>> Thanks
     >>>>>>>>> Numan
     >>>>>>>>>
     >>>>>>>
     >>>>>>
     >>>>>>
     >>>>> _______________________________________________
     >>>>> dev mailing list
     >>>>> [email protected] <mailto:[email protected]>
     >>>>> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
     >>>> _______________________________________________
     >>>> dev mailing list
     >>>> [email protected] <mailto:[email protected]>
     >>>> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
     >>>>
     >>>
     > _______________________________________________
     > dev mailing list
     > [email protected] <mailto:[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