]> git.ipfire.org Git - thirdparty/systemd.git/blame - src/timesync/timesyncd-manager.h
mailmap: add entry for John Paul Adrian Glaubitz (#6015)
[thirdparty/systemd.git] / src / timesync / timesyncd-manager.h
CommitLineData
84e51726
LP
1#pragma once
2
e8af6973
LP
3/***
4 This file is part of systemd.
5
6 Copyright 2014 Kay Sievers, Lennart Poettering
7
8 systemd is free software; you can redistribute it and/or modify it
9 under the terms of the GNU Lesser General Public License as published by
10 the Free Software Foundation; either version 2.1 of the License, or
11 (at your option) any later version.
12
13 systemd is distributed in the hope that it will be useful, but
14 WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 Lesser General Public License for more details.
17
18 You should have received a copy of the GNU Lesser General Public License
19 along with systemd; If not, see <http://www.gnu.org/licenses/>.
20***/
21
e8af6973 22#include "sd-event.h"
e0e5ce23 23#include "sd-network.h"
71d35b6b
TA
24#include "sd-resolve.h"
25
84e51726 26#include "list.h"
84e51726 27#include "ratelimit.h"
e8af6973
LP
28
29typedef struct Manager Manager;
ae2db4e7 30
874ff7bf
LP
31#include "timesyncd-server.h"
32
e8af6973
LP
33struct Manager {
34 sd_event *event;
35 sd_resolve *resolve;
36
874ff7bf 37 LIST_HEAD(ServerName, system_servers);
84e51726 38 LIST_HEAD(ServerName, link_servers);
84e51726 39 LIST_HEAD(ServerName, fallback_servers);
e8af6973
LP
40
41 RateLimit ratelimit;
63463bf0 42 bool exhausted_servers;
e8af6973 43
e0e5ce23
TG
44 /* network */
45 sd_event_source *network_event_source;
46 sd_network_monitor *network_monitor;
47
e8af6973
LP
48 /* peer */
49 sd_resolve_query *resolve_query;
50 sd_event_source *event_receive;
51 ServerName *current_server_name;
52 ServerAddress *current_server_address;
53 int server_socket;
e8206972 54 int missed_replies;
e8af6973
LP
55 uint64_t packet_count;
56 sd_event_source *event_timeout;
481b3f9e 57 bool good;
e8af6973
LP
58
59 /* last sent packet */
60 struct timespec trans_time_mon;
61 struct timespec trans_time;
ab4df227 62 usec_t retry_interval;
e8af6973
LP
63 bool pending;
64
65 /* poll timer */
66 sd_event_source *event_timer;
67 usec_t poll_interval_usec;
68 bool poll_resync;
69
70 /* history data */
71 struct {
72 double offset;
73 double delay;
74 } samples[8];
75 unsigned int samples_idx;
76 double samples_jitter;
77
78 /* last change */
79 bool jumped;
d636d376 80 bool sync;
e8af6973
LP
81 int drift_ppm;
82
83 /* watch for time changes */
84 sd_event_source *event_clock_watch;
85 int clock_watch_fd;
86
87 /* Retry connections */
88 sd_event_source *event_retry;
c264aeab
KS
89
90 /* RTC runs in local time, leave it alone */
91 bool rtc_local_time;
e8af6973
LP
92};
93
84e51726
LP
94int manager_new(Manager **ret);
95void manager_free(Manager *m);
96
97DEFINE_TRIVIAL_CLEANUP_FUNC(Manager*, manager_free);
e8af6973 98
874ff7bf
LP
99void manager_set_server_name(Manager *m, ServerName *n);
100void manager_set_server_address(Manager *m, ServerAddress *a);
101void manager_flush_server_names(Manager *m, ServerType t);
102
84e51726
LP
103int manager_connect(Manager *m);
104void manager_disconnect(Manager *m);