Source code for dhcpkit.ipv6.server.extensions.ntp

"""
Handlers for the options defined in dhcpkit.ipv6.extensions.ntp
"""
from dhcpkit.ipv6.extensions.ntp import NTPServersOption, NTPSubOption
from dhcpkit.ipv6.server.handlers.basic import SimpleOptionHandler
from typing import Iterable


[docs]class NTPServersOptionHandler(SimpleOptionHandler): """ Handler for putting NTPServersOption in responses """ def __init__(self, sub_options: Iterable[NTPSubOption], always_send: bool = False): option = NTPServersOption(options=sub_options) option.validate() super().__init__(option, always_send=always_send) def __str__(self): return "{} with {}".format(self.__class__.__name__, ', '.join([option.value for option in self.option.options]))
[docs] def combine(self, existing_options: Iterable[NTPServersOption]) -> NTPServersOption: """ Combine multiple options into one. :param existing_options: The existing options to include NTP servers from :return: The combined option """ sub_options = [] # Add from existing options first for option in existing_options: for sub_option in option.options: if sub_option not in sub_options: sub_options.append(sub_option) # Then add our own for sub_option in self.option.dns_servers: if sub_option not in sub_options: sub_options.append(sub_option) # And return a new option with the combined addresses return NTPServersOption(options=sub_options)