svn commit: r368163 - in head: sbin/ifconfig sys/dev/if_wg sys/dev/if_wg/include sys/dev/if_wg/include/crypto sys/dev/if_wg/include/sys sys/dev/if_wg/include/zinc sys/dev/if_wg/module sys/dev/if_wg...

Bjoern A. Zeeb bzeeb-lists at lists.zabbadoz.net
Mon Nov 30 13:44:55 UTC 2020


On 30 Nov 2020, at 9:27, Emmanuel Vadot wrote:

> On Mon, 30 Nov 2020 01:13:12 +0000
> "Bjoern A. Zeeb" <bzeeb-lists at lists.zabbadoz.net> wrote:
>
>> On 29 Nov 2020, at 19:38, Matt Macy wrote:
>>
>>> Author: mmacy
>>> Date: Sun Nov 29 19:38:03 2020
>>> New Revision: 368163
>>> URL: https://svnweb.freebsd.org/changeset/base/368163
>>>
>>> Log:
>>>   Import kernel WireGuard support
>>>
>>>   Data path largely shared with the OpenBSD implementation by
>>>   Matt Dunwoodie <ncon at nconroy.net>
>>>
>>>   Reviewed by:	grehan at freebsd.org
>>>   MFC after:	1 month
>>>   Sponsored by:	Rubicon LLC, (Netgate)
>>>   Differential Revision:	https://reviews.freebsd.org/D26137
>>>
>>> Added:
>>>   head/sbin/ifconfig/ifwg.c   (contents, props changed)
>>>   head/sys/dev/if_wg/
>>>   head/sys/dev/if_wg/include/
>>>   head/sys/dev/if_wg/include/crypto/blake2s.h   (contents, props
>>> changed)
>>>   head/sys/dev/if_wg/include/crypto/curve25519.h   (contents, props
>>> changed)
>>>   head/sys/dev/if_wg/include/crypto/zinc.h   (contents, props 
>>> changed)
>>>   head/sys/dev/if_wg/include/sys/
>>>   head/sys/dev/if_wg/include/sys/if_wg_session.h   (contents, props
>>> changed)
>>>   head/sys/dev/if_wg/include/sys/if_wg_session_vars.h   (contents,
>>> props changed)
>>>   head/sys/dev/if_wg/include/sys/simd-x86_64.h   (contents, props
>>> changed)
>>>   head/sys/dev/if_wg/include/sys/support.h   (contents, props 
>>> changed)
>>>   head/sys/dev/if_wg/include/sys/wg_cookie.h   (contents, props
>>> changed)
>>>   head/sys/dev/if_wg/include/sys/wg_module.h   (contents, props
>>> changed)
>>>   head/sys/dev/if_wg/include/sys/wg_noise.h   (contents, props
>>> changed)
>>>   head/sys/dev/if_wg/include/zinc/blake2s.h   (contents, props
>>> changed)
>>>   head/sys/dev/if_wg/include/zinc/chacha20.h   (contents, props
>>> changed)
>>>   head/sys/dev/if_wg/include/zinc/chacha20poly1305.h   (contents,
>>> props changed)
>>>   head/sys/dev/if_wg/include/zinc/curve25519.h   (contents, props
>>> changed)
>>>   head/sys/dev/if_wg/include/zinc/poly1305.h   (contents, props
>>> changed)
>>>   head/sys/dev/if_wg/module/
>>>   head/sys/dev/if_wg/module/blake2s.c   (contents, props changed)
>>>   head/sys/dev/if_wg/module/blake2s.h   (contents, props changed)
>>>   head/sys/dev/if_wg/module/chacha20-x86_64.S   (contents, props
>>> changed)
>>>   head/sys/dev/if_wg/module/crypto/zinc/chacha20/chacha20-arm-glue.c
>>> (contents, props changed)
>>>   head/sys/dev/if_wg/module/crypto/zinc/chacha20/chacha20-arm.pl
>>> (contents, props changed)
>>>   head/sys/dev/if_wg/module/crypto/zinc/chacha20/chacha20-arm64.pl
>>> (contents, props changed)
>>>   head/sys/dev/if_wg/module/crypto/zinc/chacha20/chacha20-mips-glue.c
>>>  (contents, props changed)
>>>   head/sys/dev/if_wg/module/crypto/zinc/chacha20/chacha20-mips.S
>>> (contents, props changed)
>>>   head/sys/dev/if_wg/module/crypto/zinc/chacha20/chacha20-unrolled-arm.S
>>>   (contents, props changed)
>>>   head/sys/dev/if_wg/module/crypto/zinc/chacha20/chacha20-x86_64-glue.c
>>>   (contents, props changed)
>>>   head/sys/dev/if_wg/module/crypto/zinc/chacha20/chacha20-x86_64.pl
>>> (contents, props changed)
>>>   head/sys/dev/if_wg/module/crypto/zinc/chacha20/chacha20.c
>>> (contents, props changed)
>>>   head/sys/dev/if_wg/module/crypto/zinc/chacha20poly1305.c
>>> (contents, props changed)
>>>   head/sys/dev/if_wg/module/crypto/zinc/poly1305/poly1305-arm-glue.c
>>> (contents, props changed)
>>>   head/sys/dev/if_wg/module/crypto/zinc/poly1305/poly1305-arm.pl
>>> (contents, props changed)
>>>   head/sys/dev/if_wg/module/crypto/zinc/poly1305/poly1305-arm64.pl
>>> (contents, props changed)
>>>   head/sys/dev/if_wg/module/crypto/zinc/poly1305/poly1305-donna32.c
>>> (contents, props changed)
>>>   head/sys/dev/if_wg/module/crypto/zinc/poly1305/poly1305-donna64.c
>>> (contents, props changed)
>>>   head/sys/dev/if_wg/module/crypto/zinc/poly1305/poly1305-mips-glue.c
>>>  (contents, props changed)
>>>   head/sys/dev/if_wg/module/crypto/zinc/poly1305/poly1305-mips.S
>>> (contents, props changed)
>>>   head/sys/dev/if_wg/module/crypto/zinc/poly1305/poly1305-mips64.pl
>>> (contents, props changed)
>>>   head/sys/dev/if_wg/module/crypto/zinc/poly1305/poly1305-x86_64-glue.c
>>>   (contents, props changed)
>>>   head/sys/dev/if_wg/module/crypto/zinc/poly1305/poly1305-x86_64.pl
>>> (contents, props changed)
>>>   head/sys/dev/if_wg/module/crypto/zinc/poly1305/poly1305.c
>>> (contents, props changed)
>>>   head/sys/dev/if_wg/module/crypto/zinc/selftest/blake2s.c
>>> (contents, props changed)
>>>   head/sys/dev/if_wg/module/crypto/zinc/selftest/chacha20.c
>>> (contents, props changed)
>>>   head/sys/dev/if_wg/module/crypto/zinc/selftest/chacha20poly1305.c
>>> (contents, props changed)
>>>   head/sys/dev/if_wg/module/crypto/zinc/selftest/curve25519.c
>>> (contents, props changed)
>>>   head/sys/dev/if_wg/module/crypto/zinc/selftest/poly1305.c
>>> (contents, props changed)
>>>   head/sys/dev/if_wg/module/crypto/zinc/selftest/run.h   (contents,
>>> props changed)
>>>   head/sys/dev/if_wg/module/curve25519.c   (contents, props changed)
>>>   head/sys/dev/if_wg/module/if_wg_session.c   (contents, props
>>> changed)
>>>   head/sys/dev/if_wg/module/module.c   (contents, props changed)
>>>   head/sys/dev/if_wg/module/poly1305-x86_64.S   (contents, props
>>> changed)
>>>   head/sys/dev/if_wg/module/wg_cookie.c   (contents, props changed)
>>>   head/sys/dev/if_wg/module/wg_noise.c   (contents, props changed)
>>>   head/sys/modules/if_wg/
>>>   head/sys/modules/if_wg/Makefile   (contents, props changed)
>>> Directory Properties:
>>>   head/sys/dev/if_wg/include/crypto/   (props changed)
>>>   head/sys/dev/if_wg/include/zinc/   (props changed)
>>>   head/sys/dev/if_wg/module/crypto/   (props changed)
>>>   head/sys/dev/if_wg/module/crypto/zinc/   (props changed)
>>>   head/sys/dev/if_wg/module/crypto/zinc/chacha20/   (props changed)
>>>   head/sys/dev/if_wg/module/crypto/zinc/poly1305/   (props changed)
>>>   head/sys/dev/if_wg/module/crypto/zinc/selftest/   (props changed)
>>
>>
>> Looking at sys/dev/if_wg/include/sys/support.h I wonder why zinc was 
>> not
>> done as linuxkpi code?  Could it be?
>>
>>
>> /bz
>
>  Adding a dependancy on linuxkpi for just a few compat funcs looks
> overkill, also having it done that way means that mallocs are typed
> with M_WG instead of the global M_LINUXKPI so it's better to track
> leaks, if any.

I am sorry, but I am getting tired of hearing this same sentence all 
over:

(a) for a lot of simple defines including the header files is purely 
enough
     and doesn’t need the module dependency.   You are not redefining 
uint32_t
     in every single driver either but include sys/types.h (same goes 
for byte
     swapping functions, likely(), ..) and the same does go for the 
linuxkpi
     header files.
	That avoids having re-typed, re-defined definitions of these things
     n+1 times in kernel.

(b) the alloc compat #defines in support.h are used in two of the crypto
     compat code bits for function local buffers, which are freed before 
the
     only return.  Tracking those is hopefully not a problem.

(c) There are bits in this change which linuxkpi does not have yet,
     so we’ll implement them a 2nd time in the kernel again one day 
and
     linuxkpi is all about not doing exactly that.

     zinc is a Linux KPI and the majority of files in this commit and 
the
     2nd half of my question was if it could be move into linuxkpi 
(unless
     we’ll take it natively as part of our crypto KPI, which was put 
on
     the table by others already from my understanding).

/bz


More information about the svn-src-all mailing list