unofficial mirror of help-guix@gnu.org 
 help / color / mirror / Atom feed
From: Niklas Schmidt <snlabs@posteo.net>
To: help-guix@gnu.org
Subject: Add VLAN with Guile Netlink link-add
Date: Mon, 10 Jan 2022 11:29:38 +0000	[thread overview]
Message-ID: <YdwYoqttwaO7LYYQ@posteo.de> (raw)

Dear Guix,

I really appreciate the ability to declare a static-networking 
configuration.

I face some difficulties adding a 802.1Q VLAN interface using the Guile 
Netlink package. I added guile-netlink to my operating system 
definition's packages field.

Running guile as root using su, I get the following error:

   scheme@(guile-user)> (use-modules (ip link))
   scheme@(guile-user)> (link-add "ens3.12" "vlan" #:type-args '((id .  12)))
   ice-9/boot-9.scm:1685:16: In procedure raise-exception:
   ERROR:
     1. &netlink-response-error: 22
   
   Entering a new prompt.  Type `,bt' for a backtrace or `,q' to continue.
   scheme@(guile-user) [1]> 


The documentation [1] states:

   Scheme Procedure: link-add name type [#:type-args '()]

     Add a new link with given name and type. Additional arguments can be passed to control the state of the link at creation. type-args is an association list containing additional values for the given type.

     When type is "vlan", type-args can contain a number associated with 'id: the VLAN id to be created.

It is unclear to me how to specify the hardware interface for which the 
VLAN link is to be added. Maybe I am missing something?

Calling the above command with "ens3" instead of "ens3.12" results in 
the same error.

I am able to add the link manually with iproute2 by executing

   ip link add link ens3 name ens3.12 type vlan id 12

and was able to verifiy that it works by assigning a static IPv4 
address.

If I run another command given in the documentation [1],

   (link-add "v0p0" "veth" #:type-args '((peer . "v0p1")))

that returns #t and creates the interface pair. So I think, Guile 
Netlink generally works with my configuration.

Has someone got a working code sample showing how to add VLANs using 
Guile Netlink?
I don't understand the internals of the Netlink kernel interface yet.  A 
comment in the source code [2] says that every link type except veth and 
vlan is not implemented in Guile Netlink. I am not sure whether the 
functionality I whish to use is supported at all.

My goal is to specify VLAN links in the links field of a 
static-networking record.

Im running Guix inside QEMU-KVM. If that would help, I am willing to 
test this on real hardware.

Thanks for advice.


Greetings
Niklas

[1]: https://git.lepiller.eu/guile-netlink/manual/html_node/Link.html
[2]: https://git.lepiller.eu/guile-netlink/tree/-/ip/link.scm


             reply	other threads:[~2022-01-10 15:30 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-01-10 11:29 Niklas Schmidt [this message]
2022-01-11 13:01 ` Add VLAN with Guile Netlink link-add Julien Lepiller
2022-01-11 19:30   ` Niklas Schmidt

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

  List information: https://guix.gnu.org/

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

  git send-email \
    --in-reply-to=YdwYoqttwaO7LYYQ@posteo.de \
    --to=snlabs@posteo.net \
    --cc=help-guix@gnu.org \
    /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 read-only IMAP folder(s) and NNTP newsgroup(s).