-/* Copyright (C) 2017 CZ.NIC, z.s.p.o. <knot-dns@labs.nic.cz>
+/* Copyright (C) 2018 CZ.NIC, z.s.p.o. <knot-dns@labs.nic.cz>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
knot_pkt_t *query = knot_pkt_new(NULL, request->query->max_size, NULL);
int ret = knot_pkt_copy(query, request->query);
if (ret != KNOT_EOK) {
- knot_pkt_free(&query);
+ knot_pkt_free(query);
return ret;
}
knot_wire_set_id(query->wire, dnssec_random_uint16_t());
struct knot_requestor re;
ret = knot_requestor_init(&re, capture, &capture_param, NULL);
if (ret != KNOT_EOK) {
- knot_pkt_free(&query);
+ knot_pkt_free(query);
return ret;
}
struct knot_request *req = knot_request_make(re.mm, dst, src, query, NULL, 0);
if (req == NULL) {
knot_requestor_clear(&re);
- knot_pkt_free(&query);
+ knot_pkt_free(query);
return KNOT_ENOMEM;
}
static void free_request(struct knot_request *req)
{
close(req->fd);
- knot_pkt_free(&req->query);
- knot_pkt_free(&req->resp);
+ knot_pkt_free(req->query);
+ knot_pkt_free(req->resp);
free(req);
}
-/* Copyright (C) 2017 CZ.NIC, z.s.p.o. <knot-dns@labs.nic.cz>
+/* Copyright (C) 2018 CZ.NIC, z.s.p.o. <knot-dns@labs.nic.cz>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
if (request->fd >= 0) {
close(request->fd);
}
- knot_pkt_free(&request->query);
- knot_pkt_free(&request->resp);
+ knot_pkt_free(request->query);
+ knot_pkt_free(request->resp);
tsig_cleanup(&request->tsig);
mm_free(mm, request);
-/* Copyright (C) 2017 CZ.NIC, z.s.p.o. <knot-dns@labs.nic.cz>
+/* Copyright (C) 2018 CZ.NIC, z.s.p.o. <knot-dns@labs.nic.cz>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
knot_layer_finish(&tcp->layer);
/* Cleanup. */
- knot_pkt_free(&query);
- knot_pkt_free(&ans);
+ knot_pkt_free(query);
+ knot_pkt_free(ans);
return ret;
}
-/* Copyright (C) 2017 CZ.NIC, z.s.p.o. <knot-dns@labs.nic.cz>
+/* Copyright (C) 2018 CZ.NIC, z.s.p.o. <knot-dns@labs.nic.cz>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
knot_layer_finish(&udp->layer);
/* Cleanup. */
- knot_pkt_free(&query);
- knot_pkt_free(&ans);
+ knot_pkt_free(query);
+ knot_pkt_free(ans);
}
/*! \brief Pointer to selected UDP master implementation. */
-/* Copyright (C) 2017 CZ.NIC, z.s.p.o. <knot-dns@labs.nic.cz>
+/* Copyright (C) 2018 CZ.NIC, z.s.p.o. <knot-dns@labs.nic.cz>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
req->query = knot_pkt_new(NULL, pkt->max_size, NULL);
int ret = knot_pkt_copy(req->query, pkt);
if (ret != KNOT_EOK) {
- knot_pkt_free(&req->query);
+ knot_pkt_free(req->query);
free(req);
return ret;
}
}
_public_
-void knot_pkt_free(knot_pkt_t **pkt)
+void knot_pkt_free(knot_pkt_t *pkt)
{
- if (pkt == NULL || *pkt == NULL) {
+ if (pkt == NULL) {
return;
}
/* Free temporary RRSets. */
- pkt_free_data(*pkt);
+ pkt_free_data(pkt);
/* Free RR/RR info arrays. */
- mm_free(&(*pkt)->mm, (*pkt)->rr);
- mm_free(&(*pkt)->mm, (*pkt)->rr_info);
+ mm_free(&pkt->mm, pkt->rr);
+ mm_free(&pkt->mm, pkt->rr_info);
// free the space for wireformat
- if ((*pkt)->flags & KNOT_PF_FREE) {
- mm_free(&(*pkt)->mm, (*pkt)->wire);
+ if (pkt->flags & KNOT_PF_FREE) {
+ mm_free(&pkt->mm, pkt->wire);
}
- mm_free(&(*pkt)->mm, *pkt);
- *pkt = NULL;
+ mm_free(&pkt->mm, pkt);
}
_public_
void knot_pkt_clear(knot_pkt_t *pkt);
/*! \brief Begone you foul creature of the underworld. */
-void knot_pkt_free(knot_pkt_t **pkt);
+void knot_pkt_free(knot_pkt_t *pkt);
/*!
* \brief Reserve an arbitrary amount of space in the packet.
ERR("can't print dnstap message\n");
}
- knot_pkt_free(&pkt);
+ knot_pkt_free(pkt);
dt_reader_free_frame(reader, &frame);
}
}
// Create QNAME from string.
knot_dname_t *qname = knot_dname_from_str_alloc(query->owner);
if (qname == NULL) {
- knot_pkt_free(&packet);
+ knot_pkt_free(packet);
return NULL;
}
query->type_num);
if (ret != KNOT_EOK) {
knot_dname_free(&qname, NULL);
- knot_pkt_free(&packet);
+ knot_pkt_free(packet);
return NULL;
}
&packet->mm);
knot_dname_free(&qname, NULL);
if (soa == NULL) {
- knot_pkt_free(&packet);
+ knot_pkt_free(packet);
return NULL;
}
ret = knot_rrset_add_rdata(soa, wire, sizeof(wire), &packet->mm);
if (ret != KNOT_EOK) {
knot_rrset_free(&soa, &packet->mm);
- knot_pkt_free(&packet);
+ knot_pkt_free(packet);
return NULL;
}
ret = knot_pkt_put(packet, KNOT_COMPR_HINT_NONE, soa, KNOT_PF_FREE);
if (ret != KNOT_EOK) {
knot_rrset_free(&soa, &packet->mm);
- knot_pkt_free(&packet);
+ knot_pkt_free(packet);
return NULL;
}
int ret = add_query_edns(packet, query, max_size);
if (ret != KNOT_EOK) {
ERR("can't set up EDNS section\n");
- knot_pkt_free(&packet);
+ knot_pkt_free(packet);
return NULL;
}
}
} else {
ERR("can't print query packet\n");
}
- knot_pkt_free(&q);
+ knot_pkt_free(q);
} else {
ERR("can't print query packet\n");
}
// Parse reply to the packet structure.
if (knot_pkt_parse(reply, KNOT_PF_NOCANON) != KNOT_EOK) {
ERR("malformed reply packet from %s\n", net->remote_str);
- knot_pkt_free(&reply);
+ knot_pkt_free(reply);
net_close(net);
return 0;
}
break;
// Check for timeout.
} else if (time_diff_ms(&t_query, &t_end) > 1000 * net->wait) {
- knot_pkt_free(&reply);
+ knot_pkt_free(reply);
net_close(net);
return -1;
}
- knot_pkt_free(&reply);
+ knot_pkt_free(reply);
}
// Check for TC bit and repeat query with TCP if required.
printf("\n");
WARN("truncated reply from %s, retrying over TCP\n\n",
net->remote_str);
- knot_pkt_free(&reply);
+ knot_pkt_free(reply);
net_close(net);
net->socktype = SOCK_STREAM;
uint8_t *opt = knot_edns_get_option(reply->opt_rr, KNOT_EDNS_OPTION_COOKIE);
if (opt == NULL) {
ERR("bad cookie, missing EDNS section\n");
- knot_pkt_free(&reply);
+ knot_pkt_free(reply);
return -1;
}
int ret = knot_edns_cookie_parse(&new_ctx.cc, &new_ctx.sc,
data, data_len);
if (ret != KNOT_EOK) {
- knot_pkt_free(&reply);
+ knot_pkt_free(reply);
ERR("bad cookie, missing EDNS cookie option\n");
return -1;
}
- knot_pkt_free(&reply);
+ knot_pkt_free(reply);
// Restore the original client cookie.
new_ctx.cc = query_ctx->cc;
knot_pkt_t *new_query = create_query_packet(&new_ctx);
ret = process_query_packet(new_query, net, &new_ctx, ignore_tc,
sign_ctx, style);
- knot_pkt_free(&new_query);
+ knot_pkt_free(new_query);
return ret;
}
- knot_pkt_free(&reply);
+ knot_pkt_free(reply);
net_close(net);
return 0;
if (ret == 0) {
net_clean(&net);
sign_context_deinit(&sign_ctx);
- knot_pkt_free(&out_packet);
+ knot_pkt_free(out_packet);
return;
}
}
sign_context_deinit(&sign_ctx);
- knot_pkt_free(&out_packet);
+ knot_pkt_free(out_packet);
}
static int process_xfr_packet(const knot_pkt_t *query,
} else {
ERR("can't print query packet\n");
}
- knot_pkt_free(&q);
+ knot_pkt_free(q);
} else {
ERR("can't print query packet\n");
}
// Parse reply to the packet structure.
if (knot_pkt_parse(reply, 0) != KNOT_EOK) {
ERR("malformed reply packet from %s\n", net->remote_str);
- knot_pkt_free(&reply);
+ knot_pkt_free(reply);
net_close(net);
return 0;
}
// Compare reply header id.
if (check_reply_id(reply, query) == false) {
ERR("reply ID mismatch from %s\n", net->remote_str);
- knot_pkt_free(&reply);
+ knot_pkt_free(reply);
net_close(net);
return 0;
}
if (knot_pkt_ext_rcode(reply) != KNOT_RCODE_NOERROR) {
ERR("server replied with error '%s'\n",
knot_pkt_ext_rcode_name(reply));
- knot_pkt_free(&reply);
+ knot_pkt_free(reply);
net_close(net);
return 0;
}
ERR("reply verification for %s (%s)\n",
net->remote_str, knot_strerror(ret));
- knot_pkt_free(&reply);
+ knot_pkt_free(reply);
net_close(net);
return 0;
}
if (serial < 0) {
ERR("first answer record from %s isn't SOA\n",
net->remote_str);
- knot_pkt_free(&reply);
+ knot_pkt_free(reply);
net_close(net);
return 0;
}
// Check for finished transfer.
if (finished_xfr(serial, reply, msg_count, query_ctx->serial != -1)) {
- knot_pkt_free(&reply);
+ knot_pkt_free(reply);
break;
}
- knot_pkt_free(&reply);
+ knot_pkt_free(reply);
}
// Get stop reply time.
flags, &query->tls, &net);
if (ret != KNOT_EOK) {
sign_context_deinit(&sign_ctx);
- knot_pkt_free(&out_packet);
+ knot_pkt_free(out_packet);
return;
}
net_clean(&net);
sign_context_deinit(&sign_ctx);
- knot_pkt_free(&out_packet);
+ knot_pkt_free(out_packet);
}
int kdig_exec(const kdig_params_t *params)
-/* Copyright (C) 2017 CZ.NIC, z.s.p.o. <knot-dns@labs.nic.cz>
+/* Copyright (C) 2018 CZ.NIC, z.s.p.o. <knot-dns@labs.nic.cz>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
srv_info_free(params->srcif);
free(params->zone);
zs_deinit(¶ms->parser);
- knot_pkt_free(¶ms->query);
- knot_pkt_free(¶ms->answer);
+ knot_pkt_free(params->query);
+ knot_pkt_free(params->answer);
knot_tsig_key_deinit(¶ms->tsig_key);
/* Clean up the structure. */
-/* Copyright (C) 2017 CZ.NIC, z.s.p.o. <knot-dns@labs.nic.cz>
+/* Copyright (C) 2018 CZ.NIC, z.s.p.o. <knot-dns@labs.nic.cz>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
knot_pkt_t *pkt = knot_pkt_new(copy, size, NULL);
assert(pkt);
knot_pkt_parse(pkt, 0);
- knot_pkt_free(&pkt);
+ knot_pkt_free(pkt);
return 0;
}
-/* Copyright (C) 2017 CZ.NIC, z.s.p.o. <knot-dns@labs.nic.cz>
+/* Copyright (C) 2018 CZ.NIC, z.s.p.o. <knot-dns@labs.nic.cz>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
packet_match(in, copy);
/* Free packets. */
- knot_pkt_free(©);
- knot_pkt_free(&out);
- knot_pkt_free(&in);
- ok(in == NULL && out == NULL && copy == NULL, "pkt: free");
+ knot_pkt_free(copy);
+ knot_pkt_free(out);
+ knot_pkt_free(in);
/* Free extra data. */
for (unsigned i = 0; i < NAMECOUNT; ++i) {
-/* Copyright (C) 2017 CZ.NIC, z.s.p.o. <knot-dns@labs.nic.cz>
+/* Copyright (C) 2018 CZ.NIC, z.s.p.o. <knot-dns@labs.nic.cz>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
int ret = knot_pkt_put_question(query, qname, KNOT_CLASS_IN, KNOT_RRTYPE_A);
knot_dname_free(&qname, NULL);
if (ret != KNOT_EOK) {
- knot_pkt_free(&query);
+ knot_pkt_free(query);
return KNOT_ERROR; /* Fatal */
}
#endif
knot_dname_free(&zone, NULL);
- knot_pkt_free(&query);
+ knot_pkt_free(query);
rrl_destroy(rrl);
dnssec_crypto_cleanup();
return 0;
-/* Copyright (C) 2017 CZ.NIC, z.s.p.o. <knot-dns@labs.nic.cz>
+/* Copyright (C) 2018 CZ.NIC, z.s.p.o. <knot-dns@labs.nic.cz>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
/* Check answer. */
answer_sanity_check(query->wire, answer->wire, answer->size, expected_rcode, name);
- knot_pkt_free(&answer);
+ knot_pkt_free(answer);
}
/* \internal Helpers */