Browse Source

netifd: vxlan: add aging and maxaddress options

For both options the values can just be passed to the kernel. All
unsigned values are accepted, thus no range checking required.

Signed-off-by: Johannes Kimmel <fff@bareminimum.eu>
Johannes Kimmel 3 years ago
parent
commit
55a7b6b7f2
3 changed files with 14 additions and 0 deletions
  1. 10 0
      system-linux.c
  2. 2 0
      system.c
  3. 2 0
      system.h

+ 10 - 0
system-linux.c

@@ -3235,6 +3235,16 @@ static int system_add_vxlan(const char *name, const unsigned int link, struct bl
 	system_vxlan_map_bool_attr(msg, tb_data, IFLA_VXLAN_L3MISS , VXLAN_DATA_ATTR_L3MISS, false);
 	system_vxlan_map_bool_attr(msg, tb_data, IFLA_VXLAN_GBP , VXLAN_DATA_ATTR_GBP, false);
 
+	if ((cur = tb_data[VXLAN_DATA_ATTR_AGEING])) {
+		uint32_t ageing = blobmsg_get_u32(cur);
+		nla_put_u32(msg, IFLA_VXLAN_AGEING, ageing);
+	}
+
+	if ((cur = tb_data[VXLAN_DATA_ATTR_LIMIT])) {
+		uint32_t maxaddress = blobmsg_get_u32(cur);
+		nla_put_u32(msg, IFLA_VXLAN_LIMIT, maxaddress);
+	}
+
 	if ((cur = tb[TUNNEL_ATTR_TOS])) {
 		char *str = blobmsg_get_string(cur);
 		unsigned tos = 1;

+ 2 - 0
system.c

@@ -46,6 +46,8 @@ static const struct blobmsg_policy vxlan_data_attrs[__VXLAN_DATA_ATTR_MAX] = {
 	[VXLAN_DATA_ATTR_L2MISS] = { .name = "l2miss", .type = BLOBMSG_TYPE_BOOL },
 	[VXLAN_DATA_ATTR_L3MISS] = { .name = "l3miss", .type = BLOBMSG_TYPE_BOOL },
 	[VXLAN_DATA_ATTR_GBP] = { .name = "gbp", .type = BLOBMSG_TYPE_BOOL },
+	[VXLAN_DATA_ATTR_AGEING] = { .name = "ageing", .type = BLOBMSG_TYPE_INT32 },
+	[VXLAN_DATA_ATTR_LIMIT] = { .name = "maxaddress", .type = BLOBMSG_TYPE_INT32 },
 };
 
 const struct uci_blob_param_list vxlan_data_attr_list = {

+ 2 - 0
system.h

@@ -52,6 +52,8 @@ enum vxlan_data {
 	VXLAN_DATA_ATTR_L2MISS,
 	VXLAN_DATA_ATTR_L3MISS,
 	VXLAN_DATA_ATTR_GBP,
+	VXLAN_DATA_ATTR_AGEING,
+	VXLAN_DATA_ATTR_LIMIT,
 	__VXLAN_DATA_ATTR_MAX
 };