please test (HEADER.ad)
Wendy Palm
wendyp at cray.com
Wed Sep 10 09:34:22 EST 2003
update - actually, the WARNING message mentioned below is now gone.
Wendy Palm wrote:
> no, i'm sorry, it didn't work. a couple of problems-
>
> 1. you forgot the "<" and ">" for the include file
>
> so, i changed configure.ac to
>
> --- 1916,1925 ----
> # Needed by our getrrsetbyname()
> AC_SEARCH_LIBS(res_query, resolv)
> AC_SEARCH_LIBS(dn_expand, resolv)
> + AC_CHECK_FUNCS(_getshort _getlong)
> + AC_CHECK_MEMBER(struct HEADER.ad,
> + [AC_DEFINE(HAVE_HEADER_AD)],,
> + [#include <arpa/nameser.h>])
> ])
> fi
>
>
> which generates a configure with a conftest.c looking like -
> #include <arpa/nameser.h>
>
> int
> main ()
> {
> static struct HEADER ac_aggr;
> if (sizeof ac_aggr.ad)
> return 0;
> ;
> return 0;
> }
>
> 2. which has the error-
> The indicated type is incomplete.
>
> static struct HEADER ac_aggr;
> ^
>
> HEADER is defined as a bit field, so sizeof doesn't really work.
>
> 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;
>
> this works, kind of (leaves WARNING message about using variable before
> it's defined). i don't know anything about autoconf, so i'm not sure
> how to
> create it in configure.ac.
>
> #include <arpa/nameser.h>
> int
> main ()
> {
> HEADER ac_aggr;
> if (ac_aggr.ad)
> return 0;
> ;
> return 0;
> }
>
> i'm happy to test anything changes.
> wendy
>
>
> Tim Rice wrote:
>
>> Sorry, forgot to mention you must use the --with-dns option to configure.
>>
>> On Mon, 8 Sep 2003, Tim Rice wrote:
>>
>>
>>> Could someone with HEADER.ad in arpa/nameser.h please test the
>>> attached patch (against current) to see it it's detected.
>>>
>>> None of my platforms have the ad member.
>>>
>>> config.h will end up with "#define HAVE_HEADER_AD".
>>>
>>>
>>>
>>
>>
>> ------------------------------------------------------------------------
>>
>> --- openssh/configure.ac.old 2003-09-08 06:33:33.000000000 -0700
>> +++ openssh/configure.ac 2003-09-08 10:07:44.849040019 -0700
>> @@ -1913,6 +1913,9 @@
>> AC_SEARCH_LIBS(res_query, resolv)
>> AC_SEARCH_LIBS(dn_expand, resolv)
>> AC_CHECK_FUNCS(_getshort _getlong)
>> + AC_CHECK_MEMBER(struct HEADER.ad,
>> + [AC_DEFINE(HAVE_HEADER_AD)],,
>> + [#include arpa/nameser.h])
>> ])
>> fi
>> ]
>> --- openssh/acconfig.h.old 2003-09-07 11:01:43.989760001 -0700
>> +++ openssh/acconfig.h 2003-09-08 09:58:18.714080015 -0700
>> @@ -418,6 +418,9 @@
>> /* Define if getrrsetbyname() exists */
>> #undef HAVE_GETRRSETBYNAME
>>
>> +/* Define if HEADER.ad exists in arpa/nameser.h */
>> +#undef HAVE_HEADER_AD
>> +
>> @BOTTOM@
>>
>> /* ******************* Shouldn't need to edit below this line
>> ************** */
>> --- openssh/openbsd-compat/getrrsetbyname.c.old 2003-09-08
>> 06:29:05.644640000 -0700
>> +++ openssh/openbsd-compat/getrrsetbyname.c 2003-09-08
>> 10:08:28.004080003 -0700
>> @@ -243,9 +243,11 @@
>> rrset->rri_ttl = response->answer->ttl;
>> rrset->rri_nrdatas = response->header.ancount;
>>
>> +#ifdef HAVE_HEADER_AD
>> /* check for authenticated data */
>> if (response->header.ad == 1)
>> rrset->rri_flags |= RRSET_VALIDATED;
>> +#endif
>>
>> /* copy name from answer section */
>> length = strlen(response->answer->name);
>>
>>
>> ------------------------------------------------------------------------
>>
>> _______________________________________________
>> openssh-unix-dev mailing list
>> openssh-unix-dev at mindrot.org
>> http://www.mindrot.org/mailman/listinfo/openssh-unix-dev
>>
>
>
--
wendy palm
Cray Open Software Development, Cray Inc.
wendyp at cray.com, 651-605-9154
More information about the openssh-unix-dev
mailing list