Mercurial > dropbear
comparison dbutil.c @ 962:db9fa5971d24
Don't warn about ENOTSOCK when setting priority
author | Matt Johnston <matt@ucc.asn.au> |
---|---|
date | Wed, 06 Aug 2014 22:16:38 +0800 |
parents | 356a25a108a3 |
children | 6fb4c010c448 |
comparison
equal
deleted
inserted
replaced
961:a4032b946355 | 962:db9fa5971d24 |
---|---|
200 | 200 |
201 void set_sock_priority(int sock, enum dropbear_prio prio) { | 201 void set_sock_priority(int sock, enum dropbear_prio prio) { |
202 | 202 |
203 int iptos_val = 0, so_prio_val = 0, rc; | 203 int iptos_val = 0, so_prio_val = 0, rc; |
204 | 204 |
205 /* Don't log ENOTSOCK errors so that this can harmlessly be called | |
206 * on a client '-J' proxy pipe */ | |
207 | |
205 /* set the TOS bit for either ipv4 or ipv6 */ | 208 /* set the TOS bit for either ipv4 or ipv6 */ |
206 #ifdef IPTOS_LOWDELAY | 209 #ifdef IPTOS_LOWDELAY |
207 if (prio == DROPBEAR_PRIO_LOWDELAY) { | 210 if (prio == DROPBEAR_PRIO_LOWDELAY) { |
208 iptos_val = IPTOS_LOWDELAY; | 211 iptos_val = IPTOS_LOWDELAY; |
209 } else if (prio == DROPBEAR_PRIO_BULK) { | 212 } else if (prio == DROPBEAR_PRIO_BULK) { |
210 iptos_val = IPTOS_THROUGHPUT; | 213 iptos_val = IPTOS_THROUGHPUT; |
211 } | 214 } |
212 #if defined(IPPROTO_IPV6) && defined(IPV6_TCLASS) | 215 #if defined(IPPROTO_IPV6) && defined(IPV6_TCLASS) |
213 rc = setsockopt(sock, IPPROTO_IPV6, IPV6_TCLASS, (void*)&iptos_val, sizeof(iptos_val)); | 216 rc = setsockopt(sock, IPPROTO_IPV6, IPV6_TCLASS, (void*)&iptos_val, sizeof(iptos_val)); |
214 if (rc < 0) { | 217 if (rc < 0 && errno != ENOTSOCK) { |
215 TRACE(("Couldn't set IPV6_TCLASS (%s)", strerror(errno))); | 218 TRACE(("Couldn't set IPV6_TCLASS (%s)", strerror(errno))); |
216 } | 219 } |
217 #endif | 220 #endif |
218 rc = setsockopt(sock, IPPROTO_IP, IP_TOS, (void*)&iptos_val, sizeof(iptos_val)); | 221 rc = setsockopt(sock, IPPROTO_IP, IP_TOS, (void*)&iptos_val, sizeof(iptos_val)); |
219 if (rc < 0) { | 222 if (rc < 0 && errno != ENOTSOCK) { |
220 TRACE(("Couldn't set IP_TOS (%s)", strerror(errno))); | 223 TRACE(("Couldn't set IP_TOS (%s)", strerror(errno))); |
221 } | 224 } |
222 #endif | 225 #endif |
223 | 226 |
224 #ifdef SO_PRIORITY | 227 #ifdef SO_PRIORITY |
227 } else if (prio == DROPBEAR_PRIO_BULK) { | 230 } else if (prio == DROPBEAR_PRIO_BULK) { |
228 so_prio_val = TC_PRIO_BULK; | 231 so_prio_val = TC_PRIO_BULK; |
229 } | 232 } |
230 /* linux specific, sets QoS class. see tc-prio(8) */ | 233 /* linux specific, sets QoS class. see tc-prio(8) */ |
231 rc = setsockopt(sock, SOL_SOCKET, SO_PRIORITY, (void*) &so_prio_val, sizeof(so_prio_val)); | 234 rc = setsockopt(sock, SOL_SOCKET, SO_PRIORITY, (void*) &so_prio_val, sizeof(so_prio_val)); |
232 if (rc < 0) | 235 if (rc < 0 && errno != ENOTSOCK) |
233 dropbear_log(LOG_WARNING, "Couldn't set SO_PRIORITY (%s)", | 236 dropbear_log(LOG_WARNING, "Couldn't set SO_PRIORITY (%s)", |
234 strerror(errno)); | 237 strerror(errno)); |
235 #endif | 238 #endif |
236 | 239 |
237 } | 240 } |