netifd: vxlan: add aging and maxaddress options
authorJohannes Kimmel <fff@bareminimum.eu>
Fri, 4 Sep 2020 02:59:43 +0000 (04:59 +0200)
committerHans Dedecker <dedeckeh@gmail.com>
Sat, 12 Sep 2020 19:15:07 +0000 (21:15 +0200)
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>
system-linux.c
system.c
system.h

index c232c5f04fca9c9ca320d880eadb18ccf3f9c88a..6778b1d56c949c4aefa4980bdccc48e31419ff8c 100644 (file)
@@ -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;
index 95721e1257d8795d74bbd2fe19ffbec82fbeec3e..834748eef137dde452e6b8b872de003a2c534cd4 100644 (file)
--- a/system.c
+++ b/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 = {
index 290c2e553921886c59945ab3f6068a3b21233e19..52161a8f573d6e254f80cc032d9deebca2e2a160 100644 (file)
--- a/system.h
+++ b/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
 };