diff --git a/src/knot/ctl/remote.c b/src/knot/ctl/remote.c index 95b9f40f5a00aa8f7f427103fe1309d418595fab..95941e5a32ae0bb0df3e978ebee38796306974b8 100644 --- a/src/knot/ctl/remote.c +++ b/src/knot/ctl/remote.c @@ -849,8 +849,9 @@ int remote_print_txt(const knot_rrset_t *rr, uint16_t i) /* Packet parser should have already checked the packet validity. */ char buf[256]; uint16_t parsed = 0; - uint16_t rlen = knot_rrset_rr_size(rr, i); - uint8_t *p = knot_rrset_rr_rdata(rr, i); + const knot_rdata_t *rdata = knot_rdataset_at(&rr->rrs, i); + uint8_t *p = knot_rdata_data(rdata); + uint16_t rlen = knot_rdata_rdlen(rdata); while (parsed < rlen) { memcpy(buf, (const char*)(p+1), *p); buf[*p] = '\0'; diff --git a/src/knot/dnssec/zone-sign.c b/src/knot/dnssec/zone-sign.c index 230d0558949f73d08b5367d538f21e7a20782e16..7ce245c12a39b0423cac024cd972a7b129353ed5 100644 --- a/src/knot/dnssec/zone-sign.c +++ b/src/knot/dnssec/zone-sign.c @@ -698,8 +698,9 @@ static bool dnskey_exists_in_zone(const knot_rrset_t *dnskeys, uint16_t dnskeys_rdata_count = dnskeys->rrs.rr_count; for (uint16_t i = 0; i < dnskeys_rdata_count; i++) { - uint8_t *rdata = knot_rrset_rr_rdata(dnskeys, i); - uint16_t rdata_size = knot_rrset_rr_size(dnskeys, i); + const knot_rdata_t *rr = knot_rdataset_at(&dnskeys->rrs, i); + uint8_t *rdata = knot_rdata_data(rr); + uint16_t rdata_size = knot_rdata_rdlen(rr); if (dnskey_rdata_match(key, rdata, rdata_size)) { return true; } @@ -759,8 +760,9 @@ static int remove_invalid_dnskeys(const knot_rrset_t *soa, uint16_t dnskeys_rdata_count = dnskeys->rrs.rr_count; for (uint16_t i = 0; i < dnskeys_rdata_count; i++) { - uint8_t *rdata = knot_rrset_rr_rdata(dnskeys, i); - uint16_t rdata_size = knot_rrset_rr_size(dnskeys, i); + const knot_rdata_t *rr = knot_rdataset_at(&dnskeys->rrs, i); + uint8_t *rdata = knot_rdata_data(rr); + uint16_t rdata_size = knot_rdata_rdlen(rr); uint16_t keytag = knot_keytag(rdata, rdata_size); const knot_zone_key_t *key = knot_get_zone_key(zone_keys, keytag); if (key == NULL) { @@ -923,8 +925,9 @@ static int update_dnskeys_rrsigs(const knot_rrset_t *dnskeys, // add unknown keys from zone uint16_t dnskeys_rdata_count = dnskeys->rrs.rr_count; for (uint16_t i = 0; i < dnskeys_rdata_count; i++) { - uint8_t *rdata = knot_rrset_rr_rdata(dnskeys, i); - uint16_t rdata_size = knot_rrset_rr_size(dnskeys, i); + const knot_rdata_t *rr = knot_rdataset_at(&dnskeys->rrs, i); + uint8_t *rdata = knot_rdata_data(rr); + uint16_t rdata_size = knot_rdata_rdlen(rr); uint16_t keytag = knot_keytag(rdata, rdata_size); if (knot_get_zone_key(zone_keys, keytag) != NULL) { continue; diff --git a/src/knot/nameserver/internet.c b/src/knot/nameserver/internet.c index b49164315a78c851bbdde431292282d1adf9e6fc..e31f6888d5645a078c15e0ae0798fc128c6d85d1 100644 --- a/src/knot/nameserver/internet.c +++ b/src/knot/nameserver/internet.c @@ -267,7 +267,8 @@ static int put_authority_soa(knot_pkt_t *pkt, struct query_data *qdata, knot_dname_free(&dname_cpy, &pkt->mm); return ret; } - knot_rrset_rr_set_ttl(©, 0, min); + knot_rdata_t *soa_rr = knot_rdataset_at(©.rrs, 0); + knot_rdata_set_ttl(soa_rr, min); flags |= KNOT_PF_FREE; soa_rrset = copy; diff --git a/src/knot/updates/ddns.c b/src/knot/updates/ddns.c index c2042c2068e99c810e1e1bb084a245c65a6e5479..79456925adcb936179f701f83fb5bbb275907737 100644 --- a/src/knot/updates/ddns.c +++ b/src/knot/updates/ddns.c @@ -199,7 +199,8 @@ static bool rrset_empty(const knot_rrset_t *rrset) return true; } if (rr_count == 1) { - return knot_rrset_rr_size(rrset, 0) == 0; + const knot_rdata_t *rr = knot_rdataset_at(&rrset->rrs, 0); + return knot_rdata_rdlen(rr) == 0; } return false; } diff --git a/src/knot/zone/semantic-check.c b/src/knot/zone/semantic-check.c index 6df43036dbf278c5b41b18147aebcee11d5c6d71..56fc1dfcb67a78caf4180082d3dd9898936e0d6b 100644 --- a/src/knot/zone/semantic-check.c +++ b/src/knot/zone/semantic-check.c @@ -264,9 +264,8 @@ static int check_dnskey_rdata(const knot_rrset_t *rrset, size_t rdata_pos) /* check that Zone key bit it set - position 7 in net order */ const uint16_t mask = 1 << 8; //0b0000000100000000; - uint16_t flags = - knot_wire_read_u16(knot_rrset_rr_rdata(rrset, rdata_pos)); - + const knot_rdata_t *rr = knot_rdataset_at(&rrset->rrs, rdata_pos); + uint16_t flags = knot_wire_read_u16(knot_rdata_data(rr)); if (flags & mask) { return KNOT_EOK; } else { @@ -382,9 +381,9 @@ static int check_rrsig_rdata(err_handler_t *handler, } /* Calculate keytag. */ + const knot_rdata_t *rr = knot_rdataset_at(&dnskey_rrset->rrs, i); uint16_t dnskey_key_tag = - knot_keytag(knot_rrset_rr_rdata(dnskey_rrset, i), - knot_rrset_rr_size(dnskey_rrset, i)); + knot_keytag(knot_rdata_data(rr), knot_rdata_rdlen(rr)); if (key_tag_rrsig != dnskey_key_tag) { continue; } diff --git a/src/libknot/dnssec/rrset-sign.c b/src/libknot/dnssec/rrset-sign.c index 161cb4c6a25b620222d346469ac28790c912aaab..0b1635568e2780ffae51f57a4e3b5277bb455172 100644 --- a/src/libknot/dnssec/rrset-sign.c +++ b/src/libknot/dnssec/rrset-sign.c @@ -336,7 +336,8 @@ int knot_is_valid_signature(const knot_rrset_t *covered, // identify fields in the signature being validated - uint8_t *rdata = knot_rrset_rr_rdata(rrsigs, pos); + const knot_rdata_t *rr = knot_rdataset_at(&rrsigs->rrs, pos); + uint8_t *rdata = knot_rdata_data(rr); if (!rdata) { return KNOT_EINVAL; } diff --git a/src/libknot/dnssec/sig0.c b/src/libknot/dnssec/sig0.c index c16cc6a73c94cc5806d0fcbdb1fb162375279470..a8df423d77eeb412e0bc1de478d07495c694c81b 100644 --- a/src/libknot/dnssec/sig0.c +++ b/src/libknot/dnssec/sig0.c @@ -74,7 +74,8 @@ static uint8_t *sig0_create_rdata(knot_rrset_t *rrset, knot_dnssec_key_t *key) return NULL; } - return knot_rrset_rr_rdata(rrset, 0); + const knot_rdata_t *rr = knot_rdataset_at(&rrset->rrs, 0); + return knot_rdata_data(rr); } /*! diff --git a/src/libknot/edns.c b/src/libknot/edns.c index 855d51d54a32766b49c27283fcce7484af2caf04..fefdf746f3dfa5913897110eb9f9427633725cb8 100644 --- a/src/libknot/edns.c +++ b/src/libknot/edns.c @@ -86,9 +86,10 @@ int knot_edns_new_from_rr(knot_opt_rr_t *opt_rr, const knot_rrset_t *rrset) int rc = 0; dbg_edns_verb("Parsing options.\n"); - uint16_t size = knot_rrset_rr_size(rrset, 0); + const knot_rdata_t *rr = knot_rdataset_at(&rrset->rrs, 0); + uint16_t size = knot_rdata_rdlen(rr); if (size > 0) { - uint8_t *raw = knot_rrset_rr_rdata(rrset, 0); + uint8_t *raw = knot_rdata_data(rr); size_t pos = 0; while (pos < size) { // ensure there is enough data to parse the OPTION CODE diff --git a/src/libknot/rdata/tsig.c b/src/libknot/rdata/tsig.c index 0f8832ccd88c7d1886f070ad4d6076e2aeac31dc..ccc86d4b286966d2efd64872a75d1b830749c5b5 100644 --- a/src/libknot/rdata/tsig.c +++ b/src/libknot/rdata/tsig.c @@ -57,14 +57,15 @@ typedef enum tsig_off_t { */ static uint8_t* tsig_rdata_seek(const knot_rrset_t *rr, tsig_off_t id, size_t nb) { - uint8_t *rd = knot_rrset_rr_rdata(rr, 0); + const knot_rdata_t *rdata = knot_rdataset_at(&rr->rrs, 0); + uint8_t *rd = knot_rdata_data(rdata); if (rd == NULL) { return NULL; } /* TSIG RR names should be already sanitized on parse. */ int alg_len = knot_dname_size(rd); - uint16_t lim = knot_rrset_rr_size(rr, 0); + uint16_t lim = knot_rdata_rdlen(rdata); if (lim < alg_len + 5 * sizeof(uint16_t)) { dbg_tsig("TSIG: rdata: not enough items " "(has %"PRIu16", min %zu).\n", @@ -224,7 +225,8 @@ int tsig_rdata_set_other_data(knot_rrset_t *tsig, uint16_t len, const knot_dname_t *tsig_rdata_alg_name(const knot_rrset_t *tsig) { - return knot_rrset_rr_rdata(tsig, 0); + const knot_rdata_t *rr = knot_rdataset_at(&tsig->rrs, 0); + return knot_rdata_data(rr); } knot_tsig_algorithm_t tsig_rdata_alg(const knot_rrset_t *tsig) @@ -467,8 +469,9 @@ size_t tsig_wire_actsize(const knot_rrset_t *tsig) int tsig_rdata_is_ok(const knot_rrset_t *tsig) { /*! \todo Check size, needs to check variable-length fields. */ + const knot_rdata_t *rr = knot_rdataset_at(&tsig->rrs, 0); return (tsig - && knot_rrset_rr_rdata(tsig, 0) != NULL + && knot_rdata_data(rr) != NULL && tsig_rdata_seek(tsig, TSIG_OTHER_O, 0) != NULL && tsig_rdata_alg_name(tsig) != NULL && tsig_rdata_time_signed(tsig) != 0); diff --git a/src/libknot/rrset-dump.c b/src/libknot/rrset-dump.c index d8ec8ac8c2044189b5158fe31a3fa392d0aa4dd6..257dd0148719abade672dcadbc5f94f4513f2513 100644 --- a/src/libknot/rrset-dump.c +++ b/src/libknot/rrset-dump.c @@ -1792,8 +1792,9 @@ int knot_rrset_txt_dump_data(const knot_rrset_t *rrset, return KNOT_EINVAL; } - uint8_t *data = knot_rrset_rr_rdata(rrset, pos); - uint16_t data_len = knot_rrset_rr_size(rrset, pos); + const knot_rdata_t *rr = knot_rdataset_at(&rrset->rrs, pos); + uint8_t *data = knot_rdata_data(rr); + uint16_t data_len = knot_rdata_rdlen(rr); int ret = 0; diff --git a/src/libknot/rrset.c b/src/libknot/rrset.c index fea075576533023085375cdb9e39104ea842d933..cb34e7d8fae5428a9104f7db4b95d9e7aaad944f 100644 --- a/src/libknot/rrset.c +++ b/src/libknot/rrset.c @@ -41,7 +41,8 @@ static uint16_t rrset_rdata_naptr_bin_chunk_size(const knot_rrset_t *rrset, } size_t size = 0; - uint8_t *rdata = knot_rrset_rr_rdata(rrset, pos); + const knot_rdata_t *rr = knot_rdataset_at(&rrset->rrs, pos); + uint8_t *rdata = knot_rdata_data(rr); assert(rdata); /* Two shorts at the beginning. */ @@ -60,10 +61,10 @@ static uint16_t rrset_rdata_naptr_bin_chunk_size(const knot_rrset_t *rrset, } static size_t rrset_rdata_remainder_size(const knot_rrset_t *rrset, - size_t offset, size_t pos) + uint16_t offset, size_t pos) { - size_t ret = knot_rrset_rr_size(rrset, pos) - offset; - return ret; + const knot_rdata_t *rr = knot_rdataset_at(&rrset->rrs, pos); + return knot_rdata_rdlen(rr) - offset; } static int knot_rrset_header_to_wire(const knot_rrset_t *rrset, uint32_t ttl, @@ -167,7 +168,8 @@ static int knot_rrset_rdata_to_wire_one(const knot_rrset_t *rrset, } /* Get pointer into RDATA array. */ - uint8_t *rdata = knot_rrset_rr_rdata(rrset, rdata_pos); + const knot_rdata_t *rr = knot_rdataset_at(&rrset->rrs, rdata_pos); + uint8_t *rdata = knot_rdata_data(rr); assert(rdata); /* Offset into one RDATA array. */ size_t offset = 0; @@ -416,26 +418,6 @@ void knot_rrset_clear(knot_rrset_t *rrset, mm_ctx_t *mm) } } -uint8_t *knot_rrset_rr_rdata(const knot_rrset_t *rrset, size_t pos) -{ - knot_rdata_t *rr = knot_rdataset_at(&rrset->rrs, pos); - if (rr) { - return knot_rdata_data(rr); - } else { - return NULL; - } -} - -uint16_t knot_rrset_rr_size(const knot_rrset_t *rrset, size_t pos) -{ - const knot_rdata_t *rr = knot_rdataset_at(&rrset->rrs, pos); - if (rr) { - return knot_rdata_rdlen(rr); - } else { - return 0; - } -} - uint32_t knot_rrset_rr_ttl(const knot_rrset_t *rrset, size_t pos) { const knot_rdata_t *rr = knot_rdataset_at(&rrset->rrs, pos); @@ -446,14 +428,6 @@ uint32_t knot_rrset_rr_ttl(const knot_rrset_t *rrset, size_t pos) } } -void knot_rrset_rr_set_ttl(const knot_rrset_t *rrset, size_t pos, uint32_t ttl) -{ - knot_rdata_t *rr = knot_rdataset_at(&rrset->rrs, pos); - if (rr) { - knot_rdata_set_ttl(rr, ttl); - } -} - int knot_rrset_to_wire(const knot_rrset_t *rrset, uint8_t *wire, size_t *size, size_t max_size, uint16_t *rr_count, knot_compr_t *compr) { diff --git a/src/libknot/rrset.h b/src/libknot/rrset.h index 5f4572578e7ad07f5e9ba6a3144768e06a5f316d..db4fd2651c1b071a219cfc4550ab47fb9206557e 100644 --- a/src/libknot/rrset.h +++ b/src/libknot/rrset.h @@ -127,27 +127,6 @@ void knot_rrset_clear(knot_rrset_t *rrset, mm_ctx_t *mm); /* ----------- Getters / Setters (legacy, functionality in rdata_t) ------------ */ -/*! - * \brief Returns RDATA of RR on given position. - * - * \param rrset RRSet to get the RDATA from. - * \param pos Position of RR to get. - * - * \retval NULL if no RDATA on rdata_pos exist. - * \retval Pointer to RDATA on given position if successfull. - */ -uint8_t *knot_rrset_rr_rdata(const knot_rrset_t *rrset, size_t pos); - -/*! - * \brief Returns size of an RR RDATA on a given position. - * - * \param rrset RRSet holding RR RDATA. - * \param pos RR position. - * - * \return Item size. - */ -uint16_t knot_rrset_rr_size(const knot_rrset_t *rrset, size_t pos); - /*! * \brief Returns TTL of an RR on a given position. * @@ -158,15 +137,6 @@ uint16_t knot_rrset_rr_size(const knot_rrset_t *rrset, size_t pos); */ uint32_t knot_rrset_rr_ttl(const knot_rrset_t *rrset, size_t pos); -/*! - * \brief Sets TTL for RR on a given position. - * - * \param rrset RRSet containing RR. - * \param pos RR position. - * \param ttl TTL to be set. - */ -void knot_rrset_rr_set_ttl(const knot_rrset_t *rrset, size_t pos, uint32_t ttl); - /* ---------- Wire conversions (legacy, to be done in knot_pkt_t) ----------- */ /*!