diff --git a/src/vlserver/vlprocs.c b/src/vlserver/vlprocs.c index c6e3c091f9..8156e293a4 100644 --- a/src/vlserver/vlprocs.c +++ b/src/vlserver/vlprocs.c @@ -2131,7 +2131,16 @@ abort: return code; } -#define PADDR(addr) VLog(0,("%d.%d.%d.%d", (addr>>24)&0xff, (addr>>16)&0xff, (addr>>8) &0xff, addr&0xff)); +static_inline void +append_addr(char *buffer, afs_uint32 addr, size_t buffer_size) +{ + int n = strlen(buffer); + if (buffer_size > n) { + snprintf(buffer + n, buffer_size - n, "%u.%u.%u.%u", + (addr >> 24) & 0xff, (addr >> 16) & 0xff, (addr >> 8) & 0xff, + addr & 0xff); + } +} afs_int32 SVL_RegisterAddrs(struct rx_call *rxcall, afsUUID *uuidp, afs_int32 spare1, @@ -2142,6 +2151,7 @@ SVL_RegisterAddrs(struct rx_call *rxcall, afsUUID *uuidp, afs_int32 spare1, struct vl_ctx ctx; int cnt, h, i, j, k, m; struct extentaddr *exp = 0, *tex; + char addrbuf[256]; afsUUID tuuid; afs_uint32 addrs[VL_MAXIPADDRS_PERMH]; int base; @@ -2246,28 +2256,26 @@ SVL_RegisterAddrs(struct rx_call *rxcall, afsUUID *uuidp, afs_int32 spare1, || (!foundUuidEntry && (count > 1))) { VLog(0, ("The following fileserver is being registered in the VLDB:\n")); - VLog(0, (" [")); - for (k = 0; k < cnt; k++) { + for (addrbuf[0] = '\0', k = 0; k < cnt; k++) { if (k > 0) - VLog(0,(" ")); - PADDR(addrs[k]); + strlcat(addrbuf, " ", sizeof(addrbuf)); + append_addr(addrbuf, addrs[k], sizeof(addrbuf)); } - VLog(0,("]\n")); + VLog(0, (" [%s]\n", addrbuf)); if (foundUuidEntry) { code = multiHomedExtent(&ctx, FoundUuid, &exp); if (code == 0) { VLog(0, (" It would have replaced the existing VLDB server " "entry:\n")); - VLog(0, (" entry %d: [", FoundUuid)); - for (mhidx = 0; mhidx < VL_MAXIPADDRS_PERMH; mhidx++) { + for (addrbuf[0] = '\0', mhidx = 0; mhidx < VL_MAXIPADDRS_PERMH; mhidx++) { if (!exp->ex_addrs[mhidx]) continue; if (mhidx > 0) - VLog(0,(" ")); - PADDR(ntohl(exp->ex_addrs[mhidx])); + strlcat(addrbuf, " ", sizeof(addrbuf)); + append_addr(addrbuf, ntohl(exp->ex_addrs[mhidx]), sizeof(addrbuf)); } - VLog(0, ("]\n")); + VLog(0, (" entry %d: [%s]\n", FoundUuid, addrbuf)); } } @@ -2283,20 +2291,19 @@ SVL_RegisterAddrs(struct rx_call *rxcall, afsUUID *uuidp, afs_int32 spare1, if (code) goto abort; + addrbuf[0] = '\0'; if (exp) { - VLog(0, ("[")); for (mhidx = 0; mhidx < VL_MAXIPADDRS_PERMH; mhidx++) { if (!exp->ex_addrs[mhidx]) continue; if (mhidx > 0) - VLog(0, (" ")); - PADDR(ntohl(exp->ex_addrs[mhidx])); + strlcat(addrbuf, " ", sizeof(addrbuf)); + append_addr(addrbuf, ntohl(exp->ex_addrs[mhidx]), sizeof(addrbuf)); } - VLog(0, ("]")); } else { - PADDR(ctx.hostaddress[srvidx]); + append_addr(addrbuf, ctx.hostaddress[srvidx], sizeof(addrbuf)); } - VLog(0, ("\n")); + VLog(0, (" entry %d: [%s]\n", srvidx, addrbuf)); } if (count == 1) @@ -2339,26 +2346,24 @@ SVL_RegisterAddrs(struct rx_call *rxcall, afsUUID *uuidp, afs_int32 spare1, } VLog(0, ("The following fileserver is being registered in the VLDB:\n")); - VLog(0, (" [")); - for (k = 0; k < cnt; k++) { + for (addrbuf[0] = '\0', k = 0; k < cnt; k++) { if (k > 0) - VLog(0, (" ")); - PADDR(addrs[k]); + strlcat(addrbuf, " ", sizeof(addrbuf)); + append_addr(addrbuf, addrs[k], sizeof(addrbuf)); } - VLog(0, ("]\n")); + VLog(0, (" [%s]\n", addrbuf)); if (foundUuidEntry) { VLog(0, (" It will replace the following existing entry in the VLDB (same uuid):\n")); - VLog(0, (" entry %d: [", FoundUuid)); - for (k = 0; k < VL_MAXIPADDRS_PERMH; k++) { + for (addrbuf[0] = '\0', k = 0; k < VL_MAXIPADDRS_PERMH; k++) { if (exp->ex_addrs[k] == 0) continue; if (k > 0) - VLog(0, (" ")); - PADDR(ntohl(exp->ex_addrs[k])); + strlcat(addrbuf, " ", sizeof(addrbuf)); + append_addr(addrbuf, ntohl(exp->ex_addrs[k]), sizeof(addrbuf)); } - VLog(0, ("]\n")); + VLog(0, (" entry %d: [%s]\n", FoundUuid, addrbuf)); } else if (willReplaceCnt || (count == 1)) { /* If we are not replacing an entry and there is only one entry to change, * then we will replace that entry. @@ -2376,23 +2381,22 @@ SVL_RegisterAddrs(struct rx_call *rxcall, afsUUID *uuidp, afs_int32 spare1, if (exp) { VLog(0, (" It will replace the following existing entry in the VLDB (new uuid):\n")); - VLog(0, (" entry %d: [", ReplaceEntry)); - for (k = 0; k < VL_MAXIPADDRS_PERMH; k++) { + for (addrbuf[0] = '\0', k = 0; k < VL_MAXIPADDRS_PERMH; k++) { if (exp->ex_addrs[k] == 0) continue; if (k > 0) - VLog(0, (" ")); - PADDR(ntohl(exp->ex_addrs[k])); + strlcat(addrbuf, " ", sizeof(addrbuf)); + append_addr(addrbuf, ntohl(exp->ex_addrs[k]), sizeof(addrbuf)); } - VLog(0, ("]\n")); + VLog(0, (" entry %d: [%s]\n", ReplaceEntry, addrbuf)); } else { /* Not a mh entry. So we have to create a new mh entry and * put it on the ReplaceEntry slot of the ctx.hostaddress array. */ - VLog(0, (" It will replace existing entry %d, ", ReplaceEntry)); - PADDR(ctx.hostaddress[ReplaceEntry]); - VLog(0,(", in the VLDB (new uuid):\n")); - + addrbuf[0] = '\0'; + append_addr(addrbuf, ctx.hostaddress[ReplaceEntry], sizeof(addrbuf)); + VLog(0, (" It will replace existing entry %d, %s," + " in the VLDB (new uuid):\n", ReplaceEntry, addrbuf)); code = FindExtentBlock(&ctx, uuidp, 1, ReplaceEntry, &exp, &base); if (code || !exp) { @@ -2457,12 +2461,11 @@ SVL_RegisterAddrs(struct rx_call *rxcall, afsUUID *uuidp, afs_int32 spare1, VLog(0, (" The following existing entries in the VLDB will be updated:\n")); - VLog(0, (" entry %d: [", WillChange[i])); - for (h = j = 0; j < VL_MAXIPADDRS_PERMH; j++) { + for (addrbuf[0] = '\0', h = j = 0; j < VL_MAXIPADDRS_PERMH; j++) { if (tex->ex_addrs[j]) { if (j > 0) - printf(" "); - PADDR(ntohl(tex->ex_addrs[j])); + strlcat(addrbuf, " ", sizeof(addrbuf)); + append_addr(addrbuf, ntohl(tex->ex_addrs[j]), sizeof(addrbuf)); } for (k = 0; k < cnt; k++) { @@ -2478,7 +2481,7 @@ SVL_RegisterAddrs(struct rx_call *rxcall, afsUUID *uuidp, afs_int32 spare1, for (j = h; j < VL_MAXIPADDRS_PERMH; j++) { tex->ex_addrs[j] = 0; /* zero rest of mh entry */ } - VLog(0, ("]\n")); + VLog(0, (" entry %d: [%s]\n", WillChange[i], addrbuf)); /* Write out the modified mh entry */ tex->ex_uniquifier = htonl(ntohl(tex->ex_uniquifier) + 1); @@ -3321,6 +3324,8 @@ ChangeIPAddr(struct vl_ctx *ctx, afs_uint32 ipaddr1, afs_uint32 ipaddr2) int pollcount = 0; struct nvlentry tentry; int ipaddr1_id = -1, ipaddr2_id = -1; + char addrbuf1[256]; + char addrbuf2[256]; /* Don't let addr change to 256.*.*.* : Causes internal error below */ if ((ipaddr2 & 0xff000000) == 0xff000000) @@ -3411,25 +3416,22 @@ ChangeIPAddr(struct vl_ctx *ctx, afs_uint32 ipaddr1, afs_uint32 ipaddr2) VLog(0, ("The following IP address is being %s:\n", (ipaddr2 ? "changed" : "removed"))); - VLog(0, (" entry %d: ", i)); + addrbuf1[0] = addrbuf2[0] = '\0'; if (exp) { - VLog(0, ("[")); for (mhidx = 0; mhidx < VL_MAXIPADDRS_PERMH; mhidx++) { if (!exp->ex_addrs[mhidx]) continue; if (mhidx > 0) - VLog(0, (" ")); - PADDR(ntohl(exp->ex_addrs[mhidx])); + strlcat(addrbuf1, " ", sizeof(addrbuf1)); + append_addr(addrbuf1, ntohl(exp->ex_addrs[mhidx]), sizeof(addrbuf1)); } - VLog(0, ("]")); } else { - PADDR(ipaddr1); + append_addr(addrbuf1, ipaddr1, sizeof(addrbuf1)); } if (ipaddr2) { - VLog(0, (" -> ")); - PADDR(ipaddr2); + append_addr(addrbuf2, ipaddr2, sizeof(addrbuf2)); } - VLog(0, ("\n")); + VLog(0, (" entry %d: [%s] -> [%s]\n", i, addrbuf1, addrbuf2)); /* Change the registered uuuid addresses */ if (exp) {