1
0
mirror of https://github.com/systemd/systemd.git synced 2024-10-28 20:25:38 +03:00

Merge pull request #764 from ssahani/vxlan1

networkd: Add VXLAN Netlink attributes
This commit is contained in:
Tom Gundersen 2015-07-29 20:40:17 +02:00
commit 1051d049a8
8 changed files with 62 additions and 15 deletions

View File

@ -441,6 +441,15 @@
<para>A boolean. When true receiving zero checksums in VXLAN/IPv6 is turned on.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><varname>GroupPolicyExtension=</varname></term>
<listitem>
<para>A boolean. When true it enables Group Policy VXLAN extension security label mechanism
across network peers based on VXLAN. For details about the Group Policy VXLAN see the
<ulink url="https://tools.ietf.org/html/draft-smith-vxlan-group-policy">
VXLAN Group Policy </ulink> document. Defaults to false.</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1>

View File

@ -262,6 +262,24 @@ int sd_netlink_message_append_string(sd_netlink_message *m, unsigned short type,
return 0;
}
int sd_netlink_message_append_flag(sd_netlink_message *m, unsigned short type) {
size_t size;
int r;
assert_return(m, -EINVAL);
assert_return(!m->sealed, -EPERM);
r = message_attribute_has_type(m, &size, type, NETLINK_TYPE_FLAG);
if (r < 0)
return r;
r = add_rtattr(m, type, NULL, 0);
if (r < 0)
return r;
return 0;
}
int sd_netlink_message_append_u8(sd_netlink_message *m, unsigned short type, uint8_t data) {
int r;

View File

@ -117,20 +117,30 @@ static const NLType rtnl_link_info_data_vlan_types[IFLA_VLAN_MAX + 1] = {
};
static const NLType rtnl_link_info_data_vxlan_types[IFLA_VXLAN_MAX+1] = {
[IFLA_VXLAN_ID] = { .type = NETLINK_TYPE_U32 },
[IFLA_VXLAN_GROUP] = { .type = NETLINK_TYPE_IN_ADDR },
[IFLA_VXLAN_LINK] = { .type = NETLINK_TYPE_U32 },
[IFLA_VXLAN_LOCAL] = { .type = NETLINK_TYPE_U32},
[IFLA_VXLAN_TTL] = { .type = NETLINK_TYPE_U8 },
[IFLA_VXLAN_TOS] = { .type = NETLINK_TYPE_U8 },
[IFLA_VXLAN_LEARNING] = { .type = NETLINK_TYPE_U8 },
[IFLA_VXLAN_AGEING] = { .type = NETLINK_TYPE_U32 },
[IFLA_VXLAN_LIMIT] = { .type = NETLINK_TYPE_U32 },
[IFLA_VXLAN_PORT_RANGE] = { .type = NETLINK_TYPE_U32},
[IFLA_VXLAN_PROXY] = { .type = NETLINK_TYPE_U8 },
[IFLA_VXLAN_RSC] = { .type = NETLINK_TYPE_U8 },
[IFLA_VXLAN_L2MISS] = { .type = NETLINK_TYPE_U8 },
[IFLA_VXLAN_L3MISS] = { .type = NETLINK_TYPE_U8 },
[IFLA_VXLAN_ID] = { .type = NETLINK_TYPE_U32 },
[IFLA_VXLAN_GROUP] = { .type = NETLINK_TYPE_IN_ADDR },
[IFLA_VXLAN_LINK] = { .type = NETLINK_TYPE_U32 },
[IFLA_VXLAN_LOCAL] = { .type = NETLINK_TYPE_U32},
[IFLA_VXLAN_TTL] = { .type = NETLINK_TYPE_U8 },
[IFLA_VXLAN_TOS] = { .type = NETLINK_TYPE_U8 },
[IFLA_VXLAN_LEARNING] = { .type = NETLINK_TYPE_U8 },
[IFLA_VXLAN_AGEING] = { .type = NETLINK_TYPE_U32 },
[IFLA_VXLAN_LIMIT] = { .type = NETLINK_TYPE_U32 },
[IFLA_VXLAN_PORT_RANGE] = { .type = NETLINK_TYPE_U32},
[IFLA_VXLAN_PROXY] = { .type = NETLINK_TYPE_U8 },
[IFLA_VXLAN_RSC] = { .type = NETLINK_TYPE_U8 },
[IFLA_VXLAN_L2MISS] = { .type = NETLINK_TYPE_U8 },
[IFLA_VXLAN_L3MISS] = { .type = NETLINK_TYPE_U8 },
[IFLA_VXLAN_PORT] = { .type = NETLINK_TYPE_U16 },
[IFLA_VXLAN_GROUP6] = { .type = NETLINK_TYPE_IN_ADDR },
[IFLA_VXLAN_LOCAL6] = { .type = NETLINK_TYPE_IN_ADDR },
[IFLA_VXLAN_UDP_CSUM] = { .type = NETLINK_TYPE_U8 },
[IFLA_VXLAN_UDP_ZERO_CSUM6_TX] = { .type = NETLINK_TYPE_U8 },
[IFLA_VXLAN_UDP_ZERO_CSUM6_RX] = { .type = NETLINK_TYPE_U8 },
[IFLA_VXLAN_REMCSUM_TX] = { .type = NETLINK_TYPE_U8 },
[IFLA_VXLAN_REMCSUM_RX] = { .type = NETLINK_TYPE_U8 },
[IFLA_VXLAN_GBP] = { .type = NETLINK_TYPE_FLAG },
[IFLA_VXLAN_REMCSUM_NOPARTIAL] = { .type = NETLINK_TYPE_FLAG },
};
static const NLType rtnl_bond_arp_target_types[BOND_ARP_TARGETS_MAX + 1] = {

View File

@ -28,6 +28,7 @@ enum {
NETLINK_TYPE_U32, /* NLA_U32 */
NETLINK_TYPE_U64, /* NLA_U64 */
NETLINK_TYPE_STRING, /* NLA_STRING */
NETLINK_TYPE_FLAG, /* NLA_FLAG */
NETLINK_TYPE_IN_ADDR,
NETLINK_TYPE_ETHER_ADDR,
NETLINK_TYPE_CACHE_INFO,

View File

@ -54,6 +54,7 @@ VXLAN.UDPCheckSum, config_parse_bool, 0,
VXLAN.UDP6ZeroCheckSumRx, config_parse_bool, 0, offsetof(VxLan, udp6zerocsumrx)
VXLAN.UDP6ZeroCheckSumTx, config_parse_bool, 0, offsetof(VxLan, udp6zerocsumtx)
VXLAN.FDBAgeingSec, config_parse_sec, 0, offsetof(VxLan, fdb_ageing)
VXLAN.GroupPolicyExtension, config_parse_bool, 0, offsetof(VxLan, group_policy)
Tun.OneQueue, config_parse_bool, 0, offsetof(TunTap, one_queue)
Tun.MultiQueue, config_parse_bool, 0, offsetof(TunTap, multi_queue)
Tun.PacketInfo, config_parse_bool, 0, offsetof(TunTap, packet_info)

View File

@ -3,7 +3,7 @@
/***
This file is part of systemd.
Copyright 2014 Susant Sahani <susant@redhat.com>
Copyright 2014 Susant Sahani
systemd is free software; you can redistribute it and/or modify it
under the terms of the GNU Lesser General Public License as published by
@ -101,6 +101,12 @@ static int netdev_vxlan_fill_message_create(NetDev *netdev, Link *link, sd_netli
if (r < 0)
return log_netdev_error_errno(netdev, r, "Could not append IFLA_VXLAN_UDP_ZERO_CSUM6_RX attribute: %m");
if (v->group_policy) {
r = sd_netlink_message_append_flag(m, IFLA_VXLAN_GBP);
if (r < 0)
return log_netdev_error_errno(netdev, r, "Could not append IFLA_VXLAN_GBP attribute: %m");
}
return r;
}

View File

@ -50,6 +50,7 @@ struct VxLan {
bool udpcsum;
bool udp6zerocsumtx;
bool udp6zerocsumrx;
bool group_policy;
};
extern const NetDevVTable vxlan_vtable;

View File

@ -69,6 +69,7 @@ int sd_netlink_attach_event(sd_netlink *nl, sd_event *e, int priority);
int sd_netlink_detach_event(sd_netlink *nl);
int sd_netlink_message_append_string(sd_netlink_message *m, unsigned short type, const char *data);
int sd_netlink_message_append_flag(sd_netlink_message *m, unsigned short type);
int sd_netlink_message_append_u8(sd_netlink_message *m, unsigned short type, uint8_t data);
int sd_netlink_message_append_u16(sd_netlink_message *m, unsigned short type, uint16_t data);
int sd_netlink_message_append_u32(sd_netlink_message *m, unsigned short type, uint32_t data);