"Fossies" - the Fresh Open Source Software Archive 
Member "dhcpcd-9.4.1/src/common.h" (22 Oct 2021, 4856 Bytes) of package /linux/misc/dhcpcd-9.4.1.tar.xz:
As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style:
standard) with prefixed line numbers and
code folding option.
Alternatively you can here
view or
download the uninterpreted source code file.
For more information about "common.h" see the
Fossies "Dox" file reference documentation and the latest
Fossies "Diffs" side-by-side code changes report:
9.4.0_vs_9.4.1.
1 /* SPDX-License-Identifier: BSD-2-Clause */
2 /*
3 * dhcpcd - DHCP client daemon
4 * Copyright (c) 2006-2021 Roy Marples <roy@marples.name>
5 * All rights reserved
6
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
9 * are met:
10 * 1. Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
12 * 2. Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in the
14 * documentation and/or other materials provided with the distribution.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
17 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
20 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26 * SUCH DAMAGE.
27 */
28
29 #ifndef COMMON_H
30 #define COMMON_H
31
32 #include <sys/param.h>
33 #include <sys/time.h>
34 #include <sys/types.h>
35 #include <stdint.h>
36 #include <stdio.h>
37
38 /* Define eloop queues here, as other apps share eloop.h */
39 #define ELOOP_DHCPCD 1 /* default queue */
40 #define ELOOP_DHCP 2
41 #define ELOOP_ARP 3
42 #define ELOOP_IPV4LL 4
43 #define ELOOP_IPV6 5
44 #define ELOOP_IPV6ND 6
45 #define ELOOP_IPV6RA_EXPIRE 7
46 #define ELOOP_DHCP6 8
47 #define ELOOP_IF 9
48
49 #ifndef HOSTNAME_MAX_LEN
50 #define HOSTNAME_MAX_LEN 250 /* 255 - 3 (FQDN) - 2 (DNS enc) */
51 #endif
52
53 #ifndef MIN
54 #define MIN(a,b) ((/*CONSTCOND*/(a)<(b))?(a):(b))
55 #define MAX(a,b) ((/*CONSTCOND*/(a)>(b))?(a):(b))
56 #endif
57
58 #define UNCONST(a) ((void *)(unsigned long)(const void *)(a))
59 #define STRINGIFY(a) #a
60 #define TOSTRING(a) STRINGIFY(a)
61 #define UNUSED(a) (void)(a)
62
63 #define ROUNDUP4(a) (1 + (((a) - 1) | 3))
64 #define ROUNDUP8(a) (1 + (((a) - 1) | 7))
65
66 /* Some systems don't define timespec macros */
67 #ifndef timespecclear
68 #define timespecclear(tsp) (tsp)->tv_sec = (time_t)((tsp)->tv_nsec = 0L)
69 #define timespecisset(tsp) ((tsp)->tv_sec || (tsp)->tv_nsec)
70 #endif
71
72 #if __GNUC__ > 2 || defined(__INTEL_COMPILER)
73 # ifndef __packed
74 # define __packed __attribute__((__packed__))
75 # endif
76 # ifndef __unused
77 # define __unused __attribute__((__unused__))
78 # endif
79 #else
80 # ifndef __packed
81 # define __packed
82 # endif
83 # ifndef __unused
84 # define __unused
85 # endif
86 #endif
87
88 /* Needed for rbtree(3) compat */
89 #ifndef __RCSID
90 #define __RCSID(a)
91 #endif
92 #ifndef __predict_false
93 # if __GNUC__ > 2
94 # define __predict_true(exp) __builtin_expect((exp) != 0, 1)
95 # define __predict_false(exp) __builtin_expect((exp) != 0, 0)
96 #else
97 # define __predict_true(exp) (exp)
98 # define __predict_false(exp) (exp)
99 # endif
100 #endif
101 #ifndef __BEGIN_DECLS
102 # if defined(__cplusplus)
103 # define __BEGIN_DECLS extern "C" {
104 # define __END_DECLS };
105 # else /* __BEGIN_DECLS */
106 # define __BEGIN_DECLS
107 # define __END_DECLS
108 # endif /* __BEGIN_DECLS */
109 #endif /* __BEGIN_DECLS */
110
111 #ifndef __fallthrough
112 # if __GNUC__ >= 7
113 # define __fallthrough __attribute__((fallthrough))
114 # else
115 # define __fallthrough
116 # endif
117 #endif
118
119 /*
120 * Compile Time Assertion.
121 */
122 #ifndef __CTASSERT
123 # ifdef __COUNTER__
124 # define __CTASSERT(x) __CTASSERT0(x, __ctassert, __COUNTER__)
125 # else
126 # define __CTASSERT(x) __CTASSERT99(x, __INCLUDE_LEVEL__, __LINE__)
127 # define __CTASSERT99(x, a, b) __CTASSERT0(x, __CONCAT(__ctassert,a), \
128 __CONCAT(_,b))
129 # endif
130 # define __CTASSERT0(x, y, z) __CTASSERT1(x, y, z)
131 # define __CTASSERT1(x, y, z) typedef char y ## z[/*CONSTCOND*/(x) ? 1 : -1] __unused
132 #endif
133
134 #ifndef __arraycount
135 # define __arraycount(__x) (sizeof(__x) / sizeof(__x[0]))
136 #endif
137
138 /* We don't really need this as our supported systems define __restrict
139 * automatically for us, but it is here for completeness. */
140 #ifndef __restrict
141 # if defined(__lint__)
142 # define __restrict
143 # elif __STDC_VERSION__ >= 199901L
144 # define __restrict restrict
145 # elif !(2 < __GNUC__ || (2 == __GNU_C && 95 <= __GNUC_VERSION__))
146 # define __restrict
147 # endif
148 #endif
149
150 const char *hwaddr_ntoa(const void *, size_t, char *, size_t);
151 size_t hwaddr_aton(uint8_t *, const char *);
152 ssize_t readfile(const char *, void *, size_t);
153 ssize_t writefile(const char *, mode_t, const void *, size_t);
154 int filemtime(const char *, time_t *);
155 char *get_line(char ** __restrict, ssize_t * __restrict);
156 int is_root_local(void);
157 #endif