Development discussion of WireGuard
 help / color / mirror / Atom feed
From: Guanhao Yin <sopium@mysterious.site>
To: wireguard@lists.zx2c4.com
Subject: Re: Text-based IPC for Userspace Implementations
Date: Wed, 17 May 2017 00:33:43 +0800	[thread overview]
Message-ID: <0f5ecdc1-bda0-ec74-024c-e73b8791bb11@mysterious.site> (raw)
In-Reply-To: <87vap1gd2w.fsf@alrua-kau>

Hi,

在 2017年05月16日 21:12, Toke Høiland-Jørgensen 写道:
> "Jason A. Donenfeld" <Jason@zx2c4.com> writes:
>
>> Hey guys,
>>
>> Currently wg(8) talks to the kernel by passing structs through an
>> ioctl. Due to upstream demands, this is going to be changed to
>> netlink, and we'll ditch those structs. wg(8) previously tried to
>> re-use those same structs for userspace implementations, passing them
>> through a unix socket. Implementors did not like dealing with this.
>> Since the structs are going for the kernel stuff, we might as well
>> move to something better, too, for the userspace stuff. Therefore
>> wg(8) now has a very simple text-based IPC format over unix sockets
>> (or Windows named pipes) that can be easily implemented in nearly
>> every language, even bash.
>>
>> I've written a small description of it here:
https://www.wireguard.io/xplatform/
>>
>> This will be part of the next snapshot.
>>
>> Any questions?

Good! 😄.

In the “configuration protocol” section, I think “wg(8) responds to
...” should be “An userspace implementation respondes to ...”?

A text based format is certainly easier to deal with than C
structs. Hope I can find some time to finally implement it in
WireGuard.rs.

That said, I still like the idea that an userspace implementation
being usable without wg(8): it just takes a configuration and runs it,
simple and straightforward.

>
> I applaud the general idea of moving to a text-based interface. But why
> invent Yet Another Configuration Format?
>
> I guess you could say that key=value pairs are fairly straight forward;
> but from the examples it looks like there's an implicit nested
> structure? I.e. a public_key=xxx line denotes the start of a new
> endpoint, and the following keys are logically part of that endpoint?
> Or? If this is the case, you'll need a stateful parser to parse it,
> which is not immediately obvious from the description, and is bound to
> trip people up at some point...
>
> So why not avoid any possible confusion and just emit JSON? Or another
> well-established serialisation format where the nesting can be made
> explicit... :)

+1 for well-established serialisation format.


Guanhao Yin

  parent reply	other threads:[~2017-05-16 16:22 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-05-16 12:36 Jason A. Donenfeld
2017-05-16 13:12 ` Toke Høiland-Jørgensen
2017-05-16 16:01   ` Jonathan Rudenberg
2017-05-16 16:09     ` Toke Høiland-Jørgensen
2017-05-16 19:26     ` Jörg Thalheim
2017-05-17 14:01       ` Jason A. Donenfeld
2017-05-17 14:04         ` Manuel Schölling
2017-05-17 14:08           ` Jason A. Donenfeld
2017-05-18 16:46             ` Manuel Schölling
2017-05-18 18:04               ` Daniel Kahn Gillmor
2017-05-17 14:14         ` Bzzzz
2017-05-17 14:17           ` Jason A. Donenfeld
2017-05-16 16:33   ` Guanhao Yin [this message]
2017-05-17 13:53     ` Jason A. Donenfeld
2017-05-16 15:43 ` Ivan Labáth
2017-05-17 14:00 ` Jason A. Donenfeld
2017-05-17 18:07   ` Toke Høiland-Jørgensen
2017-05-17 18:10     ` Jason A. Donenfeld
2017-05-17 17:04 ` Jason A. Donenfeld
     [not found] ` <20170516154204.GB9458@matrix-dream.net>
     [not found]   ` <CAHmME9roTAqMYB0qB7JG3rkKfGw1nfzTz0AD-frcGyyweCTcJQ@mail.gmail.com>
2017-05-18  8:02     ` allowed_ips move semantics? Ivan Labáth
2017-05-18 10:08       ` Jason A. Donenfeld
2017-05-18 12:00         ` Ivan Labáth

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=0f5ecdc1-bda0-ec74-024c-e73b8791bb11@mysterious.site \
    --to=sopium@mysterious.site \
    --cc=wireguard@lists.zx2c4.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).