]> git.ipfire.org Git - thirdparty/systemd.git/blame - src/timesync/timesyncd-server.h
tree-wide: use coccinelle to patch a lot of code to use mfree()
[thirdparty/systemd.git] / src / timesync / timesyncd-server.h
CommitLineData
84e51726
LP
1/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
2
3#pragma once
4
5/***
6 This file is part of systemd.
7
8 Copyright 2014 Kay Sievers, Lennart Poettering
9
10 systemd is free software; you can redistribute it and/or modify it
11 under the terms of the GNU Lesser General Public License as published by
12 the Free Software Foundation; either version 2.1 of the License, or
13 (at your option) any later version.
14
15 systemd is distributed in the hope that it will be useful, but
16 WITHOUT ANY WARRANTY; without even the implied warranty of
17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18 Lesser General Public License for more details.
19
20 You should have received a copy of the GNU Lesser General Public License
21 along with systemd; If not, see <http://www.gnu.org/licenses/>.
22***/
23
874ff7bf
LP
24#include "socket-util.h"
25#include "list.h"
26
84e51726
LP
27typedef struct ServerAddress ServerAddress;
28typedef struct ServerName ServerName;
29
874ff7bf
LP
30typedef enum ServerType {
31 SERVER_SYSTEM,
32 SERVER_FALLBACK,
33 SERVER_LINK,
34} ServerType;
35
36#include "timesyncd-manager.h"
84e51726
LP
37
38struct ServerAddress {
874ff7bf
LP
39 ServerName *name;
40
84e51726
LP
41 union sockaddr_union sockaddr;
42 socklen_t socklen;
874ff7bf 43
84e51726
LP
44 LIST_FIELDS(ServerAddress, addresses);
45};
46
47struct ServerName {
874ff7bf
LP
48 Manager *manager;
49
50 ServerType type;
84e51726 51 char *string;
874ff7bf
LP
52
53 bool marked:1;
54
84e51726
LP
55 LIST_HEAD(ServerAddress, addresses);
56 LIST_FIELDS(ServerName, names);
57};
58
874ff7bf
LP
59int server_address_new(ServerName *n, ServerAddress **ret, const union sockaddr_union *sockaddr, socklen_t socklen);
60ServerAddress* server_address_free(ServerAddress *a);
84e51726 61static inline int server_address_pretty(ServerAddress *a, char **pretty) {
3b1c5241 62 return sockaddr_pretty(&a->sockaddr.sa, a->socklen, true, true, pretty);
84e51726 63}
874ff7bf
LP
64
65int server_name_new(Manager *m, ServerName **ret, ServerType type,const char *string);
66ServerName *server_name_free(ServerName *n);
67void server_name_flush_addresses(ServerName *n);