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:
commit
1051d049a8
@ -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>
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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] = {
|
||||
|
@ -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,
|
||||
|
@ -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)
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -50,6 +50,7 @@ struct VxLan {
|
||||
bool udpcsum;
|
||||
bool udp6zerocsumtx;
|
||||
bool udp6zerocsumrx;
|
||||
bool group_policy;
|
||||
};
|
||||
|
||||
extern const NetDevVTable vxlan_vtable;
|
||||
|
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user