diff --git a/include/linux/packet_diag.h b/include/linux/packet_diag.h index d08c63f3..0c5d5dd6 100644 --- a/include/linux/packet_diag.h +++ b/include/linux/packet_diag.h @@ -64,7 +64,7 @@ struct packet_diag_mclist { __u32 pdmc_count; __u16 pdmc_type; __u16 pdmc_alen; - __u8 pdmc_addr[MAX_ADDR_LEN]; + __u8 pdmc_addr[32]; /* MAX_ADDR_LEN */ }; struct packet_diag_ring { diff --git a/ip/iplink_vxlan.c b/ip/iplink_vxlan.c index 6d02bb47..fef7d3af 100644 --- a/ip/iplink_vxlan.c +++ b/ip/iplink_vxlan.c @@ -286,10 +286,14 @@ static int vxlan_parse_opt(struct link_util *lu, int argc, char **argv, addattr_l(n, 1024, IFLA_VXLAN_GROUP, &gaddr, 4); else if (daddr) addattr_l(n, 1024, IFLA_VXLAN_GROUP, &daddr, 4); - if (!IN6_IS_ADDR_UNSPECIFIED(&gaddr6)) + else if (!IN6_IS_ADDR_UNSPECIFIED(&gaddr6)) addattr_l(n, 1024, IFLA_VXLAN_GROUP6, &gaddr6, sizeof(struct in6_addr)); else if (!IN6_IS_ADDR_UNSPECIFIED(&daddr6)) addattr_l(n, 1024, IFLA_VXLAN_GROUP6, &daddr6, sizeof(struct in6_addr)); + else if (preferred_family == AF_INET) + addattr_l(n, 1024, IFLA_VXLAN_GROUP, &daddr, 4); + else if (preferred_family == AF_INET6) + addattr_l(n, 1024, IFLA_VXLAN_GROUP6, &daddr6, sizeof(struct in6_addr)); if (saddr) addattr_l(n, 1024, IFLA_VXLAN_LOCAL, &saddr, 4); diff --git a/ip/iproute.c b/ip/iproute.c index a7296dca..7cdf0726 100644 --- a/ip/iproute.c +++ b/ip/iproute.c @@ -655,7 +655,7 @@ int print_route(const struct sockaddr_nl *who, struct nlmsghdr *n, void *arg) size_t len = RTA_PAYLOAD(tb[RTA_VIA]) - 2; struct rtvia *via = RTA_DATA(tb[RTA_VIA]); - fprintf(fp, "via %s %s ", + fprintf(fp, " via %s %s ", family_name(via->rtvia_family), format_host(via->rtvia_family, len, via->rtvia_addr)); }