]> git.ipfire.org Git - thirdparty/systemd.git/blame - src/systemd/sd-radv.h
Add SPDX license identifiers to source files under the LGPL
[thirdparty/systemd.git] / src / systemd / sd-radv.h
CommitLineData
53e1b683 1/* SPDX-License-Identifier: LGPL-2.1+ */
04473969
PF
2#ifndef foosdradvfoo
3#define foosdradvfoo
4
5/***
6 This file is part of systemd.
7
8 Copyright (C) 2017 Intel Corporation. All rights reserved.
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
24#include <inttypes.h>
25#include <net/ethernet.h>
26#include <netinet/in.h>
27#include <sys/types.h>
28
204f99d2
PF
29#include "sd-ndisc.h"
30
04473969
PF
31#include "sd-event.h"
32
33#include "_sd-common.h"
34
35_SD_BEGIN_DECLARATIONS;
36
c555a358
PF
37#define SD_RADV_DEFAULT_MIN_TIMEOUT_USEC (200*USEC_PER_SEC)
38#define SD_RADV_DEFAULT_MAX_TIMEOUT_USEC (600*USEC_PER_SEC)
39
40#define SD_RADV_DEFAULT_DNS_LIFETIME_USEC (3*SD_RADV_DEFAULT_MAX_TIMEOUT_USEC)
41
204f99d2 42typedef struct sd_radv sd_radv;
04473969
PF
43typedef struct sd_radv_prefix sd_radv_prefix;
44
204f99d2
PF
45/* Router Advertisment */
46int sd_radv_new(sd_radv **ret);
47sd_radv *sd_radv_ref(sd_radv *ra);
48sd_radv *sd_radv_unref(sd_radv *ra);
49
50int sd_radv_attach_event(sd_radv *ra, sd_event *event, int64_t priority);
51int sd_radv_detach_event(sd_radv *nd);
52sd_event *sd_radv_get_event(sd_radv *ra);
53
54int sd_radv_start(sd_radv *ra);
55int sd_radv_stop(sd_radv *ra);
56
57int sd_radv_set_ifindex(sd_radv *ra, int interface_index);
58int sd_radv_set_mac(sd_radv *ra, const struct ether_addr *mac_addr);
59int sd_radv_set_mtu(sd_radv *ra, uint32_t mtu);
60int sd_radv_set_hop_limit(sd_radv *ra, uint8_t hop_limit);
61int sd_radv_set_router_lifetime(sd_radv *ra, uint32_t router_lifetime);
62int sd_radv_set_managed_information(sd_radv *ra, int managed);
63int sd_radv_set_other_information(sd_radv *ra, int other);
64int sd_radv_set_preference(sd_radv *ra, unsigned preference);
65int sd_radv_add_prefix(sd_radv *ra, sd_radv_prefix *p);
e9c6da38
PF
66int sd_radv_set_rdnss(sd_radv *ra, uint32_t lifetime,
67 const struct in6_addr *dns, size_t n_dns);
e965d6ab 68int sd_radv_set_dnssl(sd_radv *ra, uint32_t lifetime, char **search_list);
204f99d2 69
04473969
PF
70/* Advertised prefixes */
71int sd_radv_prefix_new(sd_radv_prefix **ret);
72sd_radv_prefix *sd_radv_prefix_ref(sd_radv_prefix *ra);
73sd_radv_prefix *sd_radv_prefix_unref(sd_radv_prefix *ra);
74
75int sd_radv_prefix_set_prefix(sd_radv_prefix *p, struct in6_addr *in6_addr,
76 unsigned char prefixlen);
77int sd_radv_prefix_set_onlink(sd_radv_prefix *p, int onlink);
78int sd_radv_prefix_set_address_autoconfiguration(sd_radv_prefix *p,
79 int address_autoconfiguration);
80int sd_radv_prefix_set_valid_lifetime(sd_radv_prefix *p,
81 uint32_t valid_lifetime);
82int sd_radv_prefix_set_preferred_lifetime(sd_radv_prefix *p,
83 uint32_t preferred_lifetime);
84
85_SD_DEFINE_POINTER_CLEANUP_FUNC(sd_radv, sd_radv_unref);
86_SD_DEFINE_POINTER_CLEANUP_FUNC(sd_radv_prefix, sd_radv_prefix_unref);
87
88_SD_END_DECLARATIONS;
89
90#endif