]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
3717. [port] hpux: Treat EOPNOTSUPP as a expected error code when
authorMark Andrews <marka@isc.org>
Mon, 27 Jan 2014 21:25:28 +0000 (08:25 +1100)
committerMark Andrews <marka@isc.org>
Mon, 27 Jan 2014 21:25:28 +0000 (08:25 +1100)
                        probing to see if it is possible to set dscp values
                        on a per packet basis. [RT #35252]

3716.   [bug]           The dns_request code was setting dcsp values when not
                        requested.  [RT #35252]

CHANGES
lib/dns/request.c
lib/isc/unix/net.c

diff --git a/CHANGES b/CHANGES
index 697a4002a2c526b5ebaedef4d62da73ec0e06226..59d6a0bc8e25329f85a50b7fcbdb7ff1074d59a0 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,10 @@
+3717.  [port]          hpux: Treat EOPNOTSUPP as a expected error code when
+                       probing to see if it is possible to set dscp values
+                       on a per packet basis. [RT #35252]
+
+3716.  [bug]           The dns_request code was setting dcsp values when not
+                       requested.  [RT #35252]
+
 3715.  [bug]           The region and city databases could fail to
                        initialize when using some versions of libGeoIP,
                        causing assertion failures when named was
index 3aa98c8d3a584f0ab1818d0925d24da95f83fd69..a11fe076a39ae70f4738a7e0091d255be15ea444 100644 (file)
@@ -665,7 +665,7 @@ dns_request_createraw(dns_requestmgr_t *requestmgr, isc_buffer_t *msgbuf,
                      dns_request_t **requestp)
 {
        return(dns_request_createraw4(requestmgr, msgbuf, srcaddr, destaddr,
-                                     0, options, timeout, 0, 0, task, action,
+                                     -1, options, timeout, 0, 0, task, action,
                                      arg, requestp));
 }
 
@@ -683,7 +683,7 @@ dns_request_createraw2(dns_requestmgr_t *requestmgr, isc_buffer_t *msgbuf,
                udpretries = timeout / udptimeout;
 
        return (dns_request_createraw4(requestmgr, msgbuf, srcaddr, destaddr,
-                                      0, options, timeout, udptimeout,
+                                      -1, options, timeout, udptimeout,
                                       udpretries, task, action, arg,
                                       requestp));
 }
@@ -697,7 +697,7 @@ dns_request_createraw3(dns_requestmgr_t *requestmgr, isc_buffer_t *msgbuf,
                       dns_request_t **requestp)
 {
        return (dns_request_createraw4(requestmgr, msgbuf, srcaddr, destaddr,
-                                      0, options, timeout, udptimeout,
+                                      -1, options, timeout, udptimeout,
                                       udpretries, task, action, arg,
                                       requestp));
 }
@@ -868,7 +868,7 @@ dns_request_create(dns_requestmgr_t *requestmgr, dns_message_t *message,
                   dns_request_t **requestp)
 {
        return (dns_request_createvia4(requestmgr, message, NULL, address,
-                                      0, options, key, timeout, 0, 0, task,
+                                      -1, options, key, timeout, 0, 0, task,
                                       action, arg, requestp));
 }
 
@@ -881,7 +881,7 @@ dns_request_createvia(dns_requestmgr_t *requestmgr, dns_message_t *message,
                      dns_request_t **requestp)
 {
        return(dns_request_createvia4(requestmgr, message, srcaddr, destaddr,
-                                     0, options, key, timeout, 0, 0, task,
+                                     -1, options, key, timeout, 0, 0, task,
                                      action, arg, requestp));
 }
 
@@ -898,7 +898,7 @@ dns_request_createvia2(dns_requestmgr_t *requestmgr, dns_message_t *message,
        if (udptimeout != 0)
                udpretries = timeout / udptimeout;
        return (dns_request_createvia4(requestmgr, message, srcaddr, destaddr,
-                                      0, options, key, timeout, udptimeout,
+                                      -1, options, key, timeout, udptimeout,
                                       udpretries, task, action, arg,
                                       requestp));
 }
@@ -913,7 +913,7 @@ dns_request_createvia3(dns_requestmgr_t *requestmgr, dns_message_t *message,
                       dns_request_t **requestp)
 {
        return (dns_request_createvia4(requestmgr, message, srcaddr, destaddr,
-                                      0, options, key, timeout, udptimeout,
+                                      -1, options, key, timeout, udptimeout,
                                       udpretries, task, action, arg,
                                       requestp));
 }
index e6323020926277b5c2d642563939c633bc148e9b..0f440981e5618c6a672cdf9e5cfe51e5e0dc81be 100644 (file)
@@ -497,8 +497,8 @@ cmsgsend(int s, int level, int type, struct addrinfo *res) {
        } control;
        struct cmsghdr *cmsgp;
        int dscp = 46;
-       struct iovec iovec = { (void *)&iovec, sizeof(iovec) };
-       char buf[sizeof(iovec)];
+       struct iovec iovec;
+       char buf[1] = { 0 };
        isc_result_t result;
 
        if (bind(s, res->ai_addr, res->ai_addrlen) < 0) {
@@ -517,6 +517,9 @@ cmsgsend(int s, int level, int type, struct addrinfo *res) {
                return (ISC_FALSE);
        }
 
+       iovec.iov_base = buf;
+       iovec.iov_len = sizeof(buf);
+
        memset(&msg, 0, sizeof(msg));
        msg.msg_name = (struct sockaddr *)&ss;
        msg.msg_namelen = len;
@@ -552,6 +555,9 @@ cmsgsend(int s, int level, int type, struct addrinfo *res) {
                switch (errno) {
 #ifdef ENOPROTOOPT
                case ENOPROTOOPT:
+#endif
+#ifdef EOPNOTSUPP
+               case EOPNOTSUPP:
 #endif
                case EINVAL:
                        break;
@@ -582,7 +588,7 @@ cmsgsend(int s, int level, int type, struct addrinfo *res) {
        RUNTIME_CHECK(result == ISC_R_SUCCESS);
 
        iovec.iov_base = buf;
-       iovec.iov_len = sizeof(len);
+       iovec.iov_len = sizeof(buf);
 
        memset(&msg, 0, sizeof(msg));
        msg.msg_name = (struct sockaddr *)&ss;