bd911976d51f102751848568ccf56592fd5f6d77Tinderbox User * Copyright (C) 1998-2009, 2012-2017 Internet Systems Consortium, Inc. ("ISC")
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews * This Source Code Form is subject to the terms of the Mozilla Public
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews * License, v. 2.0. If a copy of the MPL was not distributed with this
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews * file, You can obtain one at http://mozilla.org/MPL/2.0/.
bc8711b1489e1b25f311f4f6161355708f643f3dMark Andrews * Silence compiler warnings about using strcpy and friends.
4d6329c1b3c80f82880291ae35f68f84c14ad820Francis Dupont * We use snprintf which was defined late in Windows even it is in C99.
2047977ce2dfcfe3a0fa2d638c3242841310fad3Mark Andrews#define FROMTEXTARGS "rdclass, type, lexer, origin, options, target, callbacks"
ebfcb6cf66283096ebda1503b6cc042ce86b6bedBrian Wellington#define FROMTEXTDEF "result = DNS_R_UNKNOWN"
2047977ce2dfcfe3a0fa2d638c3242841310fad3Mark Andrews#define FROMWIREARGS "rdclass, type, source, dctx, options, target"
d981ca645597116d227a48bf37cc5edc061c854dBob Halley#define FROMSTRUCTARGS "rdclass, type, source, target"
d981ca645597116d227a48bf37cc5edc061c854dBob Halley#define ADDITIONALDATADEF "use_default = ISC_TRUE"
2047977ce2dfcfe3a0fa2d638c3242841310fad3Mark Andrews#define CHECKOWNERARGS "name, rdclass, type, wildcard"
704e6c8876907aac0bf7380effca8bca400d4acdMark Andrews" * Copyright (C) 1998%s Internet Systems Consortium, Inc. (\"ISC\")\n"
704e6c8876907aac0bf7380effca8bca400d4acdMark Andrews" * This Source Code Form is subject to the terms of the Mozilla Public\n"
704e6c8876907aac0bf7380effca8bca400d4acdMark Andrews" * License, v. 2.0. If a copy of the MPL was not distributed with this\n"
704e6c8876907aac0bf7380effca8bca400d4acdMark Andrews" * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n"
987effb43724fc55747b803dd9ab80a5a7c9c518Michael Graff"/***************\n"
987effb43724fc55747b803dd9ab80a5a7c9c518Michael Graff" ***************\n"
987effb43724fc55747b803dd9ab80a5a7c9c518Michael Graff" *************** THIS FILE IS AUTOMATICALLY GENERATED BY gen.c.\n"
987effb43724fc55747b803dd9ab80a5a7c9c518Michael Graff" *************** DO NOT EDIT!\n"
987effb43724fc55747b803dd9ab80a5a7c9c518Michael Graff" ***************\n"
987effb43724fc55747b803dd9ab80a5a7c9c518Michael Graff" ***************/\n"
ab023a65562e62b85a824509d829b6fad87e00b1Rob Austein"/*! \\file */\n"
e285c6ea84312a7be807b3af30151444b0002ba6Mark Andrews#define TYPECLASSLEN 20 /* DNS mnemonic size. Must be less than 100. */
e285c6ea84312a7be807b3af30151444b0002ba6Mark Andrews#define TYPECLASSFMT "%" STR(TYPECLASSLEN) "[-0-9a-z]_%d"
e285c6ea84312a7be807b3af30151444b0002ba6Mark Andrews char dirname[DIRNAMESIZE]; /* XXX Should be max path length */
f7d6bc93d17277a969f5559733bf1362c322b0efMark Andrewsstatic char *
f7d6bc93d17277a969f5559733bf1362c322b0efMark Andrewsstatic char *
1c70c5ee90d80eebb18033b2553a42c3652a9d72David Lawrencefunname(const char *, char *);
6d12fdf96621801e80f3f4c2a8a569fe48766a20David Lawrencedoswitch(const char *, const char *, const char *, const char *,
6d12fdf96621801e80f3f4c2a8a569fe48766a20David Lawrence const char *, const char *);
6d12fdf96621801e80f3f4c2a8a569fe48766a20David Lawrenceadd(int, const char *, int, const char *, const char *);
6d12fdf96621801e80f3f4c2a8a569fe48766a20David Lawrencesd(int, const char *, const char *, char);
6d12fdf96621801e80f3f4c2a8a569fe48766a20David Lawrenceinsert_into_typenames(int, const char *, const char *);
6324997211a5e2d82528dcde98e8981190a35faeMichael Graff * If you use more than 10 of these in, say, a printf(), you'll have problems.
f7d6bc93d17277a969f5559733bf1362c322b0efMark Andrewsstatic char *
89bc8a8876a94d840aa034afb8905d4735b3af7eMichael Graff while ((c = (*s++) & 0xff))
f7d6bc93d17277a969f5559733bf1362c322b0efMark Andrewsstatic char *
217f572018871cdf09db052a676b9933512cdbfaMark Andrews while ((c = *s++)) {
6d12fdf96621801e80f3f4c2a8a569fe48766a20David Lawrencedoswitch(const char *name, const char *function, const char *args,
6d12fdf96621801e80f3f4c2a8a569fe48766a20David Lawrence const char *tsw, const char *csw, const char *res)
f1b68725503ff3e46001eee5a1751e29a43a09d1Andreas Gustafsson for (tt = types; tt != NULL; tt = tt->next) {
5d51e67c3b4f35c1be742574aacc1d88fe6ed444Mark Andrews fprintf(stdout, "\tswitch (%s) { \\\n" /*}*/, tsw);
5d51e67c3b4f35c1be742574aacc1d88fe6ed444Mark Andrews fprintf(stdout, "\tcase %d: switch (%s) { \\\n" /*}*/,
94a3bcd132e515b4baa0884ba9dd0f361d2e17bcMark Andrews "\tcase %d:%s %s_%s(%s); break;",
78838d3e0cd62423c23de5503910e01884d2104bBrian Wellington "\t\tcase %d:%s %s_%s_%s(%s); break;",
94a3bcd132e515b4baa0884ba9dd0f361d2e17bcMark Andrews fprintf(stdout, "\t\tdefault: %s; break; \\\n", res);
94a3bcd132e515b4baa0884ba9dd0f361d2e17bcMark Andrews fprintf(stdout, "\n#define %s %s;\n", name, res);
94a3bcd132e515b4baa0884ba9dd0f361d2e17bcMark Andrews fprintf(stdout, "\tdefault: %s; break; \\\n", res);
471e0563c7965c556c759775882cd3448dae78eaMark Andrewsstatic struct ttnam *
471e0563c7965c556c759775882cd3448dae78eaMark Andrews for (i = 0; i < TYPENAMES; i++) {
6d12fdf96621801e80f3f4c2a8a569fe48766a20David Lawrenceinsert_into_typenames(int type, const char *typename, const char *attr) {
471e0563c7965c556c759775882cd3448dae78eaMark Andrews for (i = 0; i < TYPENAMES; i++) {
471e0563c7965c556c759775882cd3448dae78eaMark Andrews strcmp(typename, typenames[i].typename) != 0) {
471e0563c7965c556c759775882cd3448dae78eaMark Andrews "Error: type %d has two names: %s, %s\n",
471e0563c7965c556c759775882cd3448dae78eaMark Andrews if (typenames[i].typename[0] == 0 && ttn == NULL)
471e0563c7965c556c759775882cd3448dae78eaMark Andrews fprintf(stderr, "Error: typenames array too small\n");
56510cd031b3faf7d10f86f4c059442a2dd4be45Evan Hunt /* XXXMUKS: This is redundant due to the INSIST above. */
471e0563c7965c556c759775882cd3448dae78eaMark Andrews if (strlen(typename) > sizeof(ttn->typename) - 1) {
471e0563c7965c556c759775882cd3448dae78eaMark Andrews fprintf(stderr, "Error: type name %s is too long\n",
e285c6ea84312a7be807b3af30151444b0002ba6Mark Andrews strncpy(ttn->typename, typename, sizeof(ttn->typename));
e285c6ea84312a7be807b3af30151444b0002ba6Mark Andrews strncpy(ttn->macroname, ttn->typename, sizeof(ttn->macroname));
56510cd031b3faf7d10f86f4c059442a2dd4be45Evan Hunt ttn->macroname[sizeof(ttn->macroname) - 1] = '\0';
8de9b6a1767498243d06359830d7840fdd10e49fMichael Graff while (c > 0) {
e285c6ea84312a7be807b3af30151444b0002ba6Mark Andrews "RRTYPE_%s_ATTRIBUTES", upper(ttn->macroname));
8de9b6a1767498243d06359830d7840fdd10e49fMichael Graff if (ttn->attr[0] != 0 && strcmp(attr, ttn->attr) != 0) {
8de9b6a1767498243d06359830d7840fdd10e49fMichael Graff fprintf(stderr, "Error: type %d has different attributes: "
8de9b6a1767498243d06359830d7840fdd10e49fMichael Graff fprintf(stderr, "Error: attr (%s) [name %s] is too long\n",
6d12fdf96621801e80f3f4c2a8a569fe48766a20David Lawrenceadd(int rdclass, const char *classname, int type, const char *typename,
f3ca27e9fe307b55e35ea8d7b37351650630e5a3Andreas Gustafsson struct tt *newtt = (struct tt *)malloc(sizeof(*newtt));
e285c6ea84312a7be807b3af30151444b0002ba6Mark Andrews strncpy(newtt->classname, classname, sizeof(newtt->classname));
56510cd031b3faf7d10f86f4c059442a2dd4be45Evan Hunt newtt->classname[sizeof(newtt->classname) - 1] = '\0';
e285c6ea84312a7be807b3af30151444b0002ba6Mark Andrews strncpy(newtt->typename, typename, sizeof(newtt->typename));
56510cd031b3faf7d10f86f4c059442a2dd4be45Evan Hunt newtt->typename[sizeof(newtt->typename) - 1] = '\0';
e285c6ea84312a7be807b3af30151444b0002ba6Mark Andrews strncpy(newtt->dirname, dirname, sizeof(newtt->dirname));
56510cd031b3faf7d10f86f4c059442a2dd4be45Evan Hunt newtt->dirname[sizeof(newtt->dirname) - 1] = '\0';
d981ca645597116d227a48bf37cc5edc061c854dBob Halley while ((tt != NULL) && (tt->type == type) && (tt->rdclass < rdclass)) {
d981ca645597116d227a48bf37cc5edc061c854dBob Halley if ((tt != NULL) && (tt->type == type) && (tt->rdclass == rdclass))
47b26abe77184f9bedc68e36bdad03332cf67570David Lawrence * Do a class switch for this type.
f3ca27e9fe307b55e35ea8d7b37351650630e5a3Andreas Gustafsson newcc = (struct cc *)malloc(sizeof(*newcc));
e285c6ea84312a7be807b3af30151444b0002ba6Mark Andrews strncpy(newcc->classname, classname, sizeof(newcc->classname));
8eb2d262dc8f542f175d21033a956d8b40a4275fMark Andrews newcc->classname[sizeof(newcc->classname) - 1] = '\0';
d981ca645597116d227a48bf37cc5edc061c854dBob Halley while ((cc != NULL) && (cc->rdclass < rdclass)) {
6d12fdf96621801e80f3f4c2a8a569fe48766a20David Lawrencesd(int rdclass, const char *classname, const char *dirname, char filetype) {
e285c6ea84312a7be807b3af30151444b0002ba6Mark Andrews if (sscanf(dir.filename, TYPECLASSFMT, typename, &type) != 2)
e285c6ea84312a7be807b3af30151444b0002ba6Mark Andrews n = snprintf(buf, sizeof(buf), "%s_%d.%c", typename,
53bd3f325f898b6892742ce928da3daa02ba0eddDavid Lawrence add(rdclass, classname, type, typename, dirname);
94a537e6ab3069f8d34e12e5ea722250be2b89c8Michael Graffstatic unsigned int
94a537e6ab3069f8d34e12e5ea722250be2b89c8Michael Graff unsigned char a, b;
88cad5372415468e9a98a102b0994fea60426b0cMichael Graff if (n == 0) {
94a537e6ab3069f8d34e12e5ea722250be2b89c8Michael Graff return ((a + n) * b) % 256;
e285c6ea84312a7be807b3af30151444b0002ba6Mark Andrews char buf[DIRNAMESIZE]; /* XXX Should be max path length */
e285c6ea84312a7be807b3af30151444b0002ba6Mark Andrews char srcdir[DIRNAMESIZE]; /* XXX Should be max path length */
e285c6ea84312a7be807b3af30151444b0002ba6Mark Andrews int c, i, j, n;
471e0563c7965c556c759775882cd3448dae78eaMark Andrews for (i = 0; i < TYPENAMES; i++)
8de9b6a1767498243d06359830d7840fdd10e49fMichael Graff memset(&typenames[i], 0, sizeof(typenames[i]));
d2b5fe92a4755ce67f2dd6050955782b4fd6b3f3Mark Andrews while ((c = isc_commandline_parse(argc, argv, "cdits:F:P:S:")) != -1)
0c67279acb4a6ac356879498b220645755d77cc9Mark Andrews switch (c) {
e285c6ea84312a7be807b3af30151444b0002ba6Mark Andrews sizeof("/rdata/_65535_65535")) {
e285c6ea84312a7be807b3af30151444b0002ba6Mark Andrews n = snprintf(buf, sizeof(buf), "%srdata", srcdir);
e285c6ea84312a7be807b3af30151444b0002ba6Mark Andrews if (sscanf(dir.filename, TYPECLASSFMT, classname,
e285c6ea84312a7be807b3af30151444b0002ba6Mark Andrews n = snprintf(buf, sizeof(buf), "%srdata/%s_%d",
53bd3f325f898b6892742ce928da3daa02ba0eddDavid Lawrence if (strcmp(buf + 6 + strlen(srcdir), dir.filename) != 0)
e285c6ea84312a7be807b3af30151444b0002ba6Mark Andrews n = snprintf(buf, sizeof(buf), "%srdata/generic", srcdir);
e285c6ea84312a7be807b3af30151444b0002ba6Mark Andrews if ((tm = localtime(&now)) != NULL && tm->tm_year > 104) {
1a69a1a78cfaa86f3b68bbc965232b7876d4da2aDavid Lawrence fputs("#include <isc/result.h>\n\n", stdout);
f1b68725503ff3e46001eee5a1751e29a43a09d1Andreas Gustafsson for (tt = types; tt != NULL; tt = tt->next)
0c67279acb4a6ac356879498b220645755d77cc9Mark Andrews doswitch("FROMTEXTSWITCH", "fromtext", FROMTEXTARGS,
0c67279acb4a6ac356879498b220645755d77cc9Mark Andrews doswitch("FROMWIRESWITCH", "fromwire", FROMWIREARGS,
0c67279acb4a6ac356879498b220645755d77cc9Mark Andrews doswitch("COMPARESWITCH", "compare", COMPAREARGS,
3d17a3ba61a303d5c4d9867068d0fbe9f24d2988Mark Andrews doswitch("CASECOMPARESWITCH", "casecompare", COMPAREARGS,
0c67279acb4a6ac356879498b220645755d77cc9Mark Andrews doswitch("FROMSTRUCTSWITCH", "fromstruct", FROMSTRUCTARGS,
0c67279acb4a6ac356879498b220645755d77cc9Mark Andrews FROMSTRUCTTYPE, FROMSTRUCTCLASS, FROMSTRUCTDEF);
0c67279acb4a6ac356879498b220645755d77cc9Mark Andrews doswitch("TOSTRUCTSWITCH", "tostruct", TOSTRUCTARGS,
94a3bcd132e515b4baa0884ba9dd0f361d2e17bcMark Andrews doswitch("FREESTRUCTSWITCH", "freestruct", FREESTRUCTARGS,
94a3bcd132e515b4baa0884ba9dd0f361d2e17bcMark Andrews FREESTRUCTTYPE, FREESTRUCTCLASS, FREESTRUCTDEF);
d981ca645597116d227a48bf37cc5edc061c854dBob Halley doswitch("ADDITIONALDATASWITCH", "additionaldata",
94a537e6ab3069f8d34e12e5ea722250be2b89c8Michael Graff * From here down, we are processing the rdata names and
94a537e6ab3069f8d34e12e5ea722250be2b89c8Michael Graff * attributes.
471e0563c7965c556c759775882cd3448dae78eaMark Andrews#define PRINT_COMMA(x) (x == maxtype ? "" : ",")
47b26abe77184f9bedc68e36bdad03332cf67570David Lawrence#define METANOTQUESTION "DNS_RDATATYPEATTR_META | " \
47b26abe77184f9bedc68e36bdad03332cf67570David Lawrence "DNS_RDATATYPEATTR_NOTQUESTION"
47b26abe77184f9bedc68e36bdad03332cf67570David Lawrence#define METAQUESTIONONLY "DNS_RDATATYPEATTR_META | " \
47b26abe77184f9bedc68e36bdad03332cf67570David Lawrence "DNS_RDATATYPEATTR_QUESTIONONLY"
8de9b6a1767498243d06359830d7840fdd10e49fMichael Graff * Add in reserved/special types. This will let us
8de9b6a1767498243d06359830d7840fdd10e49fMichael Graff * sort them without special cases.
8de9b6a1767498243d06359830d7840fdd10e49fMichael Graff insert_into_typenames(0, "reserved0", RESERVED);
8de9b6a1767498243d06359830d7840fdd10e49fMichael Graff insert_into_typenames(32, "nimloc", RESERVED);
8de9b6a1767498243d06359830d7840fdd10e49fMichael Graff insert_into_typenames(100, "uinfo", RESERVED);
8de9b6a1767498243d06359830d7840fdd10e49fMichael Graff insert_into_typenames(251, "ixfr", METAQUESTIONONLY);
8de9b6a1767498243d06359830d7840fdd10e49fMichael Graff insert_into_typenames(252, "axfr", METAQUESTIONONLY);
8de9b6a1767498243d06359830d7840fdd10e49fMichael Graff insert_into_typenames(253, "mailb", METAQUESTIONONLY);
8de9b6a1767498243d06359830d7840fdd10e49fMichael Graff insert_into_typenames(254, "maila", METAQUESTIONONLY);
8de9b6a1767498243d06359830d7840fdd10e49fMichael Graff insert_into_typenames(255, "any", METAQUESTIONONLY);
94a537e6ab3069f8d34e12e5ea722250be2b89c8Michael Graff * Spit out a quick and dirty hash function. Here,
94a537e6ab3069f8d34e12e5ea722250be2b89c8Michael Graff * we walk through the list of type names, and calculate
94a537e6ab3069f8d34e12e5ea722250be2b89c8Michael Graff * a hash. This isn't perfect, but it will generate "pretty
94a537e6ab3069f8d34e12e5ea722250be2b89c8Michael Graff * good" estimates. Lowercase the characters before
94a537e6ab3069f8d34e12e5ea722250be2b89c8Michael Graff * computing in all cases.
94a537e6ab3069f8d34e12e5ea722250be2b89c8Michael Graff * Here, walk the list from top to bottom, calculating
94a537e6ab3069f8d34e12e5ea722250be2b89c8Michael Graff * the hash (mod 256) for each name.
8695d7b357789bedff63e5b19c5ab25cd58fcd4bMark Andrews fprintf(stdout, "#define RDATATYPE_COMPARE(_s, _d, _tn, _n, _tp) \\\n");
8695d7b357789bedff63e5b19c5ab25cd58fcd4bMark Andrews fprintf(stdout, "\t\tif (sizeof(_s) - 1 == _n && \\\n"
8695d7b357789bedff63e5b19c5ab25cd58fcd4bMark Andrews "\t\t strncasecmp(_s,(_tn),"
8695d7b357789bedff63e5b19c5ab25cd58fcd4bMark Andrews "(sizeof(_s) - 1)) == 0) { \\\n");
28b863e609ff2d97b78663b46894494cfa2ea411Mark Andrews fprintf(stdout, "\t\t\tif ((dns_rdatatype_attributes(_d) & "
6098d364b690cb9dabf96e9664c4689c8559bd2eMark Andrews "DNS_RDATATYPEATTR_RESERVED) != 0) \\\n");
f621719829356f27e831507b75e88e8a655e48d8Danny Mayer fprintf(stdout, "\t\t\t\treturn (ISC_R_NOTIMPLEMENTED); \\\n");
f621719829356f27e831507b75e88e8a655e48d8Danny Mayer fprintf(stdout, "\t\t\treturn (ISC_R_SUCCESS); \\\n");
8695d7b357789bedff63e5b19c5ab25cd58fcd4bMark Andrews fprintf(stdout, "#define RDATATYPE_FROMTEXT_SW(_hash,"
8695d7b357789bedff63e5b19c5ab25cd58fcd4bMark Andrews "_typename,_length,_typep) \\\n");
471e0563c7965c556c759775882cd3448dae78eaMark Andrews for (i = 0; i <= maxtype; i++) {
94a537e6ab3069f8d34e12e5ea722250be2b89c8Michael Graff * Skip entries we already processed.
94a537e6ab3069f8d34e12e5ea722250be2b89c8Michael Graff * Find all other entries that happen to match
471e0563c7965c556c759775882cd3448dae78eaMark Andrews for (j = 0; j <= maxtype; j++) {
705d56b47a932cc277f980755e80ac4f46a18a64Mark Andrews "(\"%s\", %d, "
8695d7b357789bedff63e5b19c5ab25cd58fcd4bMark Andrews "_typename, _length, _typep); \\\n",
28b863e609ff2d97b78663b46894494cfa2ea411Mark Andrews fprintf(stdout, "#define RDATATYPE_ATTRIBUTE_SW \\\n");
28b863e609ff2d97b78663b46894494cfa2ea411Mark Andrews for (i = 0; i <= maxtype; i++) {
705d56b47a932cc277f980755e80ac4f46a18a64Mark Andrews fprintf(stdout, "\tcase %d: return (%s); \\\n",
28b863e609ff2d97b78663b46894494cfa2ea411Mark Andrews fprintf(stdout, "#define RDATATYPE_TOTEXT_SW \\\n");
28b863e609ff2d97b78663b46894494cfa2ea411Mark Andrews for (i = 0; i <= maxtype; i++) {
d6f99498d624d5c5c8ee45067df02e6a6b35a1a3Mark Andrews * Remove KEYDATA (65533) from the type to memonic
d6f99498d624d5c5c8ee45067df02e6a6b35a1a3Mark Andrews * translation as it is internal use only. This
d6f99498d624d5c5c8ee45067df02e6a6b35a1a3Mark Andrews * stops the tools from displaying KEYDATA instead
d6f99498d624d5c5c8ee45067df02e6a6b35a1a3Mark Andrews * of TYPE65533.
d6f99498d624d5c5c8ee45067df02e6a6b35a1a3Mark Andrews if (i == 65533U)
28b863e609ff2d97b78663b46894494cfa2ea411Mark Andrews "(str_totext(\"%s\", target)); \\\n",
0b056755b2f423ba5f6adac8f7851d78f7d11437David Lawrence fprintf(stdout, "#define DNS_ENUMTYPE_H 1\n\n");
0b056755b2f423ba5f6adac8f7851d78f7d11437David Lawrence fprintf(stdout, "\tdns_rdatatype_none = 0,\n");
f1b68725503ff3e46001eee5a1751e29a43a09d1Andreas Gustafsson for (tt = types; tt != NULL; tt = tt->next)
0b056755b2f423ba5f6adac8f7851d78f7d11437David Lawrence "\tdns_rdatatype_%s = %d,\n",
0b056755b2f423ba5f6adac8f7851d78f7d11437David Lawrence fprintf(stdout, "\tdns_rdatatype_ixfr = 251,\n");
0b056755b2f423ba5f6adac8f7851d78f7d11437David Lawrence fprintf(stdout, "\tdns_rdatatype_axfr = 252,\n");
0b056755b2f423ba5f6adac8f7851d78f7d11437David Lawrence fprintf(stdout, "\tdns_rdatatype_mailb = 253,\n");
0b056755b2f423ba5f6adac8f7851d78f7d11437David Lawrence fprintf(stdout, "\tdns_rdatatype_maila = 254,\n");
0b056755b2f423ba5f6adac8f7851d78f7d11437David Lawrence fprintf(stdout, "\tdns_rdatatype_any = 255\n");
0b056755b2f423ba5f6adac8f7851d78f7d11437David Lawrence fprintf(stdout, "#define dns_rdatatype_none\t"
0b056755b2f423ba5f6adac8f7851d78f7d11437David Lawrence "((dns_rdatatype_t)dns_rdatatype_none)\n");
f1b68725503ff3e46001eee5a1751e29a43a09d1Andreas Gustafsson for (tt = types; tt != NULL; tt = tt->next)
0b056755b2f423ba5f6adac8f7851d78f7d11437David Lawrence "#define dns_rdatatype_%s\t%s"
0b056755b2f423ba5f6adac8f7851d78f7d11437David Lawrence "((dns_rdatatype_t)dns_rdatatype_%s)"
0b056755b2f423ba5f6adac8f7851d78f7d11437David Lawrence fprintf(stdout, "#define dns_rdatatype_ixfr\t"
0b056755b2f423ba5f6adac8f7851d78f7d11437David Lawrence "((dns_rdatatype_t)dns_rdatatype_ixfr)\n");
0b056755b2f423ba5f6adac8f7851d78f7d11437David Lawrence fprintf(stdout, "#define dns_rdatatype_axfr\t"
0b056755b2f423ba5f6adac8f7851d78f7d11437David Lawrence "((dns_rdatatype_t)dns_rdatatype_axfr)\n");
0b056755b2f423ba5f6adac8f7851d78f7d11437David Lawrence fprintf(stdout, "#define dns_rdatatype_mailb\t"
0b056755b2f423ba5f6adac8f7851d78f7d11437David Lawrence "((dns_rdatatype_t)dns_rdatatype_mailb)\n");
0b056755b2f423ba5f6adac8f7851d78f7d11437David Lawrence fprintf(stdout, "#define dns_rdatatype_maila\t"
0b056755b2f423ba5f6adac8f7851d78f7d11437David Lawrence "((dns_rdatatype_t)dns_rdatatype_maila)\n");
0b056755b2f423ba5f6adac8f7851d78f7d11437David Lawrence fprintf(stdout, "#define dns_rdatatype_any\t"
0b056755b2f423ba5f6adac8f7851d78f7d11437David Lawrence "((dns_rdatatype_t)dns_rdatatype_any)\n");
0b056755b2f423ba5f6adac8f7851d78f7d11437David Lawrence fprintf(stdout, "\n#endif /* DNS_ENUMTYPE_H */\n");
f621719829356f27e831507b75e88e8a655e48d8Danny Mayer fprintf(stdout, "#define DNS_ENUMCLASS_H 1\n\n");
f621719829356f27e831507b75e88e8a655e48d8Danny Mayer fprintf(stdout, "\tdns_rdataclass_reserved0 = 0,\n");
f621719829356f27e831507b75e88e8a655e48d8Danny Mayer fprintf(stdout, "#define dns_rdataclass_reserved0 \\\n\t\t\t\t"
1c70c5ee90d80eebb18033b2553a42c3652a9d72David Lawrence "((dns_rdataclass_t)dns_rdataclass_reserved0)\n");
f621719829356f27e831507b75e88e8a655e48d8Danny Mayer fprintf(stdout, "\tdns_rdataclass_%s = %d%s\n", s, classnum, \
1c70c5ee90d80eebb18033b2553a42c3652a9d72David Lawrence "((dns_rdataclass_t)dns_rdataclass_%s)\n", s, s); \
18b8cd9e27cc2aa80b3e93b5ec8161e571223224Michael Graff for (cc = classes; cc != NULL; cc = cc->next) {
f621719829356f27e831507b75e88e8a655e48d8Danny Mayer fprintf(stdout, "#endif /* DNS_ENUMCLASS_H */\n");
4fd3e3482c7e4ce01e2cf28f13e0152c8e50d746Mark Andrews } else if (structs) {
f3ca27e9fe307b55e35ea8d7b37351650630e5a3Andreas Gustafsson while (fgets(buf, sizeof(buf), fd) != NULL)
f1b68725503ff3e46001eee5a1751e29a43a09d1Andreas Gustafsson for (tt = types; tt != NULL; tt = tt->next) {
f3ca27e9fe307b55e35ea8d7b37351650630e5a3Andreas Gustafsson while (fgets(buf, sizeof(buf), fd) != NULL)
f3ca27e9fe307b55e35ea8d7b37351650630e5a3Andreas Gustafsson while (fgets(buf, sizeof(buf), fd) != NULL)
d2b5fe92a4755ce67f2dd6050955782b4fd6b3f3Mark Andrews } else if (depend) {
f1b68725503ff3e46001eee5a1751e29a43a09d1Andreas Gustafsson for (tt = types; tt != NULL; tt = tt->next)