adds the folloing missing options: - learning - rsc - proxy - l2miss - l3miss - gbp
See ip-link(3) for their meaning. still missing: - external - gpe I'm not sure how to handle them at the moment. It's unclear to me what IFLA_VXLAN_* value corresponds to the 'external' option and according to the manpage, gpe depends on it. Signed-off-by: Johannes Kimmel <[email protected]> --- system-linux.c | 12 +++++++++++- system.c | 6 ++++++ system.h | 6 ++++++ 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/system-linux.c b/system-linux.c index 88b064c..a68af63 100644 --- a/system-linux.c +++ b/system-linux.c @@ -3080,7 +3080,11 @@ static void system_vxlan_map_bool_attr(struct nl_msg *msg, struct blob_attr **tb if (invert) { val = !val; } - nla_put_u8(msg, attrtype, val); + if ((attrtype == IFLA_VXLAN_GBP) && val) { + nla_put_flag(msg, attrtype); + } else { + nla_put_u8(msg, attrtype, val); + } } } @@ -3224,6 +3228,12 @@ static int system_add_vxlan(const char *name, const unsigned int link, struct bl system_vxlan_map_bool_attr(msg, tb_data, IFLA_VXLAN_UDP_CSUM, VXLAN_DATA_ATTR_TXCSUM, false); system_vxlan_map_bool_attr(msg, tb_data, IFLA_VXLAN_UDP_ZERO_CSUM6_RX, VXLAN_DATA_ATTR_RXCSUM, true); system_vxlan_map_bool_attr(msg, tb_data, IFLA_VXLAN_UDP_ZERO_CSUM6_TX, VXLAN_DATA_ATTR_TXCSUM, true); + system_vxlan_map_bool_attr(msg, tb_data, IFLA_VXLAN_LEARNING, VXLAN_DATA_ATTR_LEARNING, false); + system_vxlan_map_bool_attr(msg, tb_data, IFLA_VXLAN_RSC , VXLAN_DATA_ATTR_RSC, false); + system_vxlan_map_bool_attr(msg, tb_data, IFLA_VXLAN_PROXY , VXLAN_DATA_ATTR_PROXY, false); + system_vxlan_map_bool_attr(msg, tb_data, IFLA_VXLAN_L2MISS , VXLAN_DATA_ATTR_L2MISS, false); + 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[TUNNEL_ATTR_TOS])) { char *str = blobmsg_get_string(cur); diff --git a/system.c b/system.c index 4133e55..95721e1 100644 --- a/system.c +++ b/system.c @@ -40,6 +40,12 @@ static const struct blobmsg_policy vxlan_data_attrs[__VXLAN_DATA_ATTR_MAX] = { [VXLAN_DATA_ATTR_TXCSUM] = { .name = "txcsum", .type = BLOBMSG_TYPE_BOOL }, [VXLAN_DATA_ATTR_SRCPORTMIN] = { .name = "srcportmin", .type = BLOBMSG_TYPE_INT32 }, [VXLAN_DATA_ATTR_SRCPORTMAX] = { .name = "srcportmax", .type = BLOBMSG_TYPE_INT32 }, + [VXLAN_DATA_ATTR_LEARNING] = { .name = "learning", .type = BLOBMSG_TYPE_BOOL }, + [VXLAN_DATA_ATTR_RSC] = { .name = "rsc", .type = BLOBMSG_TYPE_BOOL }, + [VXLAN_DATA_ATTR_PROXY] = { .name = "proxy", .type = BLOBMSG_TYPE_BOOL }, + [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 }, }; const struct uci_blob_param_list vxlan_data_attr_list = { diff --git a/system.h b/system.h index bf9e1d7..290c2e5 100644 --- a/system.h +++ b/system.h @@ -46,6 +46,12 @@ enum vxlan_data { VXLAN_DATA_ATTR_TXCSUM, VXLAN_DATA_ATTR_SRCPORTMIN, VXLAN_DATA_ATTR_SRCPORTMAX, + VXLAN_DATA_ATTR_LEARNING, + VXLAN_DATA_ATTR_RSC, + VXLAN_DATA_ATTR_PROXY, + VXLAN_DATA_ATTR_L2MISS, + VXLAN_DATA_ATTR_L3MISS, + VXLAN_DATA_ATTR_GBP, __VXLAN_DATA_ATTR_MAX }; -- 2.28.0 _______________________________________________ openwrt-devel mailing list [email protected] https://lists.openwrt.org/mailman/listinfo/openwrt-devel
