… | |
… | |
235 | dnsv4_fd = socket (PF_INET, SOCK_DGRAM, IPPROTO_UDP); |
235 | dnsv4_fd = socket (PF_INET, SOCK_DGRAM, IPPROTO_UDP); |
236 | |
236 | |
237 | if (dnsv4_fd < 0) |
237 | if (dnsv4_fd < 0) |
238 | return -1; |
238 | return -1; |
239 | |
239 | |
|
|
240 | #if defined(SOL_IP) && defined(IP_MTU_DISCOVER) |
|
|
241 | // this I really consider a linux bug. I am neither connected |
|
|
242 | // nor do I fragment myself. Linux still sets DF and doesn't |
|
|
243 | // fragment for me sometimes. |
|
|
244 | { |
|
|
245 | int oval = IP_PMTUDISC_DONT; |
|
|
246 | setsockopt (udpv4_fd, SOL_IP, IP_MTU_DISCOVER, &oval, sizeof oval); |
|
|
247 | } |
|
|
248 | #endif |
|
|
249 | |
240 | // standard daemon practise... |
250 | // standard daemon practise... |
241 | { |
251 | { |
242 | int oval = 1; |
252 | int oval = 1; |
243 | setsockopt (dnsv4_fd, SOL_SOCKET, SO_REUSEADDR, &oval, sizeof oval); |
253 | setsockopt (dnsv4_fd, SOL_SOCKET, SO_REUSEADDR, &oval, sizeof oval); |
244 | } |
254 | } |