5fc7ba3e1ac5d72239e9971e0f469dd5796738f9Andreas Gustafsson/*
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews * Copyright (C) 1999-2001, 2004-2007, 2012, 2016 Internet Systems Consortium, Inc. ("ISC")
40f53fa8d9c6a4fc38c0014495e7a42b08f52481David Lawrence *
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews * This Source Code Form is subject to the terms of the Mozilla Public
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews * License, v. 2.0. If a copy of the MPL was not distributed with this
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews * file, You can obtain one at http://mozilla.org/MPL/2.0/.
5fc7ba3e1ac5d72239e9971e0f469dd5796738f9Andreas Gustafsson */
5fc7ba3e1ac5d72239e9971e0f469dd5796738f9Andreas Gustafsson
80c70837963eb58bd41a4d53367bfd4b1c04439eAutomatic Updater/* $Id: time.h,v 1.19 2012/01/27 23:46:58 tbox Exp $ */
9c3531d72aeaad6c5f01efe6a1c82023e1379e4dDavid Lawrence
5fc7ba3e1ac5d72239e9971e0f469dd5796738f9Andreas Gustafsson#ifndef DNS_TIME_H
5fc7ba3e1ac5d72239e9971e0f469dd5796738f9Andreas Gustafsson#define DNS_TIME_H 1
5fc7ba3e1ac5d72239e9971e0f469dd5796738f9Andreas Gustafsson
29747dfe5e073a299b3681e01f5c55540f8bfed7Mark Andrews/*! \file dns/time.h */
ab023a65562e62b85a824509d829b6fad87e00b1Rob Austein
5fc7ba3e1ac5d72239e9971e0f469dd5796738f9Andreas Gustafsson/***
5fc7ba3e1ac5d72239e9971e0f469dd5796738f9Andreas Gustafsson *** Imports
5fc7ba3e1ac5d72239e9971e0f469dd5796738f9Andreas Gustafsson ***/
5fc7ba3e1ac5d72239e9971e0f469dd5796738f9Andreas Gustafsson
5fc7ba3e1ac5d72239e9971e0f469dd5796738f9Andreas Gustafsson#include <isc/buffer.h>
1a69a1a78cfaa86f3b68bbc965232b7876d4da2aDavid Lawrence#include <isc/lang.h>
5fc7ba3e1ac5d72239e9971e0f469dd5796738f9Andreas Gustafsson
5fc7ba3e1ac5d72239e9971e0f469dd5796738f9Andreas GustafssonISC_LANG_BEGINDECLS
5fc7ba3e1ac5d72239e9971e0f469dd5796738f9Andreas Gustafsson
5fc7ba3e1ac5d72239e9971e0f469dd5796738f9Andreas Gustafsson/***
5fc7ba3e1ac5d72239e9971e0f469dd5796738f9Andreas Gustafsson *** Functions
5fc7ba3e1ac5d72239e9971e0f469dd5796738f9Andreas Gustafsson ***/
5fc7ba3e1ac5d72239e9971e0f469dd5796738f9Andreas Gustafsson
1a69a1a78cfaa86f3b68bbc965232b7876d4da2aDavid Lawrenceisc_result_t
8f674b13e8e7cd6309751e4971e1b00d04a418b8Brian Wellingtondns_time64_fromtext(const char *source, isc_int64_t *target);
ab023a65562e62b85a824509d829b6fad87e00b1Rob Austein/*%<
5fc7ba3e1ac5d72239e9971e0f469dd5796738f9Andreas Gustafsson * Convert a date and time in YYYYMMDDHHMMSS text format at 'source'
40f53fa8d9c6a4fc38c0014495e7a42b08f52481David Lawrence * into to a 64-bit count of seconds since Jan 1 1970 0:00 GMT.
5fc7ba3e1ac5d72239e9971e0f469dd5796738f9Andreas Gustafsson * Store the count at 'target'.
40f53fa8d9c6a4fc38c0014495e7a42b08f52481David Lawrence */
5fc7ba3e1ac5d72239e9971e0f469dd5796738f9Andreas Gustafsson
1a69a1a78cfaa86f3b68bbc965232b7876d4da2aDavid Lawrenceisc_result_t
8f674b13e8e7cd6309751e4971e1b00d04a418b8Brian Wellingtondns_time32_fromtext(const char *source, isc_uint32_t *target);
ab023a65562e62b85a824509d829b6fad87e00b1Rob Austein/*%<
5fc7ba3e1ac5d72239e9971e0f469dd5796738f9Andreas Gustafsson * Like dns_time64_fromtext, but returns the second count modulo 2^32
5fc7ba3e1ac5d72239e9971e0f469dd5796738f9Andreas Gustafsson * as per RFC2535.
5fc7ba3e1ac5d72239e9971e0f469dd5796738f9Andreas Gustafsson */
40f53fa8d9c6a4fc38c0014495e7a42b08f52481David Lawrence
5fc7ba3e1ac5d72239e9971e0f469dd5796738f9Andreas Gustafsson
1a69a1a78cfaa86f3b68bbc965232b7876d4da2aDavid Lawrenceisc_result_t
1a69a1a78cfaa86f3b68bbc965232b7876d4da2aDavid Lawrencedns_time64_totext(isc_int64_t value, isc_buffer_t *target);
ab023a65562e62b85a824509d829b6fad87e00b1Rob Austein/*%<
40f53fa8d9c6a4fc38c0014495e7a42b08f52481David Lawrence * Convert a 64-bit count of seconds since Jan 1 1970 0:00 GMT into
5fc7ba3e1ac5d72239e9971e0f469dd5796738f9Andreas Gustafsson * a YYYYMMDDHHMMSS text representation and append it to 'target'.
5fc7ba3e1ac5d72239e9971e0f469dd5796738f9Andreas Gustafsson */
5fc7ba3e1ac5d72239e9971e0f469dd5796738f9Andreas Gustafsson
1a69a1a78cfaa86f3b68bbc965232b7876d4da2aDavid Lawrenceisc_result_t
1a69a1a78cfaa86f3b68bbc965232b7876d4da2aDavid Lawrencedns_time32_totext(isc_uint32_t value, isc_buffer_t *target);
ab023a65562e62b85a824509d829b6fad87e00b1Rob Austein/*%<
5fc7ba3e1ac5d72239e9971e0f469dd5796738f9Andreas Gustafsson * Like dns_time64_totext, but for a 32-bit cyclic time value.
5fc7ba3e1ac5d72239e9971e0f469dd5796738f9Andreas Gustafsson * Of those dates whose counts of seconds since Jan 1 1970 0:00 GMT
5fc7ba3e1ac5d72239e9971e0f469dd5796738f9Andreas Gustafsson * are congruent with 'value' modulo 2^32, the one closest to the
5fc7ba3e1ac5d72239e9971e0f469dd5796738f9Andreas Gustafsson * current date is chosen.
40f53fa8d9c6a4fc38c0014495e7a42b08f52481David Lawrence */
5fc7ba3e1ac5d72239e9971e0f469dd5796738f9Andreas Gustafsson
bc298cd0f77dce2d452efd3e3d3153e2a9a17dbfMark Andrewsisc_int64_t
bc298cd0f77dce2d452efd3e3d3153e2a9a17dbfMark Andrewsdns_time64_from32(isc_uint32_t value);
bc298cd0f77dce2d452efd3e3d3153e2a9a17dbfMark Andrews/*%<
80c70837963eb58bd41a4d53367bfd4b1c04439eAutomatic Updater * Covert a 32-bit cyclic time value into a 64 bit time stamp.
bc298cd0f77dce2d452efd3e3d3153e2a9a17dbfMark Andrews */
bc298cd0f77dce2d452efd3e3d3153e2a9a17dbfMark Andrews
5fc7ba3e1ac5d72239e9971e0f469dd5796738f9Andreas GustafssonISC_LANG_ENDDECLS
5fc7ba3e1ac5d72239e9971e0f469dd5796738f9Andreas Gustafsson
4be63b1fd8c18dbeca1648d6cf22fa14f057a469David Lawrence#endif /* DNS_TIME_H */