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