networkd and sd-netlink: add support for Generic netlink And FooOverUDP to IPIP tunnel

This work add support to generic netlink to sd-netlink.
See https://lwn.net/Articles/208755/

networkd: add support FooOverUDP support to IPIP tunnel netdev
https://lwn.net/Articles/614348/

Example conf:

/lib/systemd/network/1-fou-tunnel.netdev
```
[NetDev]
Name=fou-tun
Kind=fou

[FooOverUDP]
Port=5555
Protocol=4

```

/lib/systemd/network/ipip-tunnel.netdev
```
[NetDev]
Name=ipip-tun
Kind=ipip

[Tunnel]
Independent=true
Local=10.65.208.212
Remote=10.65.208.211
FooOverUDP=true
FOUDestinationPort=5555
```

$ ip -d link show ipip-tun
```
5: ipip-tun@NONE: <POINTOPOINT,NOARP> mtu 1472 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ipip 10.65.208.212 peer 10.65.208.211 promiscuity 0
    ipip remote 10.65.208.211 local 10.65.208.212 ttl inherit pmtudisc encap fou encap-sport auto encap-dport 5555 noencap-csum noencap-csum6 noencap-remcsum numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535
```
This commit is contained in:
Susant Sahani
2018-08-23 11:30:37 +02:00
committed by Zbigniew Jędrzejewski-Szmek
parent c07fe6d0df
commit 53cb501a13
14 changed files with 386 additions and 2 deletions
+39
View File
@@ -1409,4 +1409,43 @@ struct statx {
#define TASK_COMM_LEN 16
#endif
#ifndef FOU_GENL_NAME
#define FOU_GENL_NAME "fou"
#endif
#ifndef FOU_GENL_VERSION
#define FOU_GENL_VERSION 0x1
#endif
#if !HAVE_FOU_ATTR_REMCSUM_NOPARTIAL
#define FOU_ATTR_UNSPEC 0
#define FOU_ATTR_PORT 1
#define FOU_ATTR_AF 2
#define FOU_ATTR_IPPROTO 3
#define FOU_ATTR_TYPE 4
#define FOU_ATTR_REMCSUM_NOPARTIAL 5
#define __FOU_ATTR_MAX 6
#define FOU_ATTR_MAX (__FOU_ATTR_MAX - 1)
#endif
#if !HAVE_FOU_CMD_GET
#define FOU_CMD_UNSPEC 0
#define FOU_CMD_ADD 1
#define FOU_CMD_DEL 2
#define FOU_CMD_GET 3
#define __FOU_CMD_MAX 4
#define FOU_CMD_MAX (__FOU_CMD_MAX - 1)
#endif
#if !HAVE_FOU_ENCAP_GUE
#define FOU_ENCAP_UNSPEC 0
#define FOU_ENCAP_DIRECT 1
#define FOU_ENCAP_GUE 2
#define __FOU_ENCAP_MAX 3
#define FOU_ENCAP_MAX (__FOU_ENCAP_MAX - 1)
#endif
#include "missing_syscall.h"