]> git.ipfire.org Git - thirdparty/knot-resolver.git/commitdiff
lib/rules: split key construction from insert_trivial_zone()
authorVladimír Čunát <vladimir.cunat@nic.cz>
Mon, 22 May 2023 15:25:50 +0000 (17:25 +0200)
committerVladimír Čunát <vladimir.cunat@nic.cz>
Mon, 12 Jun 2023 08:32:57 +0000 (10:32 +0200)
lib/rules/api.c
lib/rules/impl.h

index 1222f76b1160ad1c070b47d55f4a0071fefa183a..cdf2a434a932f8e0497ae0e99f8a0ce3cc0e6d62 100644 (file)
@@ -665,11 +665,9 @@ nodata: // Want NODATA answer (or NOERROR if it hits apex SOA).
        return kr_ok();
 }
 
-int insert_trivial_zone(val_zla_type_t ztype, uint32_t ttl,
-                       const knot_dname_t *apex, kr_rule_tags_t tags)
+knot_db_val_t zla_key(const knot_dname_t *apex, uint8_t key_data[KEY_MAXLEN])
 {
        kr_require(the_rules);
-       uint8_t key_data[KEY_MAXLEN];
        knot_db_val_t key;
        key.data = key_dname_lf(apex, key_data);
 
@@ -680,6 +678,13 @@ int insert_trivial_zone(val_zla_type_t ztype, uint32_t ttl,
        key.data -= rsp_len;
        memcpy(key.data, RULESET_DEFAULT, rsp_len);
        key.len = key_data + KEY_DNAME_END_OFFSET - (uint8_t *)key.data;
+       return key;
+}
+int insert_trivial_zone(val_zla_type_t ztype, uint32_t ttl,
+                       const knot_dname_t *apex, kr_rule_tags_t tags)
+{
+       uint8_t key_data[KEY_MAXLEN];
+       knot_db_val_t key = zla_key(apex, key_data);
 
        knot_db_val_t val = {
                .data = NULL,
index 1ce44993d00ee1a59545c040b0f00ebacfe86b46..398ca86411c99f97878530f12efabf0018b611a1 100644 (file)
@@ -32,7 +32,8 @@ knot_db_val_t local_data_key(const knot_rrset_t *rrs, uint8_t key_data[KEY_MAXLE
 /** Same as kr_rule_local_data_ins() but with precomputed `key`. */
 int local_data_ins(knot_db_val_t key, const knot_rrset_t *rrs,
                        const knot_rdataset_t *sig_rds, kr_rule_tags_t tags);
-
+/** Construct key for a zone-like-apex entry.  It's stored in `key_data`. */
+knot_db_val_t zla_key(const knot_dname_t *apex, uint8_t key_data[KEY_MAXLEN]);
 
 /** The first byte of zone-like apex value is its type. */
 typedef uint8_t val_zla_type_t;