]>
Commit | Line | Data |
---|---|---|
de0f4f9e FG |
1 | From c0f3a65582497526bcbfba62d4c86c55b35c3559 Mon Sep 17 00:00:00 2001 |
2 | From: =?UTF-8?q?Fabian=20Gr=C3=BCnbichler?= <f.gruenbichler@proxmox.com> | |
3 | Date: Wed, 22 Mar 2017 16:13:50 +0100 | |
4 | Subject: [PATCH 5/5] use sockaddr_storage for IPv6 compat | |
5 | MIME-Version: 1.0 | |
6 | Content-Type: text/plain; charset=UTF-8 | |
7 | Content-Transfer-Encoding: 8bit | |
8 | ||
9 | Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com> | |
10 | --- | |
11 | src/include/ipaddr.h | 2 +- | |
12 | src/common/ipaddr.cc | 6 +++--- | |
13 | src/common/pick_address.cc | 4 ++-- | |
14 | src/test/test_ipaddr.cc | 44 ++++++++++++++++++++++---------------------- | |
15 | 4 files changed, 28 insertions(+), 28 deletions(-) | |
16 | ||
17 | diff --git a/src/include/ipaddr.h b/src/include/ipaddr.h | |
18 | index cac13d6..bf1a083 100644 | |
19 | --- a/src/include/ipaddr.h | |
20 | +++ b/src/include/ipaddr.h | |
21 | @@ -16,6 +16,6 @@ const struct sockaddr *find_ip_in_subnet(const struct ifaddrs *addrs, | |
22 | unsigned int prefix_len); | |
23 | ||
24 | ||
25 | -bool parse_network(const char *s, struct sockaddr *network, unsigned int *prefix_len); | |
26 | +bool parse_network(const char *s, struct sockaddr_storage *network, unsigned int *prefix_len); | |
27 | ||
28 | #endif | |
29 | diff --git a/src/common/ipaddr.cc b/src/common/ipaddr.cc | |
30 | index 72fe7de..a7dedf2 100644 | |
31 | --- a/src/common/ipaddr.cc | |
32 | +++ b/src/common/ipaddr.cc | |
33 | @@ -110,7 +110,7 @@ const struct sockaddr *find_ip_in_subnet(const struct ifaddrs *addrs, | |
34 | } | |
35 | ||
36 | ||
37 | -bool parse_network(const char *s, struct sockaddr *network, unsigned int *prefix_len) { | |
38 | +bool parse_network(const char *s, struct sockaddr_storage *network, unsigned int *prefix_len) { | |
39 | char *slash = strchr((char*)s, '/'); | |
40 | if (!slash) { | |
41 | // no slash | |
42 | @@ -144,14 +144,14 @@ bool parse_network(const char *s, struct sockaddr *network, unsigned int *prefix | |
43 | int ok; | |
44 | ok = inet_pton(AF_INET, addr, &((struct sockaddr_in*)network)->sin_addr); | |
45 | if (ok) { | |
46 | - network->sa_family = AF_INET; | |
47 | + network->ss_family = AF_INET; | |
48 | return true; | |
49 | } | |
50 | ||
51 | // try parsing as ipv6 | |
52 | ok = inet_pton(AF_INET6, addr, &((struct sockaddr_in6*)network)->sin6_addr); | |
53 | if (ok) { | |
54 | - network->sa_family = AF_INET6; | |
55 | + network->ss_family = AF_INET6; | |
56 | return true; | |
57 | } | |
58 | ||
59 | diff --git a/src/common/pick_address.cc b/src/common/pick_address.cc | |
60 | index ebce2d5..460168f 100644 | |
61 | --- a/src/common/pick_address.cc | |
62 | +++ b/src/common/pick_address.cc | |
63 | @@ -32,7 +32,7 @@ static const struct sockaddr *find_ip_in_subnet_list(CephContext *cct, | |
64 | get_str_list(networks, nets); | |
65 | ||
66 | for(std::list<string>::iterator s = nets.begin(); s != nets.end(); ++s) { | |
67 | - struct sockaddr net; | |
68 | + struct sockaddr_storage net; | |
69 | unsigned int prefix_len; | |
70 | ||
71 | if (!parse_network(s->c_str(), &net, &prefix_len)) { | |
72 | @@ -40,7 +40,7 @@ static const struct sockaddr *find_ip_in_subnet_list(CephContext *cct, | |
73 | exit(1); | |
74 | } | |
75 | ||
76 | - const struct sockaddr *found = find_ip_in_subnet(ifa, &net, prefix_len); | |
77 | + const struct sockaddr *found = find_ip_in_subnet(ifa, (struct sockaddr *) &net, prefix_len); | |
78 | if (found) | |
79 | return found; | |
80 | } | |
81 | diff --git a/src/test/test_ipaddr.cc b/src/test/test_ipaddr.cc | |
82 | index 9a3d43e..5d3b76e 100644 | |
83 | --- a/src/test/test_ipaddr.cc | |
84 | +++ b/src/test/test_ipaddr.cc | |
85 | @@ -256,7 +256,7 @@ TEST(CommonIPAddr, TestV6_PrefixZero) | |
86 | ||
87 | TEST(CommonIPAddr, ParseNetwork_Empty) | |
88 | { | |
89 | - struct sockaddr network; | |
90 | + struct sockaddr_storage network; | |
91 | unsigned int prefix_len; | |
92 | bool ok; | |
93 | ||
94 | @@ -266,7 +266,7 @@ TEST(CommonIPAddr, ParseNetwork_Empty) | |
95 | ||
96 | TEST(CommonIPAddr, ParseNetwork_Bad_Junk) | |
97 | { | |
98 | - struct sockaddr network; | |
99 | + struct sockaddr_storage network; | |
100 | unsigned int prefix_len; | |
101 | bool ok; | |
102 | ||
103 | @@ -276,27 +276,27 @@ TEST(CommonIPAddr, ParseNetwork_Bad_Junk) | |
104 | ||
105 | TEST(CommonIPAddr, ParseNetwork_Bad_SlashNum) | |
106 | { | |
107 | - struct sockaddr network; | |
108 | + struct sockaddr_storage network; | |
109 | unsigned int prefix_len; | |
110 | bool ok; | |
111 | ||
112 | - ok = parse_network("/24", (struct sockaddr*)&network, &prefix_len); | |
113 | + ok = parse_network("/24", &network, &prefix_len); | |
114 | ASSERT_EQ(ok, false); | |
115 | } | |
116 | ||
117 | TEST(CommonIPAddr, ParseNetwork_Bad_Slash) | |
118 | { | |
119 | - struct sockaddr network; | |
120 | + struct sockaddr_storage network; | |
121 | unsigned int prefix_len; | |
122 | bool ok; | |
123 | ||
124 | - ok = parse_network("/", (struct sockaddr*)&network, &prefix_len); | |
125 | + ok = parse_network("/", &network, &prefix_len); | |
126 | ASSERT_EQ(ok, false); | |
127 | } | |
128 | ||
129 | TEST(CommonIPAddr, ParseNetwork_Bad_IPv4) | |
130 | { | |
131 | - struct sockaddr network; | |
132 | + struct sockaddr_storage network; | |
133 | unsigned int prefix_len; | |
134 | bool ok; | |
135 | ||
136 | @@ -306,7 +306,7 @@ TEST(CommonIPAddr, ParseNetwork_Bad_IPv4) | |
137 | ||
138 | TEST(CommonIPAddr, ParseNetwork_Bad_IPv4Slash) | |
139 | { | |
140 | - struct sockaddr network; | |
141 | + struct sockaddr_storage network; | |
142 | unsigned int prefix_len; | |
143 | bool ok; | |
144 | ||
145 | @@ -316,7 +316,7 @@ TEST(CommonIPAddr, ParseNetwork_Bad_IPv4Slash) | |
146 | ||
147 | TEST(CommonIPAddr, ParseNetwork_Bad_IPv4SlashNegative) | |
148 | { | |
149 | - struct sockaddr network; | |
150 | + struct sockaddr_storage network; | |
151 | unsigned int prefix_len; | |
152 | bool ok; | |
153 | ||
154 | @@ -326,7 +326,7 @@ TEST(CommonIPAddr, ParseNetwork_Bad_IPv4SlashNegative) | |
155 | ||
156 | TEST(CommonIPAddr, ParseNetwork_Bad_IPv4SlashJunk) | |
157 | { | |
158 | - struct sockaddr network; | |
159 | + struct sockaddr_storage network; | |
160 | unsigned int prefix_len; | |
161 | bool ok; | |
162 | ||
163 | @@ -336,7 +336,7 @@ TEST(CommonIPAddr, ParseNetwork_Bad_IPv4SlashJunk) | |
164 | ||
165 | TEST(CommonIPAddr, ParseNetwork_Bad_IPv6) | |
166 | { | |
167 | - struct sockaddr network; | |
168 | + struct sockaddr_storage network; | |
169 | unsigned int prefix_len; | |
170 | bool ok; | |
171 | ||
172 | @@ -346,7 +346,7 @@ TEST(CommonIPAddr, ParseNetwork_Bad_IPv6) | |
173 | ||
174 | TEST(CommonIPAddr, ParseNetwork_Bad_IPv6Slash) | |
175 | { | |
176 | - struct sockaddr network; | |
177 | + struct sockaddr_storage network; | |
178 | unsigned int prefix_len; | |
179 | bool ok; | |
180 | ||
181 | @@ -356,7 +356,7 @@ TEST(CommonIPAddr, ParseNetwork_Bad_IPv6Slash) | |
182 | ||
183 | TEST(CommonIPAddr, ParseNetwork_Bad_IPv6SlashNegative) | |
184 | { | |
185 | - struct sockaddr network; | |
186 | + struct sockaddr_storage network; | |
187 | unsigned int prefix_len; | |
188 | bool ok; | |
189 | ||
190 | @@ -366,7 +366,7 @@ TEST(CommonIPAddr, ParseNetwork_Bad_IPv6SlashNegative) | |
191 | ||
192 | TEST(CommonIPAddr, ParseNetwork_Bad_IPv6SlashJunk) | |
193 | { | |
194 | - struct sockaddr network; | |
195 | + struct sockaddr_storage network; | |
196 | unsigned int prefix_len; | |
197 | bool ok; | |
198 | ||
199 | @@ -380,7 +380,7 @@ TEST(CommonIPAddr, ParseNetwork_IPv4_0) | |
200 | unsigned int prefix_len; | |
201 | bool ok; | |
202 | ||
203 | - ok = parse_network("123.123.123.123/0", (struct sockaddr*)&network, &prefix_len); | |
204 | + ok = parse_network("123.123.123.123/0", (struct sockaddr_storage*)&network, &prefix_len); | |
205 | ASSERT_EQ(ok, true); | |
206 | ASSERT_EQ(0U, prefix_len); | |
207 | ASSERT_EQ(AF_INET, network.sin_family); | |
208 | @@ -396,7 +396,7 @@ TEST(CommonIPAddr, ParseNetwork_IPv4_13) | |
209 | unsigned int prefix_len; | |
210 | bool ok; | |
211 | ||
212 | - ok = parse_network("123.123.123.123/13", (struct sockaddr*)&network, &prefix_len); | |
213 | + ok = parse_network("123.123.123.123/13", (struct sockaddr_storage*)&network, &prefix_len); | |
214 | ASSERT_EQ(ok, true); | |
215 | ASSERT_EQ(13U, prefix_len); | |
216 | ASSERT_EQ(AF_INET, network.sin_family); | |
217 | @@ -412,7 +412,7 @@ TEST(CommonIPAddr, ParseNetwork_IPv4_32) | |
218 | unsigned int prefix_len; | |
219 | bool ok; | |
220 | ||
221 | - ok = parse_network("123.123.123.123/32", (struct sockaddr*)&network, &prefix_len); | |
222 | + ok = parse_network("123.123.123.123/32", (struct sockaddr_storage*)&network, &prefix_len); | |
223 | ASSERT_EQ(ok, true); | |
224 | ASSERT_EQ(32U, prefix_len); | |
225 | ASSERT_EQ(AF_INET, network.sin_family); | |
226 | @@ -428,7 +428,7 @@ TEST(CommonIPAddr, ParseNetwork_IPv4_42) | |
227 | unsigned int prefix_len; | |
228 | bool ok; | |
229 | ||
230 | - ok = parse_network("123.123.123.123/42", (struct sockaddr*)&network, &prefix_len); | |
231 | + ok = parse_network("123.123.123.123/42", (struct sockaddr_storage*)&network, &prefix_len); | |
232 | ASSERT_EQ(ok, true); | |
233 | ASSERT_EQ(42U, prefix_len); | |
234 | ASSERT_EQ(AF_INET, network.sin_family); | |
235 | @@ -444,7 +444,7 @@ TEST(CommonIPAddr, ParseNetwork_IPv6_0) | |
236 | unsigned int prefix_len; | |
237 | bool ok; | |
238 | ||
239 | - ok = parse_network("2001:1234:5678:90ab::dead:beef/0", (struct sockaddr*)&network, &prefix_len); | |
240 | + ok = parse_network("2001:1234:5678:90ab::dead:beef/0", (struct sockaddr_storage*)&network, &prefix_len); | |
241 | ASSERT_EQ(ok, true); | |
242 | ASSERT_EQ(0U, prefix_len); | |
243 | ASSERT_EQ(AF_INET6, network.sin6_family); | |
244 | @@ -460,7 +460,7 @@ TEST(CommonIPAddr, ParseNetwork_IPv6_67) | |
245 | unsigned int prefix_len; | |
246 | bool ok; | |
247 | ||
248 | - ok = parse_network("2001:1234:5678:90ab::dead:beef/67", (struct sockaddr*)&network, &prefix_len); | |
249 | + ok = parse_network("2001:1234:5678:90ab::dead:beef/67", (struct sockaddr_storage*)&network, &prefix_len); | |
250 | ASSERT_EQ(ok, true); | |
251 | ASSERT_EQ(67U, prefix_len); | |
252 | ASSERT_EQ(AF_INET6, network.sin6_family); | |
253 | @@ -476,7 +476,7 @@ TEST(CommonIPAddr, ParseNetwork_IPv6_128) | |
254 | unsigned int prefix_len; | |
255 | bool ok; | |
256 | ||
257 | - ok = parse_network("2001:1234:5678:90ab::dead:beef/128", (struct sockaddr*)&network, &prefix_len); | |
258 | + ok = parse_network("2001:1234:5678:90ab::dead:beef/128", (struct sockaddr_storage*)&network, &prefix_len); | |
259 | ASSERT_EQ(ok, true); | |
260 | ASSERT_EQ(128U, prefix_len); | |
261 | ASSERT_EQ(AF_INET6, network.sin6_family); | |
262 | @@ -492,7 +492,7 @@ TEST(CommonIPAddr, ParseNetwork_IPv6_9000) | |
263 | unsigned int prefix_len; | |
264 | bool ok; | |
265 | ||
266 | - ok = parse_network("2001:1234:5678:90ab::dead:beef/9000", (struct sockaddr*)&network, &prefix_len); | |
267 | + ok = parse_network("2001:1234:5678:90ab::dead:beef/9000", (struct sockaddr_storage*)&network, &prefix_len); | |
268 | ASSERT_EQ(ok, true); | |
269 | ASSERT_EQ(9000U, prefix_len); | |
270 | ASSERT_EQ(AF_INET6, network.sin6_family); | |
271 | -- | |
272 | 2.1.4 | |
273 |