X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Flibsystemd%2Fsd-rtnl%2Frtnl-message.c;h=1afba8f0bb1ed19d66e467c77e41032b72d4055c;hp=a93cb0c8e46459e3d2654ae128811a141f37ed71;hb=b9ef681b04644493fca7c1d5611db7169697d26a;hpb=a88f77c406ea56160c1e5a4b39eab1de134abe40 diff --git a/src/libsystemd/sd-rtnl/rtnl-message.c b/src/libsystemd/sd-rtnl/rtnl-message.c index a93cb0c8e..1afba8f0b 100644 --- a/src/libsystemd/sd-rtnl/rtnl-message.c +++ b/src/libsystemd/sd-rtnl/rtnl-message.c @@ -326,15 +326,17 @@ int sd_rtnl_message_new_addr(sd_rtnl *rtnl, sd_rtnl_message **ret, int r; assert_return(rtnl_message_type_is_addr(nlmsg_type), -EINVAL); - assert_return(index > 0, -EINVAL); - assert_return(family == AF_INET || family == AF_INET6, -EINVAL); + assert_return((nlmsg_type == RTM_GETADDR && index == 0) || + index > 0, -EINVAL); + assert_return((nlmsg_type == RTM_GETADDR && family == AF_UNSPEC) || + family == AF_INET || family == AF_INET6, -EINVAL); assert_return(ret, -EINVAL); r = message_new(rtnl, ret, nlmsg_type); if (r < 0) return r; - if (nlmsg_type == RTM_GETADDR && family == AF_INET) + if (nlmsg_type == RTM_GETADDR) (*ret)->hdr->nlmsg_flags |= NLM_F_DUMP; ifa = NLMSG_DATA((*ret)->hdr);