diff --git a/home/nipa/nipa_out/968304/ynl/old-code/rt-link-user.c b/home/nipa/nipa_out/968304/ynl/new-code/rt-link-user.c index d863daa691c0..182bfcc45e4d 100644 --- a/home/nipa/nipa_out/968304/ynl/old-code/rt-link-user.c +++ b/home/nipa/nipa_out/968304/ynl/new-code/rt-link-user.c @@ -507,7 +507,7 @@ const struct ynl_policy_attr rt_link_linkinfo_gre_attrs_policy[IFLA_GRE_MAX + 1] [IFLA_GRE_TTL] = { .name = "ttl", .type = YNL_PT_U8, }, [IFLA_GRE_TOS] = { .name = "tos", .type = YNL_PT_U8, }, [IFLA_GRE_PMTUDISC] = { .name = "pmtudisc", .type = YNL_PT_U8, }, - [IFLA_GRE_ENCAP_LIMIT] = { .name = "encap-limit", .type = YNL_PT_U32, }, + [IFLA_GRE_ENCAP_LIMIT] = { .name = "encap-limit", .type = YNL_PT_U8, }, [IFLA_GRE_FLOWINFO] = { .name = "flowinfo", .type = YNL_PT_U32, }, [IFLA_GRE_FLAGS] = { .name = "flags", .type = YNL_PT_U32, }, [IFLA_GRE_ENCAP_TYPE] = { .name = "encap-type", .type = YNL_PT_U16, }, @@ -528,6 +528,35 @@ const struct ynl_policy_nest rt_link_linkinfo_gre_attrs_nest = { .table = rt_link_linkinfo_gre_attrs_policy, }; +const struct ynl_policy_attr rt_link_linkinfo_gre6_attrs_policy[IFLA_GRE_MAX + 1] = { + [IFLA_GRE_LINK] = { .name = "link", .type = YNL_PT_U32, }, + [IFLA_GRE_IFLAGS] = { .name = "iflags", .type = YNL_PT_U16, }, + [IFLA_GRE_OFLAGS] = { .name = "oflags", .type = YNL_PT_U16, }, + [IFLA_GRE_IKEY] = { .name = "ikey", .type = YNL_PT_U32, }, + [IFLA_GRE_OKEY] = { .name = "okey", .type = YNL_PT_U32, }, + [IFLA_GRE_LOCAL] = { .name = "local", .type = YNL_PT_BINARY,}, + [IFLA_GRE_REMOTE] = { .name = "remote", .type = YNL_PT_BINARY,}, + [IFLA_GRE_TTL] = { .name = "ttl", .type = YNL_PT_U8, }, + [IFLA_GRE_ENCAP_LIMIT] = { .name = "encap-limit", .type = YNL_PT_U8, }, + [IFLA_GRE_FLOWINFO] = { .name = "flowinfo", .type = YNL_PT_U32, }, + [IFLA_GRE_FLAGS] = { .name = "flags", .type = YNL_PT_U32, }, + [IFLA_GRE_ENCAP_TYPE] = { .name = "encap-type", .type = YNL_PT_U16, }, + [IFLA_GRE_ENCAP_FLAGS] = { .name = "encap-flags", .type = YNL_PT_U16, }, + [IFLA_GRE_ENCAP_SPORT] = { .name = "encap-sport", .type = YNL_PT_U16, }, + [IFLA_GRE_ENCAP_DPORT] = { .name = "encap-dport", .type = YNL_PT_U16, }, + [IFLA_GRE_COLLECT_METADATA] = { .name = "collect-metadata", .type = YNL_PT_FLAG, }, + [IFLA_GRE_FWMARK] = { .name = "fwmark", .type = YNL_PT_U32, }, + [IFLA_GRE_ERSPAN_INDEX] = { .name = "erspan-index", .type = YNL_PT_U32, }, + [IFLA_GRE_ERSPAN_VER] = { .name = "erspan-ver", .type = YNL_PT_U8, }, + [IFLA_GRE_ERSPAN_DIR] = { .name = "erspan-dir", .type = YNL_PT_U8, }, + [IFLA_GRE_ERSPAN_HWID] = { .name = "erspan-hwid", .type = YNL_PT_U16, }, +}; + +const struct ynl_policy_nest rt_link_linkinfo_gre6_attrs_nest = { + .max_attr = IFLA_GRE_MAX, + .table = rt_link_linkinfo_gre6_attrs_policy, +}; + const struct ynl_policy_attr rt_link_linkinfo_geneve_attrs_policy[IFLA_GENEVE_MAX + 1] = { [IFLA_GENEVE_ID] = { .name = "id", .type = YNL_PT_U32, }, [IFLA_GENEVE_REMOTE] = { .name = "remote", .type = YNL_PT_BINARY,}, @@ -919,21 +948,22 @@ const struct ynl_policy_attr rt_link_linkinfo_data_msg_policy[] = { [2] = { .type = YNL_PT_SUBMSG, .name = "erspan", .nest = &rt_link_linkinfo_gre_attrs_nest, }, [3] = { .type = YNL_PT_SUBMSG, .name = "gre", .nest = &rt_link_linkinfo_gre_attrs_nest, }, [4] = { .type = YNL_PT_SUBMSG, .name = "gretap", .nest = &rt_link_linkinfo_gre_attrs_nest, }, - [5] = { .type = YNL_PT_SUBMSG, .name = "geneve", .nest = &rt_link_linkinfo_geneve_attrs_nest, }, - [6] = { .type = YNL_PT_SUBMSG, .name = "ipip", .nest = &rt_link_linkinfo_iptun_attrs_nest, }, - [7] = { .type = YNL_PT_SUBMSG, .name = "ip6tnl", .nest = &rt_link_linkinfo_ip6tnl_attrs_nest, }, - [8] = { .type = YNL_PT_SUBMSG, .name = "sit", .nest = &rt_link_linkinfo_iptun_attrs_nest, }, - [9] = { .type = YNL_PT_SUBMSG, .name = "tun", .nest = &rt_link_linkinfo_tun_attrs_nest, }, - [10] = { .type = YNL_PT_SUBMSG, .name = "vlan", .nest = &rt_link_linkinfo_vlan_attrs_nest, }, - [11] = { .type = YNL_PT_SUBMSG, .name = "vrf", .nest = &rt_link_linkinfo_vrf_attrs_nest, }, - [12] = { .type = YNL_PT_SUBMSG, .name = "vti", .nest = &rt_link_linkinfo_vti_attrs_nest, }, - [13] = { .type = YNL_PT_SUBMSG, .name = "vti6", .nest = &rt_link_linkinfo_vti6_attrs_nest, }, - [14] = { .type = YNL_PT_SUBMSG, .name = "netkit", .nest = &rt_link_linkinfo_netkit_attrs_nest, }, - [15] = { .type = YNL_PT_SUBMSG, .name = "ovpn", .nest = &rt_link_linkinfo_ovpn_attrs_nest, }, + [5] = { .type = YNL_PT_SUBMSG, .name = "ip6gre", .nest = &rt_link_linkinfo_gre6_attrs_nest, }, + [6] = { .type = YNL_PT_SUBMSG, .name = "geneve", .nest = &rt_link_linkinfo_geneve_attrs_nest, }, + [7] = { .type = YNL_PT_SUBMSG, .name = "ipip", .nest = &rt_link_linkinfo_iptun_attrs_nest, }, + [8] = { .type = YNL_PT_SUBMSG, .name = "ip6tnl", .nest = &rt_link_linkinfo_ip6tnl_attrs_nest, }, + [9] = { .type = YNL_PT_SUBMSG, .name = "sit", .nest = &rt_link_linkinfo_iptun_attrs_nest, }, + [10] = { .type = YNL_PT_SUBMSG, .name = "tun", .nest = &rt_link_linkinfo_tun_attrs_nest, }, + [11] = { .type = YNL_PT_SUBMSG, .name = "vlan", .nest = &rt_link_linkinfo_vlan_attrs_nest, }, + [12] = { .type = YNL_PT_SUBMSG, .name = "vrf", .nest = &rt_link_linkinfo_vrf_attrs_nest, }, + [13] = { .type = YNL_PT_SUBMSG, .name = "vti", .nest = &rt_link_linkinfo_vti_attrs_nest, }, + [14] = { .type = YNL_PT_SUBMSG, .name = "vti6", .nest = &rt_link_linkinfo_vti6_attrs_nest, }, + [15] = { .type = YNL_PT_SUBMSG, .name = "netkit", .nest = &rt_link_linkinfo_netkit_attrs_nest, }, + [16] = { .type = YNL_PT_SUBMSG, .name = "ovpn", .nest = &rt_link_linkinfo_ovpn_attrs_nest, }, }; const struct ynl_policy_nest rt_link_linkinfo_data_msg_nest = { - .max_attr = 15, + .max_attr = 16, .table = rt_link_linkinfo_data_msg_policy, }; @@ -1947,7 +1977,7 @@ int rt_link_linkinfo_gre_attrs_put(struct nlmsghdr *nlh, if (obj->_present.pmtudisc) ynl_attr_put_u8(nlh, IFLA_GRE_PMTUDISC, obj->pmtudisc); if (obj->_present.encap_limit) - ynl_attr_put_u32(nlh, IFLA_GRE_ENCAP_LIMIT, obj->encap_limit); + ynl_attr_put_u8(nlh, IFLA_GRE_ENCAP_LIMIT, obj->encap_limit); if (obj->_present.flowinfo) ynl_attr_put_u32(nlh, IFLA_GRE_FLOWINFO, obj->flowinfo); if (obj->_present.flags) @@ -2052,7 +2082,7 @@ int rt_link_linkinfo_gre_attrs_parse(struct ynl_parse_arg *yarg, if (ynl_attr_validate(yarg, attr)) return YNL_PARSE_CB_ERROR; dst->_present.encap_limit = 1; - dst->encap_limit = ynl_attr_get_u32(attr); + dst->encap_limit = ynl_attr_get_u8(attr); } else if (type == IFLA_GRE_FLOWINFO) { if (ynl_attr_validate(yarg, attr)) return YNL_PARSE_CB_ERROR; @@ -2123,6 +2153,195 @@ int rt_link_linkinfo_gre_attrs_parse(struct ynl_parse_arg *yarg, return 0; } +void rt_link_linkinfo_gre6_attrs_free(struct rt_link_linkinfo_gre6_attrs *obj) +{ + free(obj->local); + free(obj->remote); +} + +int rt_link_linkinfo_gre6_attrs_put(struct nlmsghdr *nlh, + unsigned int attr_type, + struct rt_link_linkinfo_gre6_attrs *obj) +{ + struct nlattr *nest; + + nest = ynl_attr_nest_start(nlh, attr_type); + if (obj->_present.link) + ynl_attr_put_u32(nlh, IFLA_GRE_LINK, obj->link); + if (obj->_present.iflags) + ynl_attr_put_u16(nlh, IFLA_GRE_IFLAGS, obj->iflags); + if (obj->_present.oflags) + ynl_attr_put_u16(nlh, IFLA_GRE_OFLAGS, obj->oflags); + if (obj->_present.ikey) + ynl_attr_put_u32(nlh, IFLA_GRE_IKEY, obj->ikey); + if (obj->_present.okey) + ynl_attr_put_u32(nlh, IFLA_GRE_OKEY, obj->okey); + if (obj->_len.local) + ynl_attr_put(nlh, IFLA_GRE_LOCAL, obj->local, obj->_len.local); + if (obj->_len.remote) + ynl_attr_put(nlh, IFLA_GRE_REMOTE, obj->remote, obj->_len.remote); + if (obj->_present.ttl) + ynl_attr_put_u8(nlh, IFLA_GRE_TTL, obj->ttl); + if (obj->_present.encap_limit) + ynl_attr_put_u8(nlh, IFLA_GRE_ENCAP_LIMIT, obj->encap_limit); + if (obj->_present.flowinfo) + ynl_attr_put_u32(nlh, IFLA_GRE_FLOWINFO, obj->flowinfo); + if (obj->_present.flags) + ynl_attr_put_u32(nlh, IFLA_GRE_FLAGS, obj->flags); + if (obj->_present.encap_type) + ynl_attr_put_u16(nlh, IFLA_GRE_ENCAP_TYPE, obj->encap_type); + if (obj->_present.encap_flags) + ynl_attr_put_u16(nlh, IFLA_GRE_ENCAP_FLAGS, obj->encap_flags); + if (obj->_present.encap_sport) + ynl_attr_put_u16(nlh, IFLA_GRE_ENCAP_SPORT, obj->encap_sport); + if (obj->_present.encap_dport) + ynl_attr_put_u16(nlh, IFLA_GRE_ENCAP_DPORT, obj->encap_dport); + if (obj->_present.collect_metadata) + ynl_attr_put(nlh, IFLA_GRE_COLLECT_METADATA, NULL, 0); + if (obj->_present.fwmark) + ynl_attr_put_u32(nlh, IFLA_GRE_FWMARK, obj->fwmark); + if (obj->_present.erspan_index) + ynl_attr_put_u32(nlh, IFLA_GRE_ERSPAN_INDEX, obj->erspan_index); + if (obj->_present.erspan_ver) + ynl_attr_put_u8(nlh, IFLA_GRE_ERSPAN_VER, obj->erspan_ver); + if (obj->_present.erspan_dir) + ynl_attr_put_u8(nlh, IFLA_GRE_ERSPAN_DIR, obj->erspan_dir); + if (obj->_present.erspan_hwid) + ynl_attr_put_u16(nlh, IFLA_GRE_ERSPAN_HWID, obj->erspan_hwid); + ynl_attr_nest_end(nlh, nest); + + return 0; +} + +int rt_link_linkinfo_gre6_attrs_parse(struct ynl_parse_arg *yarg, + const struct nlattr *nested) +{ + struct rt_link_linkinfo_gre6_attrs *dst = yarg->data; + const struct nlattr *attr; + + ynl_attr_for_each_nested(attr, nested) { + unsigned int type = ynl_attr_type(attr); + + if (type == IFLA_GRE_LINK) { + if (ynl_attr_validate(yarg, attr)) + return YNL_PARSE_CB_ERROR; + dst->_present.link = 1; + dst->link = ynl_attr_get_u32(attr); + } else if (type == IFLA_GRE_IFLAGS) { + if (ynl_attr_validate(yarg, attr)) + return YNL_PARSE_CB_ERROR; + dst->_present.iflags = 1; + dst->iflags = ynl_attr_get_u16(attr); + } else if (type == IFLA_GRE_OFLAGS) { + if (ynl_attr_validate(yarg, attr)) + return YNL_PARSE_CB_ERROR; + dst->_present.oflags = 1; + dst->oflags = ynl_attr_get_u16(attr); + } else if (type == IFLA_GRE_IKEY) { + if (ynl_attr_validate(yarg, attr)) + return YNL_PARSE_CB_ERROR; + dst->_present.ikey = 1; + dst->ikey = ynl_attr_get_u32(attr); + } else if (type == IFLA_GRE_OKEY) { + if (ynl_attr_validate(yarg, attr)) + return YNL_PARSE_CB_ERROR; + dst->_present.okey = 1; + dst->okey = ynl_attr_get_u32(attr); + } else if (type == IFLA_GRE_LOCAL) { + unsigned int len; + + if (ynl_attr_validate(yarg, attr)) + return YNL_PARSE_CB_ERROR; + + len = ynl_attr_data_len(attr); + dst->_len.local = len; + dst->local = malloc(len); + memcpy(dst->local, ynl_attr_data(attr), len); + } else if (type == IFLA_GRE_REMOTE) { + unsigned int len; + + if (ynl_attr_validate(yarg, attr)) + return YNL_PARSE_CB_ERROR; + + len = ynl_attr_data_len(attr); + dst->_len.remote = len; + dst->remote = malloc(len); + memcpy(dst->remote, ynl_attr_data(attr), len); + } else if (type == IFLA_GRE_TTL) { + if (ynl_attr_validate(yarg, attr)) + return YNL_PARSE_CB_ERROR; + dst->_present.ttl = 1; + dst->ttl = ynl_attr_get_u8(attr); + } else if (type == IFLA_GRE_ENCAP_LIMIT) { + if (ynl_attr_validate(yarg, attr)) + return YNL_PARSE_CB_ERROR; + dst->_present.encap_limit = 1; + dst->encap_limit = ynl_attr_get_u8(attr); + } else if (type == IFLA_GRE_FLOWINFO) { + if (ynl_attr_validate(yarg, attr)) + return YNL_PARSE_CB_ERROR; + dst->_present.flowinfo = 1; + dst->flowinfo = ynl_attr_get_u32(attr); + } else if (type == IFLA_GRE_FLAGS) { + if (ynl_attr_validate(yarg, attr)) + return YNL_PARSE_CB_ERROR; + dst->_present.flags = 1; + dst->flags = ynl_attr_get_u32(attr); + } else if (type == IFLA_GRE_ENCAP_TYPE) { + if (ynl_attr_validate(yarg, attr)) + return YNL_PARSE_CB_ERROR; + dst->_present.encap_type = 1; + dst->encap_type = ynl_attr_get_u16(attr); + } else if (type == IFLA_GRE_ENCAP_FLAGS) { + if (ynl_attr_validate(yarg, attr)) + return YNL_PARSE_CB_ERROR; + dst->_present.encap_flags = 1; + dst->encap_flags = ynl_attr_get_u16(attr); + } else if (type == IFLA_GRE_ENCAP_SPORT) { + if (ynl_attr_validate(yarg, attr)) + return YNL_PARSE_CB_ERROR; + dst->_present.encap_sport = 1; + dst->encap_sport = ynl_attr_get_u16(attr); + } else if (type == IFLA_GRE_ENCAP_DPORT) { + if (ynl_attr_validate(yarg, attr)) + return YNL_PARSE_CB_ERROR; + dst->_present.encap_dport = 1; + dst->encap_dport = ynl_attr_get_u16(attr); + } else if (type == IFLA_GRE_COLLECT_METADATA) { + if (ynl_attr_validate(yarg, attr)) + return YNL_PARSE_CB_ERROR; + dst->_present.collect_metadata = 1; + } else if (type == IFLA_GRE_FWMARK) { + if (ynl_attr_validate(yarg, attr)) + return YNL_PARSE_CB_ERROR; + dst->_present.fwmark = 1; + dst->fwmark = ynl_attr_get_u32(attr); + } else if (type == IFLA_GRE_ERSPAN_INDEX) { + if (ynl_attr_validate(yarg, attr)) + return YNL_PARSE_CB_ERROR; + dst->_present.erspan_index = 1; + dst->erspan_index = ynl_attr_get_u32(attr); + } else if (type == IFLA_GRE_ERSPAN_VER) { + if (ynl_attr_validate(yarg, attr)) + return YNL_PARSE_CB_ERROR; + dst->_present.erspan_ver = 1; + dst->erspan_ver = ynl_attr_get_u8(attr); + } else if (type == IFLA_GRE_ERSPAN_DIR) { + if (ynl_attr_validate(yarg, attr)) + return YNL_PARSE_CB_ERROR; + dst->_present.erspan_dir = 1; + dst->erspan_dir = ynl_attr_get_u8(attr); + } else if (type == IFLA_GRE_ERSPAN_HWID) { + if (ynl_attr_validate(yarg, attr)) + return YNL_PARSE_CB_ERROR; + dst->_present.erspan_hwid = 1; + dst->erspan_hwid = ynl_attr_get_u16(attr); + } + } + + return 0; +} + void rt_link_linkinfo_geneve_attrs_free(struct rt_link_linkinfo_geneve_attrs *obj) { @@ -4647,6 +4866,7 @@ void rt_link_linkinfo_data_msg_free(struct rt_link_linkinfo_data_msg *obj) rt_link_linkinfo_gre_attrs_free(&obj->erspan); rt_link_linkinfo_gre_attrs_free(&obj->gre); rt_link_linkinfo_gre_attrs_free(&obj->gretap); + rt_link_linkinfo_gre6_attrs_free(&obj->ip6gre); rt_link_linkinfo_geneve_attrs_free(&obj->geneve); rt_link_linkinfo_iptun_attrs_free(&obj->ipip); rt_link_linkinfo_ip6tnl_attrs_free(&obj->ip6tnl); @@ -4673,6 +4893,8 @@ int rt_link_linkinfo_data_msg_put(struct nlmsghdr *nlh, unsigned int attr_type, rt_link_linkinfo_gre_attrs_put(nlh, IFLA_INFO_DATA, &obj->gre); if (obj->_present.gretap) rt_link_linkinfo_gre_attrs_put(nlh, IFLA_INFO_DATA, &obj->gretap); + if (obj->_present.ip6gre) + rt_link_linkinfo_gre6_attrs_put(nlh, IFLA_INFO_DATA, &obj->ip6gre); if (obj->_present.geneve) rt_link_linkinfo_geneve_attrs_put(nlh, IFLA_INFO_DATA, &obj->geneve); if (obj->_present.ipip) @@ -4739,6 +4961,12 @@ int rt_link_linkinfo_data_msg_parse(struct ynl_parse_arg *yarg, if (rt_link_linkinfo_gre_attrs_parse(&parg, attr)) return YNL_PARSE_CB_ERROR; dst->_present.gretap = 1; + } else if (!strcmp(sel, "ip6gre")) { + parg.rsp_policy = &rt_link_linkinfo_gre6_attrs_nest; + parg.data = &dst->ip6gre; + if (rt_link_linkinfo_gre6_attrs_parse(&parg, attr)) + return YNL_PARSE_CB_ERROR; + dst->_present.ip6gre = 1; } else if (!strcmp(sel, "geneve")) { parg.rsp_policy = &rt_link_linkinfo_geneve_attrs_nest; parg.data = &dst->geneve; diff --git a/home/nipa/nipa_out/968304/ynl/old-code/rt-link-user.h b/home/nipa/nipa_out/968304/ynl/new-code/rt-link-user.h index 3d2f815b7390..b0e67acfca55 100644 --- a/home/nipa/nipa_out/968304/ynl/old-code/rt-link-user.h +++ b/home/nipa/nipa_out/968304/ynl/new-code/rt-link-user.h @@ -272,22 +272,22 @@ struct rt_link_linkinfo_gre_attrs { } _len; __u32 link; - __u16 iflags; - __u16 oflags; - __u32 ikey; - __u32 okey; + __u16 iflags /* big-endian */; + __u16 oflags /* big-endian */; + __u32 ikey /* big-endian */; + __u32 okey /* big-endian */; void *local; void *remote; __u8 ttl; __u8 tos; __u8 pmtudisc; - __u32 encap_limit; - __u32 flowinfo; + __u8 encap_limit; + __u32 flowinfo /* big-endian */; __u32 flags; __u16 encap_type; __u16 encap_flags; - __u16 encap_sport; - __u16 encap_dport; + __u16 encap_sport /* big-endian */; + __u16 encap_dport /* big-endian */; __u8 ignore_df; __u32 fwmark; __u32 erspan_index; @@ -296,6 +296,55 @@ struct rt_link_linkinfo_gre_attrs { __u16 erspan_hwid; }; +struct rt_link_linkinfo_gre6_attrs { + struct { + __u32 link:1; + __u32 iflags:1; + __u32 oflags:1; + __u32 ikey:1; + __u32 okey:1; + __u32 ttl:1; + __u32 encap_limit:1; + __u32 flowinfo:1; + __u32 flags:1; + __u32 encap_type:1; + __u32 encap_flags:1; + __u32 encap_sport:1; + __u32 encap_dport:1; + __u32 collect_metadata:1; + __u32 fwmark:1; + __u32 erspan_index:1; + __u32 erspan_ver:1; + __u32 erspan_dir:1; + __u32 erspan_hwid:1; + } _present; + struct { + __u32 local; + __u32 remote; + } _len; + + __u32 link; + __u16 iflags /* big-endian */; + __u16 oflags /* big-endian */; + __u32 ikey /* big-endian */; + __u32 okey /* big-endian */; + void *local; + void *remote; + __u8 ttl; + __u8 encap_limit; + __u32 flowinfo /* big-endian */; + __u32 flags; + __u16 encap_type; + __u16 encap_flags; + __u16 encap_sport /* big-endian */; + __u16 encap_dport /* big-endian */; + __u32 fwmark; + __u32 erspan_index; + __u8 erspan_ver; + __u8 erspan_dir; + __u16 erspan_hwid; +}; + struct rt_link_linkinfo_geneve_attrs { struct { __u32 id:1; @@ -321,12 +370,12 @@ struct rt_link_linkinfo_geneve_attrs { void *remote; __u8 ttl; __u8 tos; - __u16 port; + __u16 port /* big-endian */; void *remote6; __u8 udp_csum; __u8 udp_zero_csum6_tx; __u8 udp_zero_csum6_rx; - __u32 label; + __u32 label /* big-endian */; __u8 ttl_inherit; __u8 df; struct ifla_geneve_port_range *port_range; @@ -364,8 +413,8 @@ struct rt_link_linkinfo_iptun_attrs { __u8 ttl; __u8 tos; __u8 encap_limit; - __u32 flowinfo; - __u16 flags; + __u32 flowinfo /* big-endian */; + __u16 flags /* big-endian */; __u8 proto; __u8 pmtudisc; void *_6rd_prefix; @@ -374,8 +423,8 @@ struct rt_link_linkinfo_iptun_attrs { __u16 _6rd_relay_prefixlen; __u16 encap_type; __u16 encap_flags; - __u16 encap_sport; - __u16 encap_dport; + __u16 encap_sport /* big-endian */; + __u16 encap_dport /* big-endian */; __u32 fwmark; }; @@ -404,13 +453,13 @@ struct rt_link_linkinfo_ip6tnl_attrs { void *remote; __u8 ttl; __u8 encap_limit; - __u32 flowinfo; - __u32 flags; + __u32 flowinfo /* big-endian */; + __u32 flags /* big-endian */; __u8 proto; __u16 encap_type; __u16 encap_flags; - __u16 encap_sport; - __u16 encap_dport; + __u16 encap_sport /* big-endian */; + __u16 encap_dport /* big-endian */; __u32 fwmark; }; @@ -459,8 +508,8 @@ struct rt_link_linkinfo_vti_attrs { } _len; __u32 link; - __u32 ikey; - __u32 okey; + __u32 ikey /* big-endian */; + __u32 okey /* big-endian */; void *local; void *remote; __u32 fwmark; @@ -479,8 +528,8 @@ struct rt_link_linkinfo_vti6_attrs { } _len; __u32 link; - __u32 ikey; - __u32 okey; + __u32 ikey /* big-endian */; + __u32 okey /* big-endian */; void *local; void *remote; __u32 fwmark; @@ -857,6 +906,7 @@ struct rt_link_linkinfo_data_msg { __u32 erspan:1; __u32 gre:1; __u32 gretap:1; + __u32 ip6gre:1; __u32 geneve:1; __u32 ipip:1; __u32 ip6tnl:1; @@ -875,6 +925,7 @@ struct rt_link_linkinfo_data_msg { struct rt_link_linkinfo_gre_attrs erspan; struct rt_link_linkinfo_gre_attrs gre; struct rt_link_linkinfo_gre_attrs gretap; + struct rt_link_linkinfo_gre6_attrs ip6gre; struct rt_link_linkinfo_geneve_attrs geneve; struct rt_link_linkinfo_iptun_attrs ipip; struct rt_link_linkinfo_ip6tnl_attrs ip6tnl; @@ -1909,7 +1960,7 @@ rt_link_newlink_req_set_linkinfo_data_erspan_link(struct rt_link_newlink_req *re } static inline void rt_link_newlink_req_set_linkinfo_data_erspan_iflags(struct rt_link_newlink_req *req, - __u16 iflags) + __u16 iflags /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -1919,7 +1970,7 @@ rt_link_newlink_req_set_linkinfo_data_erspan_iflags(struct rt_link_newlink_req * } static inline void rt_link_newlink_req_set_linkinfo_data_erspan_oflags(struct rt_link_newlink_req *req, - __u16 oflags) + __u16 oflags /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -1929,7 +1980,7 @@ rt_link_newlink_req_set_linkinfo_data_erspan_oflags(struct rt_link_newlink_req * } static inline void rt_link_newlink_req_set_linkinfo_data_erspan_ikey(struct rt_link_newlink_req *req, - __u32 ikey) + __u32 ikey /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -1939,7 +1990,7 @@ rt_link_newlink_req_set_linkinfo_data_erspan_ikey(struct rt_link_newlink_req *re } static inline void rt_link_newlink_req_set_linkinfo_data_erspan_okey(struct rt_link_newlink_req *req, - __u32 okey) + __u32 okey /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -2005,7 +2056,7 @@ rt_link_newlink_req_set_linkinfo_data_erspan_pmtudisc(struct rt_link_newlink_req } static inline void rt_link_newlink_req_set_linkinfo_data_erspan_encap_limit(struct rt_link_newlink_req *req, - __u32 encap_limit) + __u8 encap_limit) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -2015,7 +2066,7 @@ rt_link_newlink_req_set_linkinfo_data_erspan_encap_limit(struct rt_link_newlink_ } static inline void rt_link_newlink_req_set_linkinfo_data_erspan_flowinfo(struct rt_link_newlink_req *req, - __u32 flowinfo) + __u32 flowinfo /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -2055,7 +2106,7 @@ rt_link_newlink_req_set_linkinfo_data_erspan_encap_flags(struct rt_link_newlink_ } static inline void rt_link_newlink_req_set_linkinfo_data_erspan_encap_sport(struct rt_link_newlink_req *req, - __u16 encap_sport) + __u16 encap_sport /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -2065,7 +2116,7 @@ rt_link_newlink_req_set_linkinfo_data_erspan_encap_sport(struct rt_link_newlink_ } static inline void rt_link_newlink_req_set_linkinfo_data_erspan_encap_dport(struct rt_link_newlink_req *req, - __u16 encap_dport) + __u16 encap_dport /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -2153,7 +2204,7 @@ rt_link_newlink_req_set_linkinfo_data_gre_link(struct rt_link_newlink_req *req, } static inline void rt_link_newlink_req_set_linkinfo_data_gre_iflags(struct rt_link_newlink_req *req, - __u16 iflags) + __u16 iflags /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -2163,7 +2214,7 @@ rt_link_newlink_req_set_linkinfo_data_gre_iflags(struct rt_link_newlink_req *req } static inline void rt_link_newlink_req_set_linkinfo_data_gre_oflags(struct rt_link_newlink_req *req, - __u16 oflags) + __u16 oflags /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -2173,7 +2224,7 @@ rt_link_newlink_req_set_linkinfo_data_gre_oflags(struct rt_link_newlink_req *req } static inline void rt_link_newlink_req_set_linkinfo_data_gre_ikey(struct rt_link_newlink_req *req, - __u32 ikey) + __u32 ikey /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -2183,7 +2234,7 @@ rt_link_newlink_req_set_linkinfo_data_gre_ikey(struct rt_link_newlink_req *req, } static inline void rt_link_newlink_req_set_linkinfo_data_gre_okey(struct rt_link_newlink_req *req, - __u32 okey) + __u32 okey /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -2248,7 +2299,7 @@ rt_link_newlink_req_set_linkinfo_data_gre_pmtudisc(struct rt_link_newlink_req *r } static inline void rt_link_newlink_req_set_linkinfo_data_gre_encap_limit(struct rt_link_newlink_req *req, - __u32 encap_limit) + __u8 encap_limit) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -2258,7 +2309,7 @@ rt_link_newlink_req_set_linkinfo_data_gre_encap_limit(struct rt_link_newlink_req } static inline void rt_link_newlink_req_set_linkinfo_data_gre_flowinfo(struct rt_link_newlink_req *req, - __u32 flowinfo) + __u32 flowinfo /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -2298,7 +2349,7 @@ rt_link_newlink_req_set_linkinfo_data_gre_encap_flags(struct rt_link_newlink_req } static inline void rt_link_newlink_req_set_linkinfo_data_gre_encap_sport(struct rt_link_newlink_req *req, - __u16 encap_sport) + __u16 encap_sport /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -2308,7 +2359,7 @@ rt_link_newlink_req_set_linkinfo_data_gre_encap_sport(struct rt_link_newlink_req } static inline void rt_link_newlink_req_set_linkinfo_data_gre_encap_dport(struct rt_link_newlink_req *req, - __u16 encap_dport) + __u16 encap_dport /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -2396,7 +2447,7 @@ rt_link_newlink_req_set_linkinfo_data_gretap_link(struct rt_link_newlink_req *re } static inline void rt_link_newlink_req_set_linkinfo_data_gretap_iflags(struct rt_link_newlink_req *req, - __u16 iflags) + __u16 iflags /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -2406,7 +2457,7 @@ rt_link_newlink_req_set_linkinfo_data_gretap_iflags(struct rt_link_newlink_req * } static inline void rt_link_newlink_req_set_linkinfo_data_gretap_oflags(struct rt_link_newlink_req *req, - __u16 oflags) + __u16 oflags /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -2416,7 +2467,7 @@ rt_link_newlink_req_set_linkinfo_data_gretap_oflags(struct rt_link_newlink_req * } static inline void rt_link_newlink_req_set_linkinfo_data_gretap_ikey(struct rt_link_newlink_req *req, - __u32 ikey) + __u32 ikey /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -2426,7 +2477,7 @@ rt_link_newlink_req_set_linkinfo_data_gretap_ikey(struct rt_link_newlink_req *re } static inline void rt_link_newlink_req_set_linkinfo_data_gretap_okey(struct rt_link_newlink_req *req, - __u32 okey) + __u32 okey /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -2492,7 +2543,7 @@ rt_link_newlink_req_set_linkinfo_data_gretap_pmtudisc(struct rt_link_newlink_req } static inline void rt_link_newlink_req_set_linkinfo_data_gretap_encap_limit(struct rt_link_newlink_req *req, - __u32 encap_limit) + __u8 encap_limit) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -2502,7 +2553,7 @@ rt_link_newlink_req_set_linkinfo_data_gretap_encap_limit(struct rt_link_newlink_ } static inline void rt_link_newlink_req_set_linkinfo_data_gretap_flowinfo(struct rt_link_newlink_req *req, - __u32 flowinfo) + __u32 flowinfo /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -2542,7 +2593,7 @@ rt_link_newlink_req_set_linkinfo_data_gretap_encap_flags(struct rt_link_newlink_ } static inline void rt_link_newlink_req_set_linkinfo_data_gretap_encap_sport(struct rt_link_newlink_req *req, - __u16 encap_sport) + __u16 encap_sport /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -2552,7 +2603,7 @@ rt_link_newlink_req_set_linkinfo_data_gretap_encap_sport(struct rt_link_newlink_ } static inline void rt_link_newlink_req_set_linkinfo_data_gretap_encap_dport(struct rt_link_newlink_req *req, - __u16 encap_dport) + __u16 encap_dport /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -2629,6 +2680,220 @@ rt_link_newlink_req_set_linkinfo_data_gretap_erspan_hwid(struct rt_link_newlink_ req->linkinfo.data.gretap.erspan_hwid = erspan_hwid; } static inline void +rt_link_newlink_req_set_linkinfo_data_ip6gre_link(struct rt_link_newlink_req *req, + __u32 link) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.ip6gre = 1; + req->linkinfo.data.ip6gre._present.link = 1; + req->linkinfo.data.ip6gre.link = link; +} +static inline void +rt_link_newlink_req_set_linkinfo_data_ip6gre_iflags(struct rt_link_newlink_req *req, + __u16 iflags /* big-endian */) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.ip6gre = 1; + req->linkinfo.data.ip6gre._present.iflags = 1; + req->linkinfo.data.ip6gre.iflags = iflags; +} +static inline void +rt_link_newlink_req_set_linkinfo_data_ip6gre_oflags(struct rt_link_newlink_req *req, + __u16 oflags /* big-endian */) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.ip6gre = 1; + req->linkinfo.data.ip6gre._present.oflags = 1; + req->linkinfo.data.ip6gre.oflags = oflags; +} +static inline void +rt_link_newlink_req_set_linkinfo_data_ip6gre_ikey(struct rt_link_newlink_req *req, + __u32 ikey /* big-endian */) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.ip6gre = 1; + req->linkinfo.data.ip6gre._present.ikey = 1; + req->linkinfo.data.ip6gre.ikey = ikey; +} +static inline void +rt_link_newlink_req_set_linkinfo_data_ip6gre_okey(struct rt_link_newlink_req *req, + __u32 okey /* big-endian */) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.ip6gre = 1; + req->linkinfo.data.ip6gre._present.okey = 1; + req->linkinfo.data.ip6gre.okey = okey; +} +static inline void +rt_link_newlink_req_set_linkinfo_data_ip6gre_local(struct rt_link_newlink_req *req, + const void *local, + size_t len) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.ip6gre = 1; + free(req->linkinfo.data.ip6gre.local); + req->linkinfo.data.ip6gre._len.local = len; + req->linkinfo.data.ip6gre.local = malloc(req->linkinfo.data.ip6gre._len.local); + memcpy(req->linkinfo.data.ip6gre.local, local, req->linkinfo.data.ip6gre._len.local); +} +static inline void +rt_link_newlink_req_set_linkinfo_data_ip6gre_remote(struct rt_link_newlink_req *req, + const void *remote, + size_t len) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.ip6gre = 1; + free(req->linkinfo.data.ip6gre.remote); + req->linkinfo.data.ip6gre._len.remote = len; + req->linkinfo.data.ip6gre.remote = malloc(req->linkinfo.data.ip6gre._len.remote); + memcpy(req->linkinfo.data.ip6gre.remote, remote, req->linkinfo.data.ip6gre._len.remote); +} +static inline void +rt_link_newlink_req_set_linkinfo_data_ip6gre_ttl(struct rt_link_newlink_req *req, + __u8 ttl) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.ip6gre = 1; + req->linkinfo.data.ip6gre._present.ttl = 1; + req->linkinfo.data.ip6gre.ttl = ttl; +} +static inline void +rt_link_newlink_req_set_linkinfo_data_ip6gre_encap_limit(struct rt_link_newlink_req *req, + __u8 encap_limit) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.ip6gre = 1; + req->linkinfo.data.ip6gre._present.encap_limit = 1; + req->linkinfo.data.ip6gre.encap_limit = encap_limit; +} +static inline void +rt_link_newlink_req_set_linkinfo_data_ip6gre_flowinfo(struct rt_link_newlink_req *req, + __u32 flowinfo /* big-endian */) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.ip6gre = 1; + req->linkinfo.data.ip6gre._present.flowinfo = 1; + req->linkinfo.data.ip6gre.flowinfo = flowinfo; +} +static inline void +rt_link_newlink_req_set_linkinfo_data_ip6gre_flags(struct rt_link_newlink_req *req, + __u32 flags) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.ip6gre = 1; + req->linkinfo.data.ip6gre._present.flags = 1; + req->linkinfo.data.ip6gre.flags = flags; +} +static inline void +rt_link_newlink_req_set_linkinfo_data_ip6gre_encap_type(struct rt_link_newlink_req *req, + __u16 encap_type) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.ip6gre = 1; + req->linkinfo.data.ip6gre._present.encap_type = 1; + req->linkinfo.data.ip6gre.encap_type = encap_type; +} +static inline void +rt_link_newlink_req_set_linkinfo_data_ip6gre_encap_flags(struct rt_link_newlink_req *req, + __u16 encap_flags) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.ip6gre = 1; + req->linkinfo.data.ip6gre._present.encap_flags = 1; + req->linkinfo.data.ip6gre.encap_flags = encap_flags; +} +static inline void +rt_link_newlink_req_set_linkinfo_data_ip6gre_encap_sport(struct rt_link_newlink_req *req, + __u16 encap_sport /* big-endian */) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.ip6gre = 1; + req->linkinfo.data.ip6gre._present.encap_sport = 1; + req->linkinfo.data.ip6gre.encap_sport = encap_sport; +} +static inline void +rt_link_newlink_req_set_linkinfo_data_ip6gre_encap_dport(struct rt_link_newlink_req *req, + __u16 encap_dport /* big-endian */) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.ip6gre = 1; + req->linkinfo.data.ip6gre._present.encap_dport = 1; + req->linkinfo.data.ip6gre.encap_dport = encap_dport; +} +static inline void +rt_link_newlink_req_set_linkinfo_data_ip6gre_collect_metadata(struct rt_link_newlink_req *req) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.ip6gre = 1; + req->linkinfo.data.ip6gre._present.collect_metadata = 1; +} +static inline void +rt_link_newlink_req_set_linkinfo_data_ip6gre_fwmark(struct rt_link_newlink_req *req, + __u32 fwmark) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.ip6gre = 1; + req->linkinfo.data.ip6gre._present.fwmark = 1; + req->linkinfo.data.ip6gre.fwmark = fwmark; +} +static inline void +rt_link_newlink_req_set_linkinfo_data_ip6gre_erspan_index(struct rt_link_newlink_req *req, + __u32 erspan_index) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.ip6gre = 1; + req->linkinfo.data.ip6gre._present.erspan_index = 1; + req->linkinfo.data.ip6gre.erspan_index = erspan_index; +} +static inline void +rt_link_newlink_req_set_linkinfo_data_ip6gre_erspan_ver(struct rt_link_newlink_req *req, + __u8 erspan_ver) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.ip6gre = 1; + req->linkinfo.data.ip6gre._present.erspan_ver = 1; + req->linkinfo.data.ip6gre.erspan_ver = erspan_ver; +} +static inline void +rt_link_newlink_req_set_linkinfo_data_ip6gre_erspan_dir(struct rt_link_newlink_req *req, + __u8 erspan_dir) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.ip6gre = 1; + req->linkinfo.data.ip6gre._present.erspan_dir = 1; + req->linkinfo.data.ip6gre.erspan_dir = erspan_dir; +} +static inline void +rt_link_newlink_req_set_linkinfo_data_ip6gre_erspan_hwid(struct rt_link_newlink_req *req, + __u16 erspan_hwid) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.ip6gre = 1; + req->linkinfo.data.ip6gre._present.erspan_hwid = 1; + req->linkinfo.data.ip6gre.erspan_hwid = erspan_hwid; +} +static inline void rt_link_newlink_req_set_linkinfo_data_geneve_id(struct rt_link_newlink_req *req, __u32 id) { @@ -2673,7 +2938,7 @@ rt_link_newlink_req_set_linkinfo_data_geneve_tos(struct rt_link_newlink_req *req } static inline void rt_link_newlink_req_set_linkinfo_data_geneve_port(struct rt_link_newlink_req *req, - __u16 port) + __u16 port /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -2734,7 +2999,7 @@ rt_link_newlink_req_set_linkinfo_data_geneve_udp_zero_csum6_rx(struct rt_link_ne } static inline void rt_link_newlink_req_set_linkinfo_data_geneve_label(struct rt_link_newlink_req *req, - __u32 label) + __u32 label /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -2850,7 +3115,7 @@ rt_link_newlink_req_set_linkinfo_data_ipip_encap_limit(struct rt_link_newlink_re } static inline void rt_link_newlink_req_set_linkinfo_data_ipip_flowinfo(struct rt_link_newlink_req *req, - __u32 flowinfo) + __u32 flowinfo /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -2860,7 +3125,7 @@ rt_link_newlink_req_set_linkinfo_data_ipip_flowinfo(struct rt_link_newlink_req * } static inline void rt_link_newlink_req_set_linkinfo_data_ipip_flags(struct rt_link_newlink_req *req, - __u16 flags) + __u16 flags /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -2956,7 +3221,7 @@ rt_link_newlink_req_set_linkinfo_data_ipip_encap_flags(struct rt_link_newlink_re } static inline void rt_link_newlink_req_set_linkinfo_data_ipip_encap_sport(struct rt_link_newlink_req *req, - __u16 encap_sport) + __u16 encap_sport /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -2966,7 +3231,7 @@ rt_link_newlink_req_set_linkinfo_data_ipip_encap_sport(struct rt_link_newlink_re } static inline void rt_link_newlink_req_set_linkinfo_data_ipip_encap_dport(struct rt_link_newlink_req *req, - __u16 encap_dport) + __u16 encap_dport /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -3050,7 +3315,7 @@ rt_link_newlink_req_set_linkinfo_data_ip6tnl_encap_limit(struct rt_link_newlink_ } static inline void rt_link_newlink_req_set_linkinfo_data_ip6tnl_flowinfo(struct rt_link_newlink_req *req, - __u32 flowinfo) + __u32 flowinfo /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -3060,7 +3325,7 @@ rt_link_newlink_req_set_linkinfo_data_ip6tnl_flowinfo(struct rt_link_newlink_req } static inline void rt_link_newlink_req_set_linkinfo_data_ip6tnl_flags(struct rt_link_newlink_req *req, - __u32 flags) + __u32 flags /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -3100,7 +3365,7 @@ rt_link_newlink_req_set_linkinfo_data_ip6tnl_encap_flags(struct rt_link_newlink_ } static inline void rt_link_newlink_req_set_linkinfo_data_ip6tnl_encap_sport(struct rt_link_newlink_req *req, - __u16 encap_sport) + __u16 encap_sport /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -3110,7 +3375,7 @@ rt_link_newlink_req_set_linkinfo_data_ip6tnl_encap_sport(struct rt_link_newlink_ } static inline void rt_link_newlink_req_set_linkinfo_data_ip6tnl_encap_dport(struct rt_link_newlink_req *req, - __u16 encap_dport) + __u16 encap_dport /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -3203,7 +3468,7 @@ rt_link_newlink_req_set_linkinfo_data_sit_encap_limit(struct rt_link_newlink_req } static inline void rt_link_newlink_req_set_linkinfo_data_sit_flowinfo(struct rt_link_newlink_req *req, - __u32 flowinfo) + __u32 flowinfo /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -3213,7 +3478,7 @@ rt_link_newlink_req_set_linkinfo_data_sit_flowinfo(struct rt_link_newlink_req *r } static inline void rt_link_newlink_req_set_linkinfo_data_sit_flags(struct rt_link_newlink_req *req, - __u16 flags) + __u16 flags /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -3309,7 +3574,7 @@ rt_link_newlink_req_set_linkinfo_data_sit_encap_flags(struct rt_link_newlink_req } static inline void rt_link_newlink_req_set_linkinfo_data_sit_encap_sport(struct rt_link_newlink_req *req, - __u16 encap_sport) + __u16 encap_sport /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -3319,7 +3584,7 @@ rt_link_newlink_req_set_linkinfo_data_sit_encap_sport(struct rt_link_newlink_req } static inline void rt_link_newlink_req_set_linkinfo_data_sit_encap_dport(struct rt_link_newlink_req *req, - __u16 encap_dport) + __u16 encap_dport /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -3515,7 +3780,7 @@ rt_link_newlink_req_set_linkinfo_data_vti_link(struct rt_link_newlink_req *req, } static inline void rt_link_newlink_req_set_linkinfo_data_vti_ikey(struct rt_link_newlink_req *req, - __u32 ikey) + __u32 ikey /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -3525,7 +3790,7 @@ rt_link_newlink_req_set_linkinfo_data_vti_ikey(struct rt_link_newlink_req *req, } static inline void rt_link_newlink_req_set_linkinfo_data_vti_okey(struct rt_link_newlink_req *req, - __u32 okey) + __u32 okey /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -3580,7 +3845,7 @@ rt_link_newlink_req_set_linkinfo_data_vti6_link(struct rt_link_newlink_req *req, } static inline void rt_link_newlink_req_set_linkinfo_data_vti6_ikey(struct rt_link_newlink_req *req, - __u32 ikey) + __u32 ikey /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -3590,7 +3855,7 @@ rt_link_newlink_req_set_linkinfo_data_vti6_ikey(struct rt_link_newlink_req *req, } static inline void rt_link_newlink_req_set_linkinfo_data_vti6_okey(struct rt_link_newlink_req *req, - __u32 okey) + __u32 okey /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -5673,7 +5938,7 @@ rt_link_getlink_req_dump_set_linkinfo_data_erspan_link(struct rt_link_getlink_re } static inline void rt_link_getlink_req_dump_set_linkinfo_data_erspan_iflags(struct rt_link_getlink_req_dump *req, - __u16 iflags) + __u16 iflags /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -5683,7 +5948,7 @@ rt_link_getlink_req_dump_set_linkinfo_data_erspan_iflags(struct rt_link_getlink_ } static inline void rt_link_getlink_req_dump_set_linkinfo_data_erspan_oflags(struct rt_link_getlink_req_dump *req, - __u16 oflags) + __u16 oflags /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -5693,7 +5958,7 @@ rt_link_getlink_req_dump_set_linkinfo_data_erspan_oflags(struct rt_link_getlink_ } static inline void rt_link_getlink_req_dump_set_linkinfo_data_erspan_ikey(struct rt_link_getlink_req_dump *req, - __u32 ikey) + __u32 ikey /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -5703,7 +5968,7 @@ rt_link_getlink_req_dump_set_linkinfo_data_erspan_ikey(struct rt_link_getlink_re } static inline void rt_link_getlink_req_dump_set_linkinfo_data_erspan_okey(struct rt_link_getlink_req_dump *req, - __u32 okey) + __u32 okey /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -5769,7 +6034,7 @@ rt_link_getlink_req_dump_set_linkinfo_data_erspan_pmtudisc(struct rt_link_getlin } static inline void rt_link_getlink_req_dump_set_linkinfo_data_erspan_encap_limit(struct rt_link_getlink_req_dump *req, - __u32 encap_limit) + __u8 encap_limit) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -5779,7 +6044,7 @@ rt_link_getlink_req_dump_set_linkinfo_data_erspan_encap_limit(struct rt_link_get } static inline void rt_link_getlink_req_dump_set_linkinfo_data_erspan_flowinfo(struct rt_link_getlink_req_dump *req, - __u32 flowinfo) + __u32 flowinfo /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -5819,7 +6084,7 @@ rt_link_getlink_req_dump_set_linkinfo_data_erspan_encap_flags(struct rt_link_get } static inline void rt_link_getlink_req_dump_set_linkinfo_data_erspan_encap_sport(struct rt_link_getlink_req_dump *req, - __u16 encap_sport) + __u16 encap_sport /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -5829,7 +6094,7 @@ rt_link_getlink_req_dump_set_linkinfo_data_erspan_encap_sport(struct rt_link_get } static inline void rt_link_getlink_req_dump_set_linkinfo_data_erspan_encap_dport(struct rt_link_getlink_req_dump *req, - __u16 encap_dport) + __u16 encap_dport /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -5917,7 +6182,7 @@ rt_link_getlink_req_dump_set_linkinfo_data_gre_link(struct rt_link_getlink_req_d } static inline void rt_link_getlink_req_dump_set_linkinfo_data_gre_iflags(struct rt_link_getlink_req_dump *req, - __u16 iflags) + __u16 iflags /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -5927,7 +6192,7 @@ rt_link_getlink_req_dump_set_linkinfo_data_gre_iflags(struct rt_link_getlink_req } static inline void rt_link_getlink_req_dump_set_linkinfo_data_gre_oflags(struct rt_link_getlink_req_dump *req, - __u16 oflags) + __u16 oflags /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -5937,7 +6202,7 @@ rt_link_getlink_req_dump_set_linkinfo_data_gre_oflags(struct rt_link_getlink_req } static inline void rt_link_getlink_req_dump_set_linkinfo_data_gre_ikey(struct rt_link_getlink_req_dump *req, - __u32 ikey) + __u32 ikey /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -5947,7 +6212,7 @@ rt_link_getlink_req_dump_set_linkinfo_data_gre_ikey(struct rt_link_getlink_req_d } static inline void rt_link_getlink_req_dump_set_linkinfo_data_gre_okey(struct rt_link_getlink_req_dump *req, - __u32 okey) + __u32 okey /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -6013,7 +6278,7 @@ rt_link_getlink_req_dump_set_linkinfo_data_gre_pmtudisc(struct rt_link_getlink_r } static inline void rt_link_getlink_req_dump_set_linkinfo_data_gre_encap_limit(struct rt_link_getlink_req_dump *req, - __u32 encap_limit) + __u8 encap_limit) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -6023,7 +6288,7 @@ rt_link_getlink_req_dump_set_linkinfo_data_gre_encap_limit(struct rt_link_getlin } static inline void rt_link_getlink_req_dump_set_linkinfo_data_gre_flowinfo(struct rt_link_getlink_req_dump *req, - __u32 flowinfo) + __u32 flowinfo /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -6063,7 +6328,7 @@ rt_link_getlink_req_dump_set_linkinfo_data_gre_encap_flags(struct rt_link_getlin } static inline void rt_link_getlink_req_dump_set_linkinfo_data_gre_encap_sport(struct rt_link_getlink_req_dump *req, - __u16 encap_sport) + __u16 encap_sport /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -6073,7 +6338,7 @@ rt_link_getlink_req_dump_set_linkinfo_data_gre_encap_sport(struct rt_link_getlin } static inline void rt_link_getlink_req_dump_set_linkinfo_data_gre_encap_dport(struct rt_link_getlink_req_dump *req, - __u16 encap_dport) + __u16 encap_dport /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -6161,7 +6426,7 @@ rt_link_getlink_req_dump_set_linkinfo_data_gretap_link(struct rt_link_getlink_re } static inline void rt_link_getlink_req_dump_set_linkinfo_data_gretap_iflags(struct rt_link_getlink_req_dump *req, - __u16 iflags) + __u16 iflags /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -6171,7 +6436,7 @@ rt_link_getlink_req_dump_set_linkinfo_data_gretap_iflags(struct rt_link_getlink_ } static inline void rt_link_getlink_req_dump_set_linkinfo_data_gretap_oflags(struct rt_link_getlink_req_dump *req, - __u16 oflags) + __u16 oflags /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -6181,7 +6446,7 @@ rt_link_getlink_req_dump_set_linkinfo_data_gretap_oflags(struct rt_link_getlink_ } static inline void rt_link_getlink_req_dump_set_linkinfo_data_gretap_ikey(struct rt_link_getlink_req_dump *req, - __u32 ikey) + __u32 ikey /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -6191,7 +6456,7 @@ rt_link_getlink_req_dump_set_linkinfo_data_gretap_ikey(struct rt_link_getlink_re } static inline void rt_link_getlink_req_dump_set_linkinfo_data_gretap_okey(struct rt_link_getlink_req_dump *req, - __u32 okey) + __u32 okey /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -6257,7 +6522,7 @@ rt_link_getlink_req_dump_set_linkinfo_data_gretap_pmtudisc(struct rt_link_getlin } static inline void rt_link_getlink_req_dump_set_linkinfo_data_gretap_encap_limit(struct rt_link_getlink_req_dump *req, - __u32 encap_limit) + __u8 encap_limit) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -6267,7 +6532,7 @@ rt_link_getlink_req_dump_set_linkinfo_data_gretap_encap_limit(struct rt_link_get } static inline void rt_link_getlink_req_dump_set_linkinfo_data_gretap_flowinfo(struct rt_link_getlink_req_dump *req, - __u32 flowinfo) + __u32 flowinfo /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -6307,7 +6572,7 @@ rt_link_getlink_req_dump_set_linkinfo_data_gretap_encap_flags(struct rt_link_get } static inline void rt_link_getlink_req_dump_set_linkinfo_data_gretap_encap_sport(struct rt_link_getlink_req_dump *req, - __u16 encap_sport) + __u16 encap_sport /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -6317,7 +6582,7 @@ rt_link_getlink_req_dump_set_linkinfo_data_gretap_encap_sport(struct rt_link_get } static inline void rt_link_getlink_req_dump_set_linkinfo_data_gretap_encap_dport(struct rt_link_getlink_req_dump *req, - __u16 encap_dport) + __u16 encap_dport /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -6394,6 +6659,220 @@ rt_link_getlink_req_dump_set_linkinfo_data_gretap_erspan_hwid(struct rt_link_get req->linkinfo.data.gretap.erspan_hwid = erspan_hwid; } static inline void +rt_link_getlink_req_dump_set_linkinfo_data_ip6gre_link(struct rt_link_getlink_req_dump *req, + __u32 link) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.ip6gre = 1; + req->linkinfo.data.ip6gre._present.link = 1; + req->linkinfo.data.ip6gre.link = link; +} +static inline void +rt_link_getlink_req_dump_set_linkinfo_data_ip6gre_iflags(struct rt_link_getlink_req_dump *req, + __u16 iflags /* big-endian */) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.ip6gre = 1; + req->linkinfo.data.ip6gre._present.iflags = 1; + req->linkinfo.data.ip6gre.iflags = iflags; +} +static inline void +rt_link_getlink_req_dump_set_linkinfo_data_ip6gre_oflags(struct rt_link_getlink_req_dump *req, + __u16 oflags /* big-endian */) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.ip6gre = 1; + req->linkinfo.data.ip6gre._present.oflags = 1; + req->linkinfo.data.ip6gre.oflags = oflags; +} +static inline void +rt_link_getlink_req_dump_set_linkinfo_data_ip6gre_ikey(struct rt_link_getlink_req_dump *req, + __u32 ikey /* big-endian */) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.ip6gre = 1; + req->linkinfo.data.ip6gre._present.ikey = 1; + req->linkinfo.data.ip6gre.ikey = ikey; +} +static inline void +rt_link_getlink_req_dump_set_linkinfo_data_ip6gre_okey(struct rt_link_getlink_req_dump *req, + __u32 okey /* big-endian */) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.ip6gre = 1; + req->linkinfo.data.ip6gre._present.okey = 1; + req->linkinfo.data.ip6gre.okey = okey; +} +static inline void +rt_link_getlink_req_dump_set_linkinfo_data_ip6gre_local(struct rt_link_getlink_req_dump *req, + const void *local, + size_t len) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.ip6gre = 1; + free(req->linkinfo.data.ip6gre.local); + req->linkinfo.data.ip6gre._len.local = len; + req->linkinfo.data.ip6gre.local = malloc(req->linkinfo.data.ip6gre._len.local); + memcpy(req->linkinfo.data.ip6gre.local, local, req->linkinfo.data.ip6gre._len.local); +} +static inline void +rt_link_getlink_req_dump_set_linkinfo_data_ip6gre_remote(struct rt_link_getlink_req_dump *req, + const void *remote, + size_t len) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.ip6gre = 1; + free(req->linkinfo.data.ip6gre.remote); + req->linkinfo.data.ip6gre._len.remote = len; + req->linkinfo.data.ip6gre.remote = malloc(req->linkinfo.data.ip6gre._len.remote); + memcpy(req->linkinfo.data.ip6gre.remote, remote, req->linkinfo.data.ip6gre._len.remote); +} +static inline void +rt_link_getlink_req_dump_set_linkinfo_data_ip6gre_ttl(struct rt_link_getlink_req_dump *req, + __u8 ttl) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.ip6gre = 1; + req->linkinfo.data.ip6gre._present.ttl = 1; + req->linkinfo.data.ip6gre.ttl = ttl; +} +static inline void +rt_link_getlink_req_dump_set_linkinfo_data_ip6gre_encap_limit(struct rt_link_getlink_req_dump *req, + __u8 encap_limit) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.ip6gre = 1; + req->linkinfo.data.ip6gre._present.encap_limit = 1; + req->linkinfo.data.ip6gre.encap_limit = encap_limit; +} +static inline void +rt_link_getlink_req_dump_set_linkinfo_data_ip6gre_flowinfo(struct rt_link_getlink_req_dump *req, + __u32 flowinfo /* big-endian */) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.ip6gre = 1; + req->linkinfo.data.ip6gre._present.flowinfo = 1; + req->linkinfo.data.ip6gre.flowinfo = flowinfo; +} +static inline void +rt_link_getlink_req_dump_set_linkinfo_data_ip6gre_flags(struct rt_link_getlink_req_dump *req, + __u32 flags) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.ip6gre = 1; + req->linkinfo.data.ip6gre._present.flags = 1; + req->linkinfo.data.ip6gre.flags = flags; +} +static inline void +rt_link_getlink_req_dump_set_linkinfo_data_ip6gre_encap_type(struct rt_link_getlink_req_dump *req, + __u16 encap_type) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.ip6gre = 1; + req->linkinfo.data.ip6gre._present.encap_type = 1; + req->linkinfo.data.ip6gre.encap_type = encap_type; +} +static inline void +rt_link_getlink_req_dump_set_linkinfo_data_ip6gre_encap_flags(struct rt_link_getlink_req_dump *req, + __u16 encap_flags) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.ip6gre = 1; + req->linkinfo.data.ip6gre._present.encap_flags = 1; + req->linkinfo.data.ip6gre.encap_flags = encap_flags; +} +static inline void +rt_link_getlink_req_dump_set_linkinfo_data_ip6gre_encap_sport(struct rt_link_getlink_req_dump *req, + __u16 encap_sport /* big-endian */) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.ip6gre = 1; + req->linkinfo.data.ip6gre._present.encap_sport = 1; + req->linkinfo.data.ip6gre.encap_sport = encap_sport; +} +static inline void +rt_link_getlink_req_dump_set_linkinfo_data_ip6gre_encap_dport(struct rt_link_getlink_req_dump *req, + __u16 encap_dport /* big-endian */) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.ip6gre = 1; + req->linkinfo.data.ip6gre._present.encap_dport = 1; + req->linkinfo.data.ip6gre.encap_dport = encap_dport; +} +static inline void +rt_link_getlink_req_dump_set_linkinfo_data_ip6gre_collect_metadata(struct rt_link_getlink_req_dump *req) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.ip6gre = 1; + req->linkinfo.data.ip6gre._present.collect_metadata = 1; +} +static inline void +rt_link_getlink_req_dump_set_linkinfo_data_ip6gre_fwmark(struct rt_link_getlink_req_dump *req, + __u32 fwmark) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.ip6gre = 1; + req->linkinfo.data.ip6gre._present.fwmark = 1; + req->linkinfo.data.ip6gre.fwmark = fwmark; +} +static inline void +rt_link_getlink_req_dump_set_linkinfo_data_ip6gre_erspan_index(struct rt_link_getlink_req_dump *req, + __u32 erspan_index) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.ip6gre = 1; + req->linkinfo.data.ip6gre._present.erspan_index = 1; + req->linkinfo.data.ip6gre.erspan_index = erspan_index; +} +static inline void +rt_link_getlink_req_dump_set_linkinfo_data_ip6gre_erspan_ver(struct rt_link_getlink_req_dump *req, + __u8 erspan_ver) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.ip6gre = 1; + req->linkinfo.data.ip6gre._present.erspan_ver = 1; + req->linkinfo.data.ip6gre.erspan_ver = erspan_ver; +} +static inline void +rt_link_getlink_req_dump_set_linkinfo_data_ip6gre_erspan_dir(struct rt_link_getlink_req_dump *req, + __u8 erspan_dir) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.ip6gre = 1; + req->linkinfo.data.ip6gre._present.erspan_dir = 1; + req->linkinfo.data.ip6gre.erspan_dir = erspan_dir; +} +static inline void +rt_link_getlink_req_dump_set_linkinfo_data_ip6gre_erspan_hwid(struct rt_link_getlink_req_dump *req, + __u16 erspan_hwid) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.ip6gre = 1; + req->linkinfo.data.ip6gre._present.erspan_hwid = 1; + req->linkinfo.data.ip6gre.erspan_hwid = erspan_hwid; +} +static inline void rt_link_getlink_req_dump_set_linkinfo_data_geneve_id(struct rt_link_getlink_req_dump *req, __u32 id) { @@ -6438,7 +6917,7 @@ rt_link_getlink_req_dump_set_linkinfo_data_geneve_tos(struct rt_link_getlink_req } static inline void rt_link_getlink_req_dump_set_linkinfo_data_geneve_port(struct rt_link_getlink_req_dump *req, - __u16 port) + __u16 port /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -6499,7 +6978,7 @@ rt_link_getlink_req_dump_set_linkinfo_data_geneve_udp_zero_csum6_rx(struct rt_li } static inline void rt_link_getlink_req_dump_set_linkinfo_data_geneve_label(struct rt_link_getlink_req_dump *req, - __u32 label) + __u32 label /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -6616,7 +7095,7 @@ rt_link_getlink_req_dump_set_linkinfo_data_ipip_encap_limit(struct rt_link_getli } static inline void rt_link_getlink_req_dump_set_linkinfo_data_ipip_flowinfo(struct rt_link_getlink_req_dump *req, - __u32 flowinfo) + __u32 flowinfo /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -6626,7 +7105,7 @@ rt_link_getlink_req_dump_set_linkinfo_data_ipip_flowinfo(struct rt_link_getlink_ } static inline void rt_link_getlink_req_dump_set_linkinfo_data_ipip_flags(struct rt_link_getlink_req_dump *req, - __u16 flags) + __u16 flags /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -6722,7 +7201,7 @@ rt_link_getlink_req_dump_set_linkinfo_data_ipip_encap_flags(struct rt_link_getli } static inline void rt_link_getlink_req_dump_set_linkinfo_data_ipip_encap_sport(struct rt_link_getlink_req_dump *req, - __u16 encap_sport) + __u16 encap_sport /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -6732,7 +7211,7 @@ rt_link_getlink_req_dump_set_linkinfo_data_ipip_encap_sport(struct rt_link_getli } static inline void rt_link_getlink_req_dump_set_linkinfo_data_ipip_encap_dport(struct rt_link_getlink_req_dump *req, - __u16 encap_dport) + __u16 encap_dport /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -6816,7 +7295,7 @@ rt_link_getlink_req_dump_set_linkinfo_data_ip6tnl_encap_limit(struct rt_link_get } static inline void rt_link_getlink_req_dump_set_linkinfo_data_ip6tnl_flowinfo(struct rt_link_getlink_req_dump *req, - __u32 flowinfo) + __u32 flowinfo /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -6826,7 +7305,7 @@ rt_link_getlink_req_dump_set_linkinfo_data_ip6tnl_flowinfo(struct rt_link_getlin } static inline void rt_link_getlink_req_dump_set_linkinfo_data_ip6tnl_flags(struct rt_link_getlink_req_dump *req, - __u32 flags) + __u32 flags /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -6866,7 +7345,7 @@ rt_link_getlink_req_dump_set_linkinfo_data_ip6tnl_encap_flags(struct rt_link_get } static inline void rt_link_getlink_req_dump_set_linkinfo_data_ip6tnl_encap_sport(struct rt_link_getlink_req_dump *req, - __u16 encap_sport) + __u16 encap_sport /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -6876,7 +7355,7 @@ rt_link_getlink_req_dump_set_linkinfo_data_ip6tnl_encap_sport(struct rt_link_get } static inline void rt_link_getlink_req_dump_set_linkinfo_data_ip6tnl_encap_dport(struct rt_link_getlink_req_dump *req, - __u16 encap_dport) + __u16 encap_dport /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -6970,7 +7449,7 @@ rt_link_getlink_req_dump_set_linkinfo_data_sit_encap_limit(struct rt_link_getlin } static inline void rt_link_getlink_req_dump_set_linkinfo_data_sit_flowinfo(struct rt_link_getlink_req_dump *req, - __u32 flowinfo) + __u32 flowinfo /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -6980,7 +7459,7 @@ rt_link_getlink_req_dump_set_linkinfo_data_sit_flowinfo(struct rt_link_getlink_r } static inline void rt_link_getlink_req_dump_set_linkinfo_data_sit_flags(struct rt_link_getlink_req_dump *req, - __u16 flags) + __u16 flags /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -7076,7 +7555,7 @@ rt_link_getlink_req_dump_set_linkinfo_data_sit_encap_flags(struct rt_link_getlin } static inline void rt_link_getlink_req_dump_set_linkinfo_data_sit_encap_sport(struct rt_link_getlink_req_dump *req, - __u16 encap_sport) + __u16 encap_sport /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -7086,7 +7565,7 @@ rt_link_getlink_req_dump_set_linkinfo_data_sit_encap_sport(struct rt_link_getlin } static inline void rt_link_getlink_req_dump_set_linkinfo_data_sit_encap_dport(struct rt_link_getlink_req_dump *req, - __u16 encap_dport) + __u16 encap_dport /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -7283,7 +7762,7 @@ rt_link_getlink_req_dump_set_linkinfo_data_vti_link(struct rt_link_getlink_req_d } static inline void rt_link_getlink_req_dump_set_linkinfo_data_vti_ikey(struct rt_link_getlink_req_dump *req, - __u32 ikey) + __u32 ikey /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -7293,7 +7772,7 @@ rt_link_getlink_req_dump_set_linkinfo_data_vti_ikey(struct rt_link_getlink_req_d } static inline void rt_link_getlink_req_dump_set_linkinfo_data_vti_okey(struct rt_link_getlink_req_dump *req, - __u32 okey) + __u32 okey /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -7349,7 +7828,7 @@ rt_link_getlink_req_dump_set_linkinfo_data_vti6_link(struct rt_link_getlink_req_ } static inline void rt_link_getlink_req_dump_set_linkinfo_data_vti6_ikey(struct rt_link_getlink_req_dump *req, - __u32 ikey) + __u32 ikey /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -7359,7 +7838,7 @@ rt_link_getlink_req_dump_set_linkinfo_data_vti6_ikey(struct rt_link_getlink_req_ } static inline void rt_link_getlink_req_dump_set_linkinfo_data_vti6_okey(struct rt_link_getlink_req_dump *req, - __u32 okey) + __u32 okey /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -9222,7 +9701,7 @@ rt_link_setlink_req_set_linkinfo_data_erspan_link(struct rt_link_setlink_req *re } static inline void rt_link_setlink_req_set_linkinfo_data_erspan_iflags(struct rt_link_setlink_req *req, - __u16 iflags) + __u16 iflags /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -9232,7 +9711,7 @@ rt_link_setlink_req_set_linkinfo_data_erspan_iflags(struct rt_link_setlink_req * } static inline void rt_link_setlink_req_set_linkinfo_data_erspan_oflags(struct rt_link_setlink_req *req, - __u16 oflags) + __u16 oflags /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -9242,7 +9721,7 @@ rt_link_setlink_req_set_linkinfo_data_erspan_oflags(struct rt_link_setlink_req * } static inline void rt_link_setlink_req_set_linkinfo_data_erspan_ikey(struct rt_link_setlink_req *req, - __u32 ikey) + __u32 ikey /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -9252,7 +9731,7 @@ rt_link_setlink_req_set_linkinfo_data_erspan_ikey(struct rt_link_setlink_req *re } static inline void rt_link_setlink_req_set_linkinfo_data_erspan_okey(struct rt_link_setlink_req *req, - __u32 okey) + __u32 okey /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -9318,7 +9797,7 @@ rt_link_setlink_req_set_linkinfo_data_erspan_pmtudisc(struct rt_link_setlink_req } static inline void rt_link_setlink_req_set_linkinfo_data_erspan_encap_limit(struct rt_link_setlink_req *req, - __u32 encap_limit) + __u8 encap_limit) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -9328,7 +9807,7 @@ rt_link_setlink_req_set_linkinfo_data_erspan_encap_limit(struct rt_link_setlink_ } static inline void rt_link_setlink_req_set_linkinfo_data_erspan_flowinfo(struct rt_link_setlink_req *req, - __u32 flowinfo) + __u32 flowinfo /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -9368,7 +9847,7 @@ rt_link_setlink_req_set_linkinfo_data_erspan_encap_flags(struct rt_link_setlink_ } static inline void rt_link_setlink_req_set_linkinfo_data_erspan_encap_sport(struct rt_link_setlink_req *req, - __u16 encap_sport) + __u16 encap_sport /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -9378,7 +9857,7 @@ rt_link_setlink_req_set_linkinfo_data_erspan_encap_sport(struct rt_link_setlink_ } static inline void rt_link_setlink_req_set_linkinfo_data_erspan_encap_dport(struct rt_link_setlink_req *req, - __u16 encap_dport) + __u16 encap_dport /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -9466,7 +9945,7 @@ rt_link_setlink_req_set_linkinfo_data_gre_link(struct rt_link_setlink_req *req, } static inline void rt_link_setlink_req_set_linkinfo_data_gre_iflags(struct rt_link_setlink_req *req, - __u16 iflags) + __u16 iflags /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -9476,7 +9955,7 @@ rt_link_setlink_req_set_linkinfo_data_gre_iflags(struct rt_link_setlink_req *req } static inline void rt_link_setlink_req_set_linkinfo_data_gre_oflags(struct rt_link_setlink_req *req, - __u16 oflags) + __u16 oflags /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -9486,7 +9965,7 @@ rt_link_setlink_req_set_linkinfo_data_gre_oflags(struct rt_link_setlink_req *req } static inline void rt_link_setlink_req_set_linkinfo_data_gre_ikey(struct rt_link_setlink_req *req, - __u32 ikey) + __u32 ikey /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -9496,7 +9975,7 @@ rt_link_setlink_req_set_linkinfo_data_gre_ikey(struct rt_link_setlink_req *req, } static inline void rt_link_setlink_req_set_linkinfo_data_gre_okey(struct rt_link_setlink_req *req, - __u32 okey) + __u32 okey /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -9561,7 +10040,7 @@ rt_link_setlink_req_set_linkinfo_data_gre_pmtudisc(struct rt_link_setlink_req *r } static inline void rt_link_setlink_req_set_linkinfo_data_gre_encap_limit(struct rt_link_setlink_req *req, - __u32 encap_limit) + __u8 encap_limit) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -9571,7 +10050,7 @@ rt_link_setlink_req_set_linkinfo_data_gre_encap_limit(struct rt_link_setlink_req } static inline void rt_link_setlink_req_set_linkinfo_data_gre_flowinfo(struct rt_link_setlink_req *req, - __u32 flowinfo) + __u32 flowinfo /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -9611,7 +10090,7 @@ rt_link_setlink_req_set_linkinfo_data_gre_encap_flags(struct rt_link_setlink_req } static inline void rt_link_setlink_req_set_linkinfo_data_gre_encap_sport(struct rt_link_setlink_req *req, - __u16 encap_sport) + __u16 encap_sport /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -9621,7 +10100,7 @@ rt_link_setlink_req_set_linkinfo_data_gre_encap_sport(struct rt_link_setlink_req } static inline void rt_link_setlink_req_set_linkinfo_data_gre_encap_dport(struct rt_link_setlink_req *req, - __u16 encap_dport) + __u16 encap_dport /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -9709,7 +10188,7 @@ rt_link_setlink_req_set_linkinfo_data_gretap_link(struct rt_link_setlink_req *re } static inline void rt_link_setlink_req_set_linkinfo_data_gretap_iflags(struct rt_link_setlink_req *req, - __u16 iflags) + __u16 iflags /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -9719,7 +10198,7 @@ rt_link_setlink_req_set_linkinfo_data_gretap_iflags(struct rt_link_setlink_req * } static inline void rt_link_setlink_req_set_linkinfo_data_gretap_oflags(struct rt_link_setlink_req *req, - __u16 oflags) + __u16 oflags /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -9729,7 +10208,7 @@ rt_link_setlink_req_set_linkinfo_data_gretap_oflags(struct rt_link_setlink_req * } static inline void rt_link_setlink_req_set_linkinfo_data_gretap_ikey(struct rt_link_setlink_req *req, - __u32 ikey) + __u32 ikey /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -9739,7 +10218,7 @@ rt_link_setlink_req_set_linkinfo_data_gretap_ikey(struct rt_link_setlink_req *re } static inline void rt_link_setlink_req_set_linkinfo_data_gretap_okey(struct rt_link_setlink_req *req, - __u32 okey) + __u32 okey /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -9805,7 +10284,7 @@ rt_link_setlink_req_set_linkinfo_data_gretap_pmtudisc(struct rt_link_setlink_req } static inline void rt_link_setlink_req_set_linkinfo_data_gretap_encap_limit(struct rt_link_setlink_req *req, - __u32 encap_limit) + __u8 encap_limit) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -9815,7 +10294,7 @@ rt_link_setlink_req_set_linkinfo_data_gretap_encap_limit(struct rt_link_setlink_ } static inline void rt_link_setlink_req_set_linkinfo_data_gretap_flowinfo(struct rt_link_setlink_req *req, - __u32 flowinfo) + __u32 flowinfo /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -9855,7 +10334,7 @@ rt_link_setlink_req_set_linkinfo_data_gretap_encap_flags(struct rt_link_setlink_ } static inline void rt_link_setlink_req_set_linkinfo_data_gretap_encap_sport(struct rt_link_setlink_req *req, - __u16 encap_sport) + __u16 encap_sport /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -9865,7 +10344,7 @@ rt_link_setlink_req_set_linkinfo_data_gretap_encap_sport(struct rt_link_setlink_ } static inline void rt_link_setlink_req_set_linkinfo_data_gretap_encap_dport(struct rt_link_setlink_req *req, - __u16 encap_dport) + __u16 encap_dport /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -9942,6 +10421,220 @@ rt_link_setlink_req_set_linkinfo_data_gretap_erspan_hwid(struct rt_link_setlink_ req->linkinfo.data.gretap.erspan_hwid = erspan_hwid; } static inline void +rt_link_setlink_req_set_linkinfo_data_ip6gre_link(struct rt_link_setlink_req *req, + __u32 link) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.ip6gre = 1; + req->linkinfo.data.ip6gre._present.link = 1; + req->linkinfo.data.ip6gre.link = link; +} +static inline void +rt_link_setlink_req_set_linkinfo_data_ip6gre_iflags(struct rt_link_setlink_req *req, + __u16 iflags /* big-endian */) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.ip6gre = 1; + req->linkinfo.data.ip6gre._present.iflags = 1; + req->linkinfo.data.ip6gre.iflags = iflags; +} +static inline void +rt_link_setlink_req_set_linkinfo_data_ip6gre_oflags(struct rt_link_setlink_req *req, + __u16 oflags /* big-endian */) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.ip6gre = 1; + req->linkinfo.data.ip6gre._present.oflags = 1; + req->linkinfo.data.ip6gre.oflags = oflags; +} +static inline void +rt_link_setlink_req_set_linkinfo_data_ip6gre_ikey(struct rt_link_setlink_req *req, + __u32 ikey /* big-endian */) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.ip6gre = 1; + req->linkinfo.data.ip6gre._present.ikey = 1; + req->linkinfo.data.ip6gre.ikey = ikey; +} +static inline void +rt_link_setlink_req_set_linkinfo_data_ip6gre_okey(struct rt_link_setlink_req *req, + __u32 okey /* big-endian */) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.ip6gre = 1; + req->linkinfo.data.ip6gre._present.okey = 1; + req->linkinfo.data.ip6gre.okey = okey; +} +static inline void +rt_link_setlink_req_set_linkinfo_data_ip6gre_local(struct rt_link_setlink_req *req, + const void *local, + size_t len) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.ip6gre = 1; + free(req->linkinfo.data.ip6gre.local); + req->linkinfo.data.ip6gre._len.local = len; + req->linkinfo.data.ip6gre.local = malloc(req->linkinfo.data.ip6gre._len.local); + memcpy(req->linkinfo.data.ip6gre.local, local, req->linkinfo.data.ip6gre._len.local); +} +static inline void +rt_link_setlink_req_set_linkinfo_data_ip6gre_remote(struct rt_link_setlink_req *req, + const void *remote, + size_t len) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.ip6gre = 1; + free(req->linkinfo.data.ip6gre.remote); + req->linkinfo.data.ip6gre._len.remote = len; + req->linkinfo.data.ip6gre.remote = malloc(req->linkinfo.data.ip6gre._len.remote); + memcpy(req->linkinfo.data.ip6gre.remote, remote, req->linkinfo.data.ip6gre._len.remote); +} +static inline void +rt_link_setlink_req_set_linkinfo_data_ip6gre_ttl(struct rt_link_setlink_req *req, + __u8 ttl) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.ip6gre = 1; + req->linkinfo.data.ip6gre._present.ttl = 1; + req->linkinfo.data.ip6gre.ttl = ttl; +} +static inline void +rt_link_setlink_req_set_linkinfo_data_ip6gre_encap_limit(struct rt_link_setlink_req *req, + __u8 encap_limit) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.ip6gre = 1; + req->linkinfo.data.ip6gre._present.encap_limit = 1; + req->linkinfo.data.ip6gre.encap_limit = encap_limit; +} +static inline void +rt_link_setlink_req_set_linkinfo_data_ip6gre_flowinfo(struct rt_link_setlink_req *req, + __u32 flowinfo /* big-endian */) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.ip6gre = 1; + req->linkinfo.data.ip6gre._present.flowinfo = 1; + req->linkinfo.data.ip6gre.flowinfo = flowinfo; +} +static inline void +rt_link_setlink_req_set_linkinfo_data_ip6gre_flags(struct rt_link_setlink_req *req, + __u32 flags) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.ip6gre = 1; + req->linkinfo.data.ip6gre._present.flags = 1; + req->linkinfo.data.ip6gre.flags = flags; +} +static inline void +rt_link_setlink_req_set_linkinfo_data_ip6gre_encap_type(struct rt_link_setlink_req *req, + __u16 encap_type) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.ip6gre = 1; + req->linkinfo.data.ip6gre._present.encap_type = 1; + req->linkinfo.data.ip6gre.encap_type = encap_type; +} +static inline void +rt_link_setlink_req_set_linkinfo_data_ip6gre_encap_flags(struct rt_link_setlink_req *req, + __u16 encap_flags) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.ip6gre = 1; + req->linkinfo.data.ip6gre._present.encap_flags = 1; + req->linkinfo.data.ip6gre.encap_flags = encap_flags; +} +static inline void +rt_link_setlink_req_set_linkinfo_data_ip6gre_encap_sport(struct rt_link_setlink_req *req, + __u16 encap_sport /* big-endian */) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.ip6gre = 1; + req->linkinfo.data.ip6gre._present.encap_sport = 1; + req->linkinfo.data.ip6gre.encap_sport = encap_sport; +} +static inline void +rt_link_setlink_req_set_linkinfo_data_ip6gre_encap_dport(struct rt_link_setlink_req *req, + __u16 encap_dport /* big-endian */) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.ip6gre = 1; + req->linkinfo.data.ip6gre._present.encap_dport = 1; + req->linkinfo.data.ip6gre.encap_dport = encap_dport; +} +static inline void +rt_link_setlink_req_set_linkinfo_data_ip6gre_collect_metadata(struct rt_link_setlink_req *req) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.ip6gre = 1; + req->linkinfo.data.ip6gre._present.collect_metadata = 1; +} +static inline void +rt_link_setlink_req_set_linkinfo_data_ip6gre_fwmark(struct rt_link_setlink_req *req, + __u32 fwmark) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.ip6gre = 1; + req->linkinfo.data.ip6gre._present.fwmark = 1; + req->linkinfo.data.ip6gre.fwmark = fwmark; +} +static inline void +rt_link_setlink_req_set_linkinfo_data_ip6gre_erspan_index(struct rt_link_setlink_req *req, + __u32 erspan_index) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.ip6gre = 1; + req->linkinfo.data.ip6gre._present.erspan_index = 1; + req->linkinfo.data.ip6gre.erspan_index = erspan_index; +} +static inline void +rt_link_setlink_req_set_linkinfo_data_ip6gre_erspan_ver(struct rt_link_setlink_req *req, + __u8 erspan_ver) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.ip6gre = 1; + req->linkinfo.data.ip6gre._present.erspan_ver = 1; + req->linkinfo.data.ip6gre.erspan_ver = erspan_ver; +} +static inline void +rt_link_setlink_req_set_linkinfo_data_ip6gre_erspan_dir(struct rt_link_setlink_req *req, + __u8 erspan_dir) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.ip6gre = 1; + req->linkinfo.data.ip6gre._present.erspan_dir = 1; + req->linkinfo.data.ip6gre.erspan_dir = erspan_dir; +} +static inline void +rt_link_setlink_req_set_linkinfo_data_ip6gre_erspan_hwid(struct rt_link_setlink_req *req, + __u16 erspan_hwid) +{ + req->_present.linkinfo = 1; + req->linkinfo._present.data = 1; + req->linkinfo.data._present.ip6gre = 1; + req->linkinfo.data.ip6gre._present.erspan_hwid = 1; + req->linkinfo.data.ip6gre.erspan_hwid = erspan_hwid; +} +static inline void rt_link_setlink_req_set_linkinfo_data_geneve_id(struct rt_link_setlink_req *req, __u32 id) { @@ -9986,7 +10679,7 @@ rt_link_setlink_req_set_linkinfo_data_geneve_tos(struct rt_link_setlink_req *req } static inline void rt_link_setlink_req_set_linkinfo_data_geneve_port(struct rt_link_setlink_req *req, - __u16 port) + __u16 port /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -10047,7 +10740,7 @@ rt_link_setlink_req_set_linkinfo_data_geneve_udp_zero_csum6_rx(struct rt_link_se } static inline void rt_link_setlink_req_set_linkinfo_data_geneve_label(struct rt_link_setlink_req *req, - __u32 label) + __u32 label /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -10163,7 +10856,7 @@ rt_link_setlink_req_set_linkinfo_data_ipip_encap_limit(struct rt_link_setlink_re } static inline void rt_link_setlink_req_set_linkinfo_data_ipip_flowinfo(struct rt_link_setlink_req *req, - __u32 flowinfo) + __u32 flowinfo /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -10173,7 +10866,7 @@ rt_link_setlink_req_set_linkinfo_data_ipip_flowinfo(struct rt_link_setlink_req * } static inline void rt_link_setlink_req_set_linkinfo_data_ipip_flags(struct rt_link_setlink_req *req, - __u16 flags) + __u16 flags /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -10269,7 +10962,7 @@ rt_link_setlink_req_set_linkinfo_data_ipip_encap_flags(struct rt_link_setlink_re } static inline void rt_link_setlink_req_set_linkinfo_data_ipip_encap_sport(struct rt_link_setlink_req *req, - __u16 encap_sport) + __u16 encap_sport /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -10279,7 +10972,7 @@ rt_link_setlink_req_set_linkinfo_data_ipip_encap_sport(struct rt_link_setlink_re } static inline void rt_link_setlink_req_set_linkinfo_data_ipip_encap_dport(struct rt_link_setlink_req *req, - __u16 encap_dport) + __u16 encap_dport /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -10363,7 +11056,7 @@ rt_link_setlink_req_set_linkinfo_data_ip6tnl_encap_limit(struct rt_link_setlink_ } static inline void rt_link_setlink_req_set_linkinfo_data_ip6tnl_flowinfo(struct rt_link_setlink_req *req, - __u32 flowinfo) + __u32 flowinfo /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -10373,7 +11066,7 @@ rt_link_setlink_req_set_linkinfo_data_ip6tnl_flowinfo(struct rt_link_setlink_req } static inline void rt_link_setlink_req_set_linkinfo_data_ip6tnl_flags(struct rt_link_setlink_req *req, - __u32 flags) + __u32 flags /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -10413,7 +11106,7 @@ rt_link_setlink_req_set_linkinfo_data_ip6tnl_encap_flags(struct rt_link_setlink_ } static inline void rt_link_setlink_req_set_linkinfo_data_ip6tnl_encap_sport(struct rt_link_setlink_req *req, - __u16 encap_sport) + __u16 encap_sport /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -10423,7 +11116,7 @@ rt_link_setlink_req_set_linkinfo_data_ip6tnl_encap_sport(struct rt_link_setlink_ } static inline void rt_link_setlink_req_set_linkinfo_data_ip6tnl_encap_dport(struct rt_link_setlink_req *req, - __u16 encap_dport) + __u16 encap_dport /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -10516,7 +11209,7 @@ rt_link_setlink_req_set_linkinfo_data_sit_encap_limit(struct rt_link_setlink_req } static inline void rt_link_setlink_req_set_linkinfo_data_sit_flowinfo(struct rt_link_setlink_req *req, - __u32 flowinfo) + __u32 flowinfo /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -10526,7 +11219,7 @@ rt_link_setlink_req_set_linkinfo_data_sit_flowinfo(struct rt_link_setlink_req *r } static inline void rt_link_setlink_req_set_linkinfo_data_sit_flags(struct rt_link_setlink_req *req, - __u16 flags) + __u16 flags /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -10622,7 +11315,7 @@ rt_link_setlink_req_set_linkinfo_data_sit_encap_flags(struct rt_link_setlink_req } static inline void rt_link_setlink_req_set_linkinfo_data_sit_encap_sport(struct rt_link_setlink_req *req, - __u16 encap_sport) + __u16 encap_sport /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -10632,7 +11325,7 @@ rt_link_setlink_req_set_linkinfo_data_sit_encap_sport(struct rt_link_setlink_req } static inline void rt_link_setlink_req_set_linkinfo_data_sit_encap_dport(struct rt_link_setlink_req *req, - __u16 encap_dport) + __u16 encap_dport /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -10828,7 +11521,7 @@ rt_link_setlink_req_set_linkinfo_data_vti_link(struct rt_link_setlink_req *req, } static inline void rt_link_setlink_req_set_linkinfo_data_vti_ikey(struct rt_link_setlink_req *req, - __u32 ikey) + __u32 ikey /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -10838,7 +11531,7 @@ rt_link_setlink_req_set_linkinfo_data_vti_ikey(struct rt_link_setlink_req *req, } static inline void rt_link_setlink_req_set_linkinfo_data_vti_okey(struct rt_link_setlink_req *req, - __u32 okey) + __u32 okey /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -10893,7 +11586,7 @@ rt_link_setlink_req_set_linkinfo_data_vti6_link(struct rt_link_setlink_req *req, } static inline void rt_link_setlink_req_set_linkinfo_data_vti6_ikey(struct rt_link_setlink_req *req, - __u32 ikey) + __u32 ikey /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1; @@ -10903,7 +11596,7 @@ rt_link_setlink_req_set_linkinfo_data_vti6_ikey(struct rt_link_setlink_req *req, } static inline void rt_link_setlink_req_set_linkinfo_data_vti6_okey(struct rt_link_setlink_req *req, - __u32 okey) + __u32 okey /* big-endian */) { req->_present.linkinfo = 1; req->linkinfo._present.data = 1;