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