Merge pull request #13807 from 1848/ip6gre_key_fix

networkd: Set key (IFLA_GRE_IKEY,IFLA_GRE_OKEY) on ip6gre interfaces.
This commit is contained in:
Yu Watanabe 2019-10-23 23:18:59 +09:00 committed by GitHub
commit 69ec2fdd9c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 46 additions and 0 deletions

View file

@ -2018,6 +2018,16 @@ Local=10.65.223.238
Remote=10.65.223.239</programlisting>
</example>
<example>
<title>/etc/systemd/network/25-ip6gre.netdev</title>
<programlisting>[NetDev]
Name=ip6gre-tun
Kind=ip6gre
[Tunnel]
Key=123</programlisting>
</example>
<example>
<title>/etc/systemd/network/25-vti.netdev</title>

View file

@ -226,6 +226,10 @@ static int netdev_gre_erspan_fill_message_create(NetDev *netdev, Link *link, sd_
}
static int netdev_ip6gre_fill_message_create(NetDev *netdev, Link *link, sd_netlink_message *m) {
uint32_t ikey = 0;
uint32_t okey = 0;
uint16_t iflags = 0;
uint16_t oflags = 0;
Tunnel *t;
int r;
@ -267,6 +271,38 @@ static int netdev_ip6gre_fill_message_create(NetDev *netdev, Link *link, sd_netl
if (r < 0)
return log_netdev_error_errno(netdev, r, "Could not append IFLA_GRE_FLAGS attribute: %m");
if (t->key != 0) {
ikey = okey = htobe32(t->key);
iflags |= GRE_KEY;
oflags |= GRE_KEY;
}
if (t->ikey != 0) {
ikey = htobe32(t->ikey);
iflags |= GRE_KEY;
}
if (t->okey != 0) {
okey = htobe32(t->okey);
oflags |= GRE_KEY;
}
r = sd_netlink_message_append_u32(m, IFLA_GRE_IKEY, ikey);
if (r < 0)
return log_netdev_error_errno(netdev, r, "Could not append IFLA_GRE_IKEY attribute: %m");
r = sd_netlink_message_append_u32(m, IFLA_GRE_OKEY, okey);
if (r < 0)
return log_netdev_error_errno(netdev, r, "Could not append IFLA_GRE_OKEY attribute: %m");
r = sd_netlink_message_append_u16(m, IFLA_GRE_IFLAGS, iflags);
if (r < 0)
return log_netdev_error_errno(netdev, r, "Could not append IFLA_GRE_IFLAGS attribute: %m");
r = sd_netlink_message_append_u16(m, IFLA_GRE_OFLAGS, oflags);
if (r < 0)
return log_netdev_error_errno(netdev, r, "Could not append IFLA_GRE_OFLAGS, attribute: %m");
return r;
}