]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Cleanup dns_opcode_t
authoralessio <alessio@isc.org>
Tue, 25 Feb 2025 09:40:10 +0000 (10:40 +0100)
committeralessio <alessio@isc.org>
Tue, 4 Mar 2025 17:35:14 +0000 (18:35 +0100)
Make dns_opcode_t refer directly to the underlying enum, and use
attributes to ensure the underlying enum is the same size as uint16_t.

lib/dns/include/dns/stats.h
lib/dns/include/dns/types.h

index 6384f3860312ebd079205b2bbe782866cccdc722..b40f5bc9991ff58c3583860bd268b4ff42d2a080 100644 (file)
@@ -399,7 +399,7 @@ dns_opcodestats_increment(dns_stats_t *stats, dns_opcode_t code);
  */
 
 void
-dns_rcodestats_increment(dns_stats_t *stats, dns_opcode_t code);
+dns_rcodestats_increment(dns_stats_t *stats, dns_rcode_t code);
 /*%<
  * Increment the statistics counter for 'code'.
  *
index 58e61dbbb6da009cb81c502c447dab383f1a65f7..491b1a83157444b99c0ec37f754381151771fa84 100644 (file)
@@ -124,7 +124,7 @@ typedef struct dns_nametree    dns_nametree_t;
 typedef ISC_LIST(dns_name_t) dns_namelist_t;
 typedef struct dns_ntatable        dns_ntatable_t;
 typedef struct dns_ntnode          dns_ntnode_t;
-typedef uint16_t                   dns_opcode_t;
+typedef enum dns_opcode                    dns_opcode_t;
 typedef struct dns_order           dns_order_t;
 typedef struct dns_peer                    dns_peer_t;
 typedef struct dns_peerlist        dns_peerlist_t;
@@ -308,20 +308,18 @@ enum {
 /*%
  * Opcodes.
  */
-enum {
+enum dns_opcode {
        dns_opcode_query = 0,
-#define dns_opcode_query ((dns_opcode_t)dns_opcode_query)
        dns_opcode_iquery = 1,
-#define dns_opcode_iquery ((dns_opcode_t)dns_opcode_iquery)
        dns_opcode_status = 2,
-#define dns_opcode_status ((dns_opcode_t)dns_opcode_status)
        dns_opcode_notify = 4,
-#define dns_opcode_notify ((dns_opcode_t)dns_opcode_notify)
        dns_opcode_update = 5, /* dynamic update */
-#define dns_opcode_update ((dns_opcode_t)dns_opcode_update)
        dns_opcode_max = 6,
-#define dns_opcode_max ((dns_opcode_t)dns_opcode_max)
-};
+       dns__opcode_expand = UINT16_MAX,
+} __attribute__((__packed__));
+/* Absent attribute packed, the enum will be sized as an int */
+STATIC_ASSERT(sizeof(uint16_t) == sizeof(dns_opcode_t),
+             "sizeof(dns_opecode)t) is not 16-bit");
 
 /*%
  * Trust levels.  Must be kept in sync with trustnames[] in masterdump.c.