}
}
+#define NS_CLIENT_FLAGS_FORMATSIZE sizeof("+E(255)STDCV")
+
+static inline void
+ns_client_log_flags(ns_client_t *client, unsigned int flags,
+ unsigned int extflags, char *buf, size_t len) {
+ isc_buffer_t b;
+
+ isc_buffer_init(&b, buf, len);
+ isc_buffer_putuint8(&b, WANTRECURSION(client) ? '+' : '-');
+ if (client->ednsversion >= 0) {
+ char ednsbuf[sizeof("E(255)")] = { 0 };
+
+ snprintf(ednsbuf, sizeof(ednsbuf), "E(%hhu)",
+ (unsigned char)client->ednsversion);
+ isc_buffer_putstr(&b, ednsbuf);
+ }
+ if (client->signer != NULL) {
+ isc_buffer_putuint8(&b, 'S');
+ }
+ if (TCP(client)) {
+ isc_buffer_putuint8(&b, 'T');
+ }
+ if ((extflags & DNS_MESSAGEEXTFLAG_DO) != 0) {
+ isc_buffer_putuint8(&b, 'D');
+ }
+ if ((flags & DNS_MESSAGEFLAG_CD) != 0) {
+ isc_buffer_putuint8(&b, 'C');
+ }
+ if (HAVECOOKIE(client)) {
+ isc_buffer_putuint8(&b, 'V');
+ } else if (WANTCOOKIE(client)) {
+ isc_buffer_putuint8(&b, 'K');
+ }
+ isc_buffer_putuint8(&b, 0);
+}
+
+#define NS_CLIENT_ECS_FORMATSIZE (DNS_ECS_FORMATSIZE + sizeof(" [ECS ]") - 1)
+
+static inline void
+ns_client_log_ecs(ns_client_t *client, char *ecsbuf, size_t len) {
+ strlcpy(ecsbuf, " [ECS ", len);
+ dns_ecs_format(&client->ecs, ecsbuf + 6, len - 6);
+ strlcat(ecsbuf, "]", len);
+}
+
static inline void
log_response(ns_client_t *client, dns_rcode_t rcode) {
char namebuf[DNS_NAME_FORMATSIZE];
char classbuf[DNS_RDATACLASS_FORMATSIZE];
char rcodebuf[20];
char onbuf[ISC_NETADDR_FORMATSIZE];
- char ecsbuf[DNS_ECS_FORMATSIZE + sizeof(" [ECS ]") - 1] = { 0 };
- char ednsbuf[sizeof("E(65535)")] = { 0 };
+ char ecsbuf[NS_CLIENT_ECS_FORMATSIZE] = { 0 };
+ char flagsbuf[NS_CLIENT_FLAGS_FORMATSIZE] = { 0 };
isc_buffer_t b;
- uint16_t extflags;
- unsigned int flags;
int level = ISC_LOG_INFO;
if (!isc_log_wouldlog(level))
isc_buffer_putuint8(&b, 0);
isc_netaddr_format(&client->destaddr, onbuf, sizeof(onbuf));
- if (client->ednsversion >= 0) {
- snprintf(ednsbuf, sizeof(ednsbuf), "E(%hd)",
- client->ednsversion);
- }
-
if (HAVEECS(client)) {
- strlcpy(ecsbuf, " [ECS ", sizeof(ecsbuf));
- dns_ecs_format(&client->ecs, ecsbuf + 6, sizeof(ecsbuf) - 6);
- strlcat(ecsbuf, "]", sizeof(ecsbuf));
+ ns_client_log_ecs(client, ecsbuf, sizeof(ecsbuf));
}
- extflags = client->extflags;
- flags = client->message->flags;
+ ns_client_log_flags(client, client->message->flags, client->extflags,
+ flagsbuf, sizeof(flagsbuf));
ns_client_log(client, NS_LOGCATEGORY_RESPONSES, NS_LOGMODULE_QUERY,
- level,
- "response: %s %s %s %s %d %d %d %s%s%s%s%s%s%s (%s)%s",
+ level, "response: %s %s %s %s %u %u %u %s (%s)%s",
namebuf, classbuf, typebuf, rcodebuf,
client->message->counts[DNS_SECTION_ANSWER],
client->message->counts[DNS_SECTION_AUTHORITY],
- client->message->counts[DNS_SECTION_ADDITIONAL],
- RECURSIONOK(client) ? "+" : "-",
- (client->signer != NULL) ? "S" : "", ednsbuf,
- TCP(client) ? "T" : "",
- ((extflags & DNS_MESSAGEEXTFLAG_DO) != 0) ? "D" : "",
- ((flags & DNS_MESSAGEFLAG_CD) != 0) ? "C" : "",
- HAVECOOKIE(client) ? "V"
- : WANTCOOKIE(client) ? "K"
- : "",
+ client->message->counts[DNS_SECTION_ADDITIONAL], flagsbuf,
onbuf, ecsbuf);
}
char typebuf[DNS_RDATATYPE_FORMATSIZE];
char classbuf[DNS_RDATACLASS_FORMATSIZE];
char onbuf[ISC_NETADDR_FORMATSIZE];
- char ecsbuf[DNS_ECS_FORMATSIZE + sizeof(" [ECS ]") - 1] = { 0 };
- char ednsbuf[sizeof("E(65535)")] = { 0 };
+ char ecsbuf[NS_CLIENT_ECS_FORMATSIZE] = { 0 };
+ char flagsbuf[NS_CLIENT_FLAGS_FORMATSIZE] = { 0 };
dns_rdataset_t *rdataset;
int level = ISC_LOG_INFO;
dns_rdatatype_format(rdataset->type, typebuf, sizeof(typebuf));
isc_netaddr_format(&client->destaddr, onbuf, sizeof(onbuf));
- if (client->ednsversion >= 0) {
- snprintf(ednsbuf, sizeof(ednsbuf), "E(%hd)",
- client->ednsversion);
- }
-
if (HAVEECS(client)) {
- strlcpy(ecsbuf, " [ECS ", sizeof(ecsbuf));
- dns_ecs_format(&client->ecs, ecsbuf + 6, sizeof(ecsbuf) - 6);
- strlcat(ecsbuf, "]", sizeof(ecsbuf));
+ ns_client_log_ecs(client, ecsbuf, sizeof(ecsbuf));
}
+ ns_client_log_flags(client, flags, extflags, flagsbuf,
+ sizeof(flagsbuf));
ns_client_log(client, NS_LOGCATEGORY_QUERIES, NS_LOGMODULE_QUERY, level,
- "query: %s %s %s %s%s%s%s%s%s%s (%s)%s", namebuf,
- classbuf, typebuf, WANTRECURSION(client) ? "+" : "-",
- (client->signer != NULL) ? "S" : "", ednsbuf,
- TCP(client) ? "T" : "",
- ((extflags & DNS_MESSAGEEXTFLAG_DO) != 0) ? "D" : "",
- ((flags & DNS_MESSAGEFLAG_CD) != 0) ? "C" : "",
- HAVECOOKIE(client) ? "V"
- : WANTCOOKIE(client) ? "K"
- : "",
- onbuf, ecsbuf);
+ "query: %s %s %s %s (%s)%s", namebuf, classbuf, typebuf,
+ flagsbuf, onbuf, ecsbuf);
}
static void