On Sun, Jun 17, 2018 at 12:34:58PM +0100, Javier Arteaga wrote:
> Add support for a new wireguard link type to the platform code. For now
> this only covers querying existing links via genetlink and parsing them
> into platform objects.
> ---
> 
> Notes:
>     Changes in v2->v3:
>     
>     * Changed peers/allowedips from CList to arrays-of-structs
>       (GArray wrappers are used during genl parsing stage to handle reallocs)
>     * Wrote proper cmp/hash methods for peer objects
>     * Split off two patches not really specific to WireGuard
>     * Corrected WireGuard uapi identifier names
>     * Addressed a few other comments on v2
> 
>  libnm-core/nm-core-types-internal.h |  25 +++
>  src/nm-types.h                      |   2 +
>  src/platform/nm-linux-platform.c    | 315 ++++++++++++++++++++++++++++
>  src/platform/nm-platform.c          | 124 +++++++++++
>  src/platform/nm-platform.h          |  15 ++
>  src/platform/nmp-object.c           | 219 +++++++++++++++++++
>  src/platform/nmp-object.h           |  10 +
>  7 files changed, 710 insertions(+)
> 
> diff --git a/libnm-core/nm-core-types-internal.h 
> b/libnm-core/nm-core-types-internal.h
> index 4d43aaf45..f95652fa2 100644
> --- a/libnm-core/nm-core-types-internal.h
> +++ b/libnm-core/nm-core-types-internal.h
> @@ -31,6 +31,31 @@ typedef struct {
>       guint32 to;
>  } NMVlanQosMapping;
>  
> +typedef struct {
> +     NMIPAddr ip;
> +     guint8 family;
> +     guint8 cidr;

Just a nitpick, feel free to ignore, but perhaps 'mask' would be a
better name than 'cidr'.

> [...]
> @@ -7103,6 +7416,8 @@ constructed (GObject *_object)
>       g_assert (!nle);
>       _LOGD ("Generic netlink socket established: port=%u, fd=%d", 
> nl_socket_get_local_port (priv->genlh), nl_socket_get_fd (priv->genlh));
>  
> +     priv->wireguard_family_id = _support_genl_family (priv->genlh, 
> "wireguard");
> +

Since the genl family id is already determined when needed (i.e. in
wireguard_get_link_properties()), I don't think we need to do it here
too.

> +void
> +nm_platform_lnk_wireguard_hash_update (const NMPlatformLnkWireguard *obj, 
> NMHashState *h)
> +{
> +     nm_hash_update_vals (h,
> +                          obj->private_key,
> +                          obj->public_key,
> +                          obj->listen_port,
> +                          obj->fwmark);
> +}

This gives the following compile error here:

  CC       src/platform/src_libNetworkManagerBase_la-nm-platform.lo
In file included from ./shared/nm-default.h:292,
                 from src/platform/nm-platform.c:21:
src/platform/nm-platform.c: In function ‘nm_platform_lnk_wireguard_hash_update’:
./shared/nm-utils/nm-hash-utils.h:121:57: error: initialization of ‘unsigned 
char’ from ‘const guint8 *’ {aka ‘const unsigned char *’} makes integer from 
pointer without a cast [-Werror=int-conversion]
 #define _NM_HASH_COMBINE_VALS_val_x_4( y, ...)  ._v4  = (y), 
_NM_HASH_COMBINE_VALS_val_x_3  (__VA_ARGS__)

because private and public keys are guint8[]; I think you should use
nm_hash_update() for them.


The rest LGTM, thanks.

Beniamino

Attachment: signature.asc
Description: PGP signature

_______________________________________________
networkmanager-list mailing list
[email protected]
https://mail.gnome.org/mailman/listinfo/networkmanager-list

Reply via email to