In general these messages do not help. Here we have two cases of
messages, either logged at LOG_INFO or LOG_ERR.
In the first case a proper error code is returned via ioctl(2), so
the userland application knows it has done something incorrect.
The second case correspond to a ENOMEM error, which is something that
can happen and is properly handled (goto cleanup).
Ok?
Index: netinet6/in6.c
===================================================================
RCS file: /cvs/src/sys/netinet6/in6.c,v
retrieving revision 1.161
diff -u -p -r1.161 in6.c
--- netinet6/in6.c 18 Jul 2015 15:05:32 -0000 1.161
+++ netinet6/in6.c 10 Aug 2015 20:38:04 -0000
@@ -633,17 +633,10 @@ in6_update_ifa(struct ifnet *ifp, struct
* must be 128.
*/
if (ifra->ifra_dstaddr.sin6_family == AF_INET6) {
- if ((ifp->if_flags & (IFF_POINTOPOINT|IFF_LOOPBACK)) == 0) {
- /* XXX: noisy message */
- nd6log((LOG_INFO, "in6_update_ifa: a destination can "
- "be specified for a p2p or a loopback IF only\n"));
+ if ((ifp->if_flags & (IFF_POINTOPOINT|IFF_LOOPBACK)) == 0)
return (EINVAL);
- }
- if (plen != 128) {
- nd6log((LOG_INFO, "in6_update_ifa: prefixlen should "
- "be 128 when dstaddr is specified\n"));
+ if (plen != 128)
return (EINVAL);
- }
}
/* lifetime consistency check */
lt = &ifra->ifra_lifetime;
@@ -703,10 +696,6 @@ in6_update_ifa(struct ifnet *ifp, struct
*/
if (ia6->ia_prefixmask.sin6_len &&
in6_mask2len(&ia6->ia_prefixmask.sin6_addr, NULL) != plen) {
- nd6log((LOG_INFO, "in6_update_ifa: the prefix length of
an"
- " existing (%s) address should not be changed\n",
- inet_ntop(AF_INET6, &ia6->ia_addr.sin6_addr,
- addr, sizeof(addr))));
error = EINVAL;
goto unlink;
}
@@ -806,14 +795,8 @@ in6_update_ifa(struct ifnet *ifp, struct
ifra->ifra_addr.sin6_addr.s6_addr32[3];
llsol.sin6_addr.s6_addr8[12] = 0xff;
imm = in6_joingroup(ifp, &llsol.sin6_addr, &error);
- if (!imm) {
- nd6log((LOG_ERR, "in6_update_ifa: "
- "addmulti failed for %s on %s (errno=%d)\n",
- inet_ntop(AF_INET6, &llsol.sin6_addr,
- addr, sizeof(addr)),
- ifp->if_xname, error));
+ if (!imm)
goto cleanup;
- }
LIST_INSERT_HEAD(&ia6->ia6_memberships, imm, i6mm_chain);
bzero(&mltmask, sizeof(mltmask));
@@ -867,15 +850,8 @@ in6_update_ifa(struct ifnet *ifp, struct
rtfree(rt);
}
imm = in6_joingroup(ifp, &mltaddr.sin6_addr, &error);
- if (!imm) {
- nd6log((LOG_WARNING,
- "in6_update_ifa: addmulti failed for "
- "%s on %s (errno=%d)\n",
- inet_ntop(AF_INET6, &mltaddr.sin6_addr,
- addr, sizeof(addr)),
- ifp->if_xname, error));
+ if (!imm)
goto cleanup;
- }
LIST_INSERT_HEAD(&ia6->ia6_memberships, imm, i6mm_chain);
/*
@@ -884,11 +860,6 @@ in6_update_ifa(struct ifnet *ifp, struct
if (in6_nigroup(ifp, hostname, hostnamelen, &mltaddr) == 0) {
imm = in6_joingroup(ifp, &mltaddr.sin6_addr, &error);
if (!imm) {
- nd6log((LOG_WARNING, "in6_update_ifa: "
- "addmulti failed for %s on %s (errno=%d)\n",
- inet_ntop(AF_INET6, &mltaddr.sin6_addr,
- addr, sizeof(addr)),
- ifp->if_xname, error));
/* XXX not very fatal, go on... */
} else {
LIST_INSERT_HEAD(&ia6->ia6_memberships,
@@ -935,14 +906,8 @@ in6_update_ifa(struct ifnet *ifp, struct
rtfree(rt);
}
imm = in6_joingroup(ifp, &mltaddr.sin6_addr, &error);
- if (!imm) {
- nd6log((LOG_WARNING, "in6_update_ifa: "
- "addmulti failed for %s on %s (errno=%d)\n",
- inet_ntop(AF_INET6, &mltaddr.sin6_addr,
- addr, sizeof(addr)),
- ifp->if_xname, error));
+ if (!imm)
goto cleanup;
- }
LIST_INSERT_HEAD(&ia6->ia6_memberships, imm, i6mm_chain);
}