]> git.ipfire.org Git - thirdparty/systemd.git/blob - src/timesync/timesyncd-server.h
5be6645fd23eda77bd4f3d8d711b3ca7e89b70e8
[thirdparty/systemd.git] / src / timesync / timesyncd-server.h
1 /* SPDX-License-Identifier: LGPL-2.1+ */
2 #pragma once
3
4 /***
5 Copyright 2014 Kay Sievers, Lennart Poettering
6 ***/
7
8 #include "list.h"
9 #include "socket-util.h"
10
11 typedef struct ServerAddress ServerAddress;
12 typedef struct ServerName ServerName;
13
14 typedef enum ServerType {
15 SERVER_SYSTEM,
16 SERVER_FALLBACK,
17 SERVER_LINK,
18 } ServerType;
19
20 #include "timesyncd-manager.h"
21
22 struct ServerAddress {
23 ServerName *name;
24
25 union sockaddr_union sockaddr;
26 socklen_t socklen;
27
28 LIST_FIELDS(ServerAddress, addresses);
29 };
30
31 struct ServerName {
32 Manager *manager;
33
34 ServerType type;
35 char *string;
36
37 bool marked:1;
38
39 LIST_HEAD(ServerAddress, addresses);
40 LIST_FIELDS(ServerName, names);
41 };
42
43 int server_address_new(ServerName *n, ServerAddress **ret, const union sockaddr_union *sockaddr, socklen_t socklen);
44 ServerAddress* server_address_free(ServerAddress *a);
45 static inline int server_address_pretty(ServerAddress *a, char **pretty) {
46 return sockaddr_pretty(&a->sockaddr.sa, a->socklen, true, true, pretty);
47 }
48
49 int server_name_new(Manager *m, ServerName **ret, ServerType type,const char *string);
50 ServerName *server_name_free(ServerName *n);
51 void server_name_flush_addresses(ServerName *n);