File: rdnssd.h

package info (click to toggle)
ndisc6 1.0.4-1
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 1,776 kB
  • sloc: sh: 5,057; ansic: 4,106; makefile: 184; perl: 35; sed: 16
file content (64 lines) | stat: -rw-r--r-- 1,979 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
/**
 * rdnssd.h - daemon for DNS configuration from ICMPv6 RA
 */

/*************************************************************************
 *  Copyright © 2007 Pierre Ynard, Rémi Denis-Courmont.                  *
 *  This program is free software: you can redistribute and/or modify    *
 *  it under the terms of the GNU General Public License as published by *
 *  the Free Software Foundation, versions 2 or 3 of the license.        *
 *                                                                       *
 *  This program is distributed in the hope that it will be useful,      *
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of       *
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the        *
 *  GNU General Public License for more details.                         *
 *                                                                       *
 *  You should have received a copy of the GNU General Public License    *
 *  along with this program. If not, see <http://www.gnu.org/licenses/>. *
 *************************************************************************/

#ifndef NDISC6_RDNSSD_H
# define NDISC6_RDNSSD_H 1

typedef struct rdnss_src
{
	int (*setup) (void);
	int (*process) (int fd);
} rdnss_src_t;

extern const rdnss_src_t rdnss_netlink, rdnss_icmp;

/* Belongs in <netinet/icmp6.h> */
#define ND_OPT_RDNSS 25
#define ND_OPT_DNSSL 31

struct nd_opt_rdnss
{
	uint8_t nd_opt_rdnss_type;
	uint8_t nd_opt_rdnss_len;
	uint16_t nd_opt_rdnss_reserved;
	uint32_t nd_opt_rdnss_lifetime;
	/* followed by one or more IPv6 addresses */
};

struct nd_opt_dnssl
{
	uint8_t nd_opt_dnssl_type;
	uint8_t nd_opt_dnssl_len;
	uint16_t nd_opt_dnssl_reserved;
	uint32_t nd_opt_dnssl_lifetime;
	/* followed by one or more domain names */
};

# ifdef __cplusplus
extern "C" {
# endif

int parse_nd_opts (const struct nd_opt_hdr *opt, size_t opts_len, unsigned int ifindex);

# ifdef __cplusplus
}
# endif

#endif /* !NDISC6_RDNSSD_H */