#pragma once

#include <experimental/filesystem>

namespace phosphor
{
namespace network
{
namespace dns
{
namespace updater
{

namespace fs = std::experimental::filesystem;

constexpr auto RESOLV_CONF = "/etc/resolv.conf";

/** @brief Reads DNS entries supplied by DHCP and updates specified file
 *
 *  @param[in] inFile  - File having DNS entries supplied by DHCP
 *  @param[in] outFile - File to write the nameserver entries to
 */
void updateDNSEntries(const fs::path& inFile,
                      const fs::path& outFile);

/** @brief User callback handler invoked by inotify watcher
 *
 *  Needed to enable production and test code so that the right
 *  callback functions could be implemented
 *
 *  @param[in] inFile - File having DNS entries supplied by DHCP
 */
inline void processDNSEntries(const fs::path& inFile)
{
    return updateDNSEntries(inFile, RESOLV_CONF);
}

} // namepsace updater
} // namepsace dns
} // namespace network
} // namespace phosphor
