Hi Jim,

Thank you for your reply!
I do see ad bit in /usr/include/arpa/nameser_compat.h as follows -- does
u_short/u_int, and unassigned makes difference?

typedef struct {
        u_short id;             /* query identification number */
#if BYTE_ORDER == BIG_ENDIAN
                        /* fields in third byte */
        u_int   qr:1;           /* response flag */
        u_int   opcode:4;       /* purpose of message */
        u_int   aa:1;           /* authoritive answer */
        u_int   tc:1;           /* truncated message */
        u_int   rd:1;           /* recursion desired */
                        /* fields in fourth byte */
        u_int   ra:1;           /* recursion available */
        u_int   ad:1;           /* authentic data from named */
        u_int   cd:1;           /* checking disabled by resolver */
        u_int   unused:1;       /* unused bits */
        u_int   rcode:4;        /* response code */
#endif
#if BYTE_ORDER == LITTLE_ENDIAN
                        /* fields in third byte */
        u_int   rd:1;           /* recursion desired */
        u_int   tc:1;           /* truncated message */
        u_int   aa:1;           /* authoritive answer */
        u_int   opcode:4;       /* purpose of message */
        u_int   qr:1;           /* response flag */
                        /* fields in fourth byte */
        u_int   rcode:4;        /* response code */
        u_int   cd:1;           /* checking disabled by resolver */
        u_int   ad:1;           /* authentic data from named */
        u_int   unused:1;       /* unused bits */
        u_int   ra:1;           /* recursion available */
#endif
                        /* remaining bytes */
        u_short qdcount;        /* number of question entries */
        u_short ancount;        /* number of answer entries */
        u_short nscount;        /* number of authority entries */
        u_short arcount;        /* number of resource entries */
} HEADER;

Thank you in advance!
Takae Harrington
Unix Administrator
Cloud Managed Service Delivery (MSD)
IBM GTS SO Delivery
Office: 720-342-6749
Email: thar...@us.ibm.com



From:   Jim Reid <j...@rfc1035.com>
To:     Takae Harrington/Phoenix/IBM@IBMUS
Cc:     postfix-users@postfix.org
Date:   09/03/2015 02:56 PM
Subject:        Re: postfix3.0.2 compile error on AIX61/71
Sent by:        owner-postfix-us...@postfix.org




On 3 Sep 2015, at 22:11, Takae Harrington <thar...@us.ibm.com> wrote:

> When I compile postfix3.0.2 (the same issue has existed since 2.11.x) on
aix61 and aix71, I get this error:
>
> [vq2ua613:/staging/Postfix-3.0.2]make
> dns_lookup.c: In function 'dns_query':
> dns_lookup.c:339: error: 'HEADER' has no member named 'ad'

It looks like the system #include files are broken or out of date. A HEADER
typedef struct is usually defined in <arpa/nameser_compat.h> which lays out
the headers found in a DNS query. This should include a field "unsigned ad:
1;" for the AD (Authentic Data) bit which is used in Secure DNS. This 1-bit
field appears to be missing from your include files. It shouldn't.

The AD bit has been part of the DNS protocol since 2005 and is defined in
RFC4033.

Here's what you should see in that struct definition:

typedef struct {
        unsigned        id :16;         /* query identification number */
#if BYTE_ORDER == BIG_ENDIAN
                        /* fields in third byte */
        unsigned        qr: 1;          /* response flag */
        unsigned        opcode: 4;      /* purpose of message */
        unsigned        aa: 1;          /* authoritive answer */
        unsigned        tc: 1;          /* truncated message */
        unsigned        rd: 1;          /* recursion desired */
                        /* fields in fourth byte */
        unsigned        ra: 1;          /* recursion available */
        unsigned        unused :1;      /* unused bits (MBZ as of 4.9.3a3)
*/
        unsigned        ad: 1;          /* authentic data from named */
        unsigned        cd: 1;          /* checking disabled by resolver */
        unsigned        rcode :4;       /* response code */
#endif
#if BYTE_ORDER == LITTLE_ENDIAN || BYTE_ORDER == PDP_ENDIAN
                        /* fields in third byte */
        unsigned        rd :1;          /* recursion desired */
        unsigned        tc :1;          /* truncated message */
        unsigned        aa :1;          /* authoritive answer */
        unsigned        opcode :4;      /* purpose of message */
        unsigned        qr :1;          /* response flag */
                        /* fields in fourth byte */
        unsigned        rcode :4;       /* response code */
        unsigned        cd: 1;          /* checking disabled by resolver */
        unsigned        ad: 1;          /* authentic data from named */
        unsigned        unused :1;      /* unused bits (MBZ as of 4.9.3a3)
*/
        unsigned        ra :1;          /* recursion available */
#endif
                        /* remaining bytes */
        unsigned        qdcount :16;    /* number of question entries */
        unsigned        ancount :16;    /* number of answer entries */
        unsigned        nscount :16;    /* number of authority entries */
        unsigned        arcount :16;    /* number of resource entries */
} HEADER;



Reply via email to