17b5038d7SDag-Erling Smørgrav /* 27b5038d7SDag-Erling Smørgrav * rr_functions.h 37b5038d7SDag-Erling Smørgrav * 47b5038d7SDag-Erling Smørgrav * the .h file with defs for the per rr 57b5038d7SDag-Erling Smørgrav * functions 67b5038d7SDag-Erling Smørgrav * 77b5038d7SDag-Erling Smørgrav * a Net::DNS like library for C 87b5038d7SDag-Erling Smørgrav * 97b5038d7SDag-Erling Smørgrav * (c) NLnet Labs, 2005-2006 107b5038d7SDag-Erling Smørgrav * 117b5038d7SDag-Erling Smørgrav * See the file LICENSE for the license 127b5038d7SDag-Erling Smørgrav */ 137b5038d7SDag-Erling Smørgrav #ifndef LDNS_RR_FUNCTIONS_H 147b5038d7SDag-Erling Smørgrav #define LDNS_RR_FUNCTIONS_H 157b5038d7SDag-Erling Smørgrav 167b5038d7SDag-Erling Smørgrav #ifdef __cplusplus 177b5038d7SDag-Erling Smørgrav extern "C" { 187b5038d7SDag-Erling Smørgrav #endif 197b5038d7SDag-Erling Smørgrav 207b5038d7SDag-Erling Smørgrav /** 217b5038d7SDag-Erling Smørgrav * \file 227b5038d7SDag-Erling Smørgrav * 237b5038d7SDag-Erling Smørgrav * Defines some extra convenience functions for ldns_rr structures 247b5038d7SDag-Erling Smørgrav */ 257b5038d7SDag-Erling Smørgrav 267b5038d7SDag-Erling Smørgrav /* A / AAAA */ 277b5038d7SDag-Erling Smørgrav /** 287b5038d7SDag-Erling Smørgrav * returns the address of a LDNS_RR_TYPE_A rr 297b5038d7SDag-Erling Smørgrav * \param[in] r the resource record 307b5038d7SDag-Erling Smørgrav * \return a ldns_rdf* with the address or NULL on failure 317b5038d7SDag-Erling Smørgrav */ 327b5038d7SDag-Erling Smørgrav ldns_rdf* ldns_rr_a_address(const ldns_rr *r); 337b5038d7SDag-Erling Smørgrav 347b5038d7SDag-Erling Smørgrav /** 357b5038d7SDag-Erling Smørgrav * sets the address of a LDNS_RR_TYPE_A rr 367b5038d7SDag-Erling Smørgrav * \param[in] r the rr to use 377b5038d7SDag-Erling Smørgrav * \param[in] f the address to set 387b5038d7SDag-Erling Smørgrav * \return true on success, false otherwise 397b5038d7SDag-Erling Smørgrav */ 407b5038d7SDag-Erling Smørgrav bool ldns_rr_a_set_address(ldns_rr *r, ldns_rdf *f); 417b5038d7SDag-Erling Smørgrav 427b5038d7SDag-Erling Smørgrav /* NS */ 437b5038d7SDag-Erling Smørgrav /** 447b5038d7SDag-Erling Smørgrav * returns the name of a LDNS_RR_TYPE_NS rr 457b5038d7SDag-Erling Smørgrav * \param[in] r the resource record 467b5038d7SDag-Erling Smørgrav * \return a ldns_rdf* with the name or NULL on failure 477b5038d7SDag-Erling Smørgrav */ 487b5038d7SDag-Erling Smørgrav ldns_rdf* ldns_rr_ns_nsdname(const ldns_rr *r); 497b5038d7SDag-Erling Smørgrav 507b5038d7SDag-Erling Smørgrav /* MX */ 517b5038d7SDag-Erling Smørgrav /** 527b5038d7SDag-Erling Smørgrav * returns the mx pref. of a LDNS_RR_TYPE_MX rr 537b5038d7SDag-Erling Smørgrav * \param[in] r the resource record 547b5038d7SDag-Erling Smørgrav * \return a ldns_rdf* with the preference or NULL on failure 557b5038d7SDag-Erling Smørgrav */ 567b5038d7SDag-Erling Smørgrav ldns_rdf* ldns_rr_mx_preference(const ldns_rr *r); 577b5038d7SDag-Erling Smørgrav /** 587b5038d7SDag-Erling Smørgrav * returns the mx host of a LDNS_RR_TYPE_MX rr 597b5038d7SDag-Erling Smørgrav * \param[in] r the resource record 607b5038d7SDag-Erling Smørgrav * \return a ldns_rdf* with the name of the MX host or NULL on failure 617b5038d7SDag-Erling Smørgrav */ 627b5038d7SDag-Erling Smørgrav ldns_rdf* ldns_rr_mx_exchange(const ldns_rr *r); 637b5038d7SDag-Erling Smørgrav 647b5038d7SDag-Erling Smørgrav /* RRSIG */ 657b5038d7SDag-Erling Smørgrav /** 667b5038d7SDag-Erling Smørgrav * returns the type covered of a LDNS_RR_TYPE_RRSIG rr 677b5038d7SDag-Erling Smørgrav * \param[in] r the resource record 687b5038d7SDag-Erling Smørgrav * \return a ldns_rdf* with the type covered or NULL on failure 697b5038d7SDag-Erling Smørgrav */ 707b5038d7SDag-Erling Smørgrav ldns_rdf* ldns_rr_rrsig_typecovered(const ldns_rr *r); 717b5038d7SDag-Erling Smørgrav /** 727b5038d7SDag-Erling Smørgrav * sets the typecovered of a LDNS_RR_TYPE_RRSIG rr 737b5038d7SDag-Erling Smørgrav * \param[in] r the rr to use 747b5038d7SDag-Erling Smørgrav * \param[in] f the typecovered to set 757b5038d7SDag-Erling Smørgrav * \return true on success, false otherwise 767b5038d7SDag-Erling Smørgrav */ 777b5038d7SDag-Erling Smørgrav bool ldns_rr_rrsig_set_typecovered(ldns_rr *r, ldns_rdf *f); 787b5038d7SDag-Erling Smørgrav /** 797b5038d7SDag-Erling Smørgrav * returns the algorithm of a LDNS_RR_TYPE_RRSIG RR 807b5038d7SDag-Erling Smørgrav * \param[in] r the resource record 817b5038d7SDag-Erling Smørgrav * \return a ldns_rdf* with the algorithm or NULL on failure 827b5038d7SDag-Erling Smørgrav */ 837b5038d7SDag-Erling Smørgrav ldns_rdf* ldns_rr_rrsig_algorithm(const ldns_rr *r); 847b5038d7SDag-Erling Smørgrav /** 857b5038d7SDag-Erling Smørgrav * sets the algorithm of a LDNS_RR_TYPE_RRSIG rr 867b5038d7SDag-Erling Smørgrav * \param[in] r the rr to use 877b5038d7SDag-Erling Smørgrav * \param[in] f the algorithm to set 887b5038d7SDag-Erling Smørgrav * \return true on success, false otherwise 897b5038d7SDag-Erling Smørgrav */ 907b5038d7SDag-Erling Smørgrav bool ldns_rr_rrsig_set_algorithm(ldns_rr *r, ldns_rdf *f); 917b5038d7SDag-Erling Smørgrav /** 927b5038d7SDag-Erling Smørgrav * returns the number of labels of a LDNS_RR_TYPE_RRSIG RR 937b5038d7SDag-Erling Smørgrav * \param[in] r the resource record 947b5038d7SDag-Erling Smørgrav * \return a ldns_rdf* with the number of labels or NULL on failure 957b5038d7SDag-Erling Smørgrav */ 967b5038d7SDag-Erling Smørgrav ldns_rdf *ldns_rr_rrsig_labels(const ldns_rr *r); 977b5038d7SDag-Erling Smørgrav /** 987b5038d7SDag-Erling Smørgrav * sets the number of labels of a LDNS_RR_TYPE_RRSIG rr 997b5038d7SDag-Erling Smørgrav * \param[in] r the rr to use 1007b5038d7SDag-Erling Smørgrav * \param[in] f the number of labels to set 1017b5038d7SDag-Erling Smørgrav * \return true on success, false otherwise 1027b5038d7SDag-Erling Smørgrav */ 1037b5038d7SDag-Erling Smørgrav bool ldns_rr_rrsig_set_labels(ldns_rr *r, ldns_rdf *f); 1047b5038d7SDag-Erling Smørgrav /** 1057b5038d7SDag-Erling Smørgrav * returns the original TTL of a LDNS_RR_TYPE_RRSIG RR 1067b5038d7SDag-Erling Smørgrav * \param[in] r the resource record 1077b5038d7SDag-Erling Smørgrav * \return a ldns_rdf* with the original TTL or NULL on failure 1087b5038d7SDag-Erling Smørgrav */ 1097b5038d7SDag-Erling Smørgrav ldns_rdf* ldns_rr_rrsig_origttl(const ldns_rr *r); 1107b5038d7SDag-Erling Smørgrav /** 1117b5038d7SDag-Erling Smørgrav * sets the original TTL of a LDNS_RR_TYPE_RRSIG rr 1127b5038d7SDag-Erling Smørgrav * \param[in] r the rr to use 1137b5038d7SDag-Erling Smørgrav * \param[in] f the original TTL to set 1147b5038d7SDag-Erling Smørgrav * \return true on success, false otherwise 1157b5038d7SDag-Erling Smørgrav */ 1167b5038d7SDag-Erling Smørgrav bool ldns_rr_rrsig_set_origttl(ldns_rr *r, ldns_rdf *f); 1177b5038d7SDag-Erling Smørgrav /** 1187b5038d7SDag-Erling Smørgrav * returns the expiration time of a LDNS_RR_TYPE_RRSIG RR 1197b5038d7SDag-Erling Smørgrav * \param[in] r the resource record 1207b5038d7SDag-Erling Smørgrav * \return a ldns_rdf* with the expiration time or NULL on failure 1217b5038d7SDag-Erling Smørgrav */ 1227b5038d7SDag-Erling Smørgrav ldns_rdf* ldns_rr_rrsig_expiration(const ldns_rr *r); 1237b5038d7SDag-Erling Smørgrav /** 124*5afab0e5SDag-Erling Smørgrav * sets the expiration date of a LDNS_RR_TYPE_RRSIG rr 1257b5038d7SDag-Erling Smørgrav * \param[in] r the rr to use 126*5afab0e5SDag-Erling Smørgrav * \param[in] f the expiration date to set 1277b5038d7SDag-Erling Smørgrav * \return true on success, false otherwise 1287b5038d7SDag-Erling Smørgrav */ 1297b5038d7SDag-Erling Smørgrav bool ldns_rr_rrsig_set_expiration(ldns_rr *r, ldns_rdf *f); 1307b5038d7SDag-Erling Smørgrav /** 1317b5038d7SDag-Erling Smørgrav * returns the inception time of a LDNS_RR_TYPE_RRSIG RR 1327b5038d7SDag-Erling Smørgrav * \param[in] r the resource record 1337b5038d7SDag-Erling Smørgrav * \return a ldns_rdf* with the inception time or NULL on failure 1347b5038d7SDag-Erling Smørgrav */ 1357b5038d7SDag-Erling Smørgrav ldns_rdf* ldns_rr_rrsig_inception(const ldns_rr *r); 1367b5038d7SDag-Erling Smørgrav /** 1377b5038d7SDag-Erling Smørgrav * sets the inception date of a LDNS_RR_TYPE_RRSIG rr 1387b5038d7SDag-Erling Smørgrav * \param[in] r the rr to use 1397b5038d7SDag-Erling Smørgrav * \param[in] f the inception date to set 1407b5038d7SDag-Erling Smørgrav * \return true on success, false otherwise 1417b5038d7SDag-Erling Smørgrav */ 1427b5038d7SDag-Erling Smørgrav bool ldns_rr_rrsig_set_inception(ldns_rr *r, ldns_rdf *f); 1437b5038d7SDag-Erling Smørgrav /** 1447b5038d7SDag-Erling Smørgrav * returns the keytag of a LDNS_RR_TYPE_RRSIG RR 1457b5038d7SDag-Erling Smørgrav * \param[in] r the resource record 1467b5038d7SDag-Erling Smørgrav * \return a ldns_rdf* with the keytag or NULL on failure 1477b5038d7SDag-Erling Smørgrav */ 1487b5038d7SDag-Erling Smørgrav ldns_rdf* ldns_rr_rrsig_keytag(const ldns_rr *r); 1497b5038d7SDag-Erling Smørgrav /** 1507b5038d7SDag-Erling Smørgrav * sets the keytag of a LDNS_RR_TYPE_RRSIG rr 1517b5038d7SDag-Erling Smørgrav * \param[in] r the rr to use 1527b5038d7SDag-Erling Smørgrav * \param[in] f the keytag to set 1537b5038d7SDag-Erling Smørgrav * \return true on success, false otherwise 1547b5038d7SDag-Erling Smørgrav */ 1557b5038d7SDag-Erling Smørgrav bool ldns_rr_rrsig_set_keytag(ldns_rr *r, ldns_rdf *f); 1567b5038d7SDag-Erling Smørgrav /** 1577b5038d7SDag-Erling Smørgrav * returns the signers name of a LDNS_RR_TYPE_RRSIG RR 1587b5038d7SDag-Erling Smørgrav * \param[in] r the resource record 1597b5038d7SDag-Erling Smørgrav * \return a ldns_rdf* with the signers name or NULL on failure 1607b5038d7SDag-Erling Smørgrav */ 1617b5038d7SDag-Erling Smørgrav ldns_rdf* ldns_rr_rrsig_signame(const ldns_rr *r); 1627b5038d7SDag-Erling Smørgrav /** 1637b5038d7SDag-Erling Smørgrav * sets the signers name of a LDNS_RR_TYPE_RRSIG rr 1647b5038d7SDag-Erling Smørgrav * \param[in] r the rr to use 1657b5038d7SDag-Erling Smørgrav * \param[in] f the signers name to set 1667b5038d7SDag-Erling Smørgrav * \return true on success, false otherwise 1677b5038d7SDag-Erling Smørgrav */ 1687b5038d7SDag-Erling Smørgrav bool ldns_rr_rrsig_set_signame(ldns_rr *r, ldns_rdf *f); 1697b5038d7SDag-Erling Smørgrav /** 1707b5038d7SDag-Erling Smørgrav * returns the signature data of a LDNS_RR_TYPE_RRSIG RR 1717b5038d7SDag-Erling Smørgrav * \param[in] r the resource record 1727b5038d7SDag-Erling Smørgrav * \return a ldns_rdf* with the signature data or NULL on failure 1737b5038d7SDag-Erling Smørgrav */ 1747b5038d7SDag-Erling Smørgrav ldns_rdf* ldns_rr_rrsig_sig(const ldns_rr *r); 1757b5038d7SDag-Erling Smørgrav /** 1767b5038d7SDag-Erling Smørgrav * sets the signature data of a LDNS_RR_TYPE_RRSIG rr 1777b5038d7SDag-Erling Smørgrav * \param[in] r the rr to use 1787b5038d7SDag-Erling Smørgrav * \param[in] f the signature data to set 1797b5038d7SDag-Erling Smørgrav * \return true on success, false otherwise 1807b5038d7SDag-Erling Smørgrav */ 1817b5038d7SDag-Erling Smørgrav bool ldns_rr_rrsig_set_sig(ldns_rr *r, ldns_rdf *f); 1827b5038d7SDag-Erling Smørgrav 1837b5038d7SDag-Erling Smørgrav /* DNSKEY */ 1847b5038d7SDag-Erling Smørgrav /** 1857b5038d7SDag-Erling Smørgrav * returns the flags of a LDNS_RR_TYPE_DNSKEY rr 1867b5038d7SDag-Erling Smørgrav * \param[in] r the resource record 1877b5038d7SDag-Erling Smørgrav * \return a ldns_rdf* with the flags or NULL on failure 1887b5038d7SDag-Erling Smørgrav */ 1897b5038d7SDag-Erling Smørgrav ldns_rdf* ldns_rr_dnskey_flags(const ldns_rr *r); 1907b5038d7SDag-Erling Smørgrav /** 1917b5038d7SDag-Erling Smørgrav * sets the flags of a LDNS_RR_TYPE_DNSKEY rr 1927b5038d7SDag-Erling Smørgrav * \param[in] r the rr to use 1937b5038d7SDag-Erling Smørgrav * \param[in] f the flags to set 1947b5038d7SDag-Erling Smørgrav * \return true on success, false otherwise 1957b5038d7SDag-Erling Smørgrav */ 1967b5038d7SDag-Erling Smørgrav bool ldns_rr_dnskey_set_flags(ldns_rr *r, ldns_rdf *f); 1977b5038d7SDag-Erling Smørgrav /** 1987b5038d7SDag-Erling Smørgrav * returns the protocol of a LDNS_RR_TYPE_DNSKEY rr 1997b5038d7SDag-Erling Smørgrav * \param[in] r the resource record 2007b5038d7SDag-Erling Smørgrav * \return a ldns_rdf* with the protocol or NULL on failure 2017b5038d7SDag-Erling Smørgrav */ 2027b5038d7SDag-Erling Smørgrav ldns_rdf* ldns_rr_dnskey_protocol(const ldns_rr *r); 2037b5038d7SDag-Erling Smørgrav /** 2047b5038d7SDag-Erling Smørgrav * sets the protocol of a LDNS_RR_TYPE_DNSKEY rr 2057b5038d7SDag-Erling Smørgrav * \param[in] r the rr to use 2067b5038d7SDag-Erling Smørgrav * \param[in] f the protocol to set 2077b5038d7SDag-Erling Smørgrav * \return true on success, false otherwise 2087b5038d7SDag-Erling Smørgrav */ 2097b5038d7SDag-Erling Smørgrav bool ldns_rr_dnskey_set_protocol(ldns_rr *r, ldns_rdf *f); 2107b5038d7SDag-Erling Smørgrav /** 2117b5038d7SDag-Erling Smørgrav * returns the algorithm of a LDNS_RR_TYPE_DNSKEY rr 2127b5038d7SDag-Erling Smørgrav * \param[in] r the resource record 2137b5038d7SDag-Erling Smørgrav * \return a ldns_rdf* with the algorithm or NULL on failure 2147b5038d7SDag-Erling Smørgrav */ 2157b5038d7SDag-Erling Smørgrav ldns_rdf* ldns_rr_dnskey_algorithm(const ldns_rr *r); 2167b5038d7SDag-Erling Smørgrav /** 2177b5038d7SDag-Erling Smørgrav * sets the algorithm of a LDNS_RR_TYPE_DNSKEY rr 2187b5038d7SDag-Erling Smørgrav * \param[in] r the rr to use 2197b5038d7SDag-Erling Smørgrav * \param[in] f the algorithm to set 2207b5038d7SDag-Erling Smørgrav * \return true on success, false otherwise 2217b5038d7SDag-Erling Smørgrav */ 2227b5038d7SDag-Erling Smørgrav bool ldns_rr_dnskey_set_algorithm(ldns_rr *r, ldns_rdf *f); 2237b5038d7SDag-Erling Smørgrav /** 2247b5038d7SDag-Erling Smørgrav * returns the key data of a LDNS_RR_TYPE_DNSKEY rr 2257b5038d7SDag-Erling Smørgrav * \param[in] r the resource record 2267b5038d7SDag-Erling Smørgrav * \return a ldns_rdf* with the key data or NULL on failure 2277b5038d7SDag-Erling Smørgrav */ 2287b5038d7SDag-Erling Smørgrav ldns_rdf* ldns_rr_dnskey_key(const ldns_rr *r); 2297b5038d7SDag-Erling Smørgrav /** 2307b5038d7SDag-Erling Smørgrav * sets the key data of a LDNS_RR_TYPE_DNSKEY rr 2317b5038d7SDag-Erling Smørgrav * \param[in] r the rr to use 2327b5038d7SDag-Erling Smørgrav * \param[in] f the key data to set 2337b5038d7SDag-Erling Smørgrav * \return true on success, false otherwise 2347b5038d7SDag-Erling Smørgrav */ 2357b5038d7SDag-Erling Smørgrav bool ldns_rr_dnskey_set_key(ldns_rr *r, ldns_rdf *f); 2367b5038d7SDag-Erling Smørgrav 2377b5038d7SDag-Erling Smørgrav /** 2387b5038d7SDag-Erling Smørgrav * get the length of the keydata in bits 2397b5038d7SDag-Erling Smørgrav * \param[in] keydata the raw key data 2407b5038d7SDag-Erling Smørgrav * \param[in] len the length of the keydata 2417b5038d7SDag-Erling Smørgrav * \param[in] alg the cryptographic algorithm this is a key for 2427b5038d7SDag-Erling Smørgrav * \return the keysize in bits, or 0 on error 2437b5038d7SDag-Erling Smørgrav */ 2447b5038d7SDag-Erling Smørgrav size_t ldns_rr_dnskey_key_size_raw(const unsigned char *keydata, 2457b5038d7SDag-Erling Smørgrav const size_t len, 2467b5038d7SDag-Erling Smørgrav const ldns_algorithm alg); 2477b5038d7SDag-Erling Smørgrav 2487b5038d7SDag-Erling Smørgrav /** 2497b5038d7SDag-Erling Smørgrav * get the length of the keydata in bits 2507b5038d7SDag-Erling Smørgrav * \param[in] key the key rr to use 2517b5038d7SDag-Erling Smørgrav * \return the keysize in bits 2527b5038d7SDag-Erling Smørgrav */ 2537b5038d7SDag-Erling Smørgrav size_t ldns_rr_dnskey_key_size(const ldns_rr *key); 2547b5038d7SDag-Erling Smørgrav 2557b5038d7SDag-Erling Smørgrav /** 2567b5038d7SDag-Erling Smørgrav * The type of function to be passed to ldns_rr_soa_increment_func, 2577b5038d7SDag-Erling Smørgrav * ldns_rr_soa_increment_func_data or ldns_rr_soa_increment_int. 2587b5038d7SDag-Erling Smørgrav * The function will be called with as the first argument the current serial 2597b5038d7SDag-Erling Smørgrav * number of the SOA RR to be updated, and as the second argument a value 2607b5038d7SDag-Erling Smørgrav * given when calling ldns_rr_soa_increment_func_data or 2617b5038d7SDag-Erling Smørgrav * ldns_rr_soa_increment_int. With ldns_rr_soa_increment_int the pointer 2627b5038d7SDag-Erling Smørgrav * value holds the integer value passed to ldns_rr_soa_increment_int, 2637b5038d7SDag-Erling Smørgrav * and it should be cast to intptr_t to be used as an integer by the 2647b5038d7SDag-Erling Smørgrav * serial modifying function. 2657b5038d7SDag-Erling Smørgrav */ 2667b5038d7SDag-Erling Smørgrav typedef uint32_t (*ldns_soa_serial_increment_func_t)(uint32_t, void*); 2677b5038d7SDag-Erling Smørgrav 2687b5038d7SDag-Erling Smørgrav /** 2697b5038d7SDag-Erling Smørgrav * Function to be used with dns_rr_soa_increment_func_int, to set the soa 2707b5038d7SDag-Erling Smørgrav * serial number. 2717b5038d7SDag-Erling Smørgrav * \param[in] unused the (unused) current serial number. 2727b5038d7SDag-Erling Smørgrav * \param[in] data the serial number to be set. 2737b5038d7SDag-Erling Smørgrav */ 2747b5038d7SDag-Erling Smørgrav uint32_t ldns_soa_serial_identity(uint32_t unused, void *data); 2757b5038d7SDag-Erling Smørgrav 2767b5038d7SDag-Erling Smørgrav /** 2777b5038d7SDag-Erling Smørgrav * Function to be used with dns_rr_soa_increment_func, to increment the soa 2787b5038d7SDag-Erling Smørgrav * serial number with one. 2797b5038d7SDag-Erling Smørgrav * \param[in] s the current serial number. 2807b5038d7SDag-Erling Smørgrav * \param[in] unused unused. 2817b5038d7SDag-Erling Smørgrav */ 2827b5038d7SDag-Erling Smørgrav uint32_t ldns_soa_serial_increment(uint32_t s, void *unused); 2837b5038d7SDag-Erling Smørgrav 2847b5038d7SDag-Erling Smørgrav /** 2857b5038d7SDag-Erling Smørgrav * Function to be used with dns_rr_soa_increment_func_int, to increment the soa 2867b5038d7SDag-Erling Smørgrav * serial number with a certain amount. 2877b5038d7SDag-Erling Smørgrav * \param[in] s the current serial number. 2887b5038d7SDag-Erling Smørgrav * \param[in] data the amount to add to the current serial number. 2897b5038d7SDag-Erling Smørgrav */ 2907b5038d7SDag-Erling Smørgrav uint32_t ldns_soa_serial_increment_by(uint32_t s, void *data); 2917b5038d7SDag-Erling Smørgrav 2927b5038d7SDag-Erling Smørgrav /** 2937b5038d7SDag-Erling Smørgrav * Function to be used with ldns_rr_soa_increment_func or 2947b5038d7SDag-Erling Smørgrav * ldns_rr_soa_increment_func_int to set the soa serial to the number of 2957b5038d7SDag-Erling Smørgrav * seconds since unix epoch (1-1-1970 00:00). 2967b5038d7SDag-Erling Smørgrav * When data is given (i.e. the function is called via 2977b5038d7SDag-Erling Smørgrav * ldns_rr_soa_increment_func_int), it is used as the current time. 2987b5038d7SDag-Erling Smørgrav * When the resulting serial number is smaller than the current serial number, 2997b5038d7SDag-Erling Smørgrav * the current serial number is increased by one. 3007b5038d7SDag-Erling Smørgrav * \param[in] s the current serial number. 3017b5038d7SDag-Erling Smørgrav * \param[in] data the time in seconds since 1-1-1970 00:00 3027b5038d7SDag-Erling Smørgrav */ 3037b5038d7SDag-Erling Smørgrav uint32_t ldns_soa_serial_unixtime(uint32_t s, void *data); 3047b5038d7SDag-Erling Smørgrav 3057b5038d7SDag-Erling Smørgrav /** 3067b5038d7SDag-Erling Smørgrav * Function to be used with ldns_rr_soa_increment_func or 3077b5038d7SDag-Erling Smørgrav * ldns_rr_soa_increment_func_int to set the soa serial to the current date 3087b5038d7SDag-Erling Smørgrav * succeeded by a two digit iteration (datecounter). 3097b5038d7SDag-Erling Smørgrav * When data is given (i.e. the function is called via 3107b5038d7SDag-Erling Smørgrav * ldns_rr_soa_increment_func_int), it is used as the current time. 3117b5038d7SDag-Erling Smørgrav * When the resulting serial number is smaller than the current serial number, 3127b5038d7SDag-Erling Smørgrav * the current serial number is increased by one. 3137b5038d7SDag-Erling Smørgrav * \param[in] s the current serial number. 3147b5038d7SDag-Erling Smørgrav * \param[in] data the time in seconds since 1-1-1970 00:00 3157b5038d7SDag-Erling Smørgrav */ 3167b5038d7SDag-Erling Smørgrav uint32_t ldns_soa_serial_datecounter(uint32_t s, void *data); 3177b5038d7SDag-Erling Smørgrav 3187b5038d7SDag-Erling Smørgrav /** 3197b5038d7SDag-Erling Smørgrav * Increment the serial number of the given SOA by one. 3207b5038d7SDag-Erling Smørgrav * \param[in] soa The soa rr to be incremented 3217b5038d7SDag-Erling Smørgrav */ 3227b5038d7SDag-Erling Smørgrav void ldns_rr_soa_increment( 3237b5038d7SDag-Erling Smørgrav ldns_rr *soa); 3247b5038d7SDag-Erling Smørgrav 3257b5038d7SDag-Erling Smørgrav /** 3267b5038d7SDag-Erling Smørgrav * Increment the serial number of the given SOA with the given function. 3277b5038d7SDag-Erling Smørgrav * Included functions to be used here are: ldns_rr_soa_increment, 3287b5038d7SDag-Erling Smørgrav * ldns_soa_serial_unixtime and ldns_soa_serial_datecounter. 3297b5038d7SDag-Erling Smørgrav * \param[in] soa The soa rr to be incremented 3307b5038d7SDag-Erling Smørgrav * \param[in] f the function to use to increment the soa rr. 3317b5038d7SDag-Erling Smørgrav */ 3327b5038d7SDag-Erling Smørgrav void ldns_rr_soa_increment_func( 3337b5038d7SDag-Erling Smørgrav ldns_rr *soa, ldns_soa_serial_increment_func_t f); 3347b5038d7SDag-Erling Smørgrav 3357b5038d7SDag-Erling Smørgrav /** 3367b5038d7SDag-Erling Smørgrav * Increment the serial number of the given SOA with the given function 3377b5038d7SDag-Erling Smørgrav * passing it the given data argument. 3387b5038d7SDag-Erling Smørgrav * \param[in] soa The soa rr to be incremented 3397b5038d7SDag-Erling Smørgrav * \param[in] f the function to use to increment the soa rr. 3407b5038d7SDag-Erling Smørgrav * \param[in] data this argument will be passed to f as the second argument. 3417b5038d7SDag-Erling Smørgrav */ 3427b5038d7SDag-Erling Smørgrav void ldns_rr_soa_increment_func_data( 3437b5038d7SDag-Erling Smørgrav ldns_rr *soa, ldns_soa_serial_increment_func_t f, void *data); 3447b5038d7SDag-Erling Smørgrav 3457b5038d7SDag-Erling Smørgrav /** 3467b5038d7SDag-Erling Smørgrav * Increment the serial number of the given SOA with the given function 3477b5038d7SDag-Erling Smørgrav * using data as an argument for the function. 3487b5038d7SDag-Erling Smørgrav * Included functions to be used here are: ldns_soa_serial_identity, 3497b5038d7SDag-Erling Smørgrav * ldns_rr_soa_increment_by, ldns_soa_serial_unixtime and 3507b5038d7SDag-Erling Smørgrav * ldns_soa_serial_datecounter. 3517b5038d7SDag-Erling Smørgrav * \param[in] soa The soa rr to be incremented 3527b5038d7SDag-Erling Smørgrav * \param[in] f the function to use to increment the soa rr. 3537b5038d7SDag-Erling Smørgrav * \param[in] data this argument will be passed to f as the second argument 3547b5038d7SDag-Erling Smørgrav * (by casting it to void*). 3557b5038d7SDag-Erling Smørgrav */ 3567b5038d7SDag-Erling Smørgrav void ldns_rr_soa_increment_func_int( 3577b5038d7SDag-Erling Smørgrav ldns_rr *soa, ldns_soa_serial_increment_func_t f, int data); 3587b5038d7SDag-Erling Smørgrav 3597b5038d7SDag-Erling Smørgrav #ifdef __cplusplus 3607b5038d7SDag-Erling Smørgrav } 3617b5038d7SDag-Erling Smørgrav #endif 3627b5038d7SDag-Erling Smørgrav 3637b5038d7SDag-Erling Smørgrav #endif /* LDNS_RR_FUNCTIONS_H */ 364